Add k6 performance tests for NCMP
[cps.git] / k6-tests / ncmp / 1-create-cmhandles.js
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  *  ============LICENSE_END=========================================================
19  */
20
21 import http from 'k6/http';
22 import exec from 'k6/execution';
23 import { check } from 'k6';
24 import { NCMP_BASE_URL, DMI_PLUGIN_URL, TOTAL_CM_HANDLES, makeBatchOfCmHandleIds } from './utils.js';
25
26 const BATCH_SIZE = 100;
27 export const options = {
28   vus: 1,
29   iterations: Math.ceil(TOTAL_CM_HANDLES / BATCH_SIZE),
30   thresholds: {
31     http_req_failed: ['rate == 0'],
32     http_req_duration: ['avg <= 1000'],
33   },
34 };
35
36 export default function() {
37     const nextBatchOfCmHandleIds = makeBatchOfCmHandleIds(BATCH_SIZE, exec.scenario.iterationInTest);
38     const payload = {
39         "dmiPlugin": DMI_PLUGIN_URL,
40         "createdCmHandles": nextBatchOfCmHandleIds.map(cmHandleId => ({
41             "cmHandle": cmHandleId,
42             "cmHandleProperties": { "neType": "RadioNode" },
43             "publicCmHandleProperties": {
44                 "Color": "yellow",
45                 "Size": "small",
46                 "Shape": "cube"
47            }
48         })),
49     };
50     const response = http.post(NCMP_BASE_URL + '/ncmpInventory/v1/ch', JSON.stringify(payload), {
51         headers: { 'Content-Type': 'application/json' },
52     });
53     check(response, {
54         'status equals 200': (r) => r.status === 200,
55     });
56 }