@@ -2,7 +2,7 @@ import ws from "k6/ws";
22import http from "k6/http" ;
33import { check , sleep } from "k6" ;
44import { Counter , Trend } from "k6/metrics" ;
5- import { helloWorld } from "./sources.js" ;
5+ import { scanner } from "./sources.js" ;
66import { getRandomId , generateToken } from "./tokenHelpers.js" ;
77import {
88 MiniAppType ,
@@ -17,12 +17,12 @@ import {
1717
1818// Change these options to increase the user goal or time to run the test.
1919export 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.
2828const SHOULD_SLEEP = false ;
@@ -35,6 +35,9 @@ const sessionsOver10Seconds = new Counter("session_over_10_seconds");
3535const sessionsOver15Seconds = new Counter ( "session_over_15_seconds" ) ;
3636const sessionsOver20Seconds = new Counter ( "session_over_20_seconds" ) ;
3737const 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
4043function isResultSuccess ( result ) {
@@ -83,6 +86,7 @@ function connectToWebsocketWithRetry(authToken, sessionId, requestStartTime) {
8386
8487function 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?
96106function 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 ) ;
0 commit comments