1import http from 'k6/http';
2import { sleep } from 'k6';
3import { Counter } from 'k6/metrics';
4
5
6
7export const epDataSent = new Counter('endpoint_data_sent');
8export const epDataRecv = new Counter('endpoint_data_recv');
9
10export const options = {
11 duration: '10s',
12 vus: 10,
13 thresholds: {
14
15 'endpoint_data_sent': ['count < 2048'],
16
17
18
19 'endpoint_data_sent{url:https://test.k6.io/contacts.php}': ['count < 1024'],
20 'endpoint_data_recv{url:https://test.k6.io/}': ['count < 2048'],
21 },
22};
23
24function sizeOfHeaders(hdrs) {
25 return Object.keys(hdrs).reduce((sum, key) => sum + key.length + hdrs[key].length, 0);
26}
27
28function trackDataMetricsPerURL(res) {
29
30 epDataSent.add(sizeOfHeaders(res.request.headers) + res.request.body.length, {
31 url: res.url,
32 });
33 epDataRecv.add(sizeOfHeaders(res.headers) + res.body.length, {
34 url: res.url,
35 });
36}
37
38export default function () {
39 let res;
40
41 res = http.get('https://test.k6.io/');
42 trackDataMetricsPerURL(res);
43
44 res = http.get('https://test.k6.io/contacts.php');
45 trackDataMetricsPerURL(res);
46
47 sleep(1);
48}