mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-29 06:29:42 -08:00
72 lines
1.9 KiB
JavaScript
Executable file
72 lines
1.9 KiB
JavaScript
Executable file
#!/usr/bin/env zx
|
|
/**
|
|
* Script to run benchmarks on the cloud benchmark environment.
|
|
* This script will:
|
|
* 1. Provision a benchmark environment using Terraform.
|
|
* 2. Run the benchmarks on the VM.
|
|
* 3. Destroy the cloud environment.
|
|
*
|
|
* NOTE: Must be run in the root of the package.
|
|
*/
|
|
// @ts-check
|
|
import { $ } from 'zx';
|
|
import path from 'path';
|
|
import { flagsObjectToCliArgs } from './utils/flags.mjs';
|
|
|
|
/**
|
|
* @typedef {Object} BenchmarkEnv
|
|
* @property {string} vmName
|
|
*/
|
|
|
|
const paths = {
|
|
scriptsDir: path.join(path.resolve('scripts')),
|
|
};
|
|
|
|
/**
|
|
* @typedef {Object} Config
|
|
* @property {boolean} isVerbose
|
|
* @property {string[]} n8nSetupsToUse
|
|
* @property {string} n8nTag
|
|
* @property {string} benchmarkTag
|
|
* @property {string} [runDir]
|
|
* @property {string} [k6ApiToken]
|
|
* @property {string} [resultWebhookUrl]
|
|
* @property {string} [resultWebhookAuthHeader]
|
|
* @property {string} [n8nLicenseCert]
|
|
* @property {string} [vus]
|
|
* @property {string} [duration]
|
|
*
|
|
* @param {Config} config
|
|
*/
|
|
export async function runLocally(config) {
|
|
const runScriptPath = path.join(paths.scriptsDir, 'run-for-n8n-setup.mjs');
|
|
|
|
const cliArgs = flagsObjectToCliArgs({
|
|
n8nDockerTag: config.n8nTag,
|
|
benchmarkDockerTag: config.benchmarkTag,
|
|
runDir: config.runDir,
|
|
vus: config.vus,
|
|
duration: config.duration,
|
|
env: 'local',
|
|
});
|
|
|
|
try {
|
|
for (const n8nSetup of config.n8nSetupsToUse) {
|
|
console.log(`Running benchmarks for n8n setup: ${n8nSetup}`);
|
|
|
|
await $({
|
|
env: {
|
|
...process.env,
|
|
K6_API_TOKEN: config.k6ApiToken,
|
|
BENCHMARK_RESULT_WEBHOOK_URL: config.resultWebhookUrl,
|
|
BENCHMARK_RESULT_WEBHOOK_AUTH_HEADER: config.resultWebhookAuthHeader,
|
|
N8N_LICENSE_CERT: config.n8nLicenseCert,
|
|
},
|
|
})`npx ${runScriptPath} ${cliArgs} ${n8nSetup}`;
|
|
}
|
|
} catch (error) {
|
|
console.error('An error occurred while running the benchmarks:');
|
|
console.error(error);
|
|
}
|
|
}
|