From 7b28973fe5fc4491197dab50c16354f8c846514e Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Tue, 12 Oct 2021 21:52:35 +0200 Subject: :zap: benchmark tests --- bundle/scripts/benchmark/connections.js | 58 +++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 bundle/scripts/benchmark/connections.js (limited to 'bundle/scripts/benchmark/connections.js') diff --git a/bundle/scripts/benchmark/connections.js b/bundle/scripts/benchmark/connections.js new file mode 100644 index 00000000..efc1bcb6 --- /dev/null +++ b/bundle/scripts/benchmark/connections.js @@ -0,0 +1,58 @@ +const cluster = require("cluster"); +const WebSocket = require("ws"); +const endpoint = process.env.GATEWAY || "ws://localhost:3001"; +const connections = Number(process.env.CONNECTIONS) || 50; +const threads = Number(process.env.THREADS) || require("os").cpus().length || 1; +const token = process.env.TOKEN; + +if (!token) { + console.error("TOKEN env var missing"); + process.exit(); +} + +if (cluster.isMaster) { + for (let i = 0; i < threads; i++) { + cluster.fork(); + } + + cluster.on("exit", (worker, code, signal) => { + console.log(`worker ${worker.process.pid} died`); + }); +} else { + for (let i = 0; i < connections; i++) { + connect(); + } +} + +function connect() { + const client = new WebSocket(endpoint); + client.on("message", (data) => { + data = JSON.parse(data); + + switch (data.op) { + case 10: + client.interval = setInterval(() => { + client.send(JSON.stringify({ op: 1 })); + }, data.d.heartbeat_interval); + + client.send( + JSON.stringify({ + op: 2, + d: { + token, + properties: {}, + }, + }) + ); + + break; + } + }); + client.once("close", (code, reason) => { + clearInterval(client.interval); + connect(); + }); + client.on("error", (err) => { + // console.log(err); + }); +} -- cgit 1.5.1 From 6f0cf477c5a0753c41bfd2b774329fd01d47d6a0 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Sun, 17 Oct 2021 00:40:26 +0200 Subject: :zap: added benchmark --- bundle/scripts/benchmark/connections.js | 1 + bundle/scripts/benchmark/messages.js | 1 - bundle/scripts/benchmark/users.js | 25 +++++++++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) delete mode 100644 bundle/scripts/benchmark/messages.js create mode 100644 bundle/scripts/benchmark/users.js (limited to 'bundle/scripts/benchmark/connections.js') diff --git a/bundle/scripts/benchmark/connections.js b/bundle/scripts/benchmark/connections.js index efc1bcb6..2a4125b4 100644 --- a/bundle/scripts/benchmark/connections.js +++ b/bundle/scripts/benchmark/connections.js @@ -1,3 +1,4 @@ +require("dotenv").config(); const cluster = require("cluster"); const WebSocket = require("ws"); const endpoint = process.env.GATEWAY || "ws://localhost:3001"; diff --git a/bundle/scripts/benchmark/messages.js b/bundle/scripts/benchmark/messages.js deleted file mode 100644 index 70b786d1..00000000 --- a/bundle/scripts/benchmark/messages.js +++ /dev/null @@ -1 +0,0 @@ -// TODO diff --git a/bundle/scripts/benchmark/users.js b/bundle/scripts/benchmark/users.js new file mode 100644 index 00000000..bce67bf4 --- /dev/null +++ b/bundle/scripts/benchmark/users.js @@ -0,0 +1,25 @@ +require("dotenv").config(); +const fetch = require("node-fetch"); +const count = Number(process.env.COUNT) || 50; +const endpoint = process.env.API || "http://localhost:3001"; + +async function main() { + for (let i = 0; i < count; i++) { + fetch(`${endpoint}/api/auth/register`, { + method: "POST", + body: JSON.stringify({ + fingerprint: `${i}.wR8vi8lGlFBJerErO9LG5NViJFw`, + username: `test${i}`, + invite: null, + consent: true, + date_of_birth: "2000-01-01", + gift_code_sku_id: null, + captcha_key: null, + }), + headers: { "content-type": "application/json" }, + }); + console.log(i); + } +} + +main(); -- cgit 1.5.1