Add restart route for atomicity

This commit is contained in:
Girish Ramakrishnan
2019-12-20 10:29:29 -08:00
parent 887cbb0b22
commit 2692f6ef4e
6 changed files with 109 additions and 1 deletions
+13
View File
@@ -32,6 +32,7 @@ exports = module.exports = {
stopApp: stopApp,
startApp: startApp,
restartApp: restartApp,
exec: exec,
execWebSocket: execWebSocket,
@@ -480,6 +481,18 @@ function stopApp(req, res, next) {
});
}
function restartApp(req, res, next) {
assert.strictEqual(typeof req.params.id, 'string');
debug('Restart app id:%s', req.params.id);
apps.restart(req.params.id, function (error, result) {
if (error) return next(BoxError.toHttpError(error));
next(new HttpSuccess(202, { taskId: result.taskId }));
});
}
function updateApp(req, res, next) {
assert.strictEqual(typeof req.params.id, 'string');
assert.strictEqual(typeof req.body, 'object');
+28
View File
@@ -1570,6 +1570,34 @@ describe('App API', function () {
});
});
});
it('can restart app', function (done) {
superagent.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/restart')
.query({ access_token: token })
.end(function (err, res) {
expect(res.statusCode).to.equal(202);
taskId = res.body.taskId;
done();
});
});
it('wait for app to restart', function (done) {
waitForTask(taskId, function () { setTimeout(done, 12000); }); // give app 12 seconds (to die and start)
});
it('did restart the app', function (done) {
apps.get(APP_ID, function (error, app) {
if (error) return done(error);
superagent.get('http://localhost:' + app.httpPort + APP_MANIFEST.healthCheckPath)
.end(function (err, res) {
if (res && res.statusCode === 200) return done();
done(new Error('app is not running'));
});
});
});
});
describe('uninstall', function () {