@n8n/n8n-benchmark
Version:
Cli for running benchmark tests for n8n
41 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScenarioRunner = void 0;
const scenarioDataImporter_1 = require("../testExecution/scenarioDataImporter");
const authenticatedN8nApiClient_1 = require("../n8nApiClient/authenticatedN8nApiClient");
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 authenticatedN8nApiClient_1.AuthenticatedN8nApiClient.createUsingUsernameAndPassword(this.n8nClient, this.ownerConfig);
const testDataImporter = new scenarioDataImporter_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);
await testDataImporter.importTestScenarioData(testData.workflows);
console.log('Executing scenario script');
await this.k6Executor.executeTestScenario(scenario, {
scenarioRunName,
});
}
formTestScenarioRunName(scenario) {
return `${this.scenarioPrefix}-${scenario.name}`;
}
}
exports.ScenarioRunner = ScenarioRunner;
//# sourceMappingURL=scenarioRunner.js.map