73 lines
2.1 KiB
Tcl
73 lines
2.1 KiB
Tcl
proc log_file_matches {log pattern} {
|
|
set fp [open $log r]
|
|
set content [read $fp]
|
|
close $fp
|
|
string match $pattern $content
|
|
}
|
|
|
|
start_server {tags {"regression"}} {
|
|
set slave [srv 0 client]
|
|
set slave_host [srv 0 host]
|
|
set slave_port [srv 0 port]
|
|
set slave_log [srv 0 stdout]
|
|
start_server {} {
|
|
set master [srv 0 client]
|
|
set master_host [srv 0 host]
|
|
set master_port [srv 0 port]
|
|
|
|
# Set the AUTH password
|
|
$master config set requirepass mypwd
|
|
$slave config set masterauth mypwd
|
|
|
|
# Start the replication process...
|
|
$slave slaveof $master_host $master_port
|
|
|
|
test {Slave is able to sync with master when AUTH is on} {
|
|
wait_for_condition 50 100 {
|
|
[log_file_matches $slave_log "*Finished with success*"]
|
|
} else {
|
|
fail "Slave is not able to sync with master when AUTH is on"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
start_server {tags {"regression"}} {
|
|
set A [srv 0 client]
|
|
set A_host [srv 0 host]
|
|
set A_port [srv 0 port]
|
|
|
|
set max_clients 5
|
|
set arg [format {overrides {maxclients %d requirepass foobar}} $max_clients]
|
|
start_server $arg {
|
|
set B [srv 0 client]
|
|
set B_host [srv 0 host]
|
|
set B_port [srv 0 port]
|
|
|
|
# Make server A a slave of server B
|
|
$A slaveof $B_host $B_port
|
|
|
|
test {Master should release the connection after an AUTH failure from a Slave} {
|
|
# Verify A changed role
|
|
wait_for_condition 50 100 {
|
|
[lindex [$A role] 0] eq {slave}
|
|
} else {
|
|
fail {"Can't turn the instance into a slave"}
|
|
}
|
|
|
|
# Wait for multiple connections from A to B
|
|
after 5000
|
|
|
|
# List all the clients connected to B
|
|
r auth foobar
|
|
set client_count 0
|
|
set client_list [r client list]
|
|
foreach item $client_list {
|
|
if ([string match "id=*" $item]) {
|
|
incr client_count
|
|
}
|
|
}
|
|
assert {$client_count < $max_clients}
|
|
}
|
|
}
|
|
} |