From 2b7eb5f655d83b8b1b2bcefac0a20308d1a45fbd Mon Sep 17 00:00:00 2001 From: Camillo Bruni Date: Wed, 22 Oct 2025 11:59:20 +0200 Subject: [PATCH 1/3] adding more tests --- params.js | 33 ++++++++++++++++++++++++--------- tests/unit-tests.js | 19 ++++++++++++++++++- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/params.js b/params.js index ab7ca5f8..b1c07def 100644 --- a/params.js +++ b/params.js @@ -82,18 +82,36 @@ class Params { this.startDelay = 100; } - for (const paramKey of ["tag", "tags", "test", "tests"]) { - this.testList = this._parseTestListParam(sourceParams, paramKey); - } - - this.testIterationCount = this._parseIntParam(sourceParams, "iterationCount", 1); - this.testWorstCaseCount = this._parseIntParam(sourceParams, "worstCaseCount", 1); + this.testList = this._parseOneOf(sourceParams, ["testList", "tag", "tags", "test", "tests"], this._parseTestListParam); + this.testIterationCount = this._parseOneOf(sourceParams, ["testIterationCount", "iterationCount", "iterations" ], this._parseIntParam, 1); + this.testWorstCaseCount = this._parseOneOf(sourceParams, ["testWorstCaseCount", "worstCaseCount", ], this._parseIntParam, 1); const unused = Array.from(sourceParams.keys()); if (unused.length > 0) console.error("Got unused source params", unused); } + _parseOneOf(sourceParams, paramKeys, parseFunction, ...args) { + const defaultParamKey = paramKeys[0] + let result = undefined; + let hasParsedValue = false; + for (const paramKey of paramKeys) { + if (!sourceParams.has(paramKey)) { + continue; + } + const parseResult = parseFunction.call(this, sourceParams, paramKey, ...args); + if (hasParsedValue) { + throw new Error(`Cannot parse ${paramKey}, overriding previous value ${JSON.stringify(result)} with ${JSON.stringify(parseResult)}`) + } + hasParsedValue = true; + result = parseResult; + } + if (!hasParsedValue) { + return DefaultJetStreamParams[defaultParamKey]; + } + return result; + } + _parseTestListParam(sourceParams, key) { if (!sourceParams.has(key)) return this.testList; @@ -108,9 +126,6 @@ class Params { } testList = testList.map(each => each.trim()); sourceParams.delete(key); - if (this.testList.length > 0 && testList.length > 0) { - throw new Error(`Overriding previous testList='${this.testList.join()}' with ${key} url-parameter.`); - } return testList; } diff --git a/tests/unit-tests.js b/tests/unit-tests.js index ac5d5e12..c695556b 100644 --- a/tests/unit-tests.js +++ b/tests/unit-tests.js @@ -28,7 +28,7 @@ function assertThrows(message, func) { } catch (e) { didThrow = true; } - assertTrue(didThrow, message); + assertTrue(didThrow, `Test did not throw: ${message}`); } (function testTagsAreLowerCaseStrings() { @@ -276,3 +276,20 @@ async function testStartupBenchmarkInnerTests() { } ); })(); + + +(function testParseIterationCount() { + assertThrows("Cannot parse negative iterationCounts", + () => { + const sourceParams = new Map(Object.entries({ iterationCount: -123, })); + new Params(sourceParams); + }); + assertThrows("Cannot parse multiple iterationCounts", + () => { + const sourceParams = new Map(Object.entries({ iterationCount: 123, testIterationCount: 10 })); + new Params(sourceParams); + }); + let sourceParams = new Map(Object.entries({ iterationCount: 123 })); + let params = new Params(sourceParams); + assertEquals(params.testIterationCount, 123); +})(); From bea63ed619b1da93dda6b992499c802762701d7d Mon Sep 17 00:00:00 2001 From: Camillo Bruni Date: Wed, 22 Oct 2025 15:03:26 +0200 Subject: [PATCH 2/3] address comments --- params.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/params.js b/params.js index b1c07def..03d51aee 100644 --- a/params.js +++ b/params.js @@ -84,7 +84,7 @@ class Params { this.testList = this._parseOneOf(sourceParams, ["testList", "tag", "tags", "test", "tests"], this._parseTestListParam); this.testIterationCount = this._parseOneOf(sourceParams, ["testIterationCount", "iterationCount", "iterations" ], this._parseIntParam, 1); - this.testWorstCaseCount = this._parseOneOf(sourceParams, ["testWorstCaseCount", "worstCaseCount", ], this._parseIntParam, 1); + this.testWorstCaseCount = this._parseOneOf(sourceParams, ["testWorstCaseCount", "worstCaseCount", "worst"], this._parseIntParam, 1); const unused = Array.from(sourceParams.keys()); if (unused.length > 0) @@ -94,16 +94,16 @@ class Params { _parseOneOf(sourceParams, paramKeys, parseFunction, ...args) { const defaultParamKey = paramKeys[0] let result = undefined; - let hasParsedValue = false; + let parsedParamKey = undefined; for (const paramKey of paramKeys) { if (!sourceParams.has(paramKey)) { continue; } const parseResult = parseFunction.call(this, sourceParams, paramKey, ...args); - if (hasParsedValue) { - throw new Error(`Cannot parse ${paramKey}, overriding previous value ${JSON.stringify(result)} with ${JSON.stringify(parseResult)}`) + if (parsedParamKey) { + throw new Error(`Cannot parse ${paramKey}, overriding previous "${parsedParamKey}" value ${JSON.stringify(result)} with ${JSON.stringify(parseResult)}`) } - hasParsedValue = true; + parsedParamKey = paramKey; result = parseResult; } if (!hasParsedValue) { From 9cbfa3ee3f2401146b60956e8498a5f4b0a01a61 Mon Sep 17 00:00:00 2001 From: Camillo Bruni Date: Wed, 22 Oct 2025 15:03:57 +0200 Subject: [PATCH 3/3] fix tests --- params.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params.js b/params.js index 03d51aee..30bbaf85 100644 --- a/params.js +++ b/params.js @@ -106,7 +106,7 @@ class Params { parsedParamKey = paramKey; result = parseResult; } - if (!hasParsedValue) { + if (!parsedParamKey) { return DefaultJetStreamParams[defaultParamKey]; } return result;