forked from alibaba-archive/mredis
-
Notifications
You must be signed in to change notification settings - Fork 1
/
multi_redis_stability_test.js
94 lines (85 loc) · 2.57 KB
/
multi_redis_stability_test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
require('./helper/ensure_require');
var multiRedis = require('../lib/multi_redis');
/**
* be sure you have a redis server
*/
var client;
var redis;
var options = {
server : ['127.0.0.1:1239', '127.0.0.1:1240'],
debug : false,
speedFirst : true,
pingInterval : 3000
}
describe('multi redis statbility test', function() {
describe('#createClient()', function(){
it('should create redis client ok', function(done) {
client = multiRedis.createClient(options);
client.clients.should.have.length(2);
done();
})
})
describe('#one server down', function() {
it('should ok when working server done', function(done) {
redis = client.clients[client._getIndex()];
redis.emit('end');
setTimeout(function() {
client.set('test', '123');
client.get('test', function(err, data) {
(!err).should.be.ok;
data.should.equal('123');
done();
})
}, 10);
})
})
describe('#reconnect', function() {
it('should work fine', function(done) {
redis.emit('connect');
setTimeout(function() {
client.clients.should.have.length(2);
client.set('test1', 'name');
client.get('test1', function(err, data) {
(!err).should.be.ok;
data.should.equal('name');
done();
})
},10);
})
})
describe('#one server down', function() {
it('should work fine when sleeping server done', function(done) {
client.clients[client._getIndex()].emit('end');
setTimeout(function() {
client.set('test2', 'down');
client.get('test2', function(err, data) {
(!err).should.be.ok;
data.should.equal('down');
done();
});
}, 10);
})
})
describe('#all server down', function() {
it('should get an error', function(done) {
client.on('error', function(err){
err.message.should.equal('All servers are down.');
done();
})
console.log(client.alive);
client.clients[0]===null ? client.clients[1].emit('end') : client.clients[0].emit('end');
})
})
describe('#all down set&get', function(){
it('set method should get an error', function(done){
client.set('down', '123', function(err) {
err.message.should.equal('All servers are down.');
client.get('down', function(err, data){
err.message.should.equal('All servers are down.');
(!data).should.be.ok;
done();
})
})
})
})
})