Skip to content

Commit ce7f21f

Browse files
author
Benjamin Coe
committed
ported sdiff, sdiffstore, sinterstore, smembers, smove, spop, sunion, client.monitor
1 parent a0832c3 commit ce7f21f

File tree

2 files changed

+38
-218
lines changed

2 files changed

+38
-218
lines changed

test/node_redis.spec.js

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var helper = require('./helper')
55
var fork = require("child_process").fork;
66
var redis = config.redis;
77

8-
describe("a node_redis client", function () {
8+
describe("The node_redis client", function () {
99

1010
function allTests(parser, ip) {
1111
var args = config.configureClient(parser, ip);
@@ -178,8 +178,43 @@ describe("a node_redis client", function () {
178178
return done()
179179
});
180180
}
181-
})
182-
})
181+
});
182+
});
183+
184+
describe('monitor', function () {
185+
it('monitors commands on all other redis clients', function (done) {
186+
if (!helper.serverVersionAtLeast(client, [2, 6, 0])) return done();
187+
188+
var monitorClient = redis.createClient.apply(redis.createClient, args);
189+
var responses = [];
190+
191+
monitorClient.monitor(function (err, res) {
192+
client.mget("some", "keys", "foo", "bar");
193+
client.set("json", JSON.stringify({
194+
foo: "123",
195+
bar: "sdflkdfsjk",
196+
another: false
197+
}));
198+
});
199+
200+
monitorClient.on("monitor", function (time, args) {
201+
responses.push(args);
202+
if (responses.length === 2) {
203+
assert.strictEqual(5, responses[0].length);
204+
assert.strictEqual("mget", responses[0][0]);
205+
assert.strictEqual("some", responses[0][1]);
206+
assert.strictEqual("keys", responses[0][2]);
207+
assert.strictEqual("foo", responses[0][3]);
208+
assert.strictEqual("bar", responses[0][4]);
209+
assert.strictEqual(3, responses[1].length);
210+
assert.strictEqual("set", responses[1][0]);
211+
assert.strictEqual("json", responses[1][1]);
212+
assert.strictEqual('{"foo":"123","bar":"sdflkdfsjk","another":false}', responses[1][2]);
213+
monitorClient.quit(done);
214+
}
215+
});
216+
});
217+
});
183218

184219
});
185220

test/test.js

Lines changed: 0 additions & 215 deletions
Original file line numberDiff line numberDiff line change
@@ -1,180 +1,5 @@
11
return;
22

3-
tests.SPOP = function () {
4-
var name = "SPOP";
5-
6-
client.del('zzz');
7-
client.sadd('zzz', 'member0', require_number(1, name));
8-
client.scard('zzz', require_number(1, name));
9-
10-
client.spop('zzz', function (err, value) {
11-
if (err) {
12-
assert.fail(err);
13-
}
14-
assert.equal(value, 'member0', name);
15-
});
16-
17-
client.scard('zzz', last(name, require_number(0, name)));
18-
};
19-
20-
tests.SDIFF = function () {
21-
var name = "SDIFF";
22-
23-
client.del('foo');
24-
client.sadd('foo', 'x', require_number(1, name));
25-
client.sadd('foo', 'a', require_number(1, name));
26-
client.sadd('foo', 'b', require_number(1, name));
27-
client.sadd('foo', 'c', require_number(1, name));
28-
29-
client.sadd('bar', 'c', require_number(1, name));
30-
31-
client.sadd('baz', 'a', require_number(1, name));
32-
client.sadd('baz', 'd', require_number(1, name));
33-
34-
client.sdiff('foo', 'bar', 'baz', function (err, values) {
35-
if (err) {
36-
assert.fail(err, name);
37-
}
38-
values.sort();
39-
assert.equal(values.length, 2, name);
40-
assert.equal(values[0], 'b', name);
41-
assert.equal(values[1], 'x', name);
42-
next(name);
43-
});
44-
};
45-
46-
tests.SDIFFSTORE = function () {
47-
var name = "SDIFFSTORE";
48-
49-
client.del('foo');
50-
client.del('bar');
51-
client.del('baz');
52-
client.del('quux');
53-
54-
client.sadd('foo', 'x', require_number(1, name));
55-
client.sadd('foo', 'a', require_number(1, name));
56-
client.sadd('foo', 'b', require_number(1, name));
57-
client.sadd('foo', 'c', require_number(1, name));
58-
59-
client.sadd('bar', 'c', require_number(1, name));
60-
61-
client.sadd('baz', 'a', require_number(1, name));
62-
client.sadd('baz', 'd', require_number(1, name));
63-
64-
// NB: SDIFFSTORE returns the number of elements in the dstkey
65-
66-
client.sdiffstore('quux', 'foo', 'bar', 'baz', require_number(2, name));
67-
68-
client.smembers('quux', function (err, values) {
69-
if (err) {
70-
assert.fail(err, name);
71-
}
72-
var members = buffers_to_strings(values).sort();
73-
74-
assert.deepEqual(members, [ 'b', 'x' ], name);
75-
next(name);
76-
});
77-
};
78-
79-
tests.SMEMBERS = function () {
80-
var name = "SMEMBERS";
81-
82-
client.del('foo');
83-
client.sadd('foo', 'x', require_number(1, name));
84-
85-
client.smembers('foo', function (err, members) {
86-
if (err) {
87-
assert.fail(err, name);
88-
}
89-
assert.deepEqual(buffers_to_strings(members), [ 'x' ], name);
90-
});
91-
92-
client.sadd('foo', 'y', require_number(1, name));
93-
94-
client.smembers('foo', function (err, values) {
95-
if (err) {
96-
assert.fail(err, name);
97-
}
98-
assert.equal(values.length, 2, name);
99-
var members = buffers_to_strings(values).sort();
100-
101-
assert.deepEqual(members, [ 'x', 'y' ], name);
102-
next(name);
103-
});
104-
};
105-
106-
tests.SMOVE = function () {
107-
var name = "SMOVE";
108-
109-
client.del('foo');
110-
client.del('bar');
111-
112-
client.sadd('foo', 'x', require_number(1, name));
113-
client.smove('foo', 'bar', 'x', require_number(1, name));
114-
client.sismember('foo', 'x', require_number(0, name));
115-
client.sismember('bar', 'x', require_number(1, name));
116-
client.smove('foo', 'bar', 'x', last(name, require_number(0, name)));
117-
};
118-
119-
tests.SINTERSTORE = function () {
120-
var name = "SINTERSTORE";
121-
122-
client.del('sa');
123-
client.del('sb');
124-
client.del('sc');
125-
client.del('foo');
126-
127-
client.sadd('sa', 'a', require_number(1, name));
128-
client.sadd('sa', 'b', require_number(1, name));
129-
client.sadd('sa', 'c', require_number(1, name));
130-
131-
client.sadd('sb', 'b', require_number(1, name));
132-
client.sadd('sb', 'c', require_number(1, name));
133-
client.sadd('sb', 'd', require_number(1, name));
134-
135-
client.sadd('sc', 'c', require_number(1, name));
136-
client.sadd('sc', 'd', require_number(1, name));
137-
client.sadd('sc', 'e', require_number(1, name));
138-
139-
client.sinterstore('foo', 'sa', 'sb', 'sc', require_number(1, name));
140-
141-
client.smembers('foo', function (err, members) {
142-
if (err) {
143-
assert.fail(err, name);
144-
}
145-
assert.deepEqual(buffers_to_strings(members), [ 'c' ], name);
146-
next(name);
147-
});
148-
};
149-
150-
tests.SUNION = function () {
151-
var name = "SUNION";
152-
153-
client.del('sa');
154-
client.del('sb');
155-
client.del('sc');
156-
157-
client.sadd('sa', 'a', require_number(1, name));
158-
client.sadd('sa', 'b', require_number(1, name));
159-
client.sadd('sa', 'c', require_number(1, name));
160-
161-
client.sadd('sb', 'b', require_number(1, name));
162-
client.sadd('sb', 'c', require_number(1, name));
163-
client.sadd('sb', 'd', require_number(1, name));
164-
165-
client.sadd('sc', 'c', require_number(1, name));
166-
client.sadd('sc', 'd', require_number(1, name));
167-
client.sadd('sc', 'e', require_number(1, name));
168-
169-
client.sunion('sa', 'sb', 'sc', function (err, union) {
170-
if (err) {
171-
assert.fail(err, name);
172-
}
173-
assert.deepEqual(buffers_to_strings(union).sort(), ['a', 'b', 'c', 'd', 'e'], name);
174-
next(name);
175-
});
176-
};
177-
1783
tests.SUNIONSTORE = function () {
1794
var name = "SUNIONSTORE";
1805

@@ -212,46 +37,6 @@ tests.SUNIONSTORE = function () {
21237
});
21338
};
21439

215-
tests.MONITOR = function () {
216-
var name = "MONITOR", responses = [], monitor_client;
217-
218-
if (!server_version_at_least(client, [2, 6, 0])) {
219-
console.log("Skipping " + name + " for old Redis server version < 2.6.x");
220-
return next(name);
221-
}
222-
223-
monitor_client = redis.createClient(PORT, HOST, { parser: parser });
224-
monitor_client.monitor(function (err, res) {
225-
client.mget("some", "keys", "foo", "bar");
226-
client.set("json", JSON.stringify({
227-
foo: "123",
228-
bar: "sdflkdfsjk",
229-
another: false
230-
}));
231-
});
232-
monitor_client.on("monitor", function (time, args) {
233-
// skip monitor command for Redis <= 2.4.16
234-
if (args[0] === "monitor") return;
235-
236-
responses.push(args);
237-
if (responses.length === 2) {
238-
assert.strictEqual(5, responses[0].length);
239-
assert.strictEqual("mget", responses[0][0]);
240-
assert.strictEqual("some", responses[0][1]);
241-
assert.strictEqual("keys", responses[0][2]);
242-
assert.strictEqual("foo", responses[0][3]);
243-
assert.strictEqual("bar", responses[0][4]);
244-
assert.strictEqual(3, responses[1].length);
245-
assert.strictEqual("set", responses[1][0]);
246-
assert.strictEqual("json", responses[1][1]);
247-
assert.strictEqual('{"foo":"123","bar":"sdflkdfsjk","another":false}', responses[1][2]);
248-
monitor_client.quit(function (err, res) {
249-
next(name);
250-
});
251-
}
252-
});
253-
};
254-
25540
tests.BLPOP = function () {
25641
var name = "BLPOP";
25742

0 commit comments

Comments
 (0)