UNPKG

@n8n/n8n-benchmark

Version:

Cli for running benchmark tests for n8n

46 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScenarioRunner = void 0; const zx_1 = require("zx"); const authenticated_n8n_api_client_1 = require("../n8n-api-client/authenticated-n8n-api-client"); const scenario_data_importer_1 = require("../test-execution/scenario-data-importer"); class ScenarioRunner { constructor(n8nClient, dataLoader, k6Executor, ownerConfig, scenarioPrefix) { this.n8nClient = n8nClient; this.dataLoader = dataLoader; this.k6Executor = k6Executor; this.ownerConfig = ownerConfig; this.scenarioPrefix = scenarioPrefix; } async runManyScenarios(scenarios) { console.log(`Waiting for n8n ${this.n8nClient.apiBaseUrl} to become online`); await this.n8nClient.waitForInstanceToBecomeOnline(); console.log('Setting up owner'); await this.n8nClient.setupOwnerIfNeeded(this.ownerConfig); const authenticatedN8nClient = await authenticated_n8n_api_client_1.AuthenticatedN8nApiClient.createUsingUsernameAndPassword(this.n8nClient, this.ownerConfig); const testDataImporter = new scenario_data_importer_1.ScenarioDataImporter(authenticatedN8nClient); for (const scenario of scenarios) { await this.runSingleTestScenario(testDataImporter, scenario); } } async runSingleTestScenario(testDataImporter, scenario) { const scenarioRunName = this.formTestScenarioRunName(scenario); console.log('Running scenario:', scenarioRunName); console.log('Loading and importing data'); const testData = await this.dataLoader.loadDataForScenario(scenario); const { dataTableId } = await testDataImporter.importTestScenarioData(testData); await (0, zx_1.sleep)(1000); console.log('Executing scenario script'); await this.k6Executor.executeTestScenario({ ...scenario, dataTableId, }, { scenarioRunName, }); } formTestScenarioRunName(scenario) { return `${this.scenarioPrefix}-${scenario.name}`; } } exports.ScenarioRunner = ScenarioRunner; //# sourceMappingURL=scenario-runner.js.map