summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-24 18:01:41 +0200
committerantirez <antirez@gmail.com>2014-04-24 18:01:41 +0200
commitc3f85c010738a9a84bf60d2b4c7654c5c6b76e92 (patch)
tree034fe67259bd22068146412290f3fa52402ed49d
parent7d9b45b4a17edbfbce776487051539ff9a7f886d (diff)
downloadredis-c3f85c010738a9a84bf60d2b4c7654c5c6b76e92.tar.gz
Redis Cluster test framework skeleton.
-rwxr-xr-xruntest-cluster14
-rw-r--r--tests/cluster/cluster.tcl7
-rw-r--r--tests/cluster/run.tcl22
-rw-r--r--tests/cluster/tests/00-base.tcl16
-rw-r--r--tests/cluster/tests/includes/init-tests.tcl13
5 files changed, 72 insertions, 0 deletions
diff --git a/runtest-cluster b/runtest-cluster
new file mode 100755
index 000000000..27829a5fe
--- /dev/null
+++ b/runtest-cluster
@@ -0,0 +1,14 @@
+#!/bin/sh
+TCL_VERSIONS="8.5 8.6"
+TCLSH=""
+
+for VERSION in $TCL_VERSIONS; do
+ TCL=`which tclsh$VERSION 2>/dev/null` && TCLSH=$TCL
+done
+
+if [ -z $TCLSH ]
+then
+ echo "You need tcl 8.5 or newer in order to run the Redis Sentinel test"
+ exit 1
+fi
+$TCLSH tests/cluster/run.tcl $*
diff --git a/tests/cluster/cluster.tcl b/tests/cluster/cluster.tcl
new file mode 100644
index 000000000..685c501da
--- /dev/null
+++ b/tests/cluster/cluster.tcl
@@ -0,0 +1,7 @@
+# Cluster-specific test functions.
+#
+# Copyright (C) 2014 Salvatore Sanfilippo antirez@gmail.com
+# This softare is released under the BSD License. See the COPYING file for
+# more information.
+
+
diff --git a/tests/cluster/run.tcl b/tests/cluster/run.tcl
new file mode 100644
index 000000000..acb6d49cd
--- /dev/null
+++ b/tests/cluster/run.tcl
@@ -0,0 +1,22 @@
+# Cluster 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/cluster
+source cluster.tcl
+source ../instances.tcl
+
+proc main {} {
+ parse_options
+ spawn_instance redis $::redis_base_port $::instances_count {
+ "cluster-enabled yes"
+ "appendonly yes"
+ }
+ run_tests
+ cleanup
+}
+
+if {[catch main e]} {
+ puts $::errorInfo
+ cleanup
+}
diff --git a/tests/cluster/tests/00-base.tcl b/tests/cluster/tests/00-base.tcl
new file mode 100644
index 000000000..e3b88e3e8
--- /dev/null
+++ b/tests/cluster/tests/00-base.tcl
@@ -0,0 +1,16 @@
+# Check the basic monitoring and failover capabilities.
+
+source "../tests/includes/init-tests.tcl"
+
+if {$::simulate_error} {
+ test "This test will fail" {
+ fail "Simulated error"
+ }
+}
+
+test "Cluster nodes are reachable." {
+ foreach_redis_id id {
+ # Every node should just know itself.
+ assert {[R $id ping] eq {PONG}}
+ }
+}
diff --git a/tests/cluster/tests/includes/init-tests.tcl b/tests/cluster/tests/includes/init-tests.tcl
new file mode 100644
index 000000000..e3d5471d3
--- /dev/null
+++ b/tests/cluster/tests/includes/init-tests.tcl
@@ -0,0 +1,13 @@
+# Initialization tests -- most units will start including this.
+
+test "(init) Restart killed instances" {
+ foreach type {redis} {
+ foreach_${type}_id id {
+ if {[get_instance_attrib $type $id pid] == -1} {
+ puts -nonewline "$type/$id "
+ flush stdout
+ restart_instance $type $id
+ }
+ }
+ }
+}