Sentinel test files / directories layout improved.
The test now runs in a self-contained directory. The general abstractions to run the tests in an environment where mutliple instances are executed at the same time was extrapolated into instances.tcl, that will be reused to test Redis Cluster.
This commit is contained in:
parent
e6b6813656
commit
897adc1c8c
@ -11,4 +11,4 @@ then
|
|||||||
echo "You need tcl 8.5 or newer in order to run the Redis Sentinel test"
|
echo "You need tcl 8.5 or newer in order to run the Redis Sentinel test"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
$TCLSH tests/sentinel.tcl $*
|
$TCLSH tests/sentinel/run.tcl $*
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
# Sentinel test suite. Copyright (C) 2014 Salvatore Sanfilippo antirez@gmail.com
|
# Multi-instance test framework.
|
||||||
|
# This is used in order to test Sentinel and Redis Cluster, and provides
|
||||||
|
# basic capabilities for spawning and handling N parallel Redis / Sentinel
|
||||||
|
# instances.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014 Salvatore Sanfilippo antirez@gmail.com
|
||||||
# This softare is released under the BSD License. See the COPYING file for
|
# This softare is released under the BSD License. See the COPYING file for
|
||||||
# more information.
|
# more information.
|
||||||
|
|
||||||
package require Tcl 8.5
|
package require Tcl 8.5
|
||||||
|
|
||||||
set tcl_precision 17
|
set tcl_precision 17
|
||||||
source tests/support/redis.tcl
|
source ../support/redis.tcl
|
||||||
source tests/support/util.tcl
|
source ../support/util.tcl
|
||||||
source tests/support/server.tcl
|
source ../support/server.tcl
|
||||||
source tests/support/test.tcl
|
source ../support/test.tcl
|
||||||
|
|
||||||
set ::verbose 0
|
set ::verbose 0
|
||||||
set ::pause_on_error 0
|
set ::pause_on_error 0
|
||||||
@ -22,8 +27,8 @@ set ::pids {} ; # We kill everything at exit
|
|||||||
set ::dirs {} ; # We remove all the temp dirs at exit
|
set ::dirs {} ; # We remove all the temp dirs at exit
|
||||||
set ::run_matching {} ; # If non empty, only tests matching pattern are run.
|
set ::run_matching {} ; # If non empty, only tests matching pattern are run.
|
||||||
|
|
||||||
if {[catch {cd tests/sentinel-tmp}]} {
|
if {[catch {cd tmp}]} {
|
||||||
puts "tests/sentinel-tmp directory not found."
|
puts "tmp directory not found."
|
||||||
puts "Please run this test from the Redis source root."
|
puts "Please run this test from the Redis source root."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@ -61,7 +66,7 @@ proc spawn_instance {type base_port count {conf {}}} {
|
|||||||
} else {
|
} else {
|
||||||
error "Unknown instance type."
|
error "Unknown instance type."
|
||||||
}
|
}
|
||||||
set pid [exec ../../src/${prgname} $cfgfile &]
|
set pid [exec ../../../src/${prgname} $cfgfile &]
|
||||||
lappend ::pids $pid
|
lappend ::pids $pid
|
||||||
|
|
||||||
# Check availability
|
# Check availability
|
||||||
@ -122,14 +127,6 @@ proc parse_options {} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc main {} {
|
|
||||||
parse_options
|
|
||||||
spawn_instance sentinel $::sentinel_base_port $::instances_count
|
|
||||||
spawn_instance redis $::redis_base_port $::instances_count
|
|
||||||
run_tests
|
|
||||||
cleanup
|
|
||||||
}
|
|
||||||
|
|
||||||
# If --pause-on-error option was passed at startup this function is called
|
# If --pause-on-error option was passed at startup this function is called
|
||||||
# on error in order to give the developer a chance to understand more about
|
# on error in order to give the developer a chance to understand more about
|
||||||
# the error condition while the instances are still running.
|
# the error condition while the instances are still running.
|
||||||
@ -224,7 +221,7 @@ proc test {descr code} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc run_tests {} {
|
proc run_tests {} {
|
||||||
set tests [lsort [glob ../sentinel-tests/*]]
|
set tests [lsort [glob ../tests/*]]
|
||||||
foreach test $tests {
|
foreach test $tests {
|
||||||
if {$::run_matching ne {} && [string match $::run_matching $test] == 0} {
|
if {$::run_matching ne {} && [string match $::run_matching $test] == 0} {
|
||||||
continue
|
continue
|
||||||
@ -383,7 +380,7 @@ proc restart_instance {type id} {
|
|||||||
} else {
|
} else {
|
||||||
set prgname redis-sentinel
|
set prgname redis-sentinel
|
||||||
}
|
}
|
||||||
set pid [exec ../../src/${prgname} $cfgfile &]
|
set pid [exec ../../../src/${prgname} $cfgfile &]
|
||||||
set_instance_attrib $type $id pid $pid
|
set_instance_attrib $type $id pid $pid
|
||||||
lappend ::pids $pid
|
lappend ::pids $pid
|
||||||
|
|
||||||
@ -396,7 +393,3 @@ proc restart_instance {type id} {
|
|||||||
set_instance_attrib $type $id link [redis 127.0.0.1 $port]
|
set_instance_attrib $type $id link [redis 127.0.0.1 $port]
|
||||||
}
|
}
|
||||||
|
|
||||||
if {[catch main e]} {
|
|
||||||
puts $::errorInfo
|
|
||||||
cleanup
|
|
||||||
}
|
|
19
tests/sentinel/run.tcl
Normal file
19
tests/sentinel/run.tcl
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Sentinel test suite. Copyright (C) 2014 Salvatore Sanfilippo antirez@gmail.com
|
||||||
|
# This softare is released under the BSD License. See the COPYING file for
|
||||||
|
# more information.
|
||||||
|
|
||||||
|
cd tests/sentinel
|
||||||
|
source ../instances.tcl
|
||||||
|
|
||||||
|
proc main {} {
|
||||||
|
parse_options
|
||||||
|
spawn_instance sentinel $::sentinel_base_port $::instances_count
|
||||||
|
spawn_instance redis $::redis_base_port $::instances_count
|
||||||
|
run_tests
|
||||||
|
cleanup
|
||||||
|
}
|
||||||
|
|
||||||
|
if {[catch main e]} {
|
||||||
|
puts $::errorInfo
|
||||||
|
cleanup
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
# Check the basic monitoring and failover capabilities.
|
# Check the basic monitoring and failover capabilities.
|
||||||
|
|
||||||
source "../sentinel-tests/includes/init-tests.tcl"
|
source "../tests/includes/init-tests.tcl"
|
||||||
|
|
||||||
if {$::simulate_error} {
|
if {$::simulate_error} {
|
||||||
test "This test will fail" {
|
test "This test will fail" {
|
@ -1,6 +1,6 @@
|
|||||||
# Test Sentinel configuration consistency after partitions heal.
|
# Test Sentinel configuration consistency after partitions heal.
|
||||||
|
|
||||||
source "../sentinel-tests/includes/init-tests.tcl"
|
source "../tests/includes/init-tests.tcl"
|
||||||
|
|
||||||
test "We can failover with Sentinel 1 crashed" {
|
test "We can failover with Sentinel 1 crashed" {
|
||||||
set old_port [RI $master_id tcp_port]
|
set old_port [RI $master_id tcp_port]
|
@ -5,7 +5,7 @@
|
|||||||
# 2) That partitioned slaves point to new master when they are partitioned
|
# 2) That partitioned slaves point to new master when they are partitioned
|
||||||
# away during failover and return at a latter time.
|
# away during failover and return at a latter time.
|
||||||
|
|
||||||
source "../sentinel-tests/includes/init-tests.tcl"
|
source "../tests/includes/init-tests.tcl"
|
||||||
|
|
||||||
proc 03_test_slaves_replication {} {
|
proc 03_test_slaves_replication {} {
|
||||||
uplevel 1 {
|
uplevel 1 {
|
Loading…
Reference in New Issue
Block a user