test the scheduler

This commit is contained in:
Girish Ramakrishnan
2015-10-20 11:33:19 -07:00
parent 0deadc5cf2
commit 3688602d16
3 changed files with 25 additions and 3 deletions
+2 -1
View File
@@ -8,6 +8,7 @@ exports = module.exports = {
var apps = require('./apps.js'),
assert = require('assert'),
cloudron = require('./cloudron.js'),
config = require('./config.js'),
CronJob = require('cron').CronJob,
debug = require('debug')('box:cron'),
janitor = require('./janitor.js'),
@@ -105,7 +106,7 @@ function recreateJobs(unusedTimeZone, callback) {
if (gSchedulerSyncJob) gSchedulerSyncJob.stop();
gSchedulerSyncJob = new CronJob({
cronTime: '00 */1 * * * *', // every 1 minutes
cronTime: config.TEST ? '*/10 * * * * *' : '00 */1 * * * *', // every minute
onTick: scheduler.sync,
start: true,
timeZone: allSettings[settings.TIME_ZONE_KEY]
+18
View File
@@ -829,6 +829,14 @@ describe('App installation', function () {
});
});
it('installation - scheduler', function (done) {
async.retry({ times: 100, interval: 1000 }, function (retryCallback) {
if (fs.existsSync(paths.DATA_DIR + '/' + APP_ID + '/data/every_minute.env')) return retryCallback();
retryCallback(new Error('not run yet'));
}, done);
});
it('logs - stdout and stderr', function (done) {
request.get(SERVER_URL + '/api/v1/apps/' + APP_ID + '/logs')
.query({ access_token: token })
@@ -1361,6 +1369,16 @@ describe('App installation - port bindings', function () {
});
});
it('scheduler works after reconfiguration', function (done) {
async.retry({ times: 100, interval: 1000 }, function (callback) {
var data = safe.fs.readFileSync(paths.DATA_DIR + '/' + APP_ID + '/data/every_minute.env', 'utf8');
if (data && data.indexOf('ECHO_SERVER_PORT=7172') !== -1) return callback();
callback(new Error('not run yet'));
}, done);
});
it('can stop app', function (done) {
request.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/stop')
.query({ access_token: token })
+5 -2
View File
@@ -8,6 +8,7 @@ var appdb = require('./appdb.js'),
apps = require('./apps.js'),
assert = require('assert'),
async = require('async'),
config = require('./config.js'),
CronJob = require('cron').CronJob,
debug = require('debug')('box:src/scheduler'),
docker = require('./docker.js'),
@@ -137,10 +138,12 @@ function createCronJobs(appId, schedulerConfig) {
Object.keys(schedulerConfig).forEach(function (taskName) {
var task = schedulerConfig[taskName];
debug('scheduling task for %s/%s @ 00 %s : %s', appId, taskName, task.schedule, task.command);
var cronTime = (config.TEST ? '*/5 ' : '00 ') + task.schedule; // time ticks faster in tests
debug('scheduling task for %s/%s @ %s : %s', appId, taskName, cronTime, task.command);
var cronJob = new CronJob({
cronTime: '00 ' + task.schedule, // at this point, the pattern has been validated
cronTime: cronTime, // at this point, the pattern has been validated
onTick: doTask.bind(null, appId, taskName),
start: true
});