#!/bin/bash source "${0%/*}/../testframework.sh" source "${0%/*}/../testdefs.sh" source "${0%/*}/../testdefs_rhizome.sh" rexp_age='[0-9]*' setup_identities() { setup_servald set_instance +A executeOk_servald config \ set debug.meshmb on \ set log.console.level debug \ set log.console.show_time on create_identities $1 } teardown() { stop_all_servald_servers kill_all_servald_processes assert_no_servald_processes report_all_servald_servers } doc_meshmbSend="Send broadcast meshmb message" setup_meshmbSend() { setup_identities 1 } test_meshmbSend() { executeOk_servald meshmb send $IDA1 "Message 1" tfw_cat --stdout --stderr executeOk_servald rhizome export bundle $IDA1 broadcast.manifest broadcast tfw_cat -h broadcast.manifest tfw_cat -h broadcast executeOk_servald meshmb send $IDA1 "Message 2" tfw_cat --stdout --stderr executeOk_servald rhizome export bundle $IDA1 broadcast2.manifest broadcast2 tfw_cat -h broadcast2.manifest tfw_cat -h broadcast2 } doc_meshmbRead="Read meshmb messages" setup_meshmbRead() { setup_identities 1 executeOk_servald meshmb send $IDA1 "Message 1" executeOk_servald meshmb send $IDA1 "Message 2" } test_meshmbRead() { executeOk_servald meshmb read $IDA1 assertStdoutGrep --matches=1 "^_id:offset:age:message$" assertStdoutGrep --matches=1 "^0:30:${rexp_age}:Message 2$" assertStdoutGrep --matches=1 "^1:12:${rexp_age}:Message 1$" assertStdoutLineCount '==' 4 } doc_meshmbListFeeds="List meshmb feeds" setup_meshmbListFeeds() { setup_identities 3 executeOk_servald meshmb send $IDA1 "Message 1" executeOk_servald meshmb send $IDA2 "Message 2" executeOk_servald meshmb send $IDA3 "Message 3" } test_meshmbListFeeds() { executeOk_servald meshmb find tfw_cat --stdout assertStdoutGrep --matches=1 "^_id:id:author:version:date:name$" assertStdoutGrep --matches=1 ":${IDA1}:${SIDA1}:" assertStdoutGrep --matches=1 ":${IDA2}:${SIDA2}:" assertStdoutGrep --matches=1 ":${IDA3}:${SIDA3}:" assertStdoutLineCount '==' 5 } doc_meshmbFollow="Follow another feed" setup_meshmbFollow() { setup_identities 3 executeOk_servald keyring set did $SIDA1 "" "Feed A" executeOk_servald keyring set did $SIDA2 "" "Feed B" executeOk_servald keyring set did $SIDA3 "" "Feed C" executeOk_servald meshmb send $IDA1 "Message 1" executeOk_servald meshmb send $IDA2 "Message 2" executeOk_servald meshmb send $IDA3 "Message 3" } test_meshmbFollow() { executeOk_servald meshmb follow $IDA1 $IDA2 executeOk_servald meshmb list following $IDA1 assertStdoutGrep --matches=1 ":$IDA2:$SIDA2:false:Feed B:[0-9]\+:Message 2\$" assertStdoutGrep --matches=0 ":$IDA3:$SIDA3:false:Feed C:[0-9]\+:Message 3\$" executeOk_servald meshmb follow $IDA1 $IDA3 executeOk_servald meshmb list following $IDA1 assertStdoutGrep --matches=1 ":$IDA2:$SIDA2:false:Feed B:[0-9]\+:Message 2\$" assertStdoutGrep --matches=1 ":$IDA3:$SIDA3:false:Feed C:[0-9]\+:Message 3\$" executeOk_servald meshmb ignore $IDA1 $IDA2 executeOk_servald meshmb list following $IDA1 assertStdoutGrep --matches=0 ":$IDA2:$SIDA2:false:Feed B:[0-9]\+:Message 2\$" assertStdoutGrep --matches=1 ":$IDA3:$SIDA3:false:Feed C:[0-9]\+:Message 3\$" } doc_meshmbThreading="Thread incoming message feeds" setup_meshmbThreading() { setup_identities 5 executeOk_servald keyring set did $SIDA1 "" "Feed A" executeOk_servald keyring set did $SIDA2 "" "Feed B" executeOk_servald keyring set did $SIDA3 "" "Feed C" executeOk_servald keyring set did $SIDA4 "" "Feed D" executeOk_servald keyring set did $SIDA5 "" "Feed E" executeOk_servald meshmb send $IDA2 "Message 2" executeOk_servald meshmb send $IDA3 "Message 3" } test_meshmbThreading() { executeOk_servald meshmb follow $IDA1 $IDA2 executeOk_servald meshmb follow $IDA1 $IDA3 executeOk_servald meshmb activity $IDA1 assertStdoutGrep --matches=1 "0:$IDA3:$SIDA3:Feed C:[0-9]\+:[0-9]\+:Message 3\$" assertStdoutGrep --matches=1 "1:$IDA2:$SIDA2:Feed B:[0-9]\+:[0-9]\+:Message 2\$" executeOk_servald meshmb send $IDA4 "Message 4" executeOk_servald meshmb follow $IDA1 $IDA4 executeOk_servald meshmb send $IDA4 "Message 5" executeOk_servald meshmb activity $IDA1 assertStdoutGrep --matches=1 "0:$IDA4:$SIDA4:Feed D:[0-9]\+:[0-9]\+:Message 5\$" assertStdoutGrep --matches=1 "1:$IDA4:$SIDA4:Feed D:[0-9]\+:[0-9]\+:Message 4\$" executeOk_servald meshmb send $IDA5 "Message 6" executeOk_servald meshmb follow $IDA1 $IDA5 executeOk_servald meshmb activity $IDA1 assertStdoutGrep --matches=1 "0:$IDA5:$SIDA5:Feed E:[0-9]\+:[0-9]\+:Message 6\$" executeOk_servald meshmb send $IDA2 "Message 7" executeOk_servald meshmb activity $IDA1 executeOk_servald meshmb send $IDA3 "Message 8" executeOk_servald meshmb activity $IDA1 executeOk_servald meshmb send $IDA4 "Message 9" executeOk_servald meshmb activity $IDA1 executeOk_servald meshmb send $IDA5 "Message 10" executeOk_servald meshmb activity $IDA1 executeOk_servald meshmb send $IDA1 "Message 11" executeOk_servald meshmb activity $IDA1 tfw_cat --stdout assertStdoutGrep --matches=1 "0:$IDA1:$SIDA1:Feed A:[0-9]\+:[0-9]\+:Message 11\$" assertStdoutGrep --matches=1 "1:$IDA5:$SIDA5:Feed E:[0-9]\+:[0-9]\+:Message 10\$" assertStdoutGrep --matches=1 "2:$IDA4:$SIDA4:Feed D:[0-9]\+:[0-9]\+:Message 9\$" assertStdoutGrep --matches=1 "3:$IDA3:$SIDA3:Feed C:[0-9]\+:[0-9]\+:Message 8\$" assertStdoutGrep --matches=1 "4:$IDA2:$SIDA2:Feed B:[0-9]\+:[0-9]\+:Message 7\$" assertStdoutGrep --matches=1 "5:$IDA5:$SIDA5:Feed E:[0-9]\+:[0-9]\+:Message 6\$" } doc_meshmbBlock="Record blocked feeds" setup_meshmbBlock() { setup_identities 4 executeOk_servald keyring set did $SIDA1 "" "Feed A" executeOk_servald keyring set did $SIDA2 "" "Feed B" executeOk_servald keyring set did $SIDA3 "" "Feed C" executeOk_servald keyring set did $SIDA4 "" "Feed D" executeOk_servald meshmb send $IDA2 "Message 1" executeOk_servald meshmb send $IDA3 "Message 2" executeOk_servald meshmb send $IDA4 "Message 3" executeOk_servald meshmb follow $IDA1 $IDA2 executeOk_servald meshmb follow $IDA1 $IDA3 } test_meshmbBlock() { executeOk_servald meshmb block $IDA1 $IDA3 executeOk_servald meshmb block $IDA1 $IDA4 executeOk_servald meshmb activity $IDA1 tfw_cat --stdout assertStdoutGrep --matches=1 "0:$IDA2:$SIDA2:Feed B:[0-9]\+:[0-9]\+:Message 1\$" # what was followed, disappears assertStdoutGrep --matches=0 ":$IDA3:$SIDA3:" executeOk_servald meshmb list following $IDA1 tfw_cat --stdout assertStdoutGrep --matches=1 ":$IDA2:$SIDA2:false:Feed B:[0-9]\+:Message 1\$" assertStdoutGrep --matches=1 ":$IDA3:$SIDA3:true::-1:\$" assertStdoutGrep --matches=1 ":$IDA4:$SIDA4:true::-1:\$" } runTests "$@"