Created
March 15, 2024 17:25
-
-
Save pyropy/0f3f2f41055f5c778ca56986f9cfa2dc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { check } from "k6"; | |
| import ws from "k6/ws"; | |
| export const options = { | |
| // Key configurations for avg load test in this section | |
| stages: [ | |
| { duration: "30s", target: 200 }, // traffic ramp-up from 1 to 100 users over 30 seconds. | |
| { duration: "1m", target: 200 }, // keep traffic at 100 users over 1 minute. | |
| { duration: "30s", target: 0 }, // traffic ramp-up from 1 to 100 users over 30 seconds. | |
| ], | |
| }; | |
| export default function () { | |
| const url = "ws://localhost:8080/subscriptions"; | |
| const token = null; // replace with your auth token | |
| const operation = ` | |
| subscription { | |
| EVM(network: eth, mempool: true) { | |
| Transactions { | |
| count | |
| } | |
| } | |
| }`; | |
| const headers = { | |
| "Sec-WebSocket-Protocol": "graphql-ws", | |
| }; | |
| if (token != null) | |
| Object.assign(headers, { Authorization: `Bearer ${token}` }); | |
| const res = ws.connect( | |
| url, | |
| { | |
| headers, | |
| }, | |
| (socket) => { | |
| socket.on("message", (msg) => { | |
| const message = JSON.parse(msg); | |
| if (message.type == "connection_ack") | |
| console.log("Connection Established with WebSocket"); | |
| if (message.type == "data") console.log(`Message Received: ${message}`); | |
| }); | |
| socket.on("error", (e) => { | |
| console.error(e); | |
| }); | |
| socket.on("open", () => { | |
| socket.send( | |
| JSON.stringify({ | |
| type: "connection_init", | |
| payload: {}, | |
| }) | |
| ); | |
| socket.send( | |
| JSON.stringify({ | |
| type: "start", | |
| payload: { | |
| query: operation, | |
| variables: {}, | |
| extensions: {}, | |
| operationName: null, | |
| }, | |
| }) | |
| ); | |
| }); | |
| } | |
| ); | |
| check(res, { "Connected successfully": (r) => r && r.status === 101 }); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment