Skip to content

Commit 76795da

Browse files
committed
Scanner load test
1 parent 1680d78 commit 76795da

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

load-test/scripts/loadTest.js

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import ws from "k6/ws";
22
import http from "k6/http";
33
import { check, sleep } from "k6";
44
import { Counter, Trend } from "k6/metrics";
5-
import { helloWorld } from "./sources.js";
5+
import { scanner } from "./sources.js";
66
import { getRandomId, generateToken } from "./tokenHelpers.js";
77
import {
88
MiniAppType,
@@ -17,12 +17,12 @@ import {
1717

1818
// Change these options to increase the user goal or time to run the test.
1919
export const options = getTestOptions(
20-
/* User goal */ 1000,
20+
/* User goal */ 30000,
2121
/* High load time minutes */ 4
2222
);
2323

2424
// Change this to test different code
25-
const SOURCE_TO_TEST = helloWorld;
25+
const SOURCE_TO_TEST = scanner;
2626
// Set this to true to space out requests every REQUEST_TIME_MS milliseconds. Set to
2727
// false to send as many requests as possible.
2828
const SHOULD_SLEEP = false;
@@ -35,6 +35,9 @@ const sessionsOver10Seconds = new Counter("session_over_10_seconds");
3535
const sessionsOver15Seconds = new Counter("session_over_15_seconds");
3636
const sessionsOver20Seconds = new Counter("session_over_20_seconds");
3737
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");
3841

3942

4043
function isResultSuccess(result) {
@@ -83,6 +86,7 @@ function connectToWebsocketWithRetry(authToken, sessionId, requestStartTime) {
8386

8487
function connectToWebsocket(authToken, sessionId, requestStartTime) {
8588
let res = null;
89+
let responseTime = null;
8690
try {
8791
res = ws.connect(WEBSOCKET_URL + authToken, WEBSOCKET_PARAMS, (socket) =>
8892
onSocketConnect(socket, requestStartTime, Date.now(), sessionId)
@@ -93,7 +97,15 @@ function connectToWebsocket(authToken, sessionId, requestStartTime) {
9397
return res;
9498
}
9599

100+
101+
// pass in onMessage
102+
// need to keep track, per socket, of:
103+
// {sendAt: date, respondedAt: date}
104+
// in a way that onClose can access
105+
// also contain k6 metrics?
96106
function onSocketConnect(socket, requestStartTime, websocketStartTime, sessionId) {
107+
let sentAt, respondedAt;
108+
97109
socket.on("open", () => {
98110
socket.setTimeout(() => {
99111
console.log(`Triggering TIMEOUT for session id ${sessionId}, request has gone longer than ${TIMEOUT_MS} ms.`);
@@ -107,6 +119,19 @@ function onSocketConnect(socket, requestStartTime, websocketStartTime, sessionId
107119
console.log(`EXCEPTION for session id ${sessionId} ` + parsedData.value);
108120
exceptionCounter.add(1);
109121
}
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+
}
110135
});
111136

112137
socket.on("close", () => {
@@ -125,6 +150,14 @@ function onSocketConnect(socket, requestStartTime, websocketStartTime, sessionId
125150
console.log(`OVER 10 SECONDS Session id ${sessionId} had a request time of ${totalTime} ms.`);
126151
sessionsOver10Seconds.add(1);
127152
}
153+
154+
if (!sentAt) {
155+
notSent.add(1);
156+
} else if (!respondedAt) {
157+
noResponse.add(1);
158+
} else {
159+
responseTime.add(respondedAt - sentAt);
160+
}
128161
} else {
129162
console.log(`TIMEOUT detected for session id ${sessionId}`);
130163
timeoutCounter.add(1);

load-test/scripts/sources.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,10 @@ export const throwsException = JSON.stringify({
1313
},
1414
assetUrls: {},
1515
});
16+
17+
export const scanner = JSON.stringify({
18+
sources: {
19+
"main.json":
20+
'{"source":{"MyScanner.java":{"text":"import java.util.Scanner;\\n\\npublic class MyScanner {\\n public static void main(String[] args) {\\n Scanner myScanner = new Scanner(System.in);\\n System.out.println(\\"What\'s your name?\\");\\n String response = myScanner.nextLine();\\n System.out.println(\\"Hello \\" + response + \\"!\\");\\n }\\n}\\n","isVisible":true}},"animations":{}}'
21+
}
22+
})

0 commit comments

Comments
 (0)