From 6c2564956fd7d098c96b9ea2065a735ac3fa10db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Thu, 20 Aug 2026 20:53:39 +0200 Subject: (test) Test: refactor successful attach to exported function --- attach.et | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/attach.et b/attach.et index ae00048..9163730 100644 --- a/attach.et +++ b/attach.et @@ -2,6 +2,26 @@ module attach import common + +export def perform_attach of dev to owner: + flush from owner matching // # TODO: forces (owner : Process), drop when not necessary + + send "peer-get-by-addr ${owner.node.ip} 29665" to dev + send "peer-get-by-addr ${dev.node.ip} 29665" to owner + expect /peer-get-by-addr ([0-9]+)/ from dev capture owner_pidx + expect /peer-get-by-addr ([0-9]+)/ from owner capture dev_pidx + + send "attach-to $owner_pidx" to dev + expect /attach-request $dev_pidx ([0-9]*)/ from owner capture code1 + expect /attach-response $owner_pidx ([0-9]*)/ from dev capture code2 + guard (code1 == code2) + + send "attach-accept $dev_pidx" to owner + send "attach-accept $owner_pidx" to dev + expect /attach-request-done $dev_pidx/ from owner + expect /attach-response-done $owner_pidx/ from dev + + test Attach: let services = "attach,sync" @@ -91,15 +111,7 @@ test SyncAfterAttach: expect /peer ([0-9]+) addr ${p.node.ip} 29665/ from p1 capture pidx expect /peer $pidx id Device./ from p1 - send "attach-to 1" - expect /attach-request $pidx ([0-9]*)/ from p1 capture code1 - expect /attach-response 1 ([0-9]*)/ capture code2 - guard (code1 == code2) - - send "attach-accept $pidx" to p1 - send "attach-accept 1" - expect /attach-request-done $pidx/ from p1 - expect /attach-response-done 1/ + perform_attach of p to p1 spawn as pd on nd spawn as p1 on n1 -- cgit v1.2.3 From c527ddef58adcf0816d6a3ed919637c8143e6087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 22 Aug 2026 08:38:35 +0200 Subject: (test) Test: include identity ref in local-identity events --- attach.et | 6 +++--- contact.et | 6 ++++-- storage.et | 10 +++++----- sync.et | 12 +++++++----- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/attach.et b/attach.et index 9163730..f5a6906 100644 --- a/attach.et +++ b/attach.et @@ -34,11 +34,11 @@ test Attach: send "start-server services $services" to p1 send "start-server services $services" to p2 expect from p1: - /local-identity Device1 Owner/ + /local-identity $refpat Device1 Owner/ /peer 1 addr ${p2.node.ip} 29665/ /peer 1 id Device2/ expect from p2: - /local-identity Device2/ + /local-identity $refpat Device2/ /peer 1 addr ${p1.node.ip} 29665/ /peer 1 id Device1 Owner/ @@ -65,7 +65,7 @@ test Attach: send "attach-accept 1" to p2 expect /attach-request-done 1/ from p1 expect /attach-response-done 1/ from p2 - expect /local-identity Device2 Owner/ from p2 + expect /local-identity $refpat Device2 Owner/ from p2 expect /peer 1 id Device2 Owner/ from p1 diff --git a/contact.et b/contact.et index 0f967a6..4bb99a4 100644 --- a/contact.et +++ b/contact.et @@ -1,5 +1,7 @@ module contact +import common + test Contact: let services = "attach,contact,sync" @@ -93,7 +95,7 @@ test Contact: # Attach peer 4 to Owner1 send "watch-local-identity" to p4 - expect /local-identity Device4/ from p4 + expect /local-identity $refpat Device4/ from p4 send "attach-to $peer4_1" to p4 local: @@ -105,7 +107,7 @@ test Contact: send "attach-accept $peer4_1" to p4 expect /attach-request-done $peer1_4/ from p1 expect /attach-response-done $peer4_1/ from p4 - expect /local-identity Device4 Owner1/ from p4 + expect /local-identity $refpat Device4 Owner1/ from p4 expect /peer $peer1_4 id Device4 Owner1/ from p1 expect /peer $peer2_4 id Device4 Owner1/ from p2 expect /peer $peer3_4 id Device4 Owner1/ from p3 diff --git a/storage.et b/storage.et index ee19e6e..a374bca 100644 --- a/storage.et +++ b/storage.et @@ -396,11 +396,11 @@ test SharedStateWatcher: send "start-server services $services" to p1 send "start-server services $services" to p2 expect from p1: - /local-identity Device1 Owner/ + /local-identity $refpat Device1 Owner/ /peer 1 addr ${p2.node.ip} 29665/ /peer 1 id Device2/ expect from p2: - /local-identity Device2/ + /local-identity $refpat Device2/ /peer 1 addr ${p1.node.ip} 29665/ /peer 1 id Device1 Owner/ @@ -414,7 +414,7 @@ test SharedStateWatcher: send "attach-accept 1" to p2 expect /attach-request-done 1/ from p1 expect /attach-response-done 1/ from p2 - expect /local-identity Device2 Owner/ from p2 + expect /local-identity $refpat Device2 Owner/ from p2 expect /peer 1 id Device2 Owner/ from p1 for i in [1..5]: @@ -440,7 +440,7 @@ test LocalStateKeepUnknown: with p: send "create-identity Device" send "watch-local-identity" - expect /local-identity Device/ + expect /local-identity $refpat Device/ send "local-state-get" expect /local-state-get ($refpat)/ capture s1 @@ -465,7 +465,7 @@ test LocalStateKeepUnknown: expect /local-state-get $s2/ send "update-local-identity Device2" - expect /local-identity Device2/ + expect /local-identity $refpat Device2/ send "local-state-get" expect /local-state-get ($refpat)/ capture s3 diff --git a/sync.et b/sync.et index f98b527..be6250d 100644 --- a/sync.et +++ b/sync.et @@ -1,5 +1,7 @@ module sync +import common + test Sync: let services = "attach,sync" @@ -14,12 +16,12 @@ test Sync: send "start-server services $services" to p1 send "start-server services $services" to p2 expect from p1: - /local-identity Device1 Owner/ + /local-identity $refpat Device1 Owner/ /shared-identity Owner/ /peer 1 addr ${p2.node.ip} 29665/ /peer 1 id Device2/ expect from p2: - /local-identity Device2/ + /local-identity $refpat Device2/ /peer 1 addr ${p1.node.ip} 29665/ /peer 1 id Device1 Owner/ @@ -33,7 +35,7 @@ test Sync: send "attach-accept 1" to p2 expect /attach-request-done 1/ from p1 expect /attach-response-done 1/ from p2 - expect /local-identity Device2 Owner/ from p2 + expect /local-identity $refpat Device2 Owner/ from p2 expect /shared-identity Owner/ from p2 expect /peer 1 id Device2 Owner/ from p1 @@ -66,7 +68,7 @@ test Sync: send "peer-add ${p1.node.ip}" expect: - /local-identity Device3/ + /local-identity $refpat Device3/ /peer 1 addr ${p1.node.ip} 29665/ /peer 1 id Device1 NewOwner3/ @@ -83,7 +85,7 @@ test Sync: send "attach-accept 2" to p1 send "attach-accept 1" to p3 - expect /local-identity Device3 NewOwner3/ from p3 + expect /local-identity $refpat Device3 NewOwner3/ from p3 expect /shared-identity NewOwner3/ from p3 send "update-shared-identity NewOwner4" to p3 -- cgit v1.2.3 From d8328589ef248b49ea894abaf478c6c98c96d2f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 22 Aug 2026 08:45:55 +0200 Subject: (test) Test: discovery of other owned devices --- discovery.et | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/discovery.et b/discovery.et index 1115887..9f2f06f 100644 --- a/discovery.et +++ b/discovery.et @@ -1,5 +1,7 @@ module discovery +import attach + def refpat = /blake2#[0-9a-f]*/ test ManualDiscovery: @@ -364,3 +366,114 @@ test DiscoveryTunnelRefused: send "stop-server" to p for p in [ pd, p1, p2 ]: expect /stop-server-done/ from p + + +test CommonOwnerDiscovery: + let services = "discovery:trace" + + subnet sd + subnet s1 + subnet s2 + subnet s3 + + node nd on sd + node n1 on s1 + node n2 on s2 + node n3 on s3 + + # TODO: move under the following "local" and capture values from inner block + spawn as p1_init on n1 + spawn as p2_init on n2 + spawn as p3_init on n3 + + send "create-identity Device1 Owner" to p1_init + expect /create-identity-done ref ($refpat).*/ from p1_init capture p1_id_ext + send "identity-info $p1_id_ext" to p1_init + expect /identity-info ref $p1_id_ext base ($refpat) owner ($refpat).*/ from p1_init capture p1_id, owner_ext + send "identity-info $owner_ext" to p1_init + expect /identity-info ref $owner_ext base ($refpat).*/ from p1_init capture owner + + local: + spawn as pd on nd + let p1 = p1_init + let p2 = p2_init + let p3 = p3_init + + send "create-identity Device2" to p2 + send "create-identity Device3" to p3 + + expect /create-identity-done .*/ from p2 + expect /create-identity-done .*/ from p3 + + send "create-identity Discovery" to pd + + expect /create-identity-done .*/ from pd + + for p in [ p1, p2, p3 ]: + send "start-server services attach" to p + for p in [ p2, p3 ]: + send "watch-local-identity" to p + send "peer-add ${p1.node.ip} 29665" to p + expect /peer [0-9]+ addr ${p1.node.ip} 29665/ from p + expect /peer [0-9]+ id .*/ from p + perform_attach of p to p1 + + expect /local-identity ($refpat) Device. .*/ from p capture p_id_ext + send "identity-info $p_id_ext" to p + + for p in [ p1_init, p2_init, p3_init ]: + send "stop-server" to p + expect /stop-server-done/ from p + expect /identity-info ref $refpat base ($refpat).*/ from p2_init capture p2_id + expect /identity-info ref $refpat base ($refpat).*/ from p3_init capture p3_id + + local: + spawn as pd on nd + spawn as p1 on n1 + spawn as p2 on n2 + spawn as p3 on n3 + + ignore from p1 matching /discovery-packet-result via $refpat addr ICE/ + ignore from p2 matching /discovery-packet-result via $refpat addr ICE/ + ignore from p3 matching /discovery-packet-result via $refpat addr ICE/ + + # TODO: direct result should be returned only for exact device id match, keep for now + ignore from p1 matching /discovery-packet-result result .*/ + ignore from p2 matching /discovery-packet-result result .*/ + ignore from p3 matching /discovery-packet-result result .*/ + + for p in [ pd, p1, p2, p3 ]: + send "start-server services $services" to p + + send "peer-add ${pd.node.ip}" to p1 + expect from pd /discovery-packet ${p1.node.ip} 29665 search $owner/ + + send "peer-add ${pd.node.ip}" to p2 + expect from pd /discovery-packet ${p2.node.ip} 29665 search $owner/ + + expect from p1 /discovery-packet ${pd.node.ip} 29665 result $owner/ + expect from p1 /discovery-packet-result via ${p2_id} addr ${p2.node.ip} 29665/ + local: + expect from p1 /discovery-packet-result (.*)/ capture done + guard (done == done) + + expect from p2 /discovery-packet ${pd.node.ip} 29665 result $owner/ + expect from p2 /discovery-packet-result via ${p1_id} addr ${p1.node.ip} 29665/ + local: + expect from p2 /discovery-packet-result (.*)/ capture done + guard (done == "done") + + + send "peer-add ${pd.node.ip}" to p3 + expect from pd /discovery-packet ${p3.node.ip} 29665 search $owner/ + + expect from p3 /discovery-packet ${pd.node.ip} 29665 result $owner/ + expect from p3 /discovery-packet-result via ${p1_id} addr ${p1.node.ip} 29665/ + expect from p3 /discovery-packet-result via ${p2_id} addr ${p2.node.ip} 29665/ + local: + expect from p3 /discovery-packet-result (.*)/ capture done + guard (done == done) + + expect from p1: + /peer [0-9]+ addr ${p2.node.ip} 29665/ + /peer [0-9]+ addr ${p3.node.ip} 29665/ -- cgit v1.2.3 From 977a941ec1a9ff389528f11e536ff75d59b626f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 24 Aug 2026 19:15:49 +0200 Subject: (test) Test: include both base and ext ref in create-identity-done message --- invite.et | 18 +++++++++--------- message.et | 28 ++++++++++++++-------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/invite.et b/invite.et index 52f2c8b..336a37b 100644 --- a/invite.et +++ b/invite.et @@ -9,14 +9,14 @@ test InviteContact: spawn as p2 send "create-identity Device1 Owner1" to p1 - expect /create-identity-done ref ($refpat)/ from p1 capture p1id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p1 capture p1base, p1id send "identity-info $p1id" to p1 - expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner + expect /identity-info ref $p1id base $p1base owner ($refpat).*/ from p1 capture p1owner send "identity-info $p1owner" to p1 expect /identity-info ref $p1owner base ($refpat).*/ from p1 capture p1obase send "create-identity Device2 Owner2" to p2 - expect /create-identity-done ref ($refpat)/ from p2 capture p2id + expect /create-identity-done ref $refpat extref ($refpat).*/ from p2 capture p2id send "start-server services $services" to p1 send "start-server services $services" to p2 @@ -84,14 +84,14 @@ test InviteContactDelayed: spawn as p2 on s2 send "create-identity Device1 Owner1" to p1 - expect /create-identity-done ref ($refpat)/ from p1 capture p1id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p1 capture p1base, p1id send "identity-info $p1id" to p1 - expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner + expect /identity-info ref $p1id base $p1base owner ($refpat).*/ from p1 capture p1owner send "identity-info $p1owner" to p1 expect /identity-info ref $p1owner base ($refpat).*/ from p1 capture p1obase send "create-identity Device2 Owner2" to p2 - expect /create-identity-done ref ($refpat)/ from p2 capture p2id + expect /create-identity-done ref $refpat extref ($refpat)/ from p2 capture p2id send "start-server services $services" to p1 send "start-server services $services" to p2 @@ -147,14 +147,14 @@ test InviteContactDiscovery: expect /create-identity-done ref $refpat.*/ from pd send "create-identity Device1 Owner1" to p1 - expect /create-identity-done ref ($refpat)/ from p1 capture p1id + expect /create-identity-done ref ($refpat) extref ($refpat)/ from p1 capture p1base, p1id send "identity-info $p1id" to p1 - expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner + expect /identity-info ref $p1id base $p1base owner ($refpat).*/ from p1 capture p1owner send "identity-info $p1owner" to p1 expect /identity-info ref $p1owner base ($refpat).*/ from p1 capture p1obase send "create-identity Device2 Owner2" to p2 - expect /create-identity-done ref ($refpat)/ from p2 capture p2id + expect /create-identity-done ref $refpat extref ($refpat)/ from p2 capture p2id send "start-server services discovery" to pd send "start-server services $services" to p1 diff --git a/message.et b/message.et index a2028c7..eeef947 100644 --- a/message.et +++ b/message.et @@ -181,26 +181,26 @@ test DirectMessageDiscovery: send "create-identity Discovery" to pd send "create-identity Device1 Owner1" to p1 - expect /create-identity-done ref ($refpat)/ from p1 capture p1_id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p1 capture p1_base, p1_id send "identity-info $p1_id" to p1 - expect /identity-info ref $p1_id base ($refpat) owner ($refpat).*/ from p1 capture p1_base, p1_owner + expect /identity-info ref $p1_id base $p1_base owner ($refpat).*/ from p1 capture p1_owner send "create-identity Device2 Owner2" to p2 - expect /create-identity-done ref ($refpat)/ from p2 capture p2_id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p2 capture p2_base, p2_id send "identity-info $p2_id" to p2 - expect /identity-info ref $p2_id base ($refpat) owner ($refpat).*/ from p2 capture p2_base, p2_owner + expect /identity-info ref $p2_id base $p2_base owner ($refpat).*/ from p2 capture p2_owner send "identity-info $p2_owner" to p2 expect /identity-info ref $p2_owner base ($refpat).*/ from p2 capture p2_obase send "create-identity Device3 Owner3" to p3 - expect /create-identity-done ref ($refpat)/ from p3 capture p3_id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p3 capture p3_base, p3_id send "identity-info $p3_id" to p3 - expect /identity-info ref $p3_id base ($refpat) owner ($refpat).*/ from p3 capture p3_base, p3_owner + expect /identity-info ref $p3_id base $p3_base owner ($refpat).*/ from p3 capture p3_owner send "create-identity Device4 Owner4" to p4 - expect /create-identity-done ref ($refpat)/ from p4 capture p4_id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p4 capture p4_base, p4_id send "identity-info $p4_id" to p4 - expect /identity-info ref $p4_id base ($refpat) owner ($refpat).*/ from p4 capture p4_base, p4_owner + expect /identity-info ref $p4_id base $p4_base owner ($refpat).*/ from p4 capture p4_owner for p in [ p1, p2, p3, p4 ]: @@ -315,14 +315,14 @@ test DirectMessageSeen: spawn as p2 send "create-identity Device1 Owner1" to p1 - expect /create-identity-done ref ($refpat)/ from p1 capture p1id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p1 capture p1base, p1id send "identity-info $p1id" to p1 - expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner + expect /identity-info ref $p1id base $p1base owner ($refpat).*/ from p1 capture p1owner send "create-identity Device2 Owner2" to p2 - expect /create-identity-done ref ($refpat)/ from p2 capture p2id + expect /create-identity-done ref ($refpat) extref ($refpat).*/ from p2 capture p2base, p2id send "identity-info $p2id" to p2 - expect /identity-info ref $p2id base ($refpat) owner ($refpat).*/ from p2 capture p2base, p2owner + expect /identity-info ref $p2id base $p2base owner ($refpat).*/ from p2 capture p2owner for p in [ p1, p2 ]: send "start-server services $services" to p @@ -408,7 +408,7 @@ test MessageManyPeers: send "create-identity Device1 Owner7" to p7 send "create-identity Device1 Owner8" to p8 for p in ps: - expect /create-identity-done ref $refpat/ from p + expect /create-identity-done ref $refpat.*/ from p for p in ps: send "start-server services $services" to p @@ -440,7 +440,7 @@ test MessageManyConcurrent: send "create-identity Device1 Owner1" to p1 send "create-identity Device1 Owner2" to p2 for p in ps: - expect /create-identity-done ref $refpat/ from p + expect /create-identity-done ref $refpat.*/ from p send "start-server services $services" to p for p in ps: -- cgit v1.2.3 From 1f8fa3c77e82ce286b4240e1cbdd5befccfd7cde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Tue, 25 Aug 2026 19:29:01 +0200 Subject: (test) Test: wait for server start before adding peers --- attach.et | 3 +++ discovery.et | 10 ++++++++++ invite.et | 1 + message.et | 3 +++ network.et | 1 + 5 files changed, 18 insertions(+) diff --git a/attach.et b/attach.et index f5a6906..cb0d448 100644 --- a/attach.et +++ b/attach.et @@ -101,6 +101,7 @@ test SyncAfterAttach: expect /create-identity-done ref $refpat.*/ from p3 send "start-server services $services_1" to p1 + expect /start-server-done/ from p1 for p in [ p2, p3 ]: with p: send "start-server services $services_1" @@ -121,6 +122,8 @@ test SyncAfterAttach: send "start-server services $services_d" to pd for p in [ p1, p2, p3 ]: send "start-server services $services_2" to p + expect /start-server-done/ from pd + expect /start-server-done/ from p1 # Shared identity sync after explicit direct connection diff --git a/discovery.et b/discovery.et index 9f2f06f..b8d5c81 100644 --- a/discovery.et +++ b/discovery.et @@ -31,6 +31,7 @@ test ManualDiscovery: for id in [ p1obase, p1base ]: for p in [ pd, p1, p2 ]: send "start-server services $services" to p + expect from pd /start-server-done/ for p in [ p1, p2 ]: with p: @@ -60,6 +61,7 @@ test ManualDiscovery: for id in [ p1obase ]: for p in [ pd, p1, p2 ]: send "start-server services $services" to p + expect from pd /start-server-done/ with p1: send "peer-add ${pd.node.ip}" @@ -120,6 +122,7 @@ test DiscoveryJoinedAfter: for id in [ p1obase ]: for p in [ pd, p1, p2 ]: send "start-server services $services" to p + expect from pd /start-server-done/ for p in [ p2 ]: with p: @@ -189,6 +192,7 @@ test DiscoveryTunnel: for id in [ p1obase ]: for p in [ pd, p1, p2 ]: send "start-server services $services test-log" to p + expect from pd /start-server-done/ for p in [ p1, p2 ]: with p: @@ -264,6 +268,8 @@ test DiscoveryTunnelWithChangedAddresses: for p in [ p1, p2 ]: send "start-server services $services test-log" to p + expect from pd /start-server-done/ + for p in [ p1, p2 ]: with p: send "peer-add ${pd.node.ip}" @@ -347,6 +353,7 @@ test DiscoveryTunnelRefused: for id in [ p1obase ]: for p in [ pd, p1, p2 ]: send "start-server services $services test-log" to p + expect from pd /start-server-done/ for p in [ p1, p2 ]: with p: @@ -411,6 +418,8 @@ test CommonOwnerDiscovery: for p in [ p1, p2, p3 ]: send "start-server services attach" to p + for p in [ p1, p2, p3 ]: + expect /start-server-done/ from p for p in [ p2, p3 ]: send "watch-local-identity" to p send "peer-add ${p1.node.ip} 29665" to p @@ -444,6 +453,7 @@ test CommonOwnerDiscovery: for p in [ pd, p1, p2, p3 ]: send "start-server services $services" to p + expect from pd /start-server-done/ send "peer-add ${pd.node.ip}" to p1 expect from pd /discovery-packet ${p1.node.ip} 29665 search $owner/ diff --git a/invite.et b/invite.et index 336a37b..49a9bb3 100644 --- a/invite.et +++ b/invite.et @@ -159,6 +159,7 @@ test InviteContactDiscovery: send "start-server services discovery" to pd send "start-server services $services" to p1 send "start-server services $services" to p2 + expect /start-server-done/ from pd for p in [ p1, p2 ]: with p: diff --git a/message.et b/message.et index eeef947..76cef74 100644 --- a/message.et +++ b/message.et @@ -208,6 +208,7 @@ test DirectMessageDiscovery: send "start-server services $services" for p in [ p2, p3, p4 ]: + expect /start-server-done/ from p with p1: send "peer-add ${p.node.ip}" expect: @@ -239,6 +240,7 @@ test DirectMessageDiscovery: for p in [ p1, p2, p3, p4, pd ]: with p: send "start-server services $services" + expect /start-server-done/ from pd for p in [ p2, p3, p4, p1 ]: with p: @@ -288,6 +290,7 @@ test DirectMessageDiscovery: for p in [ p1, p2, p3, p4, pd ]: with p: send "start-server services $services" + expect /start-server-done/ from pd for p in [ p2, p3, p4, p1 ]: with p: send "peer-add ${pd.node.ip}" diff --git a/network.et b/network.et index ead1354..f87e3d0 100644 --- a/network.et +++ b/network.et @@ -530,6 +530,7 @@ test ConnectToSelf: with p: expect /create-identity-done .*/ send "start-server" + expect /start-server-done/ # no peer should be added: send "peer-add ${p.node.ip}" -- cgit v1.2.3 From 0c881dddc0c296cc3b3d51f06000ef0057bd45c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 22 Aug 2026 15:39:40 +0200 Subject: (test) Discovery on localhost Changelog: Discovery is now working also on localhost without need for external interface. --- discovery.et | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/discovery.et b/discovery.et index b8d5c81..46a5f10 100644 --- a/discovery.et +++ b/discovery.et @@ -487,3 +487,84 @@ test CommonOwnerDiscovery: expect from p1: /peer [0-9]+ addr ${p2.node.ip} 29665/ /peer [0-9]+ addr ${p3.node.ip} 29665/ + + +test DiscoveryOnLocalhost: + let services = "discovery" + node n + + # TODO: some way to have node without any connection + shell on n: + ip link set dev ${n.ifname} down + + spawn on n: + as pd + as ps # connection order to pd: + as p1 # search - p1 - ps + as p2 # search - ps - p2 + as p3 # p3 - search - ps + as p4 # p4 - ps - search + as p5 # ps - p5 - search + as p6 # ps - search - p6 + + send "create-identity Discovery" to pd + send "create-identity Searching" to ps + send "create-identity Device1" to p1 + send "create-identity Device2" to p2 + send "create-identity Device3" to p3 + send "create-identity Device4" to p4 + send "create-identity Device5" to p5 + send "create-identity Device6" to p6 + + expect /create-identity-done ref $refpat.*/ from pd + expect /create-identity-done ref ($refpat).*/ from ps capture ps_id + expect /create-identity-done ref ($refpat).*/ from p1 capture p1_id + expect /create-identity-done ref ($refpat).*/ from p2 capture p2_id + expect /create-identity-done ref ($refpat).*/ from p3 capture p3_id + expect /create-identity-done ref ($refpat).*/ from p4 capture p4_id + expect /create-identity-done ref ($refpat).*/ from p5 capture p5_id + expect /create-identity-done ref ($refpat).*/ from p6 capture p6_id + + send "start-server services $services" to pd + # wait for the first server to start and claim the discovery port + expect /start-server-done/ from pd + + for p in [ ps, p1, p2, p3, p4, p5, p6 ]: + send "start-server services $services" to p + for p in [ ps, p1, p2, p3, p4, p5, p6 ]: + expect /start-server-done/ from p + + send "discovery-connect $p1_id" to ps + send "discovery-connect $p2_id" to ps + + send "peer-add localhost" to p1 + send "peer-add localhost" to p3 + send "peer-add localhost" to p4 + expect /peer [0-9]+ id Discovery/ from p1 + expect /peer [0-9]+ id Discovery/ from p3 + expect /peer [0-9]+ id Discovery/ from p4 + + send "discovery-connect $p3_id" to ps + + send "peer-add localhost" to ps + expect /peer [0-9]+ id Discovery/ from ps + + expect /peer [0-9]+ id Device1/ from ps + expect /peer [0-9]+ id Device3/ from ps + + send "peer-add localhost" to p2 + expect /peer [0-9]+ id Device2/ from ps + + send "discovery-connect $p4_id" to ps + expect /peer [0-9]+ id Device4/ from ps + + send "peer-add localhost" to p5 + expect /peer [0-9]+ id Discovery/ from p5 + + send "discovery-connect $p5_id" to ps + send "discovery-connect $p6_id" to ps + expect /peer [0-9]+ id Device5/ from ps + + send "peer-add localhost" to p6 + expect /peer [0-9]+ id Discovery/ from p6 + expect /peer [0-9]+ id Device6/ from ps -- cgit v1.2.3 From fdde593e12e363dc0513951401d428fd36a7fb84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 24 Aug 2026 18:57:48 +0200 Subject: (test) Test: common owner discovery after restart --- discovery.et | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/discovery.et b/discovery.et index 46a5f10..f80acb3 100644 --- a/discovery.et +++ b/discovery.et @@ -488,6 +488,26 @@ test CommonOwnerDiscovery: /peer [0-9]+ addr ${p2.node.ip} 29665/ /peer [0-9]+ addr ${p3.node.ip} 29665/ + for p in [ p1, p2 ]: + send "stop-server" to p + for p in [ p1, p2 ]: + expect /stop-server-done/ from p + for p in [ p1, p2 ]: + send "start-server services $services" to p + + send "peer-add ${pd.node.ip}" to p1 + send "peer-add ${p3.node.ip}" to p2 + + expect from p1: + /peer [0-9]+ addr ${pd.node.ip} 29665/ + /peer [0-9]+ addr ${p2.node.ip} 29665/ + /peer [0-9]+ addr ${p3.node.ip} 29665/ + + expect from p2: + /peer [0-9]+ addr ${pd.node.ip} 29665/ + /peer [0-9]+ addr ${p1.node.ip} 29665/ + /peer [0-9]+ addr ${p3.node.ip} 29665/ + test DiscoveryOnLocalhost: let services = "discovery" -- cgit v1.2.3 From 4cb55936d53e0d1c49881bc3f9ffb4e3c5dbf65c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Fri, 28 Aug 2026 22:01:41 +0200 Subject: (test) Test: all discovery ordering also for non-localhost case --- discovery.et | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/discovery.et b/discovery.et index f80acb3..763d6b2 100644 --- a/discovery.et +++ b/discovery.et @@ -509,6 +509,90 @@ test CommonOwnerDiscovery: /peer [0-9]+ addr ${p3.node.ip} 29665/ +test DiscoveryAnyOrder: + let services = "discovery" + + subnet sd + subnet ss + subnet s1 + subnet s2 + subnet s3 + subnet s4 + subnet s5 + subnet s6 + + spawn on sd as pd + spawn on ss as ps # connection order to pd: + spawn on s1 as p1 # search - p1 - ps + spawn on s2 as p2 # search - ps - p2 + spawn on s3 as p3 # p3 - search - ps + spawn on s4 as p4 # p4 - ps - search + spawn on s5 as p5 # ps - p5 - search + spawn on s6 as p6 # ps - search - p6 + + send "create-identity Discovery" to pd + send "create-identity Searching" to ps + send "create-identity Device1" to p1 + send "create-identity Device2" to p2 + send "create-identity Device3" to p3 + send "create-identity Device4" to p4 + send "create-identity Device5" to p5 + send "create-identity Device6" to p6 + + expect /create-identity-done ref $refpat.*/ from pd + expect /create-identity-done ref ($refpat).*/ from ps capture ps_id + expect /create-identity-done ref ($refpat).*/ from p1 capture p1_id + expect /create-identity-done ref ($refpat).*/ from p2 capture p2_id + expect /create-identity-done ref ($refpat).*/ from p3 capture p3_id + expect /create-identity-done ref ($refpat).*/ from p4 capture p4_id + expect /create-identity-done ref ($refpat).*/ from p5 capture p5_id + expect /create-identity-done ref ($refpat).*/ from p6 capture p6_id + + send "start-server services $services" to pd + # wait for the first server to start and claim the discovery port + expect /start-server-done/ from pd + + for p in [ ps, p1, p2, p3, p4, p5, p6 ]: + send "start-server services $services" to p + for p in [ ps, p1, p2, p3, p4, p5, p6 ]: + expect /start-server-done/ from p + + send "discovery-connect $p1_id" to ps + send "discovery-connect $p2_id" to ps + + send "peer-add ${pd.node.ip} 29665" to p1 + send "peer-add ${pd.node.ip} 29665" to p3 + send "peer-add ${pd.node.ip} 29665" to p4 + expect /peer [0-9]+ id Discovery/ from p1 + expect /peer [0-9]+ id Discovery/ from p3 + expect /peer [0-9]+ id Discovery/ from p4 + + send "discovery-connect $p3_id" to ps + + send "peer-add ${pd.node.ip} 29665" to ps + expect /peer [0-9]+ id Discovery/ from ps + + expect /peer [0-9]+ id Device1/ from ps + expect /peer [0-9]+ id Device3/ from ps + + send "peer-add ${pd.node.ip} 29665" to p2 + expect /peer [0-9]+ id Device2/ from ps + + send "discovery-connect $p4_id" to ps + expect /peer [0-9]+ id Device4/ from ps + + send "peer-add ${pd.node.ip} 29665" to p5 + expect /peer [0-9]+ id Discovery/ from p5 + + send "discovery-connect $p5_id" to ps + send "discovery-connect $p6_id" to ps + expect /peer [0-9]+ id Device5/ from ps + + send "peer-add ${pd.node.ip} 29665" to p6 + expect /peer [0-9]+ id Discovery/ from p6 + expect /peer [0-9]+ id Device6/ from ps + + test DiscoveryOnLocalhost: let services = "discovery" node n -- cgit v1.2.3 From a271cccc66698754612a46164ecbea66c4296d43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 7 Sep 2026 21:39:17 +0200 Subject: (test) Test: commands working with custom shared state --- state.et | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 state.et diff --git a/state.et b/state.et new file mode 100644 index 0000000..ab8703d --- /dev/null +++ b/state.et @@ -0,0 +1,26 @@ +module state + +import common + +test SharedStateLocal: + spawn as p + with p: + send "create-identity Device Owner" + expect /create-identity-done ref $refpat extref ($refpat).*/ capture device + send "identity-info $device" + expect /identity-info ref $device base $refpat owner ($refpat).*/ capture owner + + send "shared-state-val-get 0c6c1fe0-f2d7-4891-926b-c332449f7871" + expect /shared-state-val-get 0c6c1fe0-f2d7-4891-926b-c332449f7871 $owner/ + + for i in [ 1 .. 10 ]: + send: + "store rec" + "i:i $i" + "" + expect /store-done ($refpat)/ capture r + + send "shared-state-val-set ffffffff-0000-0000-0000-000000000001 $r" + + send "shared-state-val-get ffffffff-0000-0000-0000-000000000001" + expect /shared-state-val-get ffffffff-0000-0000-0000-000000000001 $r/ -- cgit v1.2.3 From 43bd41296aa9051cfcbc566ea3fe70dc3b9c37a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 3 Oct 2026 16:30:02 +0200 Subject: (test) Test: add type annotations to perfrom_attach --- attach.et | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/attach.et b/attach.et index cb0d448..42f8e94 100644 --- a/attach.et +++ b/attach.et @@ -3,9 +3,7 @@ module attach import common -export def perform_attach of dev to owner: - flush from owner matching // # TODO: forces (owner : Process), drop when not necessary - +export def perform_attach of (dev : Process) to (owner : Process): send "peer-get-by-addr ${owner.node.ip} 29665" to dev send "peer-get-by-addr ${dev.node.ip} 29665" to owner expect /peer-get-by-addr ([0-9]+)/ from dev capture owner_pidx -- cgit v1.2.3