Ruben Bridgewater
9 years ago
18 changed files with 0 additions and 384 deletions
@ -1,40 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var Parser = require('../lib/parser/hiredis').Parser; |
|||
var assert = require('assert'); |
|||
|
|||
/* |
|||
This test makes sure that exceptions thrown inside of "reply" event handlers |
|||
are not trapped and mistakenly emitted as parse errors. |
|||
*/ |
|||
(function testExecuteDoesNotCatchReplyCallbackExceptions() { |
|||
var parser = new Parser(); |
|||
var replies = [{}]; |
|||
|
|||
parser.reader = { |
|||
feed: function() {}, |
|||
get: function() { |
|||
return replies.shift(); |
|||
} |
|||
}; |
|||
|
|||
var emittedError = false; |
|||
var caughtException = false; |
|||
|
|||
parser |
|||
.on('error', function() { |
|||
emittedError = true; |
|||
}) |
|||
.on('reply', function() { |
|||
throw new Error('bad'); |
|||
}); |
|||
|
|||
try { |
|||
parser.execute(); |
|||
} catch (err) { |
|||
caughtException = true; |
|||
} |
|||
|
|||
assert.equal(caughtException, true); |
|||
assert.equal(emittedError, false); |
|||
})(); |
@ -1,15 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var client = require('../index').createClient(); |
|||
var client2 = require('../index').createClient(); |
|||
|
|||
client.once('subscribe', function (channel, count) { |
|||
client.unsubscribe('x'); |
|||
client.subscribe('x', function () { |
|||
client.quit(); |
|||
client2.quit(); |
|||
}); |
|||
client2.publish('x', 'hi'); |
|||
}); |
|||
|
|||
client.subscribe('x'); |
@ -1,31 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var redis = require("../index").createClient(null, null, { |
|||
// max_attempts: 4
|
|||
}); |
|||
|
|||
redis.on("error", function (err) { |
|||
console.log("Redis says: " + err); |
|||
}); |
|||
|
|||
redis.on("ready", function () { |
|||
console.log("Redis ready."); |
|||
}); |
|||
|
|||
redis.on("reconnecting", function (arg) { |
|||
console.log("Redis reconnecting: " + JSON.stringify(arg)); |
|||
}); |
|||
redis.on("connect", function () { |
|||
console.log("Redis connected."); |
|||
}); |
|||
|
|||
setInterval(function () { |
|||
var now = Date.now(); |
|||
redis.set("now", now, function (err, res) { |
|||
if (err) { |
|||
console.log(now + " Redis reply error: " + err); |
|||
} else { |
|||
console.log(now + " Redis reply: " + res); |
|||
} |
|||
}); |
|||
}, 100); |
@ -1,8 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var json = { |
|||
encode: JSON.stringify, |
|||
decode: JSON.parse |
|||
}; |
|||
|
|||
module.exports = json; |
@ -1,38 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var freemem = require('os').freemem; |
|||
var profiler = require('v8-profiler'); |
|||
var codec = require('../codec'); |
|||
var sent = 0; |
|||
var exec; |
|||
|
|||
var pub = require('redis').createClient(null, null, { |
|||
//command_queue_high_water: 5,
|
|||
//command_queue_low_water: 1
|
|||
}) |
|||
.on('ready', function() { |
|||
this.emit('drain'); |
|||
}) |
|||
.on('drain', function() { |
|||
process.nextTick(exec); |
|||
}); |
|||
|
|||
var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload; |
|||
console.log('Message payload length', payload.length); |
|||
|
|||
function exec() { |
|||
pub.publish('timeline', codec.encode({ foo: payload })); |
|||
++sent; |
|||
if (!pub.should_buffer) { |
|||
process.nextTick(exec); |
|||
} |
|||
} |
|||
|
|||
profiler.takeSnapshot('s_0'); |
|||
|
|||
exec(); |
|||
|
|||
setInterval(function() { |
|||
profiler.takeSnapshot('s_' + sent); |
|||
console.error('sent', sent, 'free', freemem(), 'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length); |
|||
}, 2000); |
@ -1,10 +0,0 @@ |
|||
#!/bin/sh |
|||
node server.js & |
|||
node server.js & |
|||
node server.js & |
|||
node server.js & |
|||
node server.js & |
|||
node server.js & |
|||
node server.js & |
|||
node server.js & |
|||
node --debug pub.js |
@ -1,22 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var freemem = require('os').freemem; |
|||
var codec = require('../codec'); |
|||
|
|||
var id = Math.random(); |
|||
var recv = 0; |
|||
|
|||
require('redis').createClient() |
|||
.on('ready', function() { |
|||
this.subscribe('timeline'); |
|||
}) |
|||
.on('message', function(channel, message) { |
|||
if (message) { |
|||
message = codec.decode(message); |
|||
++recv; |
|||
} |
|||
}); |
|||
|
|||
setInterval(function() { |
|||
console.error('id', id, 'received', recv, 'free', freemem()); |
|||
}, 2000); |
@ -1,51 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var freemem = require('os').freemem; |
|||
//var profiler = require('v8-profiler');
|
|||
var codec = require('../codec'); |
|||
|
|||
var sent = 0; |
|||
|
|||
var exec; |
|||
|
|||
var pub = require('redis').createClient(null, null, { |
|||
//command_queue_high_water: 5,
|
|||
//command_queue_low_water: 1
|
|||
}) |
|||
.on('ready', function() { |
|||
this.del('timeline'); |
|||
this.emit('drain'); |
|||
}) |
|||
.on('drain', function() { |
|||
process.nextTick(exec); |
|||
}); |
|||
|
|||
var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload; |
|||
console.log('Message payload length', payload.length); |
|||
|
|||
function exec() { |
|||
pub.rpush('timeline', codec.encode({ foo: payload })); |
|||
++sent; |
|||
if (!pub.should_buffer) { |
|||
process.nextTick(exec); |
|||
} |
|||
} |
|||
|
|||
//profiler.takeSnapshot('s_0');
|
|||
|
|||
exec(); |
|||
|
|||
setInterval(function() { |
|||
//var ss = profiler.takeSnapshot('s_' + sent);
|
|||
//console.error(ss.stringify());
|
|||
pub.llen('timeline', function(err, result) { |
|||
console.error('sent', sent, 'free', freemem(), |
|||
'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length, |
|||
'llen', result |
|||
); |
|||
}); |
|||
}, 2000); |
|||
|
|||
/*setTimeout(function() { |
|||
process.exit(); |
|||
}, 30000);*/ |
@ -1,6 +0,0 @@ |
|||
#!/bin/sh |
|||
node server.js & |
|||
#node server.js & |
|||
#node server.js & |
|||
#node server.js & |
|||
node --debug pub.js |
@ -1,31 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var freemem = require('os').freemem; |
|||
var codec = require('../codec'); |
|||
|
|||
var id = Math.random(); |
|||
var recv = 0; |
|||
|
|||
var cmd = require('redis').createClient(); |
|||
|
|||
require('redis').createClient() |
|||
.on('ready', function() { |
|||
this.emit('timeline'); |
|||
}) |
|||
.on('timeline', function() { |
|||
var self = this; |
|||
this.blpop('timeline', 0, function(err, result) { |
|||
var message = result[1]; |
|||
if (message) { |
|||
message = codec.decode(message); |
|||
++recv; |
|||
} |
|||
self.emit('timeline'); |
|||
}); |
|||
}); |
|||
|
|||
setInterval(function() { |
|||
cmd.llen('timeline', function(err, result) { |
|||
console.error('id', id, 'received', recv, 'free', freemem(), 'llen', result); |
|||
}); |
|||
}, 2000); |
@ -1,13 +0,0 @@ |
|||
# size JSON msgpack bison |
|||
26602 2151.0170848180414 |
|||
25542 ? 2842.589272665782 |
|||
24835 ? ? 7280.4538397469805 |
|||
6104 6985.234528557929 |
|||
5045 ? 7217.461392841478 |
|||
4341 ? ? 14261.406335354604 |
|||
4180 15864.633685636572 |
|||
4143 ? 12954.806235781925 |
|||
4141 ? ? 44650.70733912719 |
|||
75 114227.07313350472 |
|||
40 ? 30162.440062810834 |
|||
39 ? ? 119815.66013519121 |
@ -1,13 +0,0 @@ |
|||
#!/bin/sh |
|||
|
|||
gnuplot >size-rate.jpg << _EOF_ |
|||
|
|||
set terminal png nocrop enhanced font verdana 12 size 640,480 |
|||
set logscale x |
|||
set logscale y |
|||
set grid |
|||
set xlabel 'Serialized object size, octets' |
|||
set ylabel 'decode(encode(obj)) rate, 1/sec' |
|||
plot '00' using 1:2 title 'json' smooth bezier, '00' using 1:3 title 'msgpack' smooth bezier, '00' using 1:4 title 'bison' smooth bezier |
|||
|
|||
_EOF_ |
Before Width: | Height: | Size: 6.5 KiB |
@ -1,86 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var msgpack = require('node-msgpack'); |
|||
var bison = require('bison'); |
|||
var codec = { |
|||
JSON: { |
|||
encode: JSON.stringify, |
|||
decode: JSON.parse |
|||
}, |
|||
msgpack: { |
|||
encode: msgpack.pack, |
|||
decode: msgpack.unpack |
|||
}, |
|||
bison: bison |
|||
}; |
|||
|
|||
var obj, l; |
|||
|
|||
function run(obj, codec) { |
|||
var t1 = Date.now(); |
|||
var n = 10000; |
|||
for (var i = 0; i < n; ++i) { |
|||
codec.decode(l = codec.encode(obj)); |
|||
} |
|||
var t2 = Date.now(); |
|||
//console.log('DONE', n*1000/(t2-t1), 'codecs/sec, length=', l.length);
|
|||
return [n*1000/(t2-t1), l.length]; |
|||
} |
|||
|
|||
function series(obj, cname, n) { |
|||
var rate = 0; |
|||
var len = 0; |
|||
for (var i = 0; i < n; ++i) { |
|||
var r = run(obj, codec[cname]); |
|||
rate += r[0]; |
|||
len += r[1]; |
|||
} |
|||
rate /= n; |
|||
len /= n; |
|||
console.log(cname + ' ' + rate + ' ' + len); |
|||
return [rate, len]; |
|||
} |
|||
|
|||
function forObj(obj) { |
|||
var r = { |
|||
JSON: series(obj, 'JSON', 20), |
|||
msgpack: series(obj, 'msgpack', 20), |
|||
bison: series(obj, 'bison', 20) |
|||
}; |
|||
return r; |
|||
} |
|||
|
|||
var s = '0'; |
|||
for (var i = 0; i < 12; ++i) s += s; |
|||
|
|||
obj = { |
|||
foo: s, |
|||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], |
|||
rand: [], |
|||
a: s, |
|||
ccc: s, |
|||
b: s + s + s |
|||
}; |
|||
for (i = 0; i < 100; ++i) obj.rand.push(Math.random()); |
|||
forObj(obj); |
|||
|
|||
obj = { |
|||
foo: s, |
|||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], |
|||
rand: [] |
|||
}; |
|||
for (i = 0; i < 100; ++i) obj.rand.push(Math.random()); |
|||
forObj(obj); |
|||
|
|||
obj = { |
|||
foo: s, |
|||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], |
|||
rand: [] |
|||
}; |
|||
forObj(obj); |
|||
|
|||
obj = { |
|||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], |
|||
rand: [] |
|||
}; |
|||
forObj(obj); |
@ -1,20 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var client = require("redis").createClient(), |
|||
client2 = require("redis").createClient(); |
|||
|
|||
client.subscribe("something"); |
|||
client.on("subscribe", function (channel, count) { |
|||
console.log("Got sub: " + channel); |
|||
client.unsubscribe("something"); |
|||
}); |
|||
|
|||
client.on("unsubscribe", function (channel, count) { |
|||
console.log("Got unsub: " + channel + ", quitting"); |
|||
client.quit(); |
|||
}); |
|||
|
|||
// exercise unsub before sub
|
|||
client2.unsubscribe("something"); |
|||
client2.subscribe("another thing"); |
|||
client2.quit(); |
Loading…
Reference in new issue