I’m trying to capture promiseID from post request in scenario1 and pass it in Get request in scenario2 since TPS of both Post and Get are different.
import { authenticate } from “…/services/auth-request”;
import {
postOutboundPromise,
getPromiseDetails,
} from “…/services/outboundPromise-request”;
import { logMetrics, printMetrics } from “…/services/custom-metric”;
import { sleep } from “k6”;
var accessToken: string | null = null;
export const options = {
scenarios: {
Post: {
executor: “constant-arrival-rate”,
rate: 2,
duration: “1m”,
preAllocatedVUs: 1,
maxVUs: 1,
exec: “testFlow1”,
},
Get: {
executor: “constant-arrival-rate”,
rate: 1,
duration: “1m”,
startTime: “10s”,
preAllocatedVUs: 1,
maxVUs: 1,
exec: “testFlow2”,
},
},
discardResponseBodies: false,
thresholds: {
http_req_duration: [“p(95)<500”],
http_req_failed: [“rate<0.1”],
},
};
let globalPromiseId: string;
export function setup() {
accessToken = authenticate();
if (!accessToken) {
throw new Error(“Failed to authenticate and get access token”);
}
return { accessToken };
}
export function testFlow1(data: { accessToken: any }) {
accessToken = data.accessToken;
if (!accessToken) {
throw new Error(“Authentication failed, no access token received”);
}
const { promiseId, response } = postOutboundPromise(accessToken);
if (!promiseId) {
throw new Error(“POST request failed, no promiseId received”);
}
// Update global variables
globalPromiseId = promiseId;
// Log metrics for the POST request
logMetrics(“POST /promises”, response);
return { promiseId };
}
export function testFlow2(data: { accessToken: any }) {
accessToken = data.accessToken;
if (!accessToken) {
throw new Error(“Authentication failed, no access token received”);
}
console.log(globalPromiseId + “this is ok ?”);
const promiseId = globalPromiseId;
// Wait to simulate the delay and ensure GET request happens after POST
sleep(1); // Adjust sleep duration as needed
const getResponse = getPromiseDetails(
promiseId,
accessToken
// globalPostResponse
);
// Log metrics for the GET request
logMetrics(“GET /promises/:promiseId}”, getResponse);
return { getResponse };
}
// Teardown function to print metrics
export function teardown() {
sleep(1);
printMetrics();
}