You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.6 KiB

var harness = require('./harness');
var sys = require('sys');
var exec = require('child_process').exec;
if (typeof(options.clientProperties) === 'undefined') {
options.clientProperties = {};
}
if (typeof(options.clientProperties.capabilities) === 'undefined') {
options.clientProperties.capabilities = {};
}
options.clientProperties.capabilities['connection.blocked'] = true;
var connection = harness.run();
var exchange;
var blockedCnt = 0;
var unblockedCnt = 0;
var errorWhenBlocked = false;
var finishTimeout = setTimeout(function() {
//console.log('!!!fired!!!');
connection.end();
}, 10000);
connection.once('ready', function() {
exchange = connection.exchange('node-connection-blocked', {
autoDelete: true
}, function(exchange) {
exec('rabbitmqctl set_vm_memory_high_watermark 0', function(err, stdout, stderr) {
exchange.publish("", "hello");
});
});
});
connection.on('blocked', function() {
//console.log('!blocked');
blockedCnt++;
exchange.publish("", "hello", {}, function(isErr, err) {
if (isErr && err) {
errorWhenBlocked = true;
}
exec('rabbitmqctl set_vm_memory_high_watermark 0.4');
});
});
connection.on('unblocked', function() {
//console.log('!unblocked');
unblockedCnt++;
clearTimeout(finishTimeout);
connection.end();
});
process.addListener('exit', function() {
exec('rabbitmqctl set_vm_memory_high_watermark 0.4');
assert.equal(1, blockedCnt);
assert.equal(1, unblockedCnt);
assert.equal(true, errorWhenBlocked);
});