[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