File: swim.result

package info (click to toggle)
tarantool 2.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 85,364 kB
  • sloc: ansic: 513,760; cpp: 69,489; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,173; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (234 lines) | stat: -rw-r--r-- 8,622 bytes parent folder | download | duplicates (3)
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
	*** main_f ***
1..23
	*** swim_test_one_link ***
    1..6
    ok 1 - no rounds - no fullmesh
    ok 2 - one link
    ok 3 - self 0 is alive
    ok 4 - self 1 is alive
    ok 5 - 0 sees 1 as alive
    ok 6 - 1 sees 0 as alive
ok 1 - subtests
	*** swim_test_one_link: done ***
	*** swim_test_sequence ***
    1..1
    ok 1 - sequence
ok 2 - subtests
	*** swim_test_sequence: done ***
	*** swim_test_uuid_update ***
    1..7
    ok 1 - UUID update
    ok 2 - old UUID is marked as 'left'
    ok 3 - old UUID is dropped after a while
    ok 4 - dropped everywhere
    ok 5 - two members in each
    ok 6 - can not update to an existing UUID - swim_cfg fails
    ok 7 - diag says 'exists'
ok 3 - subtests
	*** swim_test_uuid_update: done ***
	*** swim_test_cfg ***
    1..16
    ok 1 - first cfg failed - no URI
    ok 2 - diag says 'mandatory'
    ok 3 - first cfg failed - no UUID
    ok 4 - diag says 'mandatory'
    ok 5 - configured first time
    ok 6 - second time can omit URI, UUID
    ok 7 - hearbeat is dynamic
    ok 8 - URI is unchanged after recfg with NULL URI
    ok 9 - can not use invalid URI
    ok 10 - diag says 'invalid uri'
    ok 11 - can not use domain names
    ok 12 - diag says 'invalid uri'
    ok 13 - UNIX sockets are not supported
    ok 14 - diag says 'only IP'
    ok 15 - can not bind to an occupied port
    ok 16 - diag says 'bind'
ok 4 - subtests
	*** swim_test_cfg: done ***
	*** swim_test_add_remove ***
    1..14
    ok 1 - can not add an existing member
    ok 2 - diag says 'already exists'
    ok 3 - can not add a invalid uri
    ok 4 - diag says 'invalid uri'
    ok 5 - can not remove self
    ok 6 - diag says the same
    ok 7 - find by UUID works
    ok 8 - now remove one element
    ok 9 - and it can not be found anymore
    ok 10 - remove of a not existing member
    ok 11 - after removal the cluster is not in fullmesh
    ok 12 - but it is back in 1 step
    ok 13 - back in fullmesh after a member removal in the middle of a step
    ok 14 - if a referenced member is dropped, it can be detected from the public API
ok 5 - subtests
	*** swim_test_add_remove: done ***
	*** swim_test_basic_failure_detection ***
    1..9
    ok 1 - node is added as alive
    ok 2 - member still is not suspected after 1 noack
    ok 3 - but it is suspected after one more
    ok 4 - it is not dead after 2 more noacks
    ok 5 - but it is dead after one more
    ok 6 - after 2 more unacks the member still is not deleted - dissemination TTD keeps it
    ok 7 - but it is dropped after 2 rounds when TTD gets 0
    ok 8 - fullmesh is restored
    ok 9 - a member is added back on an ACK
ok 6 - subtests
	*** swim_test_basic_failure_detection: done ***
	*** swim_test_probe ***
    1..3
    ok 1 - probe validates URI
    ok 2 - send probe
    ok 3 - receive ACK on probe and get fullmesh
ok 7 - subtests
	*** swim_test_probe: done ***
	*** swim_test_refute ***
    1..6
    ok 1 - S2 increments its own incarnation to refute its suspicion
    ok 2 - new incarnation has reached S1 with a next round message
    ok 3 - after restart S2's version is 0 again
    ok 4 - but generation is new
    ok 5 - S2 disseminates new incarnation, S1 learns it
    ok 6 - and considers S2 alive
ok 8 - subtests
	*** swim_test_refute: done ***
	*** swim_test_basic_gossip ***
    1..4
    ok 1 - S1 still thinks that S2 is alive
    ok 2 - but one more second, and a second ack timed out - S1 sees S2 as suspected
    ok 3 - S3 still thinks that S2 is alive
    ok 4 - S3 learns about suspected S2 from S1
ok 9 - subtests
	*** swim_test_basic_gossip: done ***
	*** swim_test_too_big_packet ***
    1..3
    ok 1 - despite S1 can not send all the 50 members in a one packet, fullmesh is eventually reached
    ok 2 - a dead member is detected in time not depending on cluster size
    ok 3 - S26 death is eventually learned by everyone
ok 10 - subtests
	*** swim_test_too_big_packet: done ***
	*** swim_test_undead ***
    1..2
    ok 1 - member S2 is dead
    ok 2 - but it is never deleted due to the cfg option
ok 11 - subtests
	*** swim_test_undead: done ***
	*** swim_test_packet_loss ***
    1..5
    ok 1 - drop rate = 5.00, but the failure is disseminated
    ok 2 - drop rate = 10.00, but the failure is disseminated
    ok 3 - drop rate = 20.00, but the failure is disseminated
    ok 4 - drop rate = 50.00, but the failure is disseminated
    ok 5 - drop rate = 90.00, but the failure is disseminated
ok 12 - subtests
	*** swim_test_packet_loss: done ***
	*** swim_test_quit ***
    1..10
    ok 1 - 'self' is 'left' immediately after quit
    ok 2 - 'quit' is sent to all the members without delays between dispatches
    ok 3 - quited member S1 has returned and refuted the old status
    ok 4 - another member S2 has taken the quited UUID
    ok 5 - S3 did not add S1 back when received its 'quit'
    ok 6 - S2 finally got 'quit' message from S1, but with its 'own' UUID - refute it
    ok 7 - S3 sees S1 as left
    ok 8 - S2 does not see S1 at all
    ok 9 - after more time S1 is dropped from S3
    ok 10 - and still is not added to S2 - left members can not be added
ok 13 - subtests
	*** swim_test_quit: done ***
	*** swim_test_uri_update ***
    1..2
    ok 1 - S1 updated its URI and S2 sees that
    ok 2 - S2 still keeps new S1's URI, even received the old one from S3
ok 14 - subtests
	*** swim_test_uri_update: done ***
	*** swim_test_broadcast ***
    1..6
    ok 1 - S1 chooses to broadcast with port 2
    ok 2 - S2 receives the broadcast from S1
    ok 3 - others don't
    ok 4 - S1 broadcasts ping without port
    ok 5 - now everyone sees S1
    ok 6 - fullmesh is reached, and no one link was added explicitly
ok 15 - subtests
	*** swim_test_broadcast: done ***
	*** swim_test_payload_basic ***
    1..11
    ok 1 - no payload by default
    ok 2 - can not set too big payload
    ok 3 - diag says too big
    ok 4 - payload is set
    ok 5 - version is incremented on each payload update
    ok 6 - payload is successfully obtained back
    ok 7 - payload is disseminated
    ok 8 - payload is changed
    ok 9 - version is incremented on each payload update
    ok 10 - second payload is disseminated
    ok 11 - third payload is disseminated via anti-entropy
ok 16 - subtests
	*** swim_test_payload_basic: done ***
	*** swim_test_indirect_ping ***
    1..2
    ok 1 - S1 is still alive everywhere
    ok 2 - as well as S2 - they communicated via S3
ok 17 - subtests
	*** swim_test_indirect_ping: done ***
	*** swim_test_encryption ***
    1..3
    ok 1 - cluster works with encryption
    ok 2 - different encryption keys - can't interact
    ok 3 - cluster works after encryption has been disabled
ok 18 - subtests
	*** swim_test_encryption: done ***
	*** swim_test_slow_net ***
    1..0
    # slow network leads to idle round steps, they should not produce a new message
ok 19 - subtests
	*** swim_test_slow_net: done ***
	*** swim_test_triggers ***
    1..20
    ok 1 - trigger is fired
    ok 2 - is not deleted
    ok 3 - ctx.member is set
    ok 4 - ctx.events is set
    ok 5 - self payload is updated
    ok 6 - self is set as a member
    ok 7 - both version and payload events are presented
    ok 8 - suspicion fired a trigger
    ok 9 - status suspected
    ok 10 - death fired a trigger
    ok 11 - status dead
    ok 12 - drop fired a trigger
    ok 13 - status dropped
    ok 14 - dropped member is not presented in the member table
    ok 15 - but is in the event context
    ok 16 - yielding trigger is fired
    ok 17 - non-yielding still is not
    ok 18 - trigger is not deleted until all currently sleeping triggers are finished
    # now all the triggers are done and deleted
    ok 19 - local URI update warns about version update
    ok 20 - version is a part of incarnation, so the latter is updated too
ok 20 - subtests
	*** swim_test_triggers: done ***
	*** swim_test_generation ***
    1..3
    ok 1 - S1 disseminated its payload to S2
    ok 2 - S1 restarted and set another payload. Without generation it could lead to never disseminated new payload.
    ok 3 - S2 sees new generation of S1
ok 21 - subtests
	*** swim_test_generation: done ***
	*** swim_test_dissemination_speed ***
    1..2
    ok 1 - dissemination work in log time even at the very start of a cluster
    ok 2 - dissemination can withstand an event storm
ok 22 - subtests
	*** swim_test_dissemination_speed: done ***
	*** swim_test_suspect_new_members ***
    1..2
    ok 1 - S2 dropped S1 as dead
    ok 2 - S3 didn't add S1 from S2's messages, because S1 didn't answer on a ping
ok 23 - subtests
	*** swim_test_suspect_new_members: done ***
	*** main_f: done ***