summaryrefslogtreecommitdiff
path: root/test/network.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/network.test')
-rw-r--r--test/network.test326
1 files changed, 326 insertions, 0 deletions
diff --git a/test/network.test b/test/network.test
new file mode 100644
index 0000000..9540bf6
--- /dev/null
+++ b/test/network.test
@@ -0,0 +1,326 @@
+test Discovery:
+ spawn as p1
+ spawn as p2
+ send "create-identity Device1 Owner" to p1
+ send "create-identity Device2" to p2
+ send "start-server" to p1
+ send "start-server" to p2
+ expect from p1:
+ /peer 1 addr ${p2.node.ip} 29665/
+ /peer 1 id Device2/
+ expect from p2:
+ /peer 1 addr ${p1.node.ip} 29665/
+ /peer 1 id Device1 Owner/
+
+ send "update-local-identity Device1A" to p1
+ expect /peer 1 id Device1A Owner/ from p2
+
+ send "update-shared-identity OwnerA" to p1
+ expect /peer 1 id Device1A OwnerA/ from p2
+
+ send "update-local-identity Device1B" to p1
+ expect /peer 1 id Device1B OwnerA/ from p2
+
+ send "update-shared-identity OwnerB" to p1
+ expect /peer 1 id Device1B OwnerB/ from p2
+
+ with p2:
+ send "stop-server"
+ expect /stop-server-done/
+
+ send "update-shared-identity OwnerC" to p1
+
+ with p1:
+ send "stop-server"
+ expect /stop-server-done/
+
+ spawn as p3
+ spawn as p4
+ spawn as p5
+ spawn as p6
+ send "create-identity Device3" to p3
+ send "create-identity Device4" to p4
+ send "create-identity Device5" to p5
+ send "create-identity Device6" to p6
+
+ for p in [ p1, p2, p3, p4, p5, p6 ]:
+ send "start-server" to p
+
+ expect from p1:
+ /peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer1_2
+ /peer $peer1_2 id Device2/
+ /peer ([0-9]+) addr ${p3.node.ip} 29665/ capture peer1_3
+ /peer $peer1_3 id Device3/
+ /peer ([0-9]+) addr ${p4.node.ip} 29665/ capture peer1_4
+ /peer $peer1_4 id Device4/
+ /peer ([0-9]+) addr ${p5.node.ip} 29665/ capture peer1_5
+ /peer $peer1_5 id Device5/
+ /peer ([0-9]+) addr ${p6.node.ip} 29665/ capture peer1_6
+ /peer $peer1_6 id Device6/
+
+ expect from p2:
+ /peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer2_1
+ /peer $peer2_1 id Device1B OwnerC/
+ /peer ([0-9]+) addr ${p3.node.ip} 29665/ capture peer2_3
+ /peer $peer2_3 id Device3/
+ /peer ([0-9]+) addr ${p4.node.ip} 29665/ capture peer2_4
+ /peer $peer2_4 id Device4/
+ /peer ([0-9]+) addr ${p5.node.ip} 29665/ capture peer2_5
+ /peer $peer2_5 id Device5/
+ /peer ([0-9]+) addr ${p6.node.ip} 29665/ capture peer2_6
+ /peer $peer2_6 id Device6/
+
+ expect from p3:
+ /peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer3_1
+ /peer $peer3_1 id Device1B OwnerC/
+ /peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer3_2
+ /peer $peer3_2 id Device2/
+ /peer ([0-9]+) addr ${p4.node.ip} 29665/ capture peer3_4
+ /peer $peer3_4 id Device4/
+ /peer ([0-9]+) addr ${p5.node.ip} 29665/ capture peer3_5
+ /peer $peer3_5 id Device5/
+ /peer ([0-9]+) addr ${p6.node.ip} 29665/ capture peer3_6
+ /peer $peer3_6 id Device6/
+
+ expect from p4:
+ /peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer4_1
+ /peer $peer4_1 id Device1B OwnerC/
+ /peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer4_2
+ /peer $peer4_2 id Device2/
+ /peer ([0-9]+) addr ${p3.node.ip} 29665/ capture peer4_3
+ /peer $peer4_3 id Device3/
+ /peer ([0-9]+) addr ${p5.node.ip} 29665/ capture peer4_5
+ /peer $peer4_5 id Device5/
+ /peer ([0-9]+) addr ${p6.node.ip} 29665/ capture peer4_6
+ /peer $peer4_6 id Device6/
+
+ expect from p5:
+ /peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer5_1
+ /peer $peer5_1 id Device1B OwnerC/
+ /peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer5_2
+ /peer $peer5_2 id Device2/
+ /peer ([0-9]+) addr ${p3.node.ip} 29665/ capture peer5_3
+ /peer $peer5_3 id Device3/
+ /peer ([0-9]+) addr ${p4.node.ip} 29665/ capture peer5_4
+ /peer $peer5_4 id Device4/
+ /peer ([0-9]+) addr ${p6.node.ip} 29665/ capture peer5_6
+ /peer $peer5_6 id Device6/
+
+ expect from p6:
+ /peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer6_1
+ /peer $peer6_1 id Device1B OwnerC/
+ /peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer6_2
+ /peer $peer6_2 id Device2/
+ /peer ([0-9]+) addr ${p3.node.ip} 29665/ capture peer6_3
+ /peer $peer6_3 id Device3/
+ /peer ([0-9]+) addr ${p4.node.ip} 29665/ capture peer6_4
+ /peer $peer6_4 id Device4/
+ /peer ([0-9]+) addr ${p5.node.ip} 29665/ capture peer6_5
+ /peer $peer6_5 id Device5/
+
+
+test LargeData:
+ spawn as p1
+ spawn as p2
+ send "create-identity Device1" to p1
+ send "create-identity Device2" to p2
+ send "start-server" to p1
+ send "start-server" to p2
+ expect from p1:
+ /peer 1 addr ${p2.node.ip} 29665/
+ /peer 1 id Device2/
+ expect from p2:
+ /peer 1 addr ${p1.node.ip} 29665/
+ /peer 1 id Device1/
+
+ for i in [0..10]:
+ with p1:
+ # Create blob with (i * 1000) bytes
+ send "store blob"
+ for j in [1 .. i * 10]:
+ # 100 bytes each line
+ send "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789"
+ send ""
+ expect /store-done (blake2#[0-9a-f]*)/ capture ref
+
+ send "test-message-send 1 $ref"
+ expect /test-message-send done/
+ expect /test-message-received blob ${i*1000} $ref/ from p2
+
+
+test ManyStreams:
+ spawn as p1
+ spawn as p2
+ send "create-identity Device1" to p1
+ send "create-identity Device2" to p2
+ send "start-server" to p1
+ send "start-server" to p2
+ expect from p1:
+ /peer 1 addr ${p2.node.ip} 29665/
+ /peer 1 id Device2/
+ expect from p2:
+ /peer 1 addr ${p1.node.ip} 29665/
+ /peer 1 id Device1/
+
+ for i in [0..100]:
+ with p1:
+ # Create blob with 1000 bytes + decimal i
+ send "store blob"
+ for j in [1 .. 10]:
+ # 100 bytes each line
+ send "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789"
+ send "$i"
+ send ""
+ expect /store-done (blake2#[0-9a-f]*)/ capture ref
+
+ send "test-message-send 1 $ref"
+ expect /test-message-send done/
+ expect /test-message-received blob 100[2-4] $ref/ from p2
+
+
+test Reconnection:
+ spawn as p1
+ with p1:
+ send "create-identity Device1"
+ send "start-server"
+
+ node n
+ local:
+ spawn as p2 on n
+ send "create-identity Device2" to p2
+ send "start-server" to p2
+
+ expect from p1:
+ /peer 1 addr ${p2.node.ip} 29665/
+ /peer 1 id Device2/
+ expect from p2:
+ /peer 1 addr ${p1.node.ip} 29665/
+ /peer 1 id Device1/
+
+ with p1:
+ send "store blob"
+ send "message1"
+ send ""
+ expect /store-done (blake2#[0-9a-f]*)/ capture message
+
+ send "test-message-send 1 $message"
+ expect /test-message-send done/
+ expect /test-message-received blob [0-9]+ $message/ from p2
+
+ send "peer-list"
+ expect /peer-list-item 1 addr ${p2.node.ip} 29665 id Device2/
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ # Restart process on node 'n'
+ local:
+ spawn as p2 on n
+ send "start-server" to p2
+ send "peer-add ${p1.node.ip}" to p2
+
+ expect from p2:
+ /peer 1 addr ${p1.node.ip} 29665/
+ /peer 1 id Device1/
+
+ with p1:
+ send "store blob"
+ send "message2"
+ send ""
+ expect /store-done (blake2#[0-9a-f]*)/ capture message
+
+ send "test-message-send 1 $message"
+ expect /test-message-send done/
+ expect /test-message-received blob [0-9]+ $message/ from p2
+
+ # Drop and re-add peer p2:
+ with p1:
+ send "peer-list"
+ expect /peer-list-item 1 addr ${p2.node.ip} 29665 id Device2/
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ send "peer-drop 1"
+ send "peer-list"
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ send "peer-add ${p2.node.ip}"
+ expect /peer 2 addr ${p2.node.ip} 29665/
+ expect /peer 2 id Device2/
+
+ send "peer-list"
+ expect /peer-list-item 2 addr ${p2.node.ip} 29665 id Device2/
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ send "store blob"
+ send "message3"
+ send ""
+ expect /store-done (blake2#[0-9a-f]*)/ capture message
+
+ send "test-message-send 2 $message"
+ expect /test-message-send done/
+ expect /test-message-received blob [0-9]+ $message/ from p2
+
+ # Drop on both sides and re-add:
+ with p2:
+ send "peer-list"
+ expect /peer-list-item 1 addr ${p1.node.ip} 29665 id Device1/
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ send "peer-drop 1"
+ send "peer-list"
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ with p1:
+ send "peer-list"
+ expect /peer-list-item 2 addr ${p2.node.ip} 29665 id Device2/
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ send "peer-drop 2"
+ send "peer-list"
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ send "peer-add ${p1.node.ip}" to p2
+
+ with p2:
+ expect /peer 2 addr ${p1.node.ip} 29665/ from p2
+ expect /peer 2 id Device1/ from p2
+
+ send "peer-list"
+ expect /peer-list-item 2 addr ${p1.node.ip} 29665 id Device1/
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ send "store blob"
+ send "message4"
+ send ""
+ expect /store-done (blake2#[0-9a-f]*)/ capture message
+
+ send "test-message-send 2 $message"
+ expect /test-message-send done/
+
+ with p1:
+ expect /peer 3 addr ${p2.node.ip} 29665/
+ expect /peer 3 id Device2/
+
+ send "peer-list"
+ expect /peer-list-item 3 addr ${p2.node.ip} 29665 id Device2/
+ local:
+ expect /peer-list-(.*)/ capture done
+ guard (done == "done")
+
+ expect /test-message-received blob [0-9]+ $message/