mirror of
https://github.com/n8n-io/n8n.git
synced 2026-06-02 01:37:07 +02:00
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { test } from '../../../../fixtures/base';
|
||
import { benchConfig } from '../../../../playwright-projects';
|
||
import { setupWebhook } from '../../../../utils/benchmark/webhook-driver';
|
||
import { runWebhookThroughputTest } from '../harness/webhook-throughput-harness';
|
||
|
||
// Queue-mode baseline at 1 main + 1 worker. Pair with `webhook-main-scaling`
|
||
// (2 mains + 2 workers) to read the multi-main scaling factor isolated from
|
||
// the direct→queue architecture change. Without this baseline, comparing
|
||
// `webhook-single-instance` (1m, 0w direct) to `webhook-main-scaling` would
|
||
// conflate "adding mains" with "switching to queue mode".
|
||
//
|
||
// Parameters intentionally match `webhook-main-scaling.spec.ts` (200 × 180s)
|
||
// so the comparison is apples-to-apples.
|
||
|
||
const MAINS = 1;
|
||
const WORKERS = 1;
|
||
const CONNECTIONS = 200;
|
||
const DURATION_SECONDS = 180;
|
||
|
||
test.use({ capability: benchConfig('webhook-queue-baseline', { mains: MAINS, workers: WORKERS }) });
|
||
|
||
test.describe(
|
||
'What is the webhook ingestion ceiling in queue mode at 1 main + 1 worker?',
|
||
{
|
||
tag: '@bench:webhook',
|
||
annotation: [
|
||
{ type: 'owner', description: 'Catalysts' },
|
||
{ type: 'question', description: 'webhook-queue-baseline' },
|
||
],
|
||
},
|
||
() => {
|
||
test(`Async webhook + 1 noop, 1KB payload, ${CONNECTIONS} connections × ${DURATION_SECONDS}s (${MAINS} main + ${WORKERS} worker)`, async ({
|
||
api,
|
||
services,
|
||
backendUrl,
|
||
}, testInfo) => {
|
||
const handle = setupWebhook({
|
||
scenario: {
|
||
nodeCount: 1,
|
||
payloadSize: '1KB',
|
||
nodeOutputSize: 'noop',
|
||
responseMode: 'onReceived',
|
||
},
|
||
});
|
||
await runWebhookThroughputTest({
|
||
handle,
|
||
api,
|
||
services,
|
||
testInfo,
|
||
baseUrl: backendUrl,
|
||
connections: CONNECTIONS,
|
||
durationSeconds: DURATION_SECONDS,
|
||
timeoutMs: (DURATION_SECONDS + 60) * 1000,
|
||
});
|
||
});
|
||
},
|
||
);
|