diff --git a/src/appdb.js b/src/appdb.js index 734c37205..1dd5250b3 100644 --- a/src/appdb.js +++ b/src/appdb.js @@ -59,7 +59,7 @@ var assert = require('assert'), var APPS_FIELDS_PREFIXED = [ 'apps.id', 'apps.appStoreId', 'apps.installationState', 'apps.installationProgress', 'apps.runState', 'apps.health', 'apps.containerId', 'apps.manifestJson', 'apps.httpPort', 'apps.location', 'apps.dnsRecordId', - 'apps.accessRestrictionJson', 'apps.lastBackupId', 'apps.lastBackupConfigJson', 'apps.oldConfigJson', 'apps.oauthProxy' ].join(','); + 'apps.accessRestrictionJson', 'apps.lastBackupId', 'apps.lastBackupConfigJson', 'apps.oldConfigJson', 'apps.oauthProxy', 'apps.memoryLimit' ].join(','); var PORT_BINDINGS_FIELDS = [ 'hostPort', 'environmentVariable', 'appId' ].join(','); @@ -179,7 +179,7 @@ function getAll(callback) { }); } -function add(id, appStoreId, manifest, location, portBindings, accessRestriction, oauthProxy, callback) { +function add(id, appStoreId, manifest, location, portBindings, accessRestriction, oauthProxy, memoryLimit, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof appStoreId, 'string'); assert(manifest && typeof manifest === 'object'); @@ -188,6 +188,7 @@ function add(id, appStoreId, manifest, location, portBindings, accessRestriction assert.strictEqual(typeof portBindings, 'object'); assert.strictEqual(typeof accessRestriction, 'object'); assert.strictEqual(typeof oauthProxy, 'boolean'); + assert.strictEqual(typeof memoryLimit, 'number'); assert.strictEqual(typeof callback, 'function'); portBindings = portBindings || { }; @@ -197,8 +198,8 @@ function add(id, appStoreId, manifest, location, portBindings, accessRestriction var queries = [ ]; queries.push({ - query: 'INSERT INTO apps (id, appStoreId, manifestJson, installationState, location, accessRestrictionJson, oauthProxy) VALUES (?, ?, ?, ?, ?, ?, ?)', - args: [ id, appStoreId, manifestJson, exports.ISTATE_PENDING_INSTALL, location, accessRestrictionJson, oauthProxy ] + query: 'INSERT INTO apps (id, appStoreId, manifestJson, installationState, location, accessRestrictionJson, oauthProxy, memoryLimit) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', + args: [ id, appStoreId, manifestJson, exports.ISTATE_PENDING_INSTALL, location, accessRestrictionJson, oauthProxy, memoryLimit ] }); Object.keys(portBindings).forEach(function (env) { diff --git a/src/test/database-test.js b/src/test/database-test.js index c42a22c80..6577cd279 100644 --- a/src/test/database-test.js +++ b/src/test/database-test.js @@ -479,7 +479,8 @@ describe('database', function () { oauthProxy: false, lastBackupId: null, lastBackupConfig: null, - oldConfig: null + oldConfig: null, + memoryLimit: 4294967296 }; var APP_1 = { id: 'appid-1', @@ -498,7 +499,8 @@ describe('database', function () { oauthProxy: true, lastBackupId: null, lastBackupConfig: null, - oldConfig: null + oldConfig: null, + memoryLimit: 0 }; it('add fails due to missing arguments', function () { @@ -515,7 +517,7 @@ describe('database', function () { }); it('add succeeds', function (done) { - appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.oauthProxy, function (error) { + appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.portBindings, APP_0.accessRestriction, APP_0.oauthProxy, APP_0.memoryLimit, function (error) { expect(error).to.be(null); done(); }); @@ -539,7 +541,7 @@ describe('database', function () { }); it('add of same app fails', function (done) { - appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, [ ], APP_0.accessRestriction, APP_0.oauthProxy, function (error) { + appdb.add(APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, [ ], APP_0.accessRestriction, APP_0.oauthProxy, APP_0.memoryLimit, function (error) { expect(error).to.be.a(DatabaseError); expect(error.reason).to.be(DatabaseError.ALREADY_EXISTS); done(); @@ -571,6 +573,7 @@ describe('database', function () { APP_0.accessRestriction = ''; APP_0.oauthProxy = true; APP_0.httpPort = 1337; + APP_0.memoryLimit = 1337; var data = { installationState: APP_0.installationState, @@ -578,7 +581,8 @@ describe('database', function () { manifest: APP_0.manifest, accessRestriction: APP_0.accessRestriction, oauthProxy: APP_0.oauthProxy, - httpPort: APP_0.httpPort + httpPort: APP_0.httpPort, + memoryLimit: APP_0.memoryLimit }; appdb.update(APP_0.id, data, function (error) { @@ -611,7 +615,7 @@ describe('database', function () { }); it('add second app succeeds', function (done) { - appdb.add(APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, [ ], APP_1.accessRestriction, APP_0.oauthProxy, function (error) { + appdb.add(APP_1.id, APP_1.appStoreId, APP_1.manifest, APP_1.location, [ ], APP_1.accessRestriction, APP_0.oauthProxy, APP_1.memoryLimit, function (error) { expect(error).to.be(null); done(); });