Skip to content

Commit a8558c7

Browse files
committed
More tests for MULTI/EXEC/PIPELINE
1 parent 984faef commit a8558c7

File tree

1 file changed

+117
-44
lines changed

1 file changed

+117
-44
lines changed

tests/testPipeline.php

Lines changed: 117 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ function test1($r, $type) {
1717
->get('key2')
1818
->decr('key2')
1919
->get('key2')
20-
->renameKey('key2', 'key3')
20+
->renameKey('key2', 'key3')
2121
->get('key3')
22-
->renameNx('key3', 'key1')
23-
->renameKey('key3', 'key2')
22+
->renameNx('key3', 'key1')
23+
->renameKey('key3', 'key2')
2424
->incr('key2', 5)
2525
->get('key2')
2626
->decr('key2', 5)
@@ -76,14 +76,14 @@ function test1($r, $type) {
7676
$ret = $r->multi($type)
7777
->exec();
7878
assert($ret == array());
79-
79+
8080
// ttl, mget, mset, msetnx, expire, expireAt
8181
$ret = $r->multi($type)
8282
->ttl('key')
8383
->mget(array('key1', 'key2', 'key3'))
8484
->mset(array('key3' => 'value3', 'key4' => 'value4'))
8585
->set('key', 'value')
86-
->expire('key', 5)
86+
->expire('key', 5)
8787
->ttl('key')
8888
->expireAt('key', '0000')
8989
->exec();
@@ -120,7 +120,7 @@ function test1($r, $type) {
120120
->lGetRange('lkey', 0, -1)
121121
->llen('lkey')
122122
->exec();
123-
123+
124124
assert(is_array($ret));
125125
$i = 0;
126126
assert($ret[$i++] === TRUE); // SET
@@ -169,7 +169,7 @@ function test1($r, $type) {
169169
}
170170

171171
function test2($r, $type) {
172-
172+
173173
// general command
174174
$ret = $r->multi($type)
175175
->select(3)
@@ -199,10 +199,10 @@ function test2($r, $type) {
199199
->get('key2')
200200
->decr('key2')
201201
->get('key2')
202-
->renameKey('key2', 'key3')
202+
->renameKey('key2', 'key3')
203203
->get('key3')
204-
->renameNx('key3', 'key1')
205-
->renameKey('key3', 'key2')
204+
->renameNx('key3', 'key1')
205+
->renameKey('key3', 'key2')
206206
->incr('key2', 5)
207207
->get('key2')
208208
->decr('key2', 5)
@@ -253,7 +253,7 @@ function test2($r, $type) {
253253
$ret = $r->multi($type)
254254
->randomKey()
255255
->exec();
256-
256+
257257
assert(is_array($ret) && count($ret) === 1);
258258
assert(is_string($ret[0]));
259259

@@ -270,7 +270,6 @@ function test2($r, $type) {
270270
$i = 0;
271271
assert(is_array($ret));
272272
assert(is_long($ret[$i++]));
273-
var_dump($ret);
274273
assert(is_array($ret[$i]) && count($ret[$i]) === 3); // mget
275274
$i++;
276275
assert($ret[$i++] === TRUE); // mset always returns TRUE
@@ -282,29 +281,53 @@ function test2($r, $type) {
282281

283282
/* lists */
284283
$ret = $r->multi($type)
285-
->rpush('lkey', 'lvalue')
286-
->lpush('lkey', 'lvalue')
287-
->lpush('lkey', 'lvalue')
288-
->lpush('lkey', 'lvalue')
289-
->lpush('lkey', 'lvalue')
290-
->lpush('lkey', 'lvalue')
291-
->rpoplpush('lkey', 'lDest')
292-
->lGetRange('lDest', 0, -1)
293-
->lpop('lkey')
294-
->llen('lkey')
295-
->lRemove('lkey', 'lvalue', 3)
296-
->llen('lkey')
297-
->lget('lkey', 0)
298-
->lGetRange('lkey', 0, -1)
299-
->lSet('lkey', 1, "newValue") /* check errors on key not exists */
300-
->lGetRange('lkey', 0, -1)
301-
->llen('lkey')
302-
->exec();
303-
304-
var_dump($ret);
284+
->delete('lkey', 'lDest')
285+
->rpush('lkey', 'lvalue')
286+
->lpush('lkey', 'lvalue')
287+
->lpush('lkey', 'lvalue')
288+
->lpush('lkey', 'lvalue')
289+
->lpush('lkey', 'lvalue')
290+
->lpush('lkey', 'lvalue')
291+
->rpoplpush('lkey', 'lDest')
292+
->lGetRange('lDest', 0, -1)
293+
->lpop('lkey')
294+
->llen('lkey')
295+
->lRemove('lkey', 'lvalue', 3)
296+
->llen('lkey')
297+
->lget('lkey', 0)
298+
->lGetRange('lkey', 0, -1)
299+
->lSet('lkey', 1, "newValue") /* check errors on key not exists */
300+
->lGetRange('lkey', 0, -1)
301+
->llen('lkey')
302+
->exec();
303+
304+
assert(is_array($ret));
305+
$i = 0;
306+
assert($ret[$i] >= 0 && $ret[$i] <= 2); // delete
307+
$i++;
308+
assert($ret[$i++] === 1); // 1 value
309+
assert($ret[$i++] === 2); // 2 values
310+
assert($ret[$i++] === 3); // 3 values
311+
assert($ret[$i++] === 4); // 4 values
312+
assert($ret[$i++] === 5); // 5 values
313+
assert($ret[$i++] === 6); // 6 values
314+
assert($ret[$i++] === 'lvalue');
315+
assert($ret[$i++] === array('lvalue')); // 1 value only in lDest
316+
assert($ret[$i++] === 'lvalue'); // now 4 values left
317+
assert($ret[$i++] === 4);
318+
assert($ret[$i++] === 3); // removing 3 elements.
319+
assert($ret[$i++] === 1); // length is now 1
320+
assert($ret[$i++] === 'lvalue'); // this is the head
321+
assert($ret[$i++] === array('lvalue')); // 1 value only in lkey
322+
assert($ret[$i++] === FALSE); // can't set list[1] if we only have a single value in it.
323+
assert($ret[$i++] === array('lvalue')); // the previous error didn't touch anything.
324+
assert($ret[$i++] === 1); // the previous error didn't change the length
325+
assert(count($ret) === $i);
326+
305327

306328
/* sets */
307329
$ret = $r->multi($type)
330+
->delete('skey1', 'skey2', 'skeydest', 'skeyUnion', 'sDiffDest')
308331
->sadd('skey1', 'sValue1')
309332
->sadd('skey1', 'sValue2')
310333
->sadd('skey1', 'sValue3')
@@ -314,7 +337,7 @@ function test2($r, $type) {
314337
->sadd('skey2', 'sValue2')
315338

316339
->sSize('skey1')
317-
->sremove('skey1', 'sValue2')
340+
->sRemove('skey1', 'sValue2')
318341
->sSize('skey1')
319342
->sMove('skey1', 'skey2', 'sValue4')
320343
->sSize('skey2')
@@ -324,17 +347,66 @@ function test2($r, $type) {
324347
->sInter('skey1', 'skey2')
325348
->sInterStore('skeydest', 'skey1', 'skey2')
326349
->sMembers('skeydest')
327-
->sPop('skey2')
328-
->sSize('skey2')
329350
->sUnion('skey2', 'skeydest')
330351
->sUnionStore('skeyUnion', 'skey2', 'skeydest')
331352
->sMembers('skeyUnion')
332353
->sDiff('skey1', 'skey2')
333354
->sDiffStore('sDiffDest', 'skey1', 'skey2')
334355
->sMembers('sDiffDest')
356+
->sPop('skey2')
357+
->sSize('skey2')
335358
->exec();
336-
var_dump($ret);
337359

360+
$i = 0;
361+
assert(is_array($ret));
362+
assert(is_long($ret[$i]) && $ret[$i] >= 0 && $ret[$i] <= 5); $i++; // deleted at most 5 values.
363+
assert($ret[$i++] === TRUE); // skey1 now has 1 element.
364+
assert($ret[$i++] === TRUE); // skey1 now has 2 elements.
365+
assert($ret[$i++] === TRUE); // skey1 now has 3 elements.
366+
assert($ret[$i++] === TRUE); // skey1 now has 4 elements.
367+
368+
assert($ret[$i++] === TRUE); // skey2 now has 1 element.
369+
assert($ret[$i++] === TRUE); // skey2 now has 2 elements.
370+
371+
assert($ret[$i++] === 4);
372+
assert($ret[$i++] === TRUE); // we did remove that value.
373+
assert($ret[$i++] === 3); // now 3 values only.
374+
assert($ret[$i++] === TRUE); // the move did succeed.
375+
assert($ret[$i++] === 3); // sKey2 now has 3 values.
376+
assert($ret[$i++] === TRUE); // sKey2 does contain sValue4.
377+
foreach(array('sValue1', 'sValue3') as $k) { // sKey1 contains sValue1 and sValue3.
378+
assert(in_array($k, $ret[$i]));
379+
}
380+
assert(count($ret[$i++]) === 2);
381+
foreach(array('sValue1', 'sValue2', 'sValue4') as $k) { // sKey2 contains sValue1, sValue2, and sValue4.
382+
assert(in_array($k, $ret[$i]));
383+
}
384+
assert(count($ret[$i++]) === 3);
385+
assert($ret[$i++] === array('sValue1')); // intersection
386+
assert($ret[$i++] === 1); // intersection + store → 1 value in the destination set.
387+
assert($ret[$i++] === array('sValue1')); // sinterstore destination contents
388+
389+
foreach(array('sValue1', 'sValue2', 'sValue4') as $k) { // (skeydest U sKey2) contains sValue1, sValue2, and sValue4.
390+
assert(in_array($k, $ret[$i]));
391+
}
392+
assert(count($ret[$i++]) === 3); // union size
393+
394+
assert($ret[$i++] === 3); // unionstore size
395+
foreach(array('sValue1', 'sValue2', 'sValue4') as $k) { // (skeyUnion) contains sValue1, sValue2, and sValue4.
396+
assert(in_array($k, $ret[$i]));
397+
}
398+
assert(count($ret[$i++]) === 3); // skeyUnion size
399+
400+
assert($ret[$i++] === array('sValue3')); // diff skey1, skey2 : only sValue3 is not shared.
401+
assert($ret[$i++] === 1); // sdiffstore size == 1
402+
assert($ret[$i++] === array('sValue3')); // contents of sDiffDest
403+
404+
assert(in_array($ret[$i++], array('sValue1', 'sValue2', 'sValue4'))); // we removed an element from sKey2
405+
assert($ret[$i++] === 2); // sKey2 now has 2 elements only.
406+
407+
assert(count($ret) === $i);
408+
409+
return;
338410
/* sets */
339411
$ret = $r->multi($type)
340412
->zadd('zkey1', 1, 'zValue1')
@@ -357,17 +429,17 @@ function test2($r, $type) {
357429
->zadd('zkey2', 5, 'zValue5')
358430
->zadd('zkey2', 2, 'zValue2')
359431
//->zRange('zkey1', 'zkey2')
360-
->zInter('zInter', array('zkey1', 'zkey2'))
432+
->zInter('zInter', array('zkey1', 'zkey2'))
361433
->zRange('zkey1', 0, -1)
362434
->zRange('zkey2', 0, -1)
363435
->zRange('zInter', 0, -1)
364-
->zInter('zUnion', array('zkey1', 'zkey2'))
436+
->zInter('zUnion', array('zkey1', 'zkey2'))
365437
->zRange('zUnion', 0, -1)
366438
->zadd('zkey5', 5, 'zValue5')
367439
->zIncrBy('zkey5', 3, 'zValue5') /* fix this */
368440
->zScore('zkey5', 'zValue5')
369441
->exec();
370-
var_dump($ret);
442+
// var_dump($ret);
371443

372444
/* hash */
373445
$ret = $r->multi($type)
@@ -383,19 +455,20 @@ function test2($r, $type) {
383455
->hgetall('hkey1') /* bug */
384456
//->hincrby()
385457
->exec();
386-
var_dump($ret);
458+
// var_dump($ret);
459+
387460
}
388461

389462

390463
$count = 10000;
391-
$count = 1;
464+
$count = 10;
392465

393466
for($i = 1; $i <= $count; $i++) {
394-
//test1($r, Redis::MULTI);
395-
//test1($r, Redis::PIPELINE);
467+
test1($r, Redis::MULTI);
468+
test1($r, Redis::PIPELINE);
396469

397470
test2($r, Redis::MULTI);
398-
//test2($r, Redis::PIPELINE);
471+
test2($r, Redis::PIPELINE);
399472
/*
400473
$r->multi(Redis::MULTI)
401474
->get('x')

0 commit comments

Comments
 (0)