mirror of
https://github.com/hanzoai/redis.git
synced 2026-10-30 18:25:12 +00:00
in the original test, we start a cluster with 20 instances(10 masters + 10 replicas), which leads to frequent disconnections of instances in a slow environment, resulting in an inability to achieve consistency. This test reduced the number of instances from 20 to 6.
72 lines
2.5 KiB
Tcl
72 lines
2.5 KiB
Tcl
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]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|