Skip to content

Commit

Permalink
Fix logic around 12 Test Sessions
Browse files Browse the repository at this point in the history
Double coolDown timeout (duration to wait for ECS Tasks to be down).
Change logic around Tls Test Session count to be more flexible.
  • Loading branch information
binarymist committed Dec 9, 2021
1 parent 328fd47 commit 2c9feb3
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 11 deletions.
2 changes: 1 addition & 1 deletion config/config.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@
"medium": "lp"
},
"coolDown": {
"timeout": 50000
"timeout": 100000
}
}
36 changes: 33 additions & 3 deletions config/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,17 @@ const schema = {
testPlanRoute: '/test-plan',
initTesterRoute: '/init-tester',
startTesterRoute: '/start-tester',
resetTesterRoute: '/reset-tester'
resetTesterRoute: '/reset-tester',
minNum: {
doc: 'The minimum number of supported App Testers.',
format: Number,
default: 1
},
maxNum: {
doc: 'The maximum number of supported App Testers.',
format: Number,
default: 12
}
},
server: {
name: 'server',
Expand All @@ -112,7 +122,17 @@ const schema = {
testPlanRoute: '/test-plan',
initTesterRoute: '/init-tester',
startTesterRoute: '/start-tester',
resetTesterRoute: '/reset-tester'
resetTesterRoute: '/reset-tester',
minNum: {
doc: 'The minimum number of supported Server Testers.',
format: Number,
default: 1
},
maxNum: {
doc: 'The maximum number of supported Server Testers.',
format: Number,
default: 1
}
},
tls: {
name: 'tls',
Expand All @@ -129,7 +149,17 @@ const schema = {
testPlanRoute: '/test-plan',
initTesterRoute: '/init-tester',
startTesterRoute: '/start-tester',
resetTesterRoute: '/reset-tester'
resetTesterRoute: '/reset-tester',
minNum: {
doc: 'The minimum number of supported Tls Testers.',
format: Number,
default: 1
},
maxNum: {
doc: 'The maximum number of supported Tls Testers.',
format: Number,
default: 1
}
}
},
job: {
Expand Down
6 changes: 3 additions & 3 deletions src/api/orchestration/models/orchestrate.app.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,17 @@ async function plan(testJob) {
}

async function initTester(testJob) {
const { testerConfig: { name, url, initTesterRoute } } = internals;
const { testerConfig: { name, url, initTesterRoute, minNum, maxNum } } = internals;

if (!isActive()) return { name, message: TesterUnavailable(name) };

const hydratedTestJob = Bourne.parse(testJob);
const validNumberOfResourceObjects = (() => {
const numberOfAppScannerResourceObjects = hydratedTestJob.included.filter((resourceObj) => resourceObj.type === 'appScanner').length;
return numberOfAppScannerResourceObjects > 0 && numberOfAppScannerResourceObjects <= 12;
return numberOfAppScannerResourceObjects >= minNum && numberOfAppScannerResourceObjects <= maxNum;
})();

if (!validNumberOfResourceObjects) return { name, message: 'Tester failure: The only valid number of appScanner resource objects is from 1-12 inclusive. Please modify your Job file.' };
if (!validNumberOfResourceObjects) return { name, message: `Tester failure: The only valid number of appScanner resource objects is from: "${minNum}-${maxNum}" inclusive. Please modify your Job file.` };
internals.jobTestSessions = hydratedTestJob.included.filter((resourceObj) => resourceObj.type === 'appScanner').map((testSessionResourceObj) => ({ id: testSessionResourceObj.id, isFinished: false }));

const { res, payload } = await Wreck.post(`${url}${initTesterRoute}`, { headers: { 'content-type': 'application/vnd.api+json' }, payload: testJob }); // eslint-disable-line no-unused-vars
Expand Down
2 changes: 1 addition & 1 deletion src/api/orchestration/models/orchestrate.server.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ async function plan(testJob) { // eslint-disable-line no-unused-vars
}

async function initTester(testJob) { // eslint-disable-line no-unused-vars
const { testerConfig: { name, url, initTesterRoute } } = internals; // eslint-disable-line no-unused-vars
const { testerConfig: { name, url, initTesterRoute, minNum, maxNum } } = internals; // eslint-disable-line no-unused-vars

internals.jobTestSessions = [{ id: 'NA' }];

Expand Down
9 changes: 6 additions & 3 deletions src/api/orchestration/models/orchestrate.tls.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,17 @@ async function plan(testJob) {
}

async function initTester(testJob) {
const { testerConfig: { name, url, initTesterRoute } } = internals;
const { testerConfig: { name, url, initTesterRoute, minNum, maxNum } } = internals;

if (!isActive()) return { name, message: TesterUnavailable(name) };

const hydratedTestJob = Bourne.parse(testJob);
const validNumberOfResourceObjects = hydratedTestJob.included.filter((resourceObj) => resourceObj.type === 'tlsScanner').length === 1;
const validNumberOfResourceObjects = (() => {
const numberOfTlsScannerResourceObjects = hydratedTestJob.included.filter((resourceObj) => resourceObj.type === 'tlsScanner').length;
return numberOfTlsScannerResourceObjects >= minNum && numberOfTlsScannerResourceObjects <= maxNum;
})();

if (!validNumberOfResourceObjects) return { name, message: 'Tester failure: The only valid number of tlsScanner resource objects is one. Please modify your Job file.' };
if (!validNumberOfResourceObjects) return { name, message: `Tester failure: The only valid number of tlsScanner resource objects is${minNum === maxNum ? `: "${minNum}"` : ` from: "${minNum}-${maxNum}"`}. Please modify your Job file.` };
internals.jobTestSessions = hydratedTestJob.included.filter((resourceObj) => resourceObj.type === 'tlsScanner').map((testSessionResourceObj) => ({ id: testSessionResourceObj.id, isFinished: false }));

const { res, payload } = await Wreck.post(`${url}${initTesterRoute}`, { headers: { 'content-type': 'application/vnd.api+json' }, payload: testJob }); // eslint-disable-line no-unused-vars
Expand Down

0 comments on commit 2c9feb3

Please sign in to comment.