diff options
Diffstat (limited to 'tests/common')
-rw-r--r-- | tests/common | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/common b/tests/common new file mode 100644 index 0000000..462677d --- /dev/null +++ b/tests/common @@ -0,0 +1,61 @@ +BIN="$(cd ..; pwd)/ratox" +test -x $BIN || exit 1 + +echolor() { + printf '[1;3%dm%s[0m\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 +} |