Skip to content
This repository has been archived by the owner on Apr 5, 2023. It is now read-only.

Commit

Permalink
Sentinel test files / directories layout improved.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
antirez committed Apr 24, 2014
1 parent e6b6813 commit 897adc1
Show file tree
Hide file tree
Showing 10 changed files with 38 additions and 26 deletions.
2 changes: 1 addition & 1 deletion runtest-sentinel
Expand Up @@ -11,4 +11,4 @@ then
echo "You need tcl 8.5 or newer in order to run the Redis Sentinel test"
exit 1
fi
$TCLSH tests/sentinel.tcl $*
$TCLSH tests/sentinel/run.tcl $*
37 changes: 15 additions & 22 deletions tests/sentinel.tcl → tests/instances.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
# more information.

package require Tcl 8.5

set tcl_precision 17
source tests/support/redis.tcl
source tests/support/util.tcl
source tests/support/server.tcl
source tests/support/test.tcl
source ../support/redis.tcl
source ../support/util.tcl
source ../support/server.tcl
source ../support/test.tcl

set ::verbose 0
set ::pause_on_error 0
Expand All @@ -22,8 +27,8 @@ set ::pids {} ; # We kill everything at exit
set ::dirs {} ; # We remove all the temp dirs at exit
set ::run_matching {} ; # If non empty, only tests matching pattern are run.

if {[catch {cd tests/sentinel-tmp}]} {
puts "tests/sentinel-tmp directory not found."
if {[catch {cd tmp}]} {
puts "tmp directory not found."
puts "Please run this test from the Redis source root."
exit 1
}
Expand Down Expand Up @@ -61,7 +66,7 @@ proc spawn_instance {type base_port count {conf {}}} {
} else {
error "Unknown instance type."
}
set pid [exec ../../src/${prgname} $cfgfile &]
set pid [exec ../../../src/${prgname} $cfgfile &]
lappend ::pids $pid

# Check availability
Expand Down Expand Up @@ -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
# on error in order to give the developer a chance to understand more about
# the error condition while the instances are still running.
Expand Down Expand Up @@ -224,7 +221,7 @@ proc test {descr code} {
}

proc run_tests {} {
set tests [lsort [glob ../sentinel-tests/*]]
set tests [lsort [glob ../tests/*]]
foreach test $tests {
if {$::run_matching ne {} && [string match $::run_matching $test] == 0} {
continue
Expand Down Expand Up @@ -383,7 +380,7 @@ proc restart_instance {type id} {
} else {
set prgname redis-sentinel
}
set pid [exec ../../src/${prgname} $cfgfile &]
set pid [exec ../../../src/${prgname} $cfgfile &]
set_instance_attrib $type $id pid $pid
lappend ::pids $pid

Expand All @@ -396,7 +393,3 @@ proc restart_instance {type id} {
set_instance_attrib $type $id link [redis 127.0.0.1 $port]
}

if {[catch main e]} {
puts $::errorInfo
cleanup
}
19 changes: 19 additions & 0 deletions tests/sentinel/run.tcl
@@ -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.

source "../sentinel-tests/includes/init-tests.tcl"
source "../tests/includes/init-tests.tcl"

if {$::simulate_error} {
test "This test will fail" {
Expand Down
@@ -1,6 +1,6 @@
# 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" {
set old_port [RI $master_id tcp_port]
Expand Down
Expand Up @@ -5,7 +5,7 @@
# 2) That partitioned slaves point to new master when they are partitioned
# 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 {} {
uplevel 1 {
Expand Down
File renamed without changes.

0 comments on commit 897adc1

Please sign in to comment.