aboutsummaryrefslogtreecommitdiffstats
path: root/test/run_test.sh
blob: 0aecf3b6ec049e3a0fe29e5c68ecd9c783d08b95 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/bin/bash

BOOTNODE_FLAGS="--bootnodes enode://0478aa13c91aa0db8e93b668313b7eb0532fbdb24f64772375373b14dbe326c238ad09ab4469f6442c9a9753f1275aeec2e531912c14a958ed1feb4ae7e227ef@127.0.0.1:30301"
GENESIS="genesis.json"

GDEX="../build/bin/gdex"
BOOTNODE="../build/bin/bootnode"


CONTINUE=false
SMOKETEST=false
while [[ $# -gt 0 ]]; do
  case "$1" in
    --continue)
    CONTINUE=true
    ;;
    --smoke-test)
    SMOKETEST=true
    ;;
  esac
  shift
done


if [ ! -e "$BOOTNODE" ]; then
  echo "Building bootnode for the first time ..."
  go build -o $BOOTNODE ../cmd/bootnode
fi

# Start bootnode.
$BOOTNODE -nodekey keystore/bootnode.key --verbosity=9 > bootnode.log 2>&1 &

# Kill all previous instances.
pkill -9 -f gdex

logsdir=$PWD/log-$(date '+%Y-%m-%d-%H:%M:%S')
mkdir $logsdir

if [ -e log-latest ]; then
  rm -f log-previous
  mv log-latest log-previous
fi

rm -f log-latest
ln -s $logsdir log-latest


# the recovery contract address 0x80859F3d0D781c2c4126962cab0c977b37820e78 is deployed using keystore/monkey.key
if $SMOKETEST; then
  if [ `uname` == "Darwin" ]; then
    sed -i '' 's/"contract":.*,/"contract": "0x80859F3d0D781c2c4126962cab0c977b37820e78",/g' genesis.json
  else
    sed -i 's/"contract":.*,/"contract": "0x80859F3d0D781c2c4126962cab0c977b37820e78",/g' genesis.json
  fi
fi


python << __FILE__
import re
import time

with open('$GENESIS', 'r') as f:
  data = f.read()

with open('$GENESIS', 'w') as f:
  dMoment = int(time.time()) + 15
  f.write(re.sub('"dMoment": [0-9]+,', '"dMoment": %d,' % dMoment, data))
__FILE__

# A standalone RPC server for accepting RPC requests.
datadir=$PWD/Dexon.rpc
if ! $CONTINUE; then
  rm -rf $datadir
  $GDEX --datadir=$datadir init ${GENESIS}
fi
$GDEX \
  ${BOOTNODE_FLAGS} \
  --verbosity=3 \
  --gcmode=archive \
  --datadir=$datadir --nodekey=keystore/rpc.key \
  --rpc --rpcapi=eth,net,web3,debug \
  --rpcaddr=0.0.0.0 --rpcport=8545 \
  --ws --wsapi=eth,net,web3,debug \
  --wsaddr=0.0.0.0 --wsport=8546  \
  --wsorigins='*' --rpcvhosts='*' --rpccorsdomain="*" \
  > $logsdir/gdex.rpc.log 2>&1 &

NUM_NODES=$(cat ${GENESIS} | grep 'DEXON Test Node' | wc -l)

RECOVERY_FLAGS="--recovery.network-rpc=https://rinkeby.infura.io"

if $SMOKETEST; then
  RECOVERY_FLAGS="--recovery.network-rpc=http://127.0.0.1:8645"
fi


# Nodes
for i in $(seq 0 $(($NUM_NODES - 1))); do
  datadir=$PWD/Dexon.$i

  if ! $CONTINUE; then
    rm -rf $datadir
    $GDEX --datadir=$datadir init ${GENESIS}
  fi
  $GDEX \
    ${BOOTNODE_FLAGS} \
    --bp \
    --verbosity=4 \
    --gcmode=archive \
    --datadir=$datadir --nodekey=keystore/test$i.key \
    --port=$((30305 + $i)) \
    ${RECOVERY_FLAGS} \
    --rpc --rpcapi=eth,net,web3,debug \
    --rpcaddr=0.0.0.0 --rpcport=$((8547 + $i * 2)) \
    --ws --wsapi=eth,net,web3,debug \
    --wsaddr=0.0.0.0 --wsport=$((8548 + $i * 2)) \
    --wsorigins='*' --rpcvhosts='*' --rpccorsdomain="*" \
    --pprof --pprofaddr=localhost --pprofport=$((6060 + $i)) \
    > $logsdir/gdex.$i.log 2>&1 &
done

if ! $SMOKETEST; then
  tail -f $logsdir/gdex.*.log
fi