1 start_server
default.conf
{} {
2 test
{Basic LPUSH
, RPUSH
, LLENGTH
, LINDEX
} {
3 set res
[r lpush mylist a
]
4 append res
[r lpush mylist b
]
5 append res
[r rpush mylist c
]
6 append res
[r llen mylist
]
7 append res
[r rpush anotherlist d
]
8 append res
[r lpush anotherlist e
]
9 append res
[r llen anotherlist
]
10 append res
[r
lindex mylist
0]
11 append res
[r
lindex mylist
1]
12 append res
[r
lindex mylist
2]
13 append res
[r
lindex anotherlist
0]
14 append res
[r
lindex anotherlist
1]
15 list $res [r
lindex mylist
100]
23 test
{Create a long
list and check every single element with LINDEX
} {
25 for {set i
0} {$i < 1000} {incr i
} {
28 for {set i
0} {$i < 1000} {incr i
} {
29 if {[r
lindex mylist
$i] eq
$i} {incr ok
}
30 if {[r
lindex mylist
[expr (-$i)-1]] eq
[expr 999-$i]} {
37 test
{Test elements with LINDEX in random access
} {
39 for {set i
0} {$i < 1000} {incr i
} {
40 set rint
[expr int
(rand
()*1000)]
41 if {[r
lindex mylist
$rint] eq
$rint} {incr ok
}
42 if {[r
lindex mylist
[expr (-$rint)-1]] eq
[expr 999-$rint]} {
49 test
{Check
if the
list is still ok
after a DEBUG RELOAD
} {
52 for {set i
0} {$i < 1000} {incr i
} {
53 set rint
[expr int
(rand
()*1000)]
54 if {[r
lindex mylist
$rint] eq
$rint} {incr ok
}
55 if {[r
lindex mylist
[expr (-$rint)-1]] eq
[expr 999-$rint]} {
62 test
{LLEN against non-list value
error} {
65 catch {r llen mylist
} err
69 test
{LLEN against non existing key
} {
73 test
{LINDEX against non-list value
error} {
74 catch {r
lindex mylist
0} err
78 test
{LINDEX against non existing key
} {
82 test
{LPUSH against non-list value
error} {
83 catch {r lpush mylist
0} err
87 test
{RPUSH against non-list value
error} {
88 catch {r rpush mylist
0} err
92 test
{RPOPLPUSH base case
} {
98 set v1
[r rpoplpush mylist newlist
]
99 set v2
[r rpoplpush mylist newlist
]
100 set l1
[r
lrange mylist
0 -1]
101 set l2
[r
lrange newlist
0 -1]
105 test
{RPOPLPUSH with the same
list as src and dst
} {
110 set l1
[r
lrange mylist
0 -1]
111 set v
[r rpoplpush mylist mylist
]
112 set l2
[r
lrange mylist
0 -1]
114 } {{a b c
} c
{c a b
}}
116 test
{RPOPLPUSH target
list already exists
} {
124 set v1
[r rpoplpush mylist newlist
]
125 set v2
[r rpoplpush mylist newlist
]
126 set l1
[r
lrange mylist
0 -1]
127 set l2
[r
lrange newlist
0 -1]
129 } {d c
{a b
} {c d x
}}
131 test
{RPOPLPUSH against non existing key
} {
134 set v1
[r rpoplpush mylist newlist
]
135 list $v1 [r exists mylist
] [r exists newlist
]
138 test
{RPOPLPUSH against non
list src key
} {
142 catch {r rpoplpush mylist newlist
} err
143 list [r type mylist
] [r exists newlist
] [string range
$err 0 2]
146 test
{RPOPLPUSH against non
list dst key
} {
154 catch {r rpoplpush mylist newlist
} err
155 list [r
lrange mylist
0 -1] [r type newlist
] [string range
$err 0 2]
156 } {{a b c d
} string ERR
}
158 test
{RPOPLPUSH against non existing src key
} {
161 r rpoplpush mylist newlist
164 test
{Basic LPOP
/RPOP
} {
169 list [r lpop mylist
] [r rpop mylist
] [r lpop mylist
] [r llen mylist
]
172 test
{LPOP
/RPOP against empty
list} {
176 test
{LPOP against non
list value
} {
178 catch {r lpop notalist
} err
182 test
{Mass LPUSH
/LPOP
} {
184 for {set i
0} {$i < 1000} {incr i
} {
189 for {set i
0} {$i < 500} {incr i
} {
190 incr sum2
[r lpop mylist
]
191 incr sum2
[r rpop mylist
]
196 test
{LRANGE basics
} {
197 for {set i
0} {$i < 10} {incr i
} {
200 list [r
lrange mylist
1 -2] \
201 [r
lrange mylist
-3 -1] \
202 [r
lrange mylist
4 4]
203 } {{1 2 3 4 5 6 7 8} {7 8 9} 4}
205 test
{LRANGE inverted indexes
} {
209 test
{LRANGE out of range indexes including the full
list} {
210 r
lrange mylist
-1000 1000
211 } {0 1 2 3 4 5 6 7 8 9}
213 test
{LRANGE against non existing key
} {
214 r
lrange nosuchkey
0 1
217 test
{LTRIM basics
} {
219 for {set i
0} {$i < 100} {incr i
} {
226 test
{LTRIM stress testing
} {
229 for {set i
0} {$i < 20} {incr i
} {
233 for {set j
0} {$j < 100} {incr j
} {
236 for {set i
0} {$i < 20} {incr i
} {
243 if {[r
lrange mylist
0 -1] ne
[lrange $mylist $a $b]} {
244 set err
"[r lrange mylist 0 -1] != [lrange $mylist $a $b]"
253 foreach x
{99 98 97 96 95} {
261 test
{LSET out of range index
} {
262 catch {r
lset mylist
10 foo
} err
266 test
{LSET against non existing key
} {
267 catch {r
lset nosuchkey
10 foo
} err
271 test
{LSET against non
list value
} {
273 catch {r
lset nolist
0 foo
} err
277 test
{LREM
, remove all the occurrences
} {
281 r rpush mylist foobar
282 r rpush mylist foobared
287 set res
[r lrem mylist
0 bar
]
288 list [r
lrange mylist
0 -1] $res
289 } {{foo foobar foobared zap test foo
} 2}
291 test
{LREM
, remove the first occurrence
} {
292 set res
[r lrem mylist
1 foo
]
293 list [r
lrange mylist
0 -1] $res
294 } {{foobar foobared zap test foo
} 1}
296 test
{LREM
, remove non existing element
} {
297 set res
[r lrem mylist
1 nosuchelement
]
298 list [r
lrange mylist
0 -1] $res
299 } {{foobar foobared zap test foo
} 0}
301 test
{LREM
, starting from tail with negative count
} {
305 r rpush mylist foobar
306 r rpush mylist foobared
312 set res
[r lrem mylist
-1 bar
]
313 list [r
lrange mylist
0 -1] $res
314 } {{foo bar foobar foobared zap test foo foo
} 1}
316 test
{LREM
, starting from tail with negative count
(2)} {
317 set res
[r lrem mylist
-2 foo
]
318 list [r
lrange mylist
0 -1] $res
319 } {{foo bar foobar foobared zap test
} 2}
321 test
{LREM
, deleting objects that may be encoded as integers
} {
322 r lpush myotherlist
1
323 r lpush myotherlist
2
324 r lpush myotherlist
3
325 r lrem myotherlist
1 2