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.
92 lines
3.8 KiB
92 lines
3.8 KiB
// Generated by CoffeeScript 1.3.3 |
|
(function() { |
|
var amqp, argv, assert, check_results, count, default_exchange, exec, firehose_message, firehose_queue_name, message_s, publish_message, test_message, test_queue_name; |
|
|
|
argv = require('optimist').usage('' + 'Test tracing/firehose message receipt.' + '\nA firehose message is generated both when a message is published and when it is consumed.' + '\nNOTE: this test will attempt to enable and then disable tracing for the vhost using rabbitmqctl.').demand('host').describe('host', 'Host')["default"]('host', 'localhost').demand('port').describe('port', 'Port')["default"]('port', 5672).demand('vhost').describe('vhost', 'Virtual Host')["default"]('vhost', '/').demand('login').describe('login', 'Login')["default"]('login', 'guest').demand('password').describe('password', 'Password').argv; |
|
|
|
amqp = require('../amqp'); |
|
|
|
exec = require('child_process').exec; |
|
|
|
assert = require('assert'); |
|
|
|
message_s = ""; |
|
|
|
publish_message = function() { |
|
var message; |
|
message = { |
|
hello: 'world' |
|
}; |
|
message_s = JSON.stringify(message); |
|
default_exchange.publish(test_queue_name, message); |
|
return console.log("test message published: " + (JSON.stringify(message)) + " to queue: " + test_queue_name); |
|
}; |
|
|
|
count = 0; |
|
|
|
test_message = function(message, headers, properties) { |
|
console.log("" + ("test message received: routing_key: '" + properties.routingKey + "';") + (" message: " + (JSON.stringify(message)))); |
|
assert.equal(message_s, JSON.stringify(message, "incorrect message content or content_type")); |
|
return count++; |
|
}; |
|
|
|
firehose_message = function(message, headers, properties) { |
|
console.log("" + ("firehose message received: routing_key: '" + properties.routingKey + "';") + (" headers.routing_keys[0]: '" + headers.routing_keys[0] + "';") + (" message: " + (JSON.stringify(message)))); |
|
assert.equal(message_s, JSON.stringify(message, "incorrect message content or content_type")); |
|
assert.equal(test_queue_name, headers.routing_keys[0], "routing key is not queue name in firehose message headers"); |
|
return count++; |
|
}; |
|
|
|
check_results = function() { |
|
console.log("" + count + " messages received"); |
|
assert.equal(3, count, "wrong number of messages received"); |
|
return exec("rabbitmqctl trace_off -p " + argv.vhost, function(error, stdout, stderr) { |
|
if (error != null) { |
|
console.log(error); |
|
process.exit(2); |
|
} |
|
return process.exit(0); |
|
}); |
|
}; |
|
|
|
default_exchange = {}; |
|
|
|
test_queue_name = 'test.firehose.test'; |
|
|
|
firehose_queue_name = 'test.firehose.firehose'; |
|
|
|
exec("rabbitmqctl trace_on -p " + argv.vhost, function(error, stdout, stderr) { |
|
var amqp_connection, host, login, options, password, port, vhost; |
|
if (error != null) { |
|
console.log(error); |
|
process.exit(1); |
|
} |
|
host = argv.host, port = argv.port, vhost = argv.vhost, login = argv.login, password = argv.password; |
|
options = { |
|
host: host, |
|
port: port, |
|
vhost: vhost, |
|
login: login, |
|
password: password |
|
}; |
|
amqp_connection = amqp.createConnection(options); |
|
return amqp_connection.on('ready', function() { |
|
default_exchange = amqp_connection.exchange(); |
|
return amqp_connection.queue(test_queue_name, function(queue) { |
|
queue.subscribe(function(message, headers, properties) { |
|
return test_message(message, headers, properties); |
|
}); |
|
return amqp_connection.queue(firehose_queue_name, function(queue) { |
|
return queue.bind("amq.rabbitmq.trace", "#", function() { |
|
queue.subscribe(function(message, headers, properties) { |
|
return firehose_message(message, headers, properties); |
|
}); |
|
setTimeout(check_results, 1000); |
|
return publish_message(); |
|
}); |
|
}); |
|
}); |
|
}); |
|
}); |
|
|
|
}).call(this);
|
|
|