]> git.saurik.com Git - redis.git/commitdiff
WATCH tests
authorantirez <antirez@gmail.com>
Tue, 25 May 2010 12:04:46 +0000 (14:04 +0200)
committerantirez <antirez@gmail.com>
Tue, 25 May 2010 12:04:46 +0000 (14:04 +0200)
tests/test_helper.tcl
tests/unit/cas.tcl [new file with mode: 0644]

index 1b6d161a5556aeac3e3594072a930002dbc6df08..035f013b5d299fd6a75341fb93ccb6122c64712c 100644 (file)
@@ -67,6 +67,7 @@ proc main {} {
     execute_tests "unit/sort"
     execute_tests "unit/expire"
     execute_tests "unit/other"
     execute_tests "unit/sort"
     execute_tests "unit/expire"
     execute_tests "unit/other"
+    execute_tests "unit/cas"
     execute_tests "integration/replication"
     execute_tests "integration/aof"
 
     execute_tests "integration/replication"
     execute_tests "integration/aof"
 
@@ -81,6 +82,7 @@ proc main {} {
     execute_tests "unit/sort"
     execute_tests "unit/expire"
     execute_tests "unit/other"
     execute_tests "unit/sort"
     execute_tests "unit/expire"
     execute_tests "unit/other"
+    execute_tests "unit/cas"
     
     puts "\n[expr $::passed+$::failed] tests, $::passed passed, $::failed failed"
     if {$::failed > 0} {
     
     puts "\n[expr $::passed+$::failed] tests, $::passed passed, $::failed failed"
     if {$::failed > 0} {
diff --git a/tests/unit/cas.tcl b/tests/unit/cas.tcl
new file mode 100644 (file)
index 0000000..5184391
--- /dev/null
@@ -0,0 +1,66 @@
+start_server default.conf {} {
+    test {EXEC works on WATCHed key not modified} {
+        r watch x y z
+        r watch k
+        r multi
+        r ping
+        r exec
+    } {PONG}
+
+    test {EXEC fail on WATCHed key modified (1 key of 1 watched)} {
+        r set x 30
+        r watch x
+        r set x 40
+        r multi
+        r ping
+        r exec
+    } {}
+
+    test {EXEC fail on WATCHed key modified (1 key of 5 watched)} {
+        r set x 30
+        r watch a b x k z
+        r set x 40
+        r multi
+        r ping
+        r exec
+    } {}
+
+    test {After successful EXEC key is no longer watched} {
+        r set x 30
+        r watch x
+        r multi
+        r ping
+        r exec
+        r set x 40
+        r multi
+        r ping
+        r exec
+    } {PONG}
+
+    test {After failed EXEC key is no longer watched} {
+        r set x 30
+        r watch x
+        r set x 40
+        r multi
+        r ping
+        r exec
+        r set x 40
+        r multi
+        r ping
+        r exec
+    } {PONG}
+
+    test {It is possible to UNWATCH} {
+        r set x 30
+        r watch x
+        r set x 40
+        r unwatch
+        r multi
+        r ping
+        r exec
+    } {PONG}
+
+    test {UNWATCH when there is nothing watched works as expected} {
+        r unwatch
+    } {OK}
+}