summaryrefslogtreecommitdiff
path: root/discovery.et
diff options
context:
space:
mode:
Diffstat (limited to 'discovery.et')
-rw-r--r--discovery.et674
1 files changed, 0 insertions, 674 deletions
diff --git a/discovery.et b/discovery.et
deleted file mode 100644
index 763d6b2..0000000
--- a/discovery.et
+++ /dev/null
@@ -1,674 +0,0 @@
-module discovery
-
-import attach
-
-def refpat = /blake2#[0-9a-f]*/
-
-test ManualDiscovery:
- let services = "discovery"
-
- 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
-
- # 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
- expect from pd /start-server-done/
-
- 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
-
- # Test delayed discovery with new peer
- 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}"
- expect:
- /peer 1 addr ${pd.node.ip} 29665/
- /peer 1 id Discovery/
- expect from pd:
- /peer [12] addr ${p1.node.ip} 29665/
- /peer [12] id Device1 Owner1/
-
- send "discovery-connect $id" to p2
-
- with p2:
- send "peer-add ${pd.node.ip}"
- expect:
- /peer 1 addr ${pd.node.ip} 29665/
- /peer 1 id Discovery/
- expect from pd:
- /peer [12] addr ${p2.node.ip} 29665/
- /peer [12] id Device2 Owner2/
-
- 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
-
-
-test DiscoveryJoinedAfter:
- let services = "discovery"
-
- 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
-
- 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:
- 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 Device. Owner./
-
- send "discovery-connect $id" to p2
-
- for p in [ p1 ]:
- 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 Device. Owner./
-
- 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
-
-
-test DiscoveryTunnel:
- 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 ]:
- 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:
- 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-tunnel 1 $id" to p2
-
- expect /net-ostream-open ${pd.node.ip} 29665 1 1/ from p2
- expect /net-ostream-open ${p1.node.ip} 29665 1 1/ from pd
- expect /net-ostream-open ${pd.node.ip} 29665 1 1/ from p1
- expect /net-ostream-open ${p2.node.ip} 29665 1 1/ from pd
-
- expect from p1:
- /peer 2 addr tunnel@.*/
- /peer 2 id Device2 Owner2/
- expect from p2:
- /peer 2 addr tunnel@.*/
- /peer 2 id Device1 Owner1/
-
- send "peer-drop 2" to p1
- send "peer-drop 2" to p2
-
- expect /net-ostream-close-ack ${pd.node.ip} 29665 1 0/ from p2
- expect /net-ostream-close-ack ${p1.node.ip} 29665 1 0/ from pd
- expect /net-ostream-close-ack ${pd.node.ip} 29665 1 0/ from p1
- expect /net-ostream-close-ack ${p2.node.ip} 29665 1 0/ 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 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
-
- expect from pd /start-server-done/
-
- 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"
-
- 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 ]:
- 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:
- 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-tunnel 1 $id" to p2
- expect /net-ostream-open ${pd.node.ip} 29665 1 1/ from p2
- expect /net-ostream-close-ack ${pd.node.ip} 29665 1 0/ from p2
-
- for p in [ pd, p1, p2 ]:
- 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 [ 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
- 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
- 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/
-
- 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/
-
- 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 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
-
- # 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