From c60a4e650fd6e6b33d712ff93236f8ecd795f89d Mon Sep 17 00:00:00 2001 From: enisdenjo Date: Wed, 8 May 2024 16:05:38 +0200 Subject: [PATCH] simpler duration and parellelism --- e2e/sqlite-chinook/sqlite-chinook.loadtest.ts | 2 -- e2e/utils/tbench.ts | 23 ++++++++++++++----- e2e/utils/tenv.ts | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/e2e/sqlite-chinook/sqlite-chinook.loadtest.ts b/e2e/sqlite-chinook/sqlite-chinook.loadtest.ts index fd78b909ffba6..bf7e624f8398e 100644 --- a/e2e/sqlite-chinook/sqlite-chinook.loadtest.ts +++ b/e2e/sqlite-chinook/sqlite-chinook.loadtest.ts @@ -23,8 +23,6 @@ it(`should perform within threshold ${JSON.stringify(threshold)}`, async () => { const { maxCpu, maxMem, slowestRequest } = await tbench.serveSustain({ serve: await serve({ fusiongraph: output }), - duration: 10_000, - parallelRequestsPerVU: 10, params: { query: /* GraphQL */ ` query Albums { diff --git a/e2e/utils/tbench.ts b/e2e/utils/tbench.ts index 53c2c8e10b051..81b5d7c46a7bd 100644 --- a/e2e/utils/tbench.ts +++ b/e2e/utils/tbench.ts @@ -1,6 +1,6 @@ import { setTimeout } from 'timers/promises'; import { spawn, Thread, Worker } from 'threads'; -import { Serve } from './tenv'; +import { timeout as jestTimeout, Serve } from './tenv'; import type { benchGraphQLServer } from './workers/benchGraphQLServer'; const leftovers = new Set(); @@ -15,10 +15,16 @@ afterAll(async () => { export interface ServeSustainOptions { /** The serve process to benchmark. */ serve: Serve; - /** How long should the benchmark run for. */ - duration: number; - /** How many parallel requests should each VU perform. */ - parallelRequestsPerVU: number; + /** + * How long should the benchmark run for. + * @default jest.timeout - 1second + */ + duration?: number; + /** + * How many parallel requests should each VU perform. + * @default 10 + */ + parallelRequestsPerVU?: number; /** GraphQL parameters to use. */ params: { query: string; @@ -54,7 +60,12 @@ export async function createTbench(vus: number): Promise { ); workers.forEach(worker => leftovers.add(worker)); return { - async serveSustain({ serve, duration, parallelRequestsPerVU, params }) { + async serveSustain({ + serve, + duration = jestTimeout - 1_000, + parallelRequestsPerVU = 10, + params, + }) { let maxCpu = 0; let maxMem = 0; const signal = AbortSignal.timeout(duration); diff --git a/e2e/utils/tenv.ts b/e2e/utils/tenv.ts index f1cbeb8cfb6bd..70f4b162fc9cc 100644 --- a/e2e/utils/tenv.ts +++ b/e2e/utils/tenv.ts @@ -9,7 +9,7 @@ import Dockerode from 'dockerode'; import { ExecutionResult } from 'graphql'; import { createArg, createPortArg, createServicePortArg } from './args'; -const retries = 120, +export const retries = 120, interval = 500, timeout = retries * interval; // 1min jest.setTimeout(timeout);