blob: 9163730a0c8104eaf2ad23ef71b25372d234e31c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
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"
spawn as p1
spawn as p2
send "create-identity Device1 Owner" to p1
send "create-identity Device2" to p2
send "watch-local-identity" to p1
send "watch-local-identity" to p2
send "start-server services $services" to p1
send "start-server services $services" to p2
expect from p1:
/local-identity Device1 Owner/
/peer 1 addr ${p2.node.ip} 29665/
/peer 1 id Device2/
expect from p2:
/local-identity Device2/
/peer 1 addr ${p1.node.ip} 29665/
/peer 1 id Device1 Owner/
send "attach-to 1" to p2
expect /attach-request 1 .*/ from p1
expect /attach-response 1 .*/ from p2
send "attach-reject 1" to p1
expect /attach-request-failed 1 user/ from p1
expect /attach-response-failed 1 rejected/ from p2
send "attach-to 1" to p2
expect /attach-request 1 .*/ from p1
expect /attach-response 1 .*/ from p2
send "attach-reject 1" to p2
expect /attach-request-failed 1 rejected/ from p1
expect /attach-response-failed 1 user/ from p2
send "attach-to 1" to p2
expect /attach-request 1 ([0-9]*)/ from p1 capture code1
expect /attach-response 1 ([0-9]*)/ from p2 capture code2
guard (code1 == code2)
send "attach-accept 1" to p1
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 /peer 1 id Device2 Owner/ from p1
test SyncAfterAttach:
let services_1 = "attach"
let services_2 = "discovery,sync"
let services_d = "discovery"
subnet sd
subnet s1
subnet s2
subnet s3
node nd on sd
node n1 on s1
node n2 on s2
node n3 on s3
local:
spawn as pd on nd
spawn as p1 on n1
spawn as p2 on n2
spawn as p3 on n3
send "create-identity Discovery" to pd
send "create-identity Device1 Owner" to p1
send "create-identity Device2" to p2
send "create-identity Device3" to p3
expect /create-identity-done ref $refpat.*/ from pd
expect /create-identity-done ref $refpat.*/ from p1
expect /create-identity-done ref $refpat.*/ from p2
expect /create-identity-done ref $refpat.*/ from p3
send "start-server services $services_1" to p1
for p in [ p2, p3 ]:
with p:
send "start-server services $services_1"
send "peer-add ${p1.node.ip}"
expect /peer 1 addr ${p1.node.ip} 29665/
expect /peer 1 id Device1 Owner/
expect /peer ([0-9]+) addr ${p.node.ip} 29665/ from p1 capture pidx
expect /peer $pidx id Device./ from p1
perform_attach of p to p1
spawn as pd on nd
spawn as p1 on n1
spawn as p2 on n2
spawn as p3 on n3
send "start-server services $services_d" to pd
for p in [ p1, p2, p3 ]:
send "start-server services $services_2" to p
# Shared identity sync after explicit direct connection
send "peer-add ${p1.node.ip}" to p2
expect /peer 1 addr ${p2.node.ip} 29665/ from p1
expect /peer 1 id Device. Owner/ from p1
# Shared identity sync after automatic discovery
for p in [ p1, p3 ]:
send "peer-add ${pd.node.ip}" to p
expect /peer 2 addr ${pd.node.ip} 29665/ from p1
expect /peer 2 id Discovery/ from p1
expect /peer 3 addr ${p3.node.ip} 29665/ from p1
expect /peer 3 id Device. Owner/ from p1
|