63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
import http from "k6/http";
|
|
import { check, sleep } from "k6";
|
|
import { Trend } from "k6/metrics";
|
|
|
|
// Custom metric to track document creation duration
|
|
let docCreationDuration = new Trend("doc_creation_duration");
|
|
|
|
export let options = {
|
|
stages: [
|
|
{ duration: "30s", target: 20 },
|
|
{ duration: "1m", target: 20 },
|
|
{ duration: "10s", target: 0 },
|
|
],
|
|
thresholds: {
|
|
doc_creation_duration: ["p(95)<500"], // 95% of document creations should be faster than 500ms
|
|
},
|
|
};
|
|
|
|
const baseURL = `${__ENV.BACKEND}/internal/services/files/v1/companies`;
|
|
|
|
function createDocument(JWT, companyID, item, version) {
|
|
const url = `${baseURL}/${companyID}/item`;
|
|
|
|
const headers = {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${JWT}`,
|
|
};
|
|
|
|
let creationStartTime = new Date().getTime();
|
|
const response = http.post(url, JSON.stringify({ item, version }), { headers });
|
|
let creationEndTime = new Date().getTime();
|
|
|
|
docCreationDuration.add(creationEndTime - creationStartTime);
|
|
|
|
return JSON.parse(response.body);
|
|
}
|
|
|
|
export default function () {
|
|
const JWT = __ENV.JWT; // JWT set as an environment variable
|
|
const companyID = __ENV.COMPANY_ID; // Company ID set as an environment variable
|
|
|
|
// Example item and version, modify as needed
|
|
const scope = "shared";
|
|
const randomInt = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);
|
|
const fileName = `${randomInt.toString(36)}`;
|
|
const item = {
|
|
name: fileName,
|
|
parent_id: "root",
|
|
company_id: companyID,
|
|
scope,
|
|
};
|
|
const version = {};
|
|
|
|
const responseBody = createDocument(JWT, companyID, item, version);
|
|
|
|
check(responseBody, {
|
|
"response is successful": body => body.resource !== undefined,
|
|
"company_id is present": body => body.resource.company_id !== undefined,
|
|
});
|
|
|
|
sleep(1);
|
|
}
|