aws-sqs-stream
Version:
AWS SQS library written using node.js streams
66 lines (48 loc) • 1.5 kB
JavaScript
var SqsPlugin = require('../../index.js').SqsPlugin;
var assert = require('assert');
var _ = require('lodash');
var broadway = require('broadway');
var async = require('async');
var sqsOptions = require('../private-sqs-options.json');
var validate = require('../validate.js');
suite('Test Sqs Read Stream - Streams 1 interface', function() {
this.timeout(120000);
var app = {
plugins: new broadway.App()
};
app.plugins.use(new SqsPlugin('sqs'), sqsOptions);
setup(function(done) {
app.plugins.init(function(err) {
assert.ifError(err);
var inserts = _.map(_.range(10), function() {
return function(cb) {
app.plugins.sqs.sqsClient.sendMessage({
MessageBody: 'message ' + Math.random(),
QueueUrl: sqsOptions.QueueUrl,
DelaySeconds: 0,
}, cb);
};
});
async.parallel(inserts, done);
});
});
test('Read Stream', function(done) {
var readStream = app.plugins.sqs.messageStream();
var messageCount = 0;
readStream.on('error', function(err) {
assert.ifError(err);
});
readStream.on('data', function(msg) {
messageCount++;
console.log(msg);
validate(msg);
app.plugins.sqs.ack(msg, function() { console.log('msg ack'); });
});
readStream.on('end', function() {
assert.equal(messageCount, 10, 'Should have processed 10 messages');
setTimeout(function() {
done();
}, 1000);
});
});
});