From 5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Wed, 21 Jan 2026 22:40:55 +0100 Subject: Add Redis source code for testing --- .../tests/unit/cluster/internal-secret.tcl | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 examples/redis-unstable/tests/unit/cluster/internal-secret.tcl (limited to 'examples/redis-unstable/tests/unit/cluster/internal-secret.tcl') 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] + } + } + } + } +} -- cgit v1.2.3