97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
/* jslint node:true */
|
|
/* global it:false */
|
|
/* global before:false */
|
|
/* global after:false */
|
|
/* global describe:false */
|
|
|
|
'use strict';
|
|
|
|
var async = require('async'),
|
|
database = require('../database.js'),
|
|
expect = require('expect.js'),
|
|
fs = require('fs'),
|
|
paths = require('../paths.js'),
|
|
tasks = require('../tasks.js');
|
|
|
|
function setup(done) {
|
|
async.series([
|
|
database.initialize,
|
|
database._clear
|
|
], done);
|
|
}
|
|
|
|
function cleanup(done) {
|
|
async.series([
|
|
database._clear,
|
|
database.uninitialize
|
|
], done);
|
|
}
|
|
|
|
describe('task', function () {
|
|
before(setup);
|
|
after(cleanup);
|
|
|
|
it('can run valid task - success', function (done) {
|
|
tasks.add(tasks._TASK_IDENTITY, [ 'ping' ], function (error, taskId) {
|
|
if (error) return done(error);
|
|
|
|
tasks.startTask(taskId, {}, function (error, result) {
|
|
if (error) return done(error);
|
|
expect(result).to.equal('ping');
|
|
expect(taskId).to.be.ok();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('can run valid task - error', function (done) {
|
|
tasks.add(tasks._TASK_ERROR, [ 'ping' ], function (error, taskId) {
|
|
if (error) return done(error);
|
|
|
|
tasks.startTask(taskId, {}, function (error, result) {
|
|
expect(error).to.be.ok();
|
|
expect(error.message).to.be('Failed for arg: ping');
|
|
expect(result).to.be(null);
|
|
expect(taskId).to.be.ok();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('can get logs of crash', function (done) {
|
|
tasks.add(tasks._TASK_CRASH, [ 'ping' ], function (error, taskId) {
|
|
if (error) return done(error);
|
|
|
|
tasks.startTask(taskId, {}, function (error, result) {
|
|
expect(error).to.be.ok();
|
|
|
|
expect(error.message).to.contain(`Task ${taskId} crashed`);
|
|
expect(result).to.be(null);
|
|
expect(taskId).to.be.ok();
|
|
|
|
let logs = fs.readFileSync(`${paths.TASKS_LOG_DIR}/${taskId}.log`, 'utf8');
|
|
expect(logs).to.contain('Crashing for arg: ping');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('can stop task', function (done) {
|
|
tasks.add(tasks._TASK_SLEEP, [ 10000 ], function (error, taskId) {
|
|
if (error) return done(error);
|
|
|
|
tasks.startTask(taskId, {}, function (error, result) {
|
|
expect(error).to.be.ok();
|
|
expect(error.message).to.contain('stopped');
|
|
expect(result).to.be(null);
|
|
expect(taskId).to.be.ok();
|
|
done();
|
|
});
|
|
|
|
setTimeout(() => {
|
|
tasks.stopTask(taskId, () => {});
|
|
}, 100);
|
|
});
|
|
});
|
|
});
|