Beispiel #1
0
tests.recurring = function recurring(test) {
  test.expect(8)
  var called = 0, now = Date.now();

  qb.on('error', test.done)
    .can('joomla', function (task, done) {
      test.ok(now <= task.received && task.received < Date.now(), 'received is not in the right band ' + now + ' < ' + task.received + ' < ' + Date.now())
      test.ok(now + (called++) * 75 < Date.now(), 'processing time too early n: ' + called + ' recieved: ' + task.received + ' now: ' + Date.now())
      done();
    })
    .pre('push', qbPkg.mdw.setTimestamp('received'))
    .on('finish', function (type, task, next) {
      if (called === 3) {
        qb.queue('joomla').recurring.remove('xxrecur123', task.every, function (err) {
          test.ifError(err)
          setTimeout(test.done, 100)
        })
      }
      next()
    })
    .start()
    .on('ready', function () {
      qb.push('joomla', {foo:'bar', every: 75, id: 'xxrecur123'}, test.ifError);
    });
}
Beispiel #2
0
tests.setTimestamp = function setTimestamp (test) {
  var called = false;
  qb.on('error', test.done)
    .can('foobar', function (task, done) {
      test.ok(task.pushtime > Date.now() - 1000 && task.pushtime < Date.now());
      test.ok(task.timestamp > Date.now() - 100 && task.timestamp <= Date.now(), 'Timestamp isnt close enough ('+task.timestamp+') to now ('+Date.now()+')');
      called = true;
      done();
    })
    .pre('push')
      .use(qbPkg.mdw.setTimestamp('pushtime'))
    .pre('process')
      .use(qbPkg.mdw.setTimestamp())
    .on('finish', function (type, task, next) {
      test.equal(called, true);
      setImmediate(test.done);
    })
    .start()
    .on('ready', function () {
      qb.push('foobar', {foo: 'bar'}, test.ifError);
    })

}
Beispiel #3
0
tests.retryer = function retry(test) {
  var i = 0
  qb.on('error', test.done)
    .can('serve', function (task, done) {
      test.equal(task.retry, i++ ? i-1 : undefined)
      done(new Error('yolo'))
    })
    .on('fail', qbPkg.mdw.retry(qb, 'serve', 2))
    .on('fail', function (type, task, next) {
      test.equal(task.retry, 2)
      setTimeout(test.done, 30)
    })
    .start()
    .on('ready', function () {
      qb.push('serve', {yolo:'yolo'})
    })

}
Beispiel #4
0
tests.deferred = function deferred(test) {
  var called = false;

  qb.on('error', test.done)
    .can('after', function (task, done) {
      test.ok(task.received + 50 < Date.now(), 'processing time too early recieved: ' + task.received + ' now: ' + Date.now());
      called = true;
      done();
    })
    .pre('push', qbPkg.mdw.setTimestamp('received'))
    .on('finish', function (type, task, next) {
      test.ok(called);
      setImmediate(test.done);
    })
    .start()
    .on('ready', function () {
      qb.push('after', {foo:'bar', when: Date.now() + 100});
    });
}
Beispiel #5
0
var options = config.qb;
options.redis = redis.createClient();

// Setup
var qb = QB.init(options)

  // Services provided
  .can('email-to-list', 10 /* max concurrent callbacks */, services.emailToList /* callback func */)
  .can('add-email-to-list', 50 /* max concurrent callbacks */, services.addEmailToList /* callback func */)

  // Communication
  .speaks(require('qb-http'), config.http)
  .speaks(require('qb-messageq'), config.messageq)

  // Middleware
  .pre('push').use(QB.mdw.setTimestamp('received'))
  .pre('process').use(QB.mdw.setTimestamp('process'))
  .pre('finish')
    .use(function (type, task, next) { // custom middleware
      task.processing_time = Date.now() - task.process;
      next();
    })
    // .use(function (type, task, next) {
    //   console.log('Finished processing a task in ' + type + ' at ' + task.process + ' in ' + task.processing_time + 'ms');
    // })
  .on('fail', function (type, task, next) {
    qb.log.error('FAIL: Type %s: %s', type, task.error);
  })
  .on('process').use(endWhenIShould)

  // Start!