2010-06-02 21:14:55 +00:00
|
|
|
start_server {tags {"cas"}} {
|
2010-05-25 12:04:46 +00:00
|
|
|
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
|
|
|
|
} {}
|
|
|
|
|
2012-01-30 06:36:49 +00:00
|
|
|
test {EXEC fail on WATCHed key modified by SORT with STORE even if the result is empty} {
|
|
|
|
r flushdb
|
|
|
|
r lpush foo bar
|
|
|
|
r watch foo
|
|
|
|
r sort emptylist store foo
|
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {}
|
|
|
|
|
2010-05-25 12:04:46 +00:00
|
|
|
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}
|
2010-05-25 17:30:24 +00:00
|
|
|
|
|
|
|
test {FLUSHALL is able to touch the watched keys} {
|
|
|
|
r set x 30
|
|
|
|
r watch x
|
|
|
|
r flushall
|
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {}
|
|
|
|
|
|
|
|
test {FLUSHALL does not touch non affected keys} {
|
|
|
|
r del x
|
|
|
|
r watch x
|
|
|
|
r flushall
|
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {PONG}
|
|
|
|
|
|
|
|
test {FLUSHDB is able to touch the watched keys} {
|
|
|
|
r set x 30
|
|
|
|
r watch x
|
|
|
|
r flushdb
|
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {}
|
|
|
|
|
|
|
|
test {FLUSHDB does not touch non affected keys} {
|
|
|
|
r del x
|
|
|
|
r watch x
|
|
|
|
r flushdb
|
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {PONG}
|
|
|
|
|
|
|
|
test {WATCH is able to remember the DB a key belongs to} {
|
|
|
|
r select 5
|
|
|
|
r set x 30
|
|
|
|
r watch x
|
|
|
|
r select 1
|
|
|
|
r set x 10
|
|
|
|
r select 5
|
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {PONG}
|
2010-07-05 17:38:12 +00:00
|
|
|
|
|
|
|
test {WATCH will consider touched keys target of EXPIRE} {
|
|
|
|
r del x
|
|
|
|
r set x foo
|
|
|
|
r watch x
|
|
|
|
r expire x 10
|
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {}
|
|
|
|
|
|
|
|
test {WATCH will not consider touched expired keys} {
|
|
|
|
r del x
|
|
|
|
r set x foo
|
2011-11-25 11:27:00 +00:00
|
|
|
r expire x 1
|
2010-07-05 17:38:12 +00:00
|
|
|
r watch x
|
2011-11-25 11:27:00 +00:00
|
|
|
after 1100
|
2010-07-05 17:38:12 +00:00
|
|
|
r multi
|
|
|
|
r ping
|
|
|
|
r exec
|
|
|
|
} {PONG}
|
2011-11-25 11:27:00 +00:00
|
|
|
|
|
|
|
test {DISCARD should clear the WATCH dirty flag on the client} {
|
|
|
|
r watch x
|
|
|
|
r set x 10
|
|
|
|
r multi
|
|
|
|
r discard
|
|
|
|
r multi
|
|
|
|
r incr x
|
|
|
|
r exec
|
|
|
|
} {11}
|
|
|
|
|
|
|
|
test {DISCARD should UNWATCH all the keys} {
|
|
|
|
r watch x
|
|
|
|
r set x 10
|
|
|
|
r multi
|
|
|
|
r discard
|
|
|
|
r set x 10
|
|
|
|
r multi
|
|
|
|
r incr x
|
|
|
|
r exec
|
|
|
|
} {11}
|
2010-05-25 12:04:46 +00:00
|
|
|
}
|