test the scheduler
This commit is contained in:
+2
-1
@@ -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]
|
||||
|
||||
@@ -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
@@ -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
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user