]> git.saurik.com Git - redis.git/commitdiff
New tests related to scripts max execution time.
authorantirez <antirez@gmail.com>
Thu, 19 Apr 2012 21:49:33 +0000 (23:49 +0200)
committerantirez <antirez@gmail.com>
Thu, 19 Apr 2012 21:49:46 +0000 (23:49 +0200)
tests/unit/scripting.tcl

index ed58bca44a13d72aee8c10bd4535a489ce42baed..a60c65b437debfcaee9ca11b90a82ee060ddc070 100644 (file)
@@ -273,6 +273,44 @@ start_server {tags {"scripting"}} {
     }
 }
 
     }
 }
 
+# Start a new server since the last test in this stanza will kill the
+# instance at all.
+start_server {tags {"scripting"}} {
+    test {Timedout read-only scripts can be killed by SCRIPT KILL} {
+        set rd [redis_deferring_client]
+        r config set lua-time-limit 10
+        $rd eval {while true do end} 0
+        after 200
+        catch {r ping} e
+        assert_match {BUSY*} $e
+        r script kill
+        assert_equal [r ping] "PONG"
+    }
+
+    test {Timedout scripts that modified data can't be killed by SCRIPT KILL} {
+        set rd [redis_deferring_client]
+        r config set lua-time-limit 10
+        $rd eval {redis.call('set','x','y'); while true do end} 0
+        after 200
+        catch {r ping} e
+        assert_match {BUSY*} $e
+        catch {r script kill} e
+        assert_match {ERR*} $e
+        catch {r ping} e
+        assert_match {BUSY*} $e
+    }
+
+    test {SHUTDOWN NOSAVE can kill a timedout script anyway} {
+        # The server sould be still unresponding to normal commands.
+        catch {r ping} e
+        assert_match {BUSY*} $e
+        catch {r shutdown nosave}
+        # Make sure the server was killed
+        catch {set rd [redis_deferring_client]} e
+        assert_match {*connection refused*} $e
+    }
+}
+
 start_server {tags {"scripting repl"}} {
     start_server {} {
         test {Before the slave connects we issue an EVAL command} {
 start_server {tags {"scripting repl"}} {
     start_server {} {
         test {Before the slave connects we issue an EVAL command} {