*/
import http from 'k6/http';
-import { NCMP_BASE_URL, getRandomCmHandleId } from './utils.js';
+import { NCMP_BASE_URL, CONTENT_TYPE_JSON_PARAM, getRandomCmHandleId } from './utils.js';
export function passthroughRead() {
const cmHandleId = getRandomCmHandleId();
const response = http.get(url);
return response;
}
+
+export function passthroughWrite() {
+ const cmHandleId = getRandomCmHandleId();
+ const resourceIdentifier = 'my-resource-identifier';
+ const datastoreName = 'ncmp-datastore:passthrough-running';
+ const url = `${NCMP_BASE_URL}/ncmp/v1/ch/${cmHandleId}/data/ds/${datastoreName}?resourceIdentifier=${resourceIdentifier}`
+ const body = `{"neType": "BaseStation"}`
+ const response = http.post(url, JSON.stringify(body), CONTENT_TYPE_JSON_PARAM);
+ return response;
+}
summaryCsv += makeSummaryCsvLine(3, 'CM-handle ID search with Module filter', 'milliseconds', 'http_req_duration{scenario:id_search_module}', data, options);
summaryCsv += makeSummaryCsvLine(4, 'CM-handle search with Module filter', 'milliseconds', 'http_req_duration{scenario:cm_search_module}', data, options);
summaryCsv += makeSummaryCsvLine(5, 'Synchronous single CM-handle pass-through read', 'milliseconds', 'http_req_duration{scenario:passthrough_read}', data, options);
+ summaryCsv += makeSummaryCsvLine(6, 'Synchronous single CM-handle pass-through write', 'requests/second', 'http_reqs{scenario:passthrough_write}', data, options);
return summaryCsv;
}
import { TOTAL_CM_HANDLES, makeCustomSummaryReport, recordTimeInSeconds } from './common/utils.js';
import { registerAllCmHandles, deregisterAllCmHandles } from './common/cmhandle-crud.js';
import { executeCmHandleSearch, executeCmHandleIdSearch } from './common/search-base.js';
-import { passthroughRead } from './common/passthrough-read.js';
+import { passthroughRead, passthroughWrite } from './common/passthrough-crud.js';
let cmHandlesCreatedPerSecondGauge = new Gauge('cmhandles_created_per_second');
let cmHandlesDeletedPerSecondGauge = new Gauge('cmhandles_deleted_per_second');
vus: 10,
duration: DURATION,
},
+ passthrough_write: {
+ executor: 'constant-vus',
+ exec: 'passthrough_write',
+ vus: 10,
+ duration: DURATION,
+ },
id_search_module: {
executor: 'constant-vus',
exec: 'id_search_module',
'cmhandles_created_per_second': ['value >= 22'],
'cmhandles_deleted_per_second': ['value >= 22'],
'http_req_failed{scenario:passthrough_read}': ['rate == 0'],
+ 'http_reqs{scenario:passthrough_write}': ['rate >= 13'],
'http_req_failed{scenario:id_search_module}': ['rate == 0'],
'http_req_failed{scenario:cm_search_module}': ['rate == 0'],
'http_req_duration{scenario:passthrough_read}': ['avg <= 2600'], // DMI delay + 100 ms
check(response, { 'passthrough read status equals 200': (r) => r.status === 200 });
}
+export function passthrough_write() {
+ const response = passthroughWrite();
+ check(response, { 'passthrough write status equals 200': (r) => r.status === 200 });
+}
+
export function id_search_module() {
const response = executeCmHandleIdSearch('module');
check(response, { 'module ID search status equals 200': (r) => r.status === 200 });