diff options
Diffstat (limited to 'examples/redis-unstable/tests/unit/cluster/internal-secret.tcl')
| -rw-r--r-- | examples/redis-unstable/tests/unit/cluster/internal-secret.tcl | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/examples/redis-unstable/tests/unit/cluster/internal-secret.tcl b/examples/redis-unstable/tests/unit/cluster/internal-secret.tcl new file mode 100644 index 0000000..f310b74 --- /dev/null +++ b/examples/redis-unstable/tests/unit/cluster/internal-secret.tcl @@ -0,0 +1,71 @@ +proc num_unique_secrets {num_nodes} { + set secrets [list] + for {set i 0} {$i < $num_nodes} {incr i} { + lappend secrets [R $i debug internal_secret] + } + set num_secrets [llength [lsort -unique $secrets]] + return $num_secrets +} + +proc wait_for_secret_sync {maxtries delay num_nodes} { + wait_for_condition $maxtries $delay { + [num_unique_secrets $num_nodes] eq 1 + } else { + fail "Failed waiting for secrets to sync" + } +} + +start_cluster 3 3 {tags {external:skip cluster}} { + test "Test internal secret sync" { + wait_for_secret_sync 50 100 6 + } + + + set first_shard_host [srv 0 host] + set first_shard_port [srv 0 port] + + if {$::verbose} { + puts {cluster internal secret:} + puts [R 1 debug internal_secret] + } + + test "Join a node to the cluster and make sure it gets the same secret" { + start_server {tags {"external:skip"} overrides {cluster-enabled {yes}}} { + r cluster meet $first_shard_host $first_shard_port + wait_for_condition 50 100 { + [r debug internal_secret] eq [R 1 debug internal_secret] + } else { + puts [r debug internal_secret] + puts [R 1 debug internal_secret] + fail "Secrets not match" + } + } + } + + test "Join another cluster, make sure clusters sync on the internal secret" { + start_server {tags {"external:skip"} overrides {cluster-enabled {yes}}} { + set new_shard_host [srv 0 host] + set new_shard_port [srv 0 port] + start_server {tags {"external:skip"} overrides {cluster-enabled {yes}}} { + r cluster meet $new_shard_host $new_shard_port + wait_for_condition 50 100 { + [r debug internal_secret] eq [r -1 debug internal_secret] + } else { + puts [r debug internal_secret] + puts [r -1 debug internal_secret] + fail "Secrets not match" + } + if {$::verbose} { + puts {new cluster internal secret:} + puts [r -1 debug internal_secret] + } + r cluster meet $first_shard_host $first_shard_port + wait_for_secret_sync 50 100 8 + if {$::verbose} { + puts {internal secret after join to bigger cluster:} + puts [r -1 debug internal_secret] + } + } + } + } +} |
