@@ -22,7 +22,8 @@ var Sharding = require('../lib/sharding');
22
22
var testUtils = require ( './utils' ) ,
23
23
require_string = testUtils . require_string ,
24
24
require_error = testUtils . require_error ,
25
- require_number = testUtils . require_number ;
25
+ require_number = testUtils . require_number ,
26
+ require_number_pos = testUtils . require_number_pos ;
26
27
27
28
var MockLogger = testUtils . MockLogger ;
28
29
@@ -239,7 +240,7 @@ describe('RedisShardingClient', function(){
239
240
'end' , 'send_command' , 'server_info' ,
240
241
241
242
// some @todo
242
- 'watch' , 'unwatch' , 'migrate' , 'dump' , 'select' , /* and lots more... */
243
+ 'watch' , 'unwatch' , 'migrate' , 'dump' , 'select' , 'auth' , /* and lots more... */
243
244
] . forEach ( function ( command ) {
244
245
assert . throws ( function ( ) {
245
246
client [ command ] ( ) ;
@@ -691,24 +692,56 @@ describe('RedisShardingClient', function(){
691
692
} ) ;
692
693
}
693
694
] , done ) ;
695
+ } ) ;
696
+
697
+
698
+ it ( 'supports expiration' , function ( done ) {
699
+ var exKey = randomTestKey ( 'setex:D' ) ;
700
+ shardClient . SETEX ( [ exKey , "100" , "setex val" ] , require_string ( "OK" , 'SETEX' ) ) ;
701
+
702
+ // deliberate constraint
703
+ assert . throws ( function ( ) {
704
+ shardClient . exists ( [ exKey ] , require_number ( 1 , 'setext exists' ) ) ;
705
+ } , / m u s t b e a s t r i n g / ) ;
706
+
707
+ shardClient . exists ( exKey , require_number ( 1 , 'setext exists' ) ) ;
708
+
709
+ // deliberate constraint
710
+ assert . throws ( function ( ) {
711
+ shardClient . ttl ( [ exKey ] , require_number_pos ( 'ttl with array' ) ) ;
712
+ } , / m u s t b e a s t r i n g / ) ;
713
+
714
+ shardClient . ttl ( exKey , require_number_pos ( 'TTL' ) ) ;
715
+
716
+ shardClient . PSETEX ( [ exKey , "100" , "psetex val" ] , require_string ( "OK" , 'PSETEX' ) ) ;
717
+ shardClient . PTTL ( exKey , require_number_pos ( 'PTTL' ) ) ;
718
+
719
+ shardClient . set ( exKey , 'bar' , require_string ( "OK" , 'set for expire' ) ) ;
720
+ shardClient . EXPIRE ( exKey , "1" , require_number_pos ( 'expire' ) ) ;
721
+ setTimeout ( function ( ) {
722
+ shardClient . exists ( exKey , require_number ( 1 , 'expire check 1' ) ) ;
723
+ } , 200 ) ;
724
+ setTimeout ( function ( ) {
725
+ shardClient . exists ( exKey , require_number ( 0 , 'expire check 2' , done ) ) ;
726
+ } , 1100 ) ;
727
+
728
+ // @todo expireat, pexpire, pexpireat...
729
+ } ) ;
694
730
695
731
696
732
// @todo test more commands with array inputs...?
697
733
698
734
// @todo test remaining commands:
699
735
/*
700
736
'persist', 'lpop', 'rpop',
701
- 'llen', 'scard', 'ttl', ' pttl',
737
+ 'llen', 'scard', 'pttl',
702
738
'smembers'
703
739
704
740
'rename', 'renamenx',
705
- 'expire', 'expireat', 'pexpire', 'pexpireat'
706
741
707
- 'hincrby', 'sadd', 'setex', ' psetex', 'srem', 'lpush', 'rpush'
742
+ 'hincrby', 'sadd', 'psetex', 'srem', 'lpush', 'rpush'
708
743
*/
709
744
710
- } ) ;
711
-
712
745
} ) ;
713
746
714
747
} ) ;
0 commit comments