Browse Source

ported sdiff, sdiffstore, sinterstore, smembers, smove, spop, sunion, client.monitor

greenkeeper-update-all
Benjamin Coe 9 years ago
parent
commit
ce7f21fc34
  1. 41
      test/node_redis.spec.js
  2. 215
      test/test.js

41
test/node_redis.spec.js

@ -5,7 +5,7 @@ var helper = require('./helper')
var fork = require("child_process").fork;
var redis = config.redis;
describe("a node_redis client", function () {
describe("The node_redis client", function () {
function allTests(parser, ip) {
var args = config.configureClient(parser, ip);
@ -178,8 +178,43 @@ describe("a node_redis client", function () {
return done()
});
}
})
})
});
});
describe('monitor', function () {
it('monitors commands on all other redis clients', function (done) {
if (!helper.serverVersionAtLeast(client, [2, 6, 0])) return done();
var monitorClient = redis.createClient.apply(redis.createClient, args);
var responses = [];
monitorClient.monitor(function (err, res) {
client.mget("some", "keys", "foo", "bar");
client.set("json", JSON.stringify({
foo: "123",
bar: "sdflkdfsjk",
another: false
}));
});
monitorClient.on("monitor", function (time, args) {
responses.push(args);
if (responses.length === 2) {
assert.strictEqual(5, responses[0].length);
assert.strictEqual("mget", responses[0][0]);
assert.strictEqual("some", responses[0][1]);
assert.strictEqual("keys", responses[0][2]);
assert.strictEqual("foo", responses[0][3]);
assert.strictEqual("bar", responses[0][4]);
assert.strictEqual(3, responses[1].length);
assert.strictEqual("set", responses[1][0]);
assert.strictEqual("json", responses[1][1]);
assert.strictEqual('{"foo":"123","bar":"sdflkdfsjk","another":false}', responses[1][2]);
monitorClient.quit(done);
}
});
});
});
});

215
test/test.js

@ -1,180 +1,5 @@
return;
tests.SPOP = function () {
var name = "SPOP";
client.del('zzz');
client.sadd('zzz', 'member0', require_number(1, name));
client.scard('zzz', require_number(1, name));
client.spop('zzz', function (err, value) {
if (err) {
assert.fail(err);
}
assert.equal(value, 'member0', name);
});
client.scard('zzz', last(name, require_number(0, name)));
};
tests.SDIFF = function () {
var name = "SDIFF";
client.del('foo');
client.sadd('foo', 'x', require_number(1, name));
client.sadd('foo', 'a', require_number(1, name));
client.sadd('foo', 'b', require_number(1, name));
client.sadd('foo', 'c', require_number(1, name));
client.sadd('bar', 'c', require_number(1, name));
client.sadd('baz', 'a', require_number(1, name));
client.sadd('baz', 'd', require_number(1, name));
client.sdiff('foo', 'bar', 'baz', function (err, values) {
if (err) {
assert.fail(err, name);
}
values.sort();
assert.equal(values.length, 2, name);
assert.equal(values[0], 'b', name);
assert.equal(values[1], 'x', name);
next(name);
});
};
tests.SDIFFSTORE = function () {
var name = "SDIFFSTORE";
client.del('foo');
client.del('bar');
client.del('baz');
client.del('quux');
client.sadd('foo', 'x', require_number(1, name));
client.sadd('foo', 'a', require_number(1, name));
client.sadd('foo', 'b', require_number(1, name));
client.sadd('foo', 'c', require_number(1, name));
client.sadd('bar', 'c', require_number(1, name));
client.sadd('baz', 'a', require_number(1, name));
client.sadd('baz', 'd', require_number(1, name));
// NB: SDIFFSTORE returns the number of elements in the dstkey
client.sdiffstore('quux', 'foo', 'bar', 'baz', require_number(2, name));
client.smembers('quux', function (err, values) {
if (err) {
assert.fail(err, name);
}
var members = buffers_to_strings(values).sort();
assert.deepEqual(members, [ 'b', 'x' ], name);
next(name);
});
};
tests.SMEMBERS = function () {
var name = "SMEMBERS";
client.del('foo');
client.sadd('foo', 'x', require_number(1, name));
client.smembers('foo', function (err, members) {
if (err) {
assert.fail(err, name);
}
assert.deepEqual(buffers_to_strings(members), [ 'x' ], name);
});
client.sadd('foo', 'y', require_number(1, name));
client.smembers('foo', function (err, values) {
if (err) {
assert.fail(err, name);
}
assert.equal(values.length, 2, name);
var members = buffers_to_strings(values).sort();
assert.deepEqual(members, [ 'x', 'y' ], name);
next(name);
});
};
tests.SMOVE = function () {
var name = "SMOVE";
client.del('foo');
client.del('bar');
client.sadd('foo', 'x', require_number(1, name));
client.smove('foo', 'bar', 'x', require_number(1, name));
client.sismember('foo', 'x', require_number(0, name));
client.sismember('bar', 'x', require_number(1, name));
client.smove('foo', 'bar', 'x', last(name, require_number(0, name)));
};
tests.SINTERSTORE = function () {
var name = "SINTERSTORE";
client.del('sa');
client.del('sb');
client.del('sc');
client.del('foo');
client.sadd('sa', 'a', require_number(1, name));
client.sadd('sa', 'b', require_number(1, name));
client.sadd('sa', 'c', require_number(1, name));
client.sadd('sb', 'b', require_number(1, name));
client.sadd('sb', 'c', require_number(1, name));
client.sadd('sb', 'd', require_number(1, name));
client.sadd('sc', 'c', require_number(1, name));
client.sadd('sc', 'd', require_number(1, name));
client.sadd('sc', 'e', require_number(1, name));
client.sinterstore('foo', 'sa', 'sb', 'sc', require_number(1, name));
client.smembers('foo', function (err, members) {
if (err) {
assert.fail(err, name);
}
assert.deepEqual(buffers_to_strings(members), [ 'c' ], name);
next(name);
});
};
tests.SUNION = function () {
var name = "SUNION";
client.del('sa');
client.del('sb');
client.del('sc');
client.sadd('sa', 'a', require_number(1, name));
client.sadd('sa', 'b', require_number(1, name));
client.sadd('sa', 'c', require_number(1, name));
client.sadd('sb', 'b', require_number(1, name));
client.sadd('sb', 'c', require_number(1, name));
client.sadd('sb', 'd', require_number(1, name));
client.sadd('sc', 'c', require_number(1, name));
client.sadd('sc', 'd', require_number(1, name));
client.sadd('sc', 'e', require_number(1, name));
client.sunion('sa', 'sb', 'sc', function (err, union) {
if (err) {
assert.fail(err, name);
}
assert.deepEqual(buffers_to_strings(union).sort(), ['a', 'b', 'c', 'd', 'e'], name);
next(name);
});
};
tests.SUNIONSTORE = function () {
var name = "SUNIONSTORE";
@ -212,46 +37,6 @@ tests.SUNIONSTORE = function () {
});
};
tests.MONITOR = function () {
var name = "MONITOR", responses = [], monitor_client;
if (!server_version_at_least(client, [2, 6, 0])) {
console.log("Skipping " + name + " for old Redis server version < 2.6.x");
return next(name);
}
monitor_client = redis.createClient(PORT, HOST, { parser: parser });
monitor_client.monitor(function (err, res) {
client.mget("some", "keys", "foo", "bar");
client.set("json", JSON.stringify({
foo: "123",
bar: "sdflkdfsjk",
another: false
}));
});
monitor_client.on("monitor", function (time, args) {
// skip monitor command for Redis <= 2.4.16
if (args[0] === "monitor") return;
responses.push(args);
if (responses.length === 2) {
assert.strictEqual(5, responses[0].length);
assert.strictEqual("mget", responses[0][0]);
assert.strictEqual("some", responses[0][1]);
assert.strictEqual("keys", responses[0][2]);
assert.strictEqual("foo", responses[0][3]);
assert.strictEqual("bar", responses[0][4]);
assert.strictEqual(3, responses[1].length);
assert.strictEqual("set", responses[1][0]);
assert.strictEqual("json", responses[1][1]);
assert.strictEqual('{"foo":"123","bar":"sdflkdfsjk","another":false}', responses[1][2]);
monitor_client.quit(function (err, res) {
next(name);
});
}
});
};
tests.BLPOP = function () {
var name = "BLPOP";

Loading…
Cancel
Save