tAdd tests for ratox, importing z3bra's tests. - ratox - FIFO based tox client
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit c38aca268244d3c7004d6987a63d5756df148209
 (DIR) parent 340488b7f3615a48f7464f596754514653112fd6
 (HTM) Author: pranomostro <pranomestro@gmail.com>
       Date:   Thu, 15 Dec 2016 14:49:38 +0100
       
       Add tests for ratox, importing z3bra's tests.
       
       Add a target check for the makefile for running the tests.
       
       Diffstat:
         M Makefile                            |       6 ++++++
         A tests/README                        |      15 +++++++++++++++
         A tests/common                        |      61 +++++++++++++++++++++++++++++++
         A tests/test-chat                     |       9 +++++++++
         A tests/test-file                     |       9 +++++++++
         A tests/test-request                  |       8 ++++++++
       
       6 files changed, 108 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       t@@ -62,3 +62,9 @@ uninstall:
        clean:
                @echo cleaning
                @rm -f $(BIN) $(OBJ) $(LIB) util.a
       +
       +check: all
       +        @echo testing
       +        @cd tests; sh test-chat && sh test-file && sh test-request
       +
       +.PHONY: all binlib bin install uninstall clean check
 (DIR) diff --git a/tests/README b/tests/README
       t@@ -0,0 +1,15 @@
       +ratox[0] text suite.
       +
       +0. move this folder in the ratox source dir
       +1. build ratox
       +2. run your tests
       +
       +WARNING: spawing a test creates two throw-away IDs, and opens two
       +connections by default. If starting too much test, it could make it to
       +the point your router might not be able to forward traffic correctly to
       +the DHT, rendering your users incapable of seeing each others online.
       +
       +In case it happens, simply wait for the stale connections to close
       +themselves, or reboot your computer.
       +
       +[0] http://git.z3bra.org/ratox/log.html
 (DIR) diff --git a/tests/common b/tests/common
       t@@ -0,0 +1,61 @@
       +BIN="$(cd ..; pwd)/ratox"
       +test -x $BIN || exit 1
       +
       +echolor() {
       +        printf '[1;3%dm%s\n' "$1" "$2"
       +}
       +
       +cleanup() {
       +        echo ":: cleaning"
       +        kill $(pgrep -f 'abduco -n test-u1')
       +        kill $(pgrep -f 'abduco -n test-u2')
       +        rm -rf u1 u2
       +}
       +
       +trap cleanup INT
       +
       +spawn_users() {
       +        for u in u1 u2; do
       +                echo ":: creating user $u"
       +                mkdir -p $u
       +                abduco -n test-$u sh -c "cd $u;$BIN 2>&1|tee LOG"
       +        done
       +        sleep 1
       +}
       +
       +add_friends() {
       +        echo ":: send u2 a friend request from u1"
       +        id1=$(cut -b-64 < u1/id)
       +        id2=$(cut -b-64 < u2/id)
       +        cat u2/id > u1/request/in
       +        while [ ! -p u2/request/out/$id1 ]; do sleep 1; done
       +        echo ":: accepting request from $id1"
       +        echo 1 > u2/request/out/$id1
       +        while [ ! -d u2/$id1 ]; do sleep 1; done
       +        echo ":: u1: waiting for u2 to come online"
       +        while [ $(cat u1/$id2/online) -eq 0 ]; do sleep 1; done
       +}
       +
       +send_text() {
       +        RND=$(tr -cd 'A-F0-9' </dev/urandom|fold -w16|head -n1)
       +        id1=$(cut -b-64 < u1/id)
       +        id2=$(cut -b-64 < u2/id)
       +        echo ":: sending text to u2"
       +        echo "$RND" > u1/$id2/text_in
       +        while ! grep -q "$RND" u2/$id1/text_out; do sleep 1; done
       +}
       +
       +send_file() {
       +        TMP1=$(mktemp)
       +        TMP2=$(mktemp)
       +        </dev/urandom base64 | dd bs=1K count=2048 of=$TMP1 2>/dev/null
       +        id1=$(cut -b-64 < u1/id)
       +        id2=$(cut -b-64 < u2/id)
       +        echo ":: u1: sending file $TMP1"
       +        cat $TMP1 > u1/$id2/file_in &
       +        while [ $(wc -c <u2/$id1/file_pending) -eq 0 ]; do sleep 1; done
       +        echo ":: u2: saving file to $TMP2"
       +        cat u2/$id1/file_out > $TMP2
       +        echo ":: verifying $TMP1 and $TMP2"
       +        sha1sum $TMP1 | sed "s,$TMP1,$TMP2," | sha1sum -c
       +}
 (DIR) diff --git a/tests/test-chat b/tests/test-chat
       t@@ -0,0 +1,9 @@
       +. ./common
       +
       +spawn_users
       +add_friends
       +send_text
       +echo :: $(basename $0) - $(echolor 2 OK)
       +
       +cleanup
       +exit 0
 (DIR) diff --git a/tests/test-file b/tests/test-file
       t@@ -0,0 +1,9 @@
       +. ./common
       +
       +spawn_users
       +add_friends
       +send_file
       +echo :: $(basename $0) - $(echolor 2 OK)
       +
       +cleanup
       +exit 0
 (DIR) diff --git a/tests/test-request b/tests/test-request
       t@@ -0,0 +1,8 @@
       +. ./common
       +
       +spawn_users
       +add_friends
       +echo :: $(basename $0) - $(echolor 2 OK)
       +
       +cleanup
       +exit 0