diff --git a/eth/test/bootstrap.sh b/eth/test/bootstrap.sh new file mode 100644 index 0000000000..78114dbe64 --- /dev/null +++ b/eth/test/bootstrap.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# bootstrap chains - used to regenerate tests/chains/*.chain + +mkdir -p chains +bash ./mine.sh 00 15 +bash ./mine.sh 01 5 00 +bash ./mine.sh 02 5 00 +bash ./mine.sh 03 5 01 +bash ./mine.sh 04 5 01 \ No newline at end of file diff --git a/eth/test/chains/00.chain b/eth/test/chains/00.chain new file mode 100755 index 0000000000..b1f53d5398 Binary files /dev/null and b/eth/test/chains/00.chain differ diff --git a/eth/test/chains/01.chain b/eth/test/chains/01.chain new file mode 100755 index 0000000000..1ed47885c1 Binary files /dev/null and b/eth/test/chains/01.chain differ diff --git a/eth/test/chains/02.chain b/eth/test/chains/02.chain new file mode 100755 index 0000000000..480c8192bb Binary files /dev/null and b/eth/test/chains/02.chain differ diff --git a/eth/test/chains/03.chain b/eth/test/chains/03.chain new file mode 100755 index 0000000000..8524881ab3 Binary files /dev/null and b/eth/test/chains/03.chain differ diff --git a/eth/test/chains/04.chain b/eth/test/chains/04.chain new file mode 100755 index 0000000000..b022c39eda Binary files /dev/null and b/eth/test/chains/04.chain differ diff --git a/eth/test/mine.sh b/eth/test/mine.sh new file mode 100644 index 0000000000..4871328c89 --- /dev/null +++ b/eth/test/mine.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# bash ./mine.sh node_id timeout(sec) [basechain] +ETH="../ethereum -datadir tmp/nodes/$1 -seed=false -port '' -id test$1" +rm -rf tmp/nodes/$1 +if [[ "" != "$3" ]]; then + CHAIN="chains/$3.chain" + CHAINARG="-chain $CHAIN" + echo "import chain '$CHAIN'" + $ETH -mine $CHAINARG +fi +$ETH -mine & +PID=$! +sleep $2 +echo "killing $PID" +kill $PID +$ETH <(echo "eth.export(\"chains/$1.chain\")") & +PID=$! +sleep 1 +echo "killing $PID" +kill $PID diff --git a/eth/test/run.sh b/eth/test/run.sh new file mode 100644 index 0000000000..bef8c80bfa --- /dev/null +++ b/eth/test/run.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# bash run.sh (testid0 testid1 ...) +# runs tests tests/testid0.sh tests/testid1.sh ... +# without arguments, it runs all tests + +if [ "$#" -eq 0 ]; then + for file in tests/*.sh; do + i=`basename $file .sh` + TESTS="$TESTS $i" + done +else + TESTS=$@ +fi + +ETH=../../ethereum +DIR="/tmp/eth.test/nodes" +TIMEOUT=10 + +mkdir -p $DIR +mkdir -p $DIR/js + +echo "running tests $TESTS" +for i in $TESTS; do + PIDS= + CHAIN="tests/$i.chain" + JSFILE="$DIR/$i/js" + CHAIN_TEST="$DIR/$i/chain" + + # OUT="$DIR/out" + echo "RUN: test $i" + . tests/$i.sh + sleep $TIMEOUT + echo "timeout after $TIMEOUT seconds: killing $PIDS" + kill $PIDS + if [ -r "$CHAIN" ]; then + if diff $CHAIN $CHAIN_TEST >/dev/null ; then + echo "chain ok: $CHAIN=$CHAIN_TEST" + else + echo "FAIL: chains differ: expected $CHAIN ; got $CHAIN_TEST" + continue + fi + fi + ERRORS=$DIR/errors + if [ -r "$ERRORS" ]; then + echo "FAIL: " + cat $ERRORS + else + echo PASS + fi +done + + diff --git a/eth/test/tests/00.chain b/eth/test/tests/00.chain new file mode 120000 index 0000000000..9655cb3df7 --- /dev/null +++ b/eth/test/tests/00.chain @@ -0,0 +1 @@ +../chains/01.chain \ No newline at end of file diff --git a/eth/test/tests/00.sh b/eth/test/tests/00.sh new file mode 100644 index 0000000000..9d13acb586 --- /dev/null +++ b/eth/test/tests/00.sh @@ -0,0 +1,19 @@ +#!/bin/bash +. `dirname $BASH_SOURCE`/common.sh + +TIMEOUT=4 +ID=00 +JSFILE="$DIR/js/$ID.js" + +echo $JSFILE +cat > $JSFILE < $JSFILE <