I tried to follow the same, but somehow, it doesnt work.
import { sleep } from ‘k6’;
const VUs = 800; // adjust this if you want more or less concurrency
var functionalTests = [
require(“./LocationItemServices-clubItem-loadTest.js”).default,
require(“./locationItemServices-dcItem-loadTest.js”).default];
function getTest(i) {
return function () {
return ‘Test #’ + i;
}
}
for (var i = 0; i < 2; i++) {
functionalTests.push(getTest(i));
}
const testsPerVU = Math.ceil(functionalTests.length / VUs);
export let options = {
scenarios: {
contacts: {
executor: ‘per-vu-iterations’,
vus: VUs,
iterations: testsPerVU,
maxDuration: ‘30s’,
},
},
};
export default function () {
var myTestNumber = (__VU - 1) * testsPerVU + __ITER
if (myTestNumber >= functionalTests.length) {
return; // last VU might have more iterations than needed
}
console.log(`VU ${__VU}, iter ${__ITER}, executed ${functionalTests[myTestNumber]()}`);
sleep(1);
}
LocationItemServices-clubItem-loadTest file:
import grpc from ‘k6/net/grpc’;
import { sleep } from ‘k6’;
import { check } from ‘k6’;
const client = new grpc.Client();
client.load([‘definitions’], ‘item_apis.proto’);
let data = open(“./clubItemIds.csv”);
data = data.split(“\n”);
export let options = {
stages: [
{ duration: ‘2m’, target: 30 }, // simulate ramp-up of traffic from 1 to 30 users over 5 minutes.
{ duration: ‘5m’, target: 30 }, // stay at 30 users for 30 minutes
{ duration: ‘2m’, target: 0 }, // ramp-down to 0 users
],
};
export default () => {
if (__ITER == 0) {
client.connect(‘stg-score-item-services.walmart.com:80’, {
plaintext: true,
timeout:‘2s’
});
}
let ids = [];
let set = new Set();
for(let i = 0; i < 10; i++) {
let id = getRandomId();
while(set.has(id)) {
id = getRandomId();
}
set.add(id);
ids.push(`"${id}"`);
}
let queryMulti = `{
“itemIds”: [${ids}],
“locationId”:6612
}`;
const requestPayload = JSON.parse(queryMulti);
const response = client.invoke(‘com.sams.catalog.item.services.LocationItemService/GetLocationItems’, requestPayload);
check(response, {
'status is OK': (r) => r && r.status === grpc.StatusOK,
});
if(response.status != grpc.StatusOK){
console.log(JSON.stringify(response.body));
}
sleep(0.02);
};
function getRandomId() {
let randomNumber = Math.floor(Math.random() * 20);
return ${data[randomNumber]}
;
}