It turns out that it’s very simple to create a custom metric for tracking group duration that works locally and in the cloud. Please see the script below.
import http from "k6/http";
import { group } from "k6";
import { sleep } from 'k6';
import { Trend } from 'k6/metrics';
let groupDuration = Trend("groupDuration");
export let options = {
thresholds: {
'groupDuration{groupName:individualRequests}': ['avg < 200'],
'groupDuration{groupName:batchRequests}': ['avg < 200'],
},
vus: 1,
duration: '10s'
};
function groupWithDurationMetric(name, group_function) {
let start = new Date();
group(name, group_function);
let end = new Date();
groupDuration.add(end - start, {groupName: name})
}
export default function () {
groupWithDurationMetric("individualRequests", function () {
http.get('https://test-api.k6.io/public/crocodiles/1/');
http.get('https://test-api.k6.io/public/crocodiles/2/');
http.get('https://test-api.k6.io/public/crocodiles/3/');
});
groupWithDurationMetric("batchRequests", function () {
http.batch([
['GET', `https://test-api.k6.io/public/crocodiles/1/`],
['GET', `https://test-api.k6.io/public/crocodiles/2/`],
['GET', `https://test-api.k6.io/public/crocodiles/3/`],
]);
});
sleep(1);
}
Here’s how it looks for local execution:
And here’s a sample cloud run: https://app.k6.io/runs/public/8f7c9bdd3756468684ed048f79a5c9cd
Hope this helps!