From 1f30ae72674f1f5ebf58a1ceb8467dd3c7d36d84 Mon Sep 17 00:00:00 2001 From: ausias-armesto Date: Mon, 5 Aug 2024 12:18:23 +0200 Subject: [PATCH] Adding the relayers scenario --- k6/assets/nodes-dufour.json | 15 +++++--- k6/assets/nodes-local.json | 60 ------------------------------ k6/assets/nodes-pluto.json | 60 ------------------------------ k6/assets/nodes-relayer.json | 53 ++++++++++++++++++++++++++ k6/assets/nodes-rotsee.json | 15 +++++--- k6/assets/nodes-team-all.json | 32 ++++++++++------ k6/assets/nodes-team.json | 20 ++++++---- k6/package.json | 3 +- k6/src/k6/constant-traffic.test.ts | 23 ++++++++---- 9 files changed, 124 insertions(+), 157 deletions(-) delete mode 100644 k6/assets/nodes-local.json delete mode 100644 k6/assets/nodes-pluto.json create mode 100644 k6/assets/nodes-relayer.json diff --git a/k6/assets/nodes-dufour.json b/k6/assets/nodes-dufour.json index acb1877..352942e 100644 --- a/k6/assets/nodes-dufour.json +++ b/k6/assets/nodes-dufour.json @@ -3,7 +3,8 @@ { "name": "hoprd-core-dufour-1", "url": "https://hoprd-core-dufour-1.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-dufour-2" }, { "name": "hoprd-core-dufour-3" }, @@ -14,7 +15,8 @@ { "name": "hoprd-core-dufour-2", "url": "https://hoprd-core-dufour-2.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-dufour-1" }, { "name": "hoprd-core-dufour-3" }, @@ -25,7 +27,8 @@ { "name": "hoprd-core-dufour-3", "url": "https://hoprd-core-dufour-3.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-dufour-1" }, { "name": "hoprd-core-dufour-2" }, @@ -36,7 +39,8 @@ { "name": "hoprd-core-dufour-4", "url": "https://hoprd-core-dufour-4.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-dufour-1" }, { "name": "hoprd-core-dufour-2" }, @@ -48,7 +52,8 @@ { "name": "hoprd-core-dufour-5", "url": "https://hoprd-core-dufour-5.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-dufour-1" }, { "name": "hoprd-core-dufour-2" }, diff --git a/k6/assets/nodes-local.json b/k6/assets/nodes-local.json deleted file mode 100644 index c683ad2..0000000 --- a/k6/assets/nodes-local.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "nodes": [ - { - "name": "node0", - "url": "http://127.0.0.1:13301/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node1" }, - { "name": "node3" }, - { "name": "node4" } - ] - }, - { - "name": "node1", - "url": "http://127.0.0.1:13302/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node0" }, - { "name": "node2" }, - { "name": "node4" } - ] - }, - { - "name": "node2", - "url": "http://127.0.0.1:13303/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node1" }, - { "name": "node3" }, - { "name": "node4" } - ] - }, - { - "name": "node3", - "url": "http://127.0.0.1:13304/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node0" }, - { "name": "node2" }, - { "name": "node4" } - ] - }, - { - "name": "node4", - "url": "http://127.0.0.1:13305/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node0" }, - { "name": "node1" }, - { "name": "node2" }, - { "name": "node3" } - ] - } - ] -} diff --git a/k6/assets/nodes-pluto.json b/k6/assets/nodes-pluto.json deleted file mode 100644 index e1ab11b..0000000 --- a/k6/assets/nodes-pluto.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "nodes": [ - { - "name": "node0", - "url": "http://pluto:13301/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node1" }, - { "name": "node3" }, - { "name": "node4" } - ] - }, - { - "name": "node1", - "url": "http://pluto:13302/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node0" }, - { "name": "node2" }, - { "name": "node4" } - ] - }, - { - "name": "node2", - "url": "http://pluto:13303/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node1" }, - { "name": "node3" }, - { "name": "node4" } - ] - }, - { - "name": "node3", - "url": "http://pluto:13304/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node0" }, - { "name": "node2" }, - { "name": "node4" } - ] - }, - { - "name": "node4", - "url": "http://pluto:13305/api/v3", - "apiToken": "^^LOCAL-testing-123^^", - "isSender": "true", - "routes": [ - { "name": "node0" }, - { "name": "node1" }, - { "name": "node2" }, - { "name": "node3" } - ] - } - ] -} diff --git a/k6/assets/nodes-relayer.json b/k6/assets/nodes-relayer.json new file mode 100644 index 0000000..4a9e3f5 --- /dev/null +++ b/k6/assets/nodes-relayer.json @@ -0,0 +1,53 @@ +{ + "nodes": [ + { + "name": "hoprd-core-rotsee-1", + "url": "https://hoprd-core-rotsee-1.core-team.staging.hoprnet.link/", + "isSender": true, + "isRelayer": false, + "routes": [ + { "name": "hoprd-core-rotsee-5" } + ] + }, + { + "name": "hoprd-core-rotsee-2", + "url": "https://hoprd-core-rotsee-2.core-team.staging.hoprnet.link/", + "isSender": true, + "isRelayer": false, + "routes": [ + { "name": "hoprd-core-rotsee-5" } + ] + }, + { + "name": "hoprd-core-rotsee-3", + "url": "https://hoprd-core-rotsee-3.core-team.staging.hoprnet.link/", + "isSender": true, + "isRelayer": false, + "routes": [ + { "name": "hoprd-core-rotsee-5" } + ] + }, + { + "name": "hoprd-core-rotsee-4", + "url": "https://hoprd-core-rotsee-4.core-team.staging.hoprnet.link/", + "isSender": true, + "isRelayer": false, + "routes": [ + { "name": "hoprd-core-rotsee-5" } + + ] + }, + { + "name": "hoprd-core-rotsee-5", + "url": "https://hoprd-core-rotsee-5.core-team.staging.hoprnet.link/", + "isSender": false, + "isRelayer": true, + "routes": [ + { "name": "hoprd-core-rotsee-1" }, + { "name": "hoprd-core-rotsee-2" }, + { "name": "hoprd-core-rotsee-3" }, + { "name": "hoprd-core-rotsee-4" } + ] + } + ] +} diff --git a/k6/assets/nodes-rotsee.json b/k6/assets/nodes-rotsee.json index 0ce27f3..ff8cd5d 100644 --- a/k6/assets/nodes-rotsee.json +++ b/k6/assets/nodes-rotsee.json @@ -3,7 +3,8 @@ { "name": "hoprd-core-rotsee-1", "url": "https://hoprd-core-rotsee-1.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-rotsee-2" }, { "name": "hoprd-core-rotsee-3" }, @@ -14,7 +15,8 @@ { "name": "hoprd-core-rotsee-2", "url": "https://hoprd-core-rotsee-2.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-rotsee-1" }, { "name": "hoprd-core-rotsee-3" }, @@ -25,7 +27,8 @@ { "name": "hoprd-core-rotsee-3", "url": "https://hoprd-core-rotsee-3.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-rotsee-1" }, { "name": "hoprd-core-rotsee-2" }, @@ -36,7 +39,8 @@ { "name": "hoprd-core-rotsee-4", "url": "https://hoprd-core-rotsee-4.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-rotsee-1" }, { "name": "hoprd-core-rotsee-2" }, @@ -48,7 +52,8 @@ { "name": "hoprd-core-rotsee-5", "url": "https://hoprd-core-rotsee-5.core-team.staging.hoprnet.link/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-core-rotsee-1" }, { "name": "hoprd-core-rotsee-2" }, diff --git a/k6/assets/nodes-team-all.json b/k6/assets/nodes-team-all.json index 358c91a..4f42c50 100644 --- a/k6/assets/nodes-team-all.json +++ b/k6/assets/nodes-team-all.json @@ -3,7 +3,8 @@ { "name": "hoprd-andrius-dappnode", "url": "http://85.206.96.234:3009/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-vps" }, { "name": "hoprd-ausias" }, @@ -19,7 +20,8 @@ { "name": "hoprd-andrius-vps", "url": "http://173.249.13.193:3009/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode" }, { "name": "hoprd-ausias" }, @@ -35,7 +37,8 @@ { "name": "hoprd-ausias", "url": "http://85.49.63.139:3101/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode" }, { "name": "hoprd-andrius-vps" }, @@ -50,8 +53,9 @@ }, { "name": "hoprd-ronny", - "url": "http://5405b69f7730f684.dyndns.dappnode.io:3011/", - "isSender": "true", + "url": "http://178.254.33.145:3002/", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode"}, { "name": "hoprd-andrius-vps" }, @@ -67,7 +71,8 @@ { "name": "hoprd-tibor", "url": "http://65.109.137.126:3002/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode"}, { "name": "hoprd-andrius-vps" }, @@ -83,7 +88,8 @@ { "name": "hoprd-michal", "url": "http://vlabs.ddns.net:3003/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode"}, { "name": "hoprd-andrius-vps" }, @@ -99,7 +105,8 @@ { "name": "hoprd-jean", "url": "http://91.132.145.250:3101", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode"}, { "name": "hoprd-andrius-vps" }, @@ -115,7 +122,8 @@ { "name": "hoprd-q", "url": "http://45.76.177.147:3101/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode"}, { "name": "hoprd-andrius-vps" }, @@ -131,7 +139,8 @@ { "name": "hoprd-tino", "url": "http://8.8.8.8:3001/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode"}, { "name": "hoprd-andrius-vps" }, @@ -147,7 +156,8 @@ { "name": "hoprd-lukas", "url": "http://8.8.8.8:3001/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-dappnode"}, { "name": "hoprd-andrius-vps" }, diff --git a/k6/assets/nodes-team.json b/k6/assets/nodes-team.json index 29cc265..9bce2e3 100644 --- a/k6/assets/nodes-team.json +++ b/k6/assets/nodes-team.json @@ -3,7 +3,8 @@ { "name": "hoprd-andrius-vps", "url": "http://173.249.13.193:3009/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-ausias" }, { "name": "hoprd-michal" }, @@ -15,7 +16,8 @@ { "name": "hoprd-ausias", "url": "http://85.49.63.139:3101/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-vps" }, { "name": "hoprd-michal" }, @@ -26,8 +28,9 @@ }, { "name": "hoprd-ronny", - "url": "http://5405b69f7730f684.dyndns.dappnode.io:3011/", - "isSender": "true", + "url": "http://178.254.33.145:3002/", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-vps" }, { "name": "hoprd-ausias" }, @@ -39,7 +42,8 @@ { "name": "hoprd-tibor", "url": "http://65.109.137.126:3002/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-vps" }, { "name": "hoprd-ausias" }, @@ -51,7 +55,8 @@ { "name": "hoprd-michal", "url": "http://vlabs.ddns.net:3003/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-vps" }, { "name": "hoprd-ausias" }, @@ -63,7 +68,8 @@ { "name": "hoprd-q", "url": "http://45.76.177.147:3101/", - "isSender": "true", + "isSender": true, + "isRelayer": true, "routes": [ { "name": "hoprd-andrius-vps" }, { "name": "hoprd-ausias" }, diff --git a/k6/package.json b/k6/package.json index dbcc370..cc73aa6 100644 --- a/k6/package.json +++ b/k6/package.json @@ -38,11 +38,12 @@ "docker:push": "docker push europe-west3-docker.pkg.dev/hoprassociation/docker-images/hoprd-k6:latest", "test": "npm run test:local", "test:local": "npm run webpack && K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true K6_OUT=xk6-prometheus-rw K6_PROMETHEUS_RW_SERVER_URL=https://prometheus.staging.hoprnet.link/api/v1/write ./k6 run ./dist/constant-traffic.test.js", - "test:pluto": "docker-compose down; docker-compose up 1&> /dev/null &", "test:rotsee": "npm run webpack && ENVIRONMENT_NAME=rotsee K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true K6_OUT=xk6-prometheus-rw K6_PROMETHEUS_RW_SERVER_URL=https://prometheus.staging.hoprnet.link/api/v1/write ./k6 run --summary-export=test-execution-local.json --tag testid=local ./dist/constant-traffic.test.js", + "test:relayer": "npm run webpack && ENVIRONMENT_NAME=relayer K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true K6_OUT=xk6-prometheus-rw K6_PROMETHEUS_RW_SERVER_URL=https://prometheus.staging.hoprnet.link/api/v1/write ./k6 run --summary-export=test-execution-local.json --tag testid=local ./dist/constant-traffic.test.js", "test:team": "npm run webpack && ENVIRONMENT_NAME=team K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true K6_OUT=xk6-prometheus-rw K6_PROMETHEUS_RW_SERVER_URL=https://prometheus.staging.hoprnet.link/api/v1/write ./k6 run --summary-export=test-execution-local.json --tag testid=local ./dist/constant-traffic.test.js", "test:dufour": "npm run webpack && ENVIRONMENT_NAME=dufour K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true K6_OUT=xk6-prometheus-rw K6_PROMETHEUS_RW_SERVER_URL=https://prometheus.staging.hoprnet.link/api/v1/write ./k6 run --summary-export=test-execution-local.json --tag testid=local ./dist/constant-traffic.test.js", "test:rotsee:setup": "npm run build && ENVIRONMENT_NAME=rotsee node ./dist/setup-environment.js", + "test:relayer:setup": "npm run build && ENVIRONMENT_NAME=relayer node ./dist/setup-environment.js", "test:team:setup": "npm run build && ENVIRONMENT_NAME=team node ./dist/setup-environment.js", "test:dufour:setup": "npm run build && ENVIRONMENT_NAME=dufour node ./dist/setup-environment.js", "parse:results": "node parse-results.js test-execution-20240522-113543.json rotsee sanity-check 1 test-2.1.0 30" diff --git a/k6/src/k6/constant-traffic.test.ts b/k6/src/k6/constant-traffic.test.ts index e7db5ed..595f686 100644 --- a/k6/src/k6/constant-traffic.test.ts +++ b/k6/src/k6/constant-traffic.test.ts @@ -68,20 +68,25 @@ let messageLatency = new Trend('hopr_message_latency'); // The Setup Function is run once before the Load Test https://docs.k6.io/docs/test-life-cycle export function setup() { const senders: HoprdNode[] = [] - const nodes: HoprdNode[] = [] + const relayers: HoprdNode[] = [] nodesData.nodes.forEach((node: any) => { let hoprdNode: HoprdNode = new HoprdNode(node) if (hoprdNode.isSender) { + console.log(`Setting up ${hoprdNode.name} as sender`) senders.push(hoprdNode) } - nodes.push(hoprdNode) + if (hoprdNode.isRelayer) { + console.log(`Setting up ${hoprdNode.name} as relayer`) + relayers.push(hoprdNode) + } + }) - return { senders, nodes } + return { senders, relayers } } // This function is executed for each iteration // default function imports the return data from the setup function https://docs.k6.io/docs/test-life-cycle -export function receiveMessages(dataPool: { senders: HoprdNode[], nodes: HoprdNode[] }) { +export function receiveMessages(dataPool: { senders: HoprdNode[], relayers: HoprdNode[] }) { const nodeIndex = Math.ceil((execution.vu.idInInstance ) % amountOfSenders) //console.log(`[idInstance ${execution.vu.idInInstance}] [nodeIndex: ${nodeIndex}] < ${amountOfSenders}`) if (execution.vu.idInInstance <= amountOfSenders) { @@ -125,7 +130,7 @@ export function receiveMessages(dataPool: { senders: HoprdNode[], nodes: HoprdNo // This function is executed for each iteration // default function imports the return data from the setup function https://docs.k6.io/docs/test-life-cycle -export function multipleHopMessage(dataPool: { senders: HoprdNode[], nodes: HoprdNode[] }) { +export function multipleHopMessage(dataPool: { senders: HoprdNode[], relayers: HoprdNode[] }) { const nodeIndex = Math.ceil(execution.vu.idInInstance % (amountOfSenders * scenariosLength)) // console.log(`idInstance: ${execution.vu.idInInstance} having index : ${nodeIndex} from scenario[${execution.scenario.name}]`) const senderHoprdNode = dataPool.senders[nodeIndex] @@ -136,8 +141,8 @@ export function multipleHopMessage(dataPool: { senders: HoprdNode[], nodes: Hopr const hops = Number(__ENV.HOPS) || 1 let nodesPath: HoprdNode[] = []; for (let i = 0; i < hops; i++) { - let recipientLength = Math.floor(Math.random() * (dataPool.nodes.length - 1)) - let recipientHoprdNode = dataPool.nodes + let recipientLength = Math.floor(Math.random() * (dataPool.relayers.length - 1)) + let recipientHoprdNode = dataPool.relayers .filter((node: HoprdNode) => node.name != senderHoprdNode.name) [recipientLength] if (nodesPath.some(includedNode => includedNode.name === recipientHoprdNode.name)) { @@ -179,7 +184,8 @@ export class HoprdNode { public name: string public url: string - public isSender: string + public isSender: boolean + public isRelayer: boolean public peerAddress: string public httpParams: RefinedParams public peerId: string @@ -198,6 +204,7 @@ export class HoprdNode { } }, this.isSender = data.isSender, + this.isRelayer = data.isRelayer, this.getAddress(data) }