[k6] Add JVM warmup phase (#2)
To account for JVM warmup effect, the k6 test suite is run twice:
initially, the whole test suite is run without recording results.
- Added environment variables to allow setting total CM-handles and
batch size for registration. By reducing total CM-handles during
warm-up, many more operations will be run.
Issue-ID: CPS-2264
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: Ib1d1e76d31719d788a3e026797faa0a425b320a2
diff --git a/k6-tests/ncmp/1-create-cmhandles.js b/k6-tests/ncmp/1-create-cmhandles.js
index 9a5c22a..1c64ab0 100644
--- a/k6-tests/ncmp/1-create-cmhandles.js
+++ b/k6-tests/ncmp/1-create-cmhandles.js
@@ -19,13 +19,12 @@
*/
import exec from 'k6/execution';
-import { TOTAL_CM_HANDLES, makeBatchOfCmHandleIds, makeCustomSummaryReport } from './common/utils.js';
+import { TOTAL_CM_HANDLES, REGISTRATION_BATCH_SIZE, makeBatchOfCmHandleIds, makeCustomSummaryReport } from './common/utils.js';
import { createCmHandles } from './common/cmhandle-crud.js';
-const BATCH_SIZE = 100;
export const options = {
vus: 1,
- iterations: Math.ceil(TOTAL_CM_HANDLES / BATCH_SIZE),
+ iterations: Math.ceil(TOTAL_CM_HANDLES / REGISTRATION_BATCH_SIZE),
thresholds: {
http_req_failed: ['rate == 0'],
http_req_duration: ['avg <= 850'],
@@ -34,7 +33,7 @@
export default function () {
const batchNumber = exec.scenario.iterationInTest;
- const nextBatchOfCmHandleIds = makeBatchOfCmHandleIds(BATCH_SIZE, batchNumber);
+ const nextBatchOfCmHandleIds = makeBatchOfCmHandleIds(REGISTRATION_BATCH_SIZE, batchNumber);
createCmHandles(nextBatchOfCmHandleIds);
}
diff --git a/k6-tests/ncmp/11-delete-cmhandles.js b/k6-tests/ncmp/11-delete-cmhandles.js
index 534b3de..542754b 100644
--- a/k6-tests/ncmp/11-delete-cmhandles.js
+++ b/k6-tests/ncmp/11-delete-cmhandles.js
@@ -19,13 +19,12 @@
*/
import exec from 'k6/execution';
-import { TOTAL_CM_HANDLES, makeBatchOfCmHandleIds, makeCustomSummaryReport } from './common/utils.js';
+import { TOTAL_CM_HANDLES, REGISTRATION_BATCH_SIZE, makeBatchOfCmHandleIds, makeCustomSummaryReport } from './common/utils.js';
import { deleteCmHandles } from './common/cmhandle-crud.js';
-const BATCH_SIZE = 100;
export const options = {
vus: 1,
- iterations: Math.ceil(TOTAL_CM_HANDLES / BATCH_SIZE),
+ iterations: Math.ceil(TOTAL_CM_HANDLES / REGISTRATION_BATCH_SIZE),
thresholds: {
http_req_failed: ['rate == 0'],
http_req_duration: ['avg <= 1050'],
@@ -34,7 +33,7 @@
export default function () {
const batchNumber = exec.scenario.iterationInTest;
- const nextBatchOfCmHandleIds = makeBatchOfCmHandleIds(BATCH_SIZE, batchNumber);
+ const nextBatchOfCmHandleIds = makeBatchOfCmHandleIds(REGISTRATION_BATCH_SIZE, batchNumber);
deleteCmHandles(nextBatchOfCmHandleIds);
}
diff --git a/k6-tests/ncmp/common/utils.js b/k6-tests/ncmp/common/utils.js
index 1fb9b8e..55ef60a 100644
--- a/k6-tests/ncmp/common/utils.js
+++ b/k6-tests/ncmp/common/utils.js
@@ -20,7 +20,8 @@
export const NCMP_BASE_URL = 'http://localhost:8883';
export const DMI_PLUGIN_URL = 'http://ncmp-dmi-plugin-demo-and-csit-stub:8092';
-export const TOTAL_CM_HANDLES = 20000
+export const TOTAL_CM_HANDLES = Number(__ENV.TOTAL_CM_HANDLES) || 20000;
+export const REGISTRATION_BATCH_SIZE = Number(__ENV.REGISTRATION_BATCH_SIZE) || 100;
/**
* Generates a batch of CM-handle IDs based on batch size and number.
diff --git a/k6-tests/ncmp/run-all-tests.sh b/k6-tests/ncmp/run-all-tests.sh
index 80231b9..f67b6ef 100755
--- a/k6-tests/ncmp/run-all-tests.sh
+++ b/k6-tests/ncmp/run-all-tests.sh
@@ -31,6 +31,12 @@
pushd "$(dirname "$0")" || exit 1
+echo 'Warming up JVM (warmup results will not be recorded)'
+for test_script in "${ALL_TEST_SCRIPTS[@]}"; do
+ echo "[warmup] k6 run $test_script"
+ k6 --quiet -e TOTAL_CM_HANDLES=1000 -e REGISTRATION_BATCH_SIZE=10 -e K6_MODULE_NAME="$test_script" run "$test_script" > /dev/null
+done
+
printf "Test Case\tCondition\tLimit\tActual\tResult\n" > summary.log
number_of_failures=0