1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00

Fix parser regression. Out of memory resulted in an endless loop

This commit is contained in:
Ruben Bridgewater
2015-09-19 17:40:09 +02:00
parent 26e5764214
commit 083e446d23
2 changed files with 39 additions and 0 deletions

View File

@@ -2,6 +2,8 @@
var assert = require('assert');
var Parser = require("../../lib/parser/javascript").Parser;
var config = require("../lib/config");
var redis = config.redis;
describe('javascript parser', function () {
it('handles multi-bulk reply', function (done) {
@@ -24,4 +26,36 @@ describe('javascript parser', function () {
assert.equal(reply_count, 3, "check reply should have been called three times");
return done();
});
// Activate this if you want to fry your cpu / memory
describe.skip("test out of memory", function () {
var args = config.configureClient('javascript', '127.0.0.1');
var clients = new Array(300).join(" ").split(" ");
var client;
beforeEach(function (done) {
client = redis.createClient.apply(redis.createClient, args);
client.once("connect", function () {
client.flushdb(done);
});
});
it('reach limit and wait for further data', function (done) {
setTimeout(done, 5000);
clients.forEach(function(entry, a) {
var max = 0;
var client = redis.createClient.apply(redis.createClient, args);
client.on('ready', function() {
while (++max < 50) {
var item = [];
for (var i = 0; i < 100; ++i) {
item.push('aaa' + (Math.random() * 1000000 | 0));
}
client.del('foo' + a);
client.lpush('foo' + a, item);
client.lrange('foo' + a, 0, 99);
}
});
});
});
});
});