2024-07-10 13:53:52 +02:00
|
|
|
# Small cluster. No need for failovers.
|
|
|
|
start_cluster 2 2 {tags {external:skip cluster} overrides {cluster-replica-no-failover yes}} {
|
|
|
|
|
|
|
|
test "Set cluster announced IPv4 to invalid IP" {
|
|
|
|
catch {R 0 config set cluster-announce-client-ipv4 banana} e
|
|
|
|
assert_match "*Invalid IPv4 address*" $e
|
|
|
|
}
|
|
|
|
|
|
|
|
test "Set cluster announced IPv4 and check that it propagates" {
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
set res [R $j config set cluster-announce-client-ipv4 "111.222.111.$j"]
|
|
|
|
}
|
|
|
|
|
|
|
|
# CLUSTER SLOTS
|
|
|
|
wait_for_condition 50 100 {
|
|
|
|
[are_cluster_announced_ips_propagated {111.222.111.*}]
|
|
|
|
} else {
|
|
|
|
fail "cluster-announce-client-ipv4 were not propagated"
|
|
|
|
}
|
|
|
|
|
|
|
|
# CLUSTER SHARDS
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
foreach shard [R $j CLUSTER SHARDS] {
|
|
|
|
foreach node [dict get $shard "nodes"] {
|
|
|
|
set ip [dict get $node "ip"]
|
|
|
|
set endpoint [dict get $node "endpoint"]
|
|
|
|
assert_match "111.222.111*" $ip
|
|
|
|
assert_match "111.222.111*" $endpoint
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# CLUSTER NODES
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
set lines [split [R $j CLUSTER NODES] "\r\n"]
|
|
|
|
foreach l $lines {
|
|
|
|
set l [string trim $l]
|
|
|
|
if {$l eq {}} continue
|
|
|
|
assert_equal 1 [regexp {^[0-9a-f]+ 111\.222\.111\.[0-9]} $l]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Redirects
|
|
|
|
catch {R 0 set foo foo} e
|
|
|
|
assert_match "MOVED * 111.222.111*:*" $e
|
|
|
|
|
|
|
|
# Now that everything is propagated, assert everyone agrees
|
|
|
|
wait_for_cluster_propagation
|
|
|
|
}
|
|
|
|
|
|
|
|
test "Clear announced client IPv4 and check that it propagates" {
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
R $j config set cluster-announce-client-ipv4 ""
|
|
|
|
}
|
|
|
|
|
|
|
|
wait_for_condition 50 100 {
|
|
|
|
[are_cluster_announced_ips_propagated "127.0.0.1"] eq 1
|
|
|
|
} else {
|
|
|
|
fail "Cleared cluster-announce-client-ipv4 were not propagated"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Redirect use the IP address
|
|
|
|
catch {R 0 set foo foo} e
|
|
|
|
assert_match "MOVED * 127.0.0.1:*" $e
|
|
|
|
|
|
|
|
# Now that everything is propagated, assert everyone agrees
|
|
|
|
wait_for_cluster_propagation
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
start_cluster 2 2 {tags {external:skip cluster ipv6} overrides {cluster-replica-no-failover yes bind {127.0.0.1 ::1}}} {
|
|
|
|
# Connecting to localhost as "::1" makes the clients use IPv6.
|
|
|
|
set clients {}
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
set level [expr -1 * $j]
|
|
|
|
lappend clients [valkey ::1 [srv $level port] 0 $::tls]
|
|
|
|
}
|
|
|
|
|
|
|
|
test "Set cluster announced IPv6 to invalid IP" {
|
|
|
|
catch {R 0 config set cluster-announce-client-ipv6 banana} e
|
|
|
|
assert_match "*Invalid IPv6 address*" $e
|
|
|
|
}
|
|
|
|
|
|
|
|
test "Set cluster announced IPv6 and check that it propagates" {
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
R $j config set cluster-announce-client-ipv6 "cafe:1234::$j"
|
|
|
|
}
|
|
|
|
|
|
|
|
# CLUSTER SLOTS
|
|
|
|
wait_for_condition 50 100 {
|
|
|
|
[are_cluster_announced_ips_propagated "cafe:1234::*" $clients] eq 1
|
|
|
|
} else {
|
|
|
|
fail "cluster-announce-client-ipv6 were not propagated"
|
|
|
|
}
|
|
|
|
|
|
|
|
# CLUSTER SHARDS
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
foreach shard [[lindex $clients $j] CLUSTER SHARDS] {
|
|
|
|
foreach node [dict get $shard "nodes"] {
|
|
|
|
set ip [dict get $node "ip"]
|
|
|
|
set endpoint [dict get $node "endpoint"]
|
|
|
|
assert_match "cafe:1234::*" $ip
|
|
|
|
assert_match "cafe:1234::*" $endpoint
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# CLUSTER NODES
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
set lines [split [[lindex $clients $j] CLUSTER NODES] "\r\n"]
|
|
|
|
foreach l $lines {
|
|
|
|
set l [string trim $l]
|
|
|
|
if {$l eq {}} continue
|
|
|
|
assert_equal 1 [regexp {^[0-9a-f]+ cafe:1234::[0-9]} $l]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Redirects
|
|
|
|
catch {[lindex $clients 0] set foo foo} e
|
|
|
|
assert_match "MOVED * cafe:1234::*:*" $e
|
|
|
|
|
|
|
|
# Now that everything is propagated, assert everyone agrees
|
|
|
|
wait_for_cluster_propagation
|
|
|
|
}
|
|
|
|
|
|
|
|
test "Clear announced client IPv6 and check that it propagates" {
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
R $j config set cluster-announce-client-ipv6 ""
|
|
|
|
}
|
|
|
|
|
|
|
|
wait_for_condition 50 100 {
|
|
|
|
[are_cluster_announced_ips_propagated "127.0.0.1" $clients] eq 1
|
|
|
|
} else {
|
|
|
|
fail "Cleared cluster-announce-client-ipv6 were not propagated"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Redirects
|
|
|
|
catch {[lindex $clients 0] set foo foo} e
|
|
|
|
assert_match "MOVED * 127.0.0.1:*" $e
|
|
|
|
|
|
|
|
# Now that everything is propagated, assert everyone agrees
|
|
|
|
wait_for_cluster_propagation
|
|
|
|
}
|
|
|
|
|
|
|
|
# Close clients
|
|
|
|
for {set j 0} {$j < [llength $::servers]} {incr j} {
|
|
|
|
[lindex $clients $j] close
|
|
|
|
}
|
|
|
|
}
|
2024-08-28 23:35:31 -07:00
|
|
|
|
|
|
|
start_cluster 1 0 {tags {external:skip cluster} overrides {cluster-replica-no-failover yes bind {127.0.0.1 ::1}}} {
|
|
|
|
test "Load cluster announced IPv4 config on server start" {
|
|
|
|
R 0 config set cluster-announce-client-ipv4 "1.1.1.1"
|
|
|
|
restart_server 0 true false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
start_cluster 1 0 {tags {external:skip cluster ipv6} overrides {cluster-replica-no-failover yes bind {127.0.0.1 ::1}}} {
|
|
|
|
test "Load cluster announced IPv6 config on server start" {
|
|
|
|
R 0 config set cluster-announce-client-ipv6 "cafe:1234::0"
|
|
|
|
restart_server 0 true false
|
|
|
|
}
|
|
|
|
}
|