From 4314ec62475d471a4e28e3e1db8aa1bb0c1afcaa Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 17 Jan 2025 01:26:54 +0930 Subject: [PATCH] test: Initial k6s individual page speed test cases ref: #469 #471 --- test/page_speed.js | 89 +++++++++++++++++++++++++++++++++++++ test/parameterizedData.json | 34 ++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 test/page_speed.js create mode 100644 test/parameterizedData.json diff --git a/test/page_speed.js b/test/page_speed.js new file mode 100644 index 00000000..462e5c7d --- /dev/null +++ b/test/page_speed.js @@ -0,0 +1,89 @@ +import { SharedArray } from 'k6/data'; +import { scenario } from 'k6/execution'; +import http from 'k6/http'; + +import { group } from 'k6'; + +const data = new SharedArray('urls_list', function () { + return JSON.parse(open('parameterizedData.json')).urls_list +}); + + + +const BASE_URL = String(__ENV.BASE_URL) + '/api/v2'; +const AUTH_TOKEN = __ENV.AUTH_TOKEN + + +const iterations = Number(100) + + +export const options = { + + insecureSkipTLSVerify: true, + + + scenarios: { + 'page_speed': { + executor: 'shared-iterations', + vus: 1, + iterations: Number(data.length * iterations), + maxDuration: '1h', + }, + }, + + thresholds: { + http_req_duration: [ + 'p(99)<600', + 'p(95)<400', + 'p(90)<200' + + ], // 95% of requests should be below 200ms + }, + +}; + + +var COMMON_REQUEST_HEADERS = { + dnt: '1', + 'user-agent': 'Mozilla/5.0', + 'content-type': 'application/json', + accept: 'application/json', + origin: BASE_URL, + referer: BASE_URL, + Authorization: `Token ${AUTH_TOKEN}` + +}; + + + +export default function () { + + + let current_iteration = Number(((scenario.iterationInTest + iterations) - ((scenario.iterationInTest + iterations) % iterations)) / iterations) - 1 + + + const urls = data[Number(current_iteration)]; + + console.log(`arr val is: ${current_iteration} with base: ${BASE_URL} path: ${urls}`) + + + const jar = http.cookieJar(); + + const cookies = jar.cookiesForURL(`${BASE_URL}`); + + + + + group('endpoints', function () { + + let res = http.get(`${BASE_URL}${urls}`, + { + headers: COMMON_REQUEST_HEADERS, + jar: jar, + } + ); + + }) + + +} diff --git a/test/parameterizedData.json b/test/parameterizedData.json new file mode 100644 index 00000000..ae5bb345 --- /dev/null +++ b/test/parameterizedData.json @@ -0,0 +1,34 @@ +{ + "urls_list": [ + "/access/organization", + + "/assistance/knowledge_base", + "/assistance/ticket/request", + + "/itam/device", + "/itam/operating_system", + "/itam/software", + + "/itim/ticket/change", + "/itim/cluster", + "/itim/service", + "/itim/ticket/incident", + "/itim/ticket/problem", + + "/project_management/project", + + "/settings/celery_log", + "/settings/cluster_type", + "/settings/device_model", + "/settings/device_type", + "/settings/external_link", + "/settings/knowledge_base_category", + "/settings/manufacturer", + "/settings/port", + "/settings/project_state", + "/settings/project_type", + "/settings/software_category", + "/settings/ticket_category", + "/settings/ticket_comment_category" + ] +} \ No newline at end of file