Skip to content

Commit 215f2c1

Browse files
author
Ben Buckman
committed
ShardClient tested for setex, ttl, expire
1 parent 51d479a commit 215f2c1

File tree

2 files changed

+44
-9
lines changed

2 files changed

+44
-9
lines changed

test/test_sharding.js

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ var Sharding = require('../lib/sharding');
2222
var testUtils = require('./utils'),
2323
require_string = testUtils.require_string,
2424
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;
2627

2728
var MockLogger = testUtils.MockLogger;
2829

@@ -239,7 +240,7 @@ describe('RedisShardingClient', function(){
239240
'end', 'send_command', 'server_info',
240241

241242
// some @todo
242-
'watch', 'unwatch', 'migrate', 'dump', 'select', /* and lots more... */
243+
'watch', 'unwatch', 'migrate', 'dump', 'select', 'auth', /* and lots more... */
243244
].forEach(function(command){
244245
assert.throws(function(){
245246
client[command]();
@@ -691,24 +692,56 @@ describe('RedisShardingClient', function(){
691692
});
692693
}
693694
], 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+
}, /must be a string/);
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+
}, /must be a string/);
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+
});
694730

695731

696732
// @todo test more commands with array inputs...?
697733

698734
// @todo test remaining commands:
699735
/*
700736
'persist', 'lpop', 'rpop',
701-
'llen', 'scard', 'ttl', 'pttl',
737+
'llen', 'scard', 'pttl',
702738
'smembers'
703739
704740
'rename', 'renamenx',
705-
'expire', 'expireat', 'pexpire', 'pexpireat'
706741
707-
'hincrby', 'sadd', 'setex', 'psetex', 'srem', 'lpush', 'rpush'
742+
'hincrby', 'sadd', 'psetex', 'srem', 'lpush', 'rpush'
708743
*/
709744

710-
});
711-
712745
});
713746

714747
});

test/utils.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,20 @@ exports.require_number = function require_number(expected, label, callback) {
1818
};
1919
};
2020

21-
exports.require_number_any = function require_number_any(label) {
21+
exports.require_number_any = function require_number_any(label, callback) {
2222
return function (err, results) {
2323
assert.strictEqual(null, err, label + " expected any number, got error: " + err);
2424
assert.strictEqual(typeof results, "number", label + " " + results + " is not a number");
25+
if (typeof callback === 'function') callback();
2526
return true;
2627
};
2728
};
2829

29-
exports.require_number_pos = function require_number_pos(label) {
30+
exports.require_number_pos = function require_number_pos(label, callback) {
3031
return function (err, results) {
3132
assert.strictEqual(null, err, label + " expected positive number, got error: " + err);
3233
assert.strictEqual(true, (results > 0), label + " " + results + " is not a positive number");
34+
if (typeof callback === 'function') callback();
3335
return true;
3436
};
3537
};

0 commit comments

Comments
 (0)