summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-02-19 21:40:25 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2025-02-19 21:40:25 +0100
commit94d84d2b7a35b965b26f823e1ee7e7c1ce419d87 (patch)
treedf6bd4c3ce2c7c944c63ca77b02aee552a8436d2 /test
parent37d10a1912b845e0b1a50062d84f5c50e41c4ea6 (diff)
parent1f6eb330e9fd9f0004dec4783496d36520dbd2a3 (diff)
Merge branch 'release-0.1'HEADmaster
Diffstat (limited to 'test')
-rw-r--r--test/discovery.test75
1 files changed, 75 insertions, 0 deletions
diff --git a/test/discovery.test b/test/discovery.test
new file mode 100644
index 0000000..f2dddb7
--- /dev/null
+++ b/test/discovery.test
@@ -0,0 +1,75 @@
+module discovery
+
+test ManualDiscovery:
+ let services = "discovery,test"
+ let refpat = /blake2#[0-9a-f]*/
+
+ subnet sd
+ subnet s1
+ subnet s2
+
+ spawn as pd on sd
+ spawn as p1 on s1
+ spawn as p2 on s2
+ send "create-identity Discovery" to pd
+ send "create-identity Device1 Owner1" to p1
+ send "create-identity Device2 Owner2" to p2
+
+ expect /create-identity-done ref ($refpat).*/ from p1 capture p1id
+ send "identity-info $p1id" to p1
+ expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner
+ send "identity-info $p1owner" to p1
+ expect /identity-info ref $p1owner base ($refpat).*/ from p1 capture p1obase
+
+ expect /create-identity-done ref $refpat.*/ from p2
+ expect /create-identity-done ref $refpat.*/ from pd
+
+ # TODO: avoid the need to send identity objects with weak refs
+ for p in [ p1, p2 ]:
+ with p:
+ send "start-server services $services"
+ send "peer-add ${p2.node.ip}" to p1
+ expect from p1:
+ /peer 1 addr ${p2.node.ip} 29665/
+ /peer 1 id Device2 Owner2/
+ expect from p2:
+ /peer 1 addr ${p1.node.ip} 29665/
+ /peer 1 id Device1 Owner1/
+ for r in [ p1base, p1obase ]:
+ with p1:
+ send "test-message-send 1 $r"
+ expect /test-message-send done/
+ with p2:
+ expect /test-message-received rec [0-9]+ $r/
+ for p in [ p1, p2 ]:
+ send "stop-server" to p
+ expect /stop-server-done/ from p
+
+ # Test discovery using owner and device identities:
+ for id in [ p1obase, p1base ]:
+ for p in [ pd, p1, p2 ]:
+ send "start-server services $services" to p
+
+ for p in [ p1, p2 ]:
+ with p:
+ send "peer-add ${pd.node.ip}"
+ expect:
+ /peer 1 addr ${pd.node.ip} 29665/
+ /peer 1 id Discovery/
+ expect from pd:
+ /peer [12] addr ${p.node.ip} 29665/
+ /peer [12] id .*/
+
+ send "discovery-connect $id" to p2
+
+ expect from p1:
+ /peer [0-9]+ addr ${p2.node.ip} 29665/
+ /peer [0-9]+ id Device2 Owner2/
+ expect from p2:
+ /peer [0-9]+ addr ${p1.node.ip} 29665/
+ /peer [0-9]+ id Device1 Owner1/
+
+ for p in [ pd, p1, p2 ]:
+ send "stop-server" to p
+ for p in [ pd, p1, p2 ]:
+ expect /stop-server-done/ from p