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 ***
|