Skip to content

Commit c93f6cd

Browse files
committed
Move special metrics into helper
1 parent 76795da commit c93f6cd

File tree

2 files changed

+47
-25
lines changed

2 files changed

+47
-25
lines changed

load-test/scripts/loadTest.js

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import {
1414
TIMEOUT_MS,
1515
REQUEST_TIME_MS
1616
} from "./configuration.js";
17+
// Custom metrics for particular load test.
18+
// Expects an object with onMessage and onClose event handler properties.
19+
import metricsReporter from './scannerLoadTestMetrics.js'
1720

1821
// Change these options to increase the user goal or time to run the test.
1922
export const options = getTestOptions(
@@ -35,10 +38,6 @@ const sessionsOver10Seconds = new Counter("session_over_10_seconds");
3538
const sessionsOver15Seconds = new Counter("session_over_15_seconds");
3639
const sessionsOver20Seconds = new Counter("session_over_20_seconds");
3740
const retryCounters = [new Counter("sessions_with_0_retries"), new Counter("sessions_with_1_retry"), new Counter("sessions_with_2_retries")];
38-
const responseTime = new Trend("response_time", true);
39-
const notSent = new Counter("not_sent");
40-
const noResponse = new Counter("no_response");
41-
4241

4342
function isResultSuccess(result) {
4443
return result && result.status === 200;
@@ -119,19 +118,7 @@ function onSocketConnect(socket, requestStartTime, websocketStartTime, sessionId
119118
console.log(`EXCEPTION for session id ${sessionId} ` + parsedData.value);
120119
exceptionCounter.add(1);
121120
}
122-
123-
if (parsedData.type === "SYSTEM_OUT" && parsedData.value === "What's your name?") {
124-
const message = JSON.stringify({
125-
messageType: "SYSTEM_IN",
126-
message: "Ben"
127-
});
128-
socket.send(message);
129-
sentAt = Date.now();
130-
}
131-
132-
if (parsedData.type === "SYSTEM_OUT" && parsedData.value === "Hello Ben!") {
133-
respondedAt = Date.now();
134-
}
121+
metricsReporter.onMessage(socket, parsedData);
135122
});
136123

137124
socket.on("close", () => {
@@ -150,14 +137,7 @@ function onSocketConnect(socket, requestStartTime, websocketStartTime, sessionId
150137
console.log(`OVER 10 SECONDS Session id ${sessionId} had a request time of ${totalTime} ms.`);
151138
sessionsOver10Seconds.add(1);
152139
}
153-
154-
if (!sentAt) {
155-
notSent.add(1);
156-
} else if (!respondedAt) {
157-
noResponse.add(1);
158-
} else {
159-
responseTime.add(respondedAt - sentAt);
160-
}
140+
metricsReporter.onClose();
161141
} else {
162142
console.log(`TIMEOUT detected for session id ${sessionId}`);
163143
timeoutCounter.add(1);
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { Counter, Trend } from "k6/metrics";
2+
3+
const metrics = {
4+
responseTime: new Trend("response_time", true),
5+
notSent: new Counter("not_sent"),
6+
noResponse: new Counter("no_response")
7+
};
8+
const metricsData = {
9+
sentAt: null,
10+
respondedAt: null
11+
};
12+
13+
function onMessage(socket, parsedData) {
14+
if (parsedData.type === "SYSTEM_OUT" && parsedData.value === "What's your name?") {
15+
const message = JSON.stringify({
16+
messageType: "SYSTEM_IN",
17+
message: "Ben"
18+
});
19+
socket.send(message);
20+
metricData.sentAt = Date.now();
21+
}
22+
23+
if (parsedData.type === "SYSTEM_OUT" && parsedData.value === "Hello Ben!") {
24+
metricData.respondedAt = Date.now();
25+
}
26+
}
27+
28+
function onClose() {
29+
const {responseTime, notSent, noResponse} = metrics;
30+
const {sentAt, respondedAt} = metricData;
31+
32+
if (!metricData.sentAt) {
33+
metrics.notSent.add(1);
34+
} else if (!metricData.respondedAt) {
35+
metrics.noResponse.add(1);
36+
} else {
37+
metrics.responseTime.add(respondedAt - sentAt);
38+
}
39+
}
40+
41+
const metricsReporter = {onMessage, onClose};
42+
export default metricsReporter;

0 commit comments

Comments
 (0)