summaryrefslogtreecommitdiff
path: root/tests/common
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common')
-rw-r--r--tests/common61
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\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
+}