commit 71d008ce0c1278e828acb167a003dd51cd0d188d
parent 097a2b0da30415f0ac0be1e500dc4d2635c42d43
Author: MTRNord <MTRNord@users.noreply.github.com>
Date: Sat, 28 Mar 2026 01:36:52 +0100
ensure we dont spam external servers
Signed-off-by: MTRNord <MTRNord@users.noreply.github.com>
Diffstat:
4 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/apps/talos_cluster/k6-operator/cronjobs.yaml b/apps/talos_cluster/k6-operator/cronjobs.yaml
@@ -3,7 +3,7 @@
# K6_PROMETHEUS_RW_STALE_MARKERS — marks stale series when the test ends
# BASE_URL — connectivity-tester-stage internal cluster address
#
-# SERVER_NAMES is intentionally NOT set; config.js default (matrix.org,maunium.net,mtrnord.blog) is used.
+# SERVER_NAMES is intentionally NOT set; config.js default (mtrnord.blog) is used.
#
# cleanup: "post" on every TestRun tells the operator to delete the TestRun object
# after all pods complete, so stale objects don't accumulate even if the CronJob
diff --git a/apps/talos_cluster/k6-operator/kustomization.yaml b/apps/talos_cluster/k6-operator/kustomization.yaml
@@ -5,7 +5,7 @@ resources:
- repository.yaml
- release.yaml
- rbac.yaml
- #- cronjobs.yaml
+ - cronjobs.yaml
# k6 test scripts — mounted by k6 runner pods in the matrix namespace
configMapGenerator:
- name: k6-scripts
diff --git a/apps/talos_cluster/k6-operator/scripts/config.js b/apps/talos_cluster/k6-operator/scripts/config.js
@@ -3,13 +3,13 @@
*
* Override via environment variables:
* BASE_URL=http://prod:8080 k6 run federation.js
- * SERVER_NAMES=matrix.org,maunium.net k6 run federation.js
+ * SERVER_NAMES=mtrnord.blog k6 run federation.js
*/
-export const BASE_URL = __ENV.BASE_URL || 'http://localhost:8080';
+export const BASE_URL = __ENV.BASE_URL || "http://localhost:8080";
// Comma-separated list of Matrix server names to test against
-export const SERVER_NAMES = (__ENV.SERVER_NAMES || 'matrix.org,maunium.net,mtrnord.blog').split(',');
+export const SERVER_NAMES = (__ENV.SERVER_NAMES || "mtrnord.blog").split(",");
/** Pick a random entry from an array */
export function randomItem(arr) {
@@ -24,6 +24,6 @@ export function randomItem(arr) {
* Adjust per-test as needed.
*/
export const DEFAULT_THRESHOLDS = {
- http_req_failed: ['rate<0.05'], // fewer than 5% errors
- http_req_duration: ['p(95)<10000'], // 95th percentile under 10s
+ http_req_failed: ["rate<0.05"], // fewer than 5% errors
+ http_req_duration: ["p(95)<10000"], // 95th percentile under 10s
};
diff --git a/apps/talos_cluster/k6-operator/scripts/federation.js b/apps/talos_cluster/k6-operator/scripts/federation.js
@@ -7,35 +7,40 @@
*
* Run:
* k6 run k6/federation.js
- * BASE_URL=http://prod:8080 SERVER_NAMES=matrix.org,maunium.net k6 run k6/federation.js
+ * BASE_URL=http://prod:8080 SERVER_NAMES=mtrnord.blog k6 run k6/federation.js
*
* Tune VU counts and duration via env vars:
* REPORT_VUS=3 OK_VUS=10 DURATION=120s k6 run k6/federation.js
*/
-import http from 'k6/http';
-import { check, sleep } from 'k6';
-import { BASE_URL, SERVER_NAMES, DEFAULT_THRESHOLDS, randomItem } from './config.js';
+import http from "k6/http";
+import { check, sleep } from "k6";
+import {
+ BASE_URL,
+ SERVER_NAMES,
+ DEFAULT_THRESHOLDS,
+ randomItem,
+} from "./config.js";
-const REPORT_VUS = parseInt(__ENV.REPORT_VUS || '3', 10);
-const OK_VUS = parseInt(__ENV.OK_VUS || '5', 10);
-const DURATION = __ENV.DURATION || '60s';
+const REPORT_VUS = parseInt(__ENV.REPORT_VUS || "3", 10);
+const OK_VUS = parseInt(__ENV.OK_VUS || "5", 10);
+const DURATION = __ENV.DURATION || "60s";
export const options = {
scenarios: {
// Full federation report — expensive (does DNS + TLS + HTTP to external servers)
federation_report: {
- executor: 'constant-vus',
+ executor: "constant-vus",
vus: REPORT_VUS,
duration: DURATION,
- exec: 'fullReport',
+ exec: "fullReport",
},
// Lightweight status check — much cheaper
federation_ok: {
- executor: 'constant-vus',
+ executor: "constant-vus",
vus: OK_VUS,
duration: DURATION,
- exec: 'federationOk',
+ exec: "federationOk",
},
},
thresholds: DEFAULT_THRESHOLDS,
@@ -45,13 +50,13 @@ export function fullReport() {
const server = randomItem(SERVER_NAMES);
const res = http.get(
`${BASE_URL}/api/federation/report?server_name=${encodeURIComponent(server)}&stats_opt_in=false`,
- { timeout: '30s' },
+ { timeout: "30s" },
);
check(res, {
- 'report: status 200': (r) => r.status === 200,
- 'report: has FederationOK': (r) => {
+ "report: status 200": (r) => r.status === 200,
+ "report: has FederationOK": (r) => {
try {
- return typeof JSON.parse(r.body).FederationOK === 'boolean';
+ return typeof JSON.parse(r.body).FederationOK === "boolean";
} catch {
return false;
}
@@ -65,12 +70,12 @@ export function federationOk() {
const server = randomItem(SERVER_NAMES);
const res = http.get(
`${BASE_URL}/api/federation/federation-ok?server_name=${encodeURIComponent(server)}`,
- { timeout: '15s' },
+ { timeout: "15s" },
);
check(res, {
- 'federation-ok: status 200': (r) => r.status === 200,
- 'federation-ok: GOOD or BAD': (r) =>
- r.body.trim() === 'GOOD' || r.body.trim() === 'BAD',
+ "federation-ok: status 200": (r) => r.status === 200,
+ "federation-ok: GOOD or BAD": (r) =>
+ r.body.trim() === "GOOD" || r.body.trim() === "BAD",
});
sleep(0.5);
}