UNPKG

artillery

Version:

Cloud-scale load testing. https://www.artillery.io

77 lines (76 loc) 2.84 kB
import { EventEmitter } from 'node:events'; import chalk from 'chalk'; import { engine_util } from "../commons/index.js"; import { SSMS } from "./ssms.js"; // NOTE: This may be called more than once, and so should be non-destructive async function updateGlobalObject(opts = {}) { // Bootstrap: properties are filled in below and by later callers. global.artillery = global.artillery || {}; global.artillery.runtimeOptions = global.artillery.runtimeOptions || {}; global.artillery.runtimeOptions.extendedHTTPMetrics = typeof process.env.ARTILLERY_EXTENDED_HTTP_METRICS !== 'undefined'; global.artillery.metrics = global.artillery.metrics || {}; global.artillery.metrics.event = async (msg, opts) => { if (opts.level === 'error') { console.log(chalk.red(msg)); } else { console.log(msg); } }; global.artillery.util = global.artillery.util || {}; global.artillery.util.template = engine_util.template; global.artillery.plugins = global.artillery.plugins || []; global.artillery.extensionEvents = global.artillery.extensionEvents || []; global.artillery.ext = global.artillery.ext || async function (event) { // TODO: Validate events object this.extensionEvents.push(event); }; if (!Object.hasOwn(global.artillery, 'globalEvents')) { Object.defineProperty(global.artillery, 'globalEvents', { value: new EventEmitter() }); } global.artillery.__SSMS = SSMS; if (!Object.hasOwn(global.artillery, 'suggestedExitCode')) { Object.defineProperty(global.artillery, 'suggestedExitCode', { get() { return global.artillery._exitCode; }, set(code) { global.artillery._exitCode = code; if (typeof global.artillery._workerThreadSend === 'function') { global.artillery._workerThreadSend({ event: 'setSuggestedExitCode', code: code }); } } }); } global.artillery.logger = global.artillery.logger || ((opts) => ({ log: (...args) => { global.artillery.globalEvents.emit('log', opts, ...args); } })); global.artillery.log = global.artillery.log || ((...args) => { global.artillery.globalEvents.emit('log', {}, ...args); }); if (opts.version) { global.artillery.version = opts.version; } if (opts.telemetry) { global.artillery.telemetry = opts.telemetry; } } async function main() { await updateGlobalObject(); } main(); export { updateGlobalObject };