diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-02-26 21:17:32 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-02-28 18:51:19 +0100 |
| commit | 8a3509cad6ce14e149cec4dcbc1eeafb531c5cd5 (patch) | |
| tree | 5e6bccda1ffe0db50cfe7bbbf34e06b300d2e5c1 /test | |
| parent | 7126124e6ab2f4c6882b4f5116d3879112699405 (diff) | |
Discovery: clear peer map from dropped peers
Diffstat (limited to 'test')
| -rw-r--r-- | test/discovery.et | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/test/discovery.et b/test/discovery.et index e80a755..07173b6 100644 --- a/test/discovery.et +++ b/test/discovery.et @@ -164,6 +164,92 @@ test DiscoveryTunnel: expect /stop-server-done/ from p +test DiscoveryTunnelWithChangedAddresses: + let services = "discovery:tunnel" + + subnet sd + subnet s1 + subnet s2 + + spawn as pd on sd + spawn as p1 on s1 + spawn as p2 on s2 + + for n in [ p1.node, p2.node ]: + shell on n: + nft add table inet filter + nft add chain inet filter input '{ type filter hook input priority filter ; policy drop; }' + nft add rule inet filter input 'ct state { established, related } accept' + + 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 + + for id in [ p1obase ]: + send "start-server services $services test-log" to pd + + for p in [ p1, p2 ]: + send "start-server services $services test-log" 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 "peer-drop 1" to pd + send "peer-drop 2" to pd + for p in [ p1, p2 ]: + send "stop-server" to p + for p in [ p1, p2 ]: + shell on p.node as get_default: + ip route | grep ^default + expect /.* via ([0-9.]+).*/ from get_default capture default_route + shell on p.node: + ip addr del dev veth0 ${p.node.ip}/24 + ip addr add dev veth0 ${p.node.ip}0/24 + ip route add default via ${default_route} dev veth0 src ${p.node.ip}0 + for p in [ p1, p2 ]: + expect /stop-server-done/ from p + for p in [ p1, p2 ]: + send "start-server services $services test-log" 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 [0-9]+ addr ${p.node.ip}0 29665/ + /peer [0-9]+ id .*/ + + send "discovery-tunnel 1 $id" to p2 + + expect /net-ostream-open ${pd.node.ip} 29665 1 1/ from p2 + expect /net-ostream-open ${p1.node.ip}0 29665 1 1/ from pd + expect /net-ostream-open ${pd.node.ip} 29665 1 1/ from p1 + expect /net-ostream-open ${p2.node.ip}0 29665 1 1/ from pd + + for p in [ pd, p1, p2 ]: + send "stop-server" to p + for p in [ pd, p1, p2 ]: + expect /stop-server-done/ from p + + test DiscoveryTunnelRefused: let services = "discovery" |