Files
cloudron-box/src/test/tasks-test.js

96 lines
2.8 KiB
JavaScript
Raw Normal View History

2018-12-10 21:05:46 -08:00
/* 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) {
let taskId = null;
let task = tasks.startTask(tasks._TASK_IDENTITY, [ 'ping' ]);
2018-12-10 21:05:46 -08:00
task.on('error', done);
task.on('start', (tid) => { taskId = tid; });
task.on('finish', 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) {
let taskId = null;
let task = tasks.startTask(tasks._TASK_ERROR, [ 'ping' ]);
2018-12-10 21:05:46 -08:00
task.on('error', done);
task.on('start', (tid) => { taskId = tid; });
task.on('finish', 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();
});
});
2018-12-10 21:42:03 -08:00
it('can get logs of crash', function (done) {
2018-12-10 21:05:46 -08:00
let taskId = null;
let task = tasks.startTask(tasks._TASK_CRASH, [ 'ping' ]);
2018-12-10 21:05:46 -08:00
task.on('error', done);
task.on('start', (tid) => { taskId = tid; });
task.on('finish', function (error, result) {
expect(error).to.be.ok();
2019-03-31 18:01:46 -07:00
expect(error.message).to.contain(`Task ${taskId} crashed`);
2018-12-10 21:05:46 -08:00
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();
});
});
2018-12-10 21:42:03 -08:00
it('can stop task', function (done) {
let taskId = null;
let task = tasks.startTask(tasks._TASK_SLEEP, [ 10000 ]);
2018-12-10 21:42:03 -08:00
task.on('error', done);
task.on('start', (tid) => {
taskId = tid;
tasks.stopTask(taskId, () => {});
2018-12-10 21:42:03 -08:00
});
task.on('finish', function (error, result) {
expect(error).to.be.ok();
expect(error.message).to.contain('SIGTERM');
expect(result).to.be(null);
expect(taskId).to.be.ok();
done();
});
});
2018-12-10 21:05:46 -08:00
});