k6-perf-reporter 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -8
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +42 -4
- package/dist/config.js.map +1 -1
- package/dist/data-collector.d.ts +1 -0
- package/dist/data-collector.d.ts.map +1 -1
- package/dist/data-collector.js +30 -0
- package/dist/data-collector.js.map +1 -1
- package/dist/loader.d.ts +11 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +40 -0
- package/dist/loader.js.map +1 -0
- package/dist/reporters/cli-reporter.d.ts +1 -0
- package/dist/reporters/cli-reporter.d.ts.map +1 -1
- package/dist/reporters/cli-reporter.js +29 -0
- package/dist/reporters/cli-reporter.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +50 -4
- package/src/data-collector.ts +43 -0
- package/src/loader.ts +36 -0
- package/src/reporters/cli-reporter.ts +34 -0
- package/.config.json +0 -8
package/README.md
CHANGED
|
@@ -259,7 +259,11 @@ For InfluxDB time queries, use relative or absolute formats:
|
|
|
259
259
|
|
|
260
260
|
## Environment Variables
|
|
261
261
|
|
|
262
|
-
|
|
262
|
+
You can configure InfluxDB settings via environment variables. They can be used in two ways:
|
|
263
|
+
|
|
264
|
+
### 1. Complete Configuration via Environment Variables
|
|
265
|
+
|
|
266
|
+
Set all four variables to use environment-only configuration:
|
|
263
267
|
|
|
264
268
|
```bash
|
|
265
269
|
export INFLUX_URL=http://localhost:8086
|
|
@@ -268,19 +272,29 @@ export INFLUX_ORG=your-org
|
|
|
268
272
|
export INFLUX_BUCKET=k6
|
|
269
273
|
```
|
|
270
274
|
|
|
271
|
-
Then
|
|
275
|
+
Then run the CLI without needing a config file:
|
|
272
276
|
```bash
|
|
273
277
|
npx tsx src/cli.ts generate \
|
|
274
|
-
--
|
|
275
|
-
--token $INFLUX_TOKEN \
|
|
276
|
-
--org $INFLUX_ORG \
|
|
277
|
-
--bucket $INFLUX_BUCKET \
|
|
278
|
-
--test-name api-load-test \
|
|
278
|
+
--run-id 123456790121 \
|
|
279
279
|
--start-time "-1h" \
|
|
280
280
|
--end-time "now()" \
|
|
281
|
-
--format
|
|
281
|
+
--format cli
|
|
282
282
|
```
|
|
283
283
|
|
|
284
|
+
### 2. Override Specific Values from Config File
|
|
285
|
+
|
|
286
|
+
You can also use environment variables to override individual settings from `.config.json`:
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
# .config.json exists with default settings
|
|
290
|
+
export INFLUX_TOKEN=production-token
|
|
291
|
+
|
|
292
|
+
# Now the CLI will use the token from env var while other settings come from .config.json
|
|
293
|
+
npx tsx src/cli.ts generate --run-id 123456790121 --format cli
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Note:** Environment variables always take precedence over values in `.config.json`.
|
|
297
|
+
|
|
284
298
|
## Prerequisites
|
|
285
299
|
|
|
286
300
|
- Node.js 16+
|
package/dist/config.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export declare class Config {
|
|
|
8
8
|
private static instance;
|
|
9
9
|
private config;
|
|
10
10
|
private constructor();
|
|
11
|
+
private loadConfig;
|
|
12
|
+
private loadFromEnv;
|
|
13
|
+
private overrideWithEnv;
|
|
11
14
|
static getInstance(configPath?: string): Config;
|
|
12
15
|
getConfig(): InfluxConfig;
|
|
13
16
|
}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO;IAIP,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;IASvB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAO/C,SAAS,IAAI,YAAY;CAG1B"}
|
package/dist/config.js
CHANGED
|
@@ -7,10 +7,48 @@ exports.Config = void 0;
|
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
class Config {
|
|
10
|
-
constructor(configPath
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
constructor(configPath) {
|
|
11
|
+
this.config = this.loadConfig(configPath);
|
|
12
|
+
}
|
|
13
|
+
loadConfig(configPath) {
|
|
14
|
+
// Try to load from JSON file first
|
|
15
|
+
const filePath = configPath || ".config.json";
|
|
16
|
+
const fullPath = path_1.default.resolve(filePath);
|
|
17
|
+
let config;
|
|
18
|
+
if (fs_1.default.existsSync(fullPath)) {
|
|
19
|
+
const data = JSON.parse(fs_1.default.readFileSync(fullPath, "utf-8"));
|
|
20
|
+
config = data.influx;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// If file doesn't exist, try to load from env vars
|
|
24
|
+
const envConfig = this.loadFromEnv();
|
|
25
|
+
if (!envConfig) {
|
|
26
|
+
throw new Error(`Config file not found at ${fullPath} and no environment variables set. ` +
|
|
27
|
+
`Set INFLUX_URL, INFLUX_TOKEN, INFLUX_ORG, INFLUX_BUCKET or provide a config file.`);
|
|
28
|
+
}
|
|
29
|
+
return envConfig;
|
|
30
|
+
}
|
|
31
|
+
// Override with environment variables if they exist
|
|
32
|
+
return this.overrideWithEnv(config);
|
|
33
|
+
}
|
|
34
|
+
loadFromEnv() {
|
|
35
|
+
const url = process.env.INFLUX_URL;
|
|
36
|
+
const token = process.env.INFLUX_TOKEN;
|
|
37
|
+
const org = process.env.INFLUX_ORG;
|
|
38
|
+
const bucket = process.env.INFLUX_BUCKET;
|
|
39
|
+
// Only return if all env vars are set
|
|
40
|
+
if (url && token && org && bucket) {
|
|
41
|
+
return { url, token, org, bucket };
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
overrideWithEnv(config) {
|
|
46
|
+
return {
|
|
47
|
+
url: process.env.INFLUX_URL || config.url,
|
|
48
|
+
token: process.env.INFLUX_TOKEN || config.token,
|
|
49
|
+
org: process.env.INFLUX_ORG || config.org,
|
|
50
|
+
bucket: process.env.INFLUX_BUCKET || config.bucket,
|
|
51
|
+
};
|
|
14
52
|
}
|
|
15
53
|
static getInstance(configPath) {
|
|
16
54
|
if (!Config.instance) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AASxB,MAAa,MAAM;IAIjB,YAAoB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AASxB,MAAa,MAAM;IAIjB,YAAoB,UAAmB;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEO,UAAU,CAAC,UAAmB;QACpC,mCAAmC;QACnC,MAAM,QAAQ,GAAG,UAAU,IAAI,cAAc,CAAC;QAC9C,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAoB,CAAC;QAEzB,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5D,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,mDAAmD;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,qCAAqC;oBACzE,mFAAmF,CACpF,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oDAAoD;QACpD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,WAAW;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAEzC,sCAAsC;QACtC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,MAAoB;QAC1C,OAAO;YACL,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG;YACzC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK;YAC/C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG;YACzC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAmB;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAlED,wBAkEC"}
|
package/dist/data-collector.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface ReporterResponse {
|
|
|
8
8
|
}
|
|
9
9
|
export declare class DataCollector {
|
|
10
10
|
private extractor;
|
|
11
|
+
private loader;
|
|
11
12
|
constructor(config: InfluxConfig);
|
|
12
13
|
collect(runId: string, startTime?: string, endTime?: string, data?: unknown): Promise<ReporterResponse>;
|
|
13
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-collector.d.ts","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"data-collector.d.ts","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,YAAY;IAI1B,OAAO,CACX,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAAc,EACzB,OAAO,GAAE,MAAgB,EACzB,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC,gBAAgB,CAAC;CAmF7B"}
|
package/dist/data-collector.js
CHANGED
|
@@ -2,25 +2,55 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DataCollector = void 0;
|
|
4
4
|
const influx_data_extractor_1 = require("./influx-data-extractor");
|
|
5
|
+
const loader_1 = require("./loader");
|
|
5
6
|
class DataCollector {
|
|
6
7
|
constructor(config) {
|
|
8
|
+
this.loader = new loader_1.Loader();
|
|
7
9
|
this.extractor = new influx_data_extractor_1.InfluxDataExtractor(config);
|
|
8
10
|
}
|
|
9
11
|
async collect(runId, startTime = "-1h", endTime = "now()", data = {}) {
|
|
12
|
+
this.loader.start("Extracting http_reqs...");
|
|
10
13
|
const httpReqs = await this.extractor.extractHttpReqs(runId, startTime, endTime);
|
|
14
|
+
this.loader.success("Extracted http_reqs");
|
|
15
|
+
this.loader.start("Extracting vus...");
|
|
11
16
|
const vus = await this.extractor.extractVus(runId, startTime, endTime);
|
|
17
|
+
this.loader.success("Extracted vus");
|
|
18
|
+
this.loader.start("Extracting vus_max...");
|
|
12
19
|
const vusMax = await this.extractor.extractVusMax(runId, startTime, endTime);
|
|
20
|
+
this.loader.success("Extracted vus_max");
|
|
21
|
+
this.loader.start("Extracting iterations...");
|
|
13
22
|
const iterations = await this.extractor.extractIterations(runId, startTime, endTime);
|
|
23
|
+
this.loader.success("Extracted iterations");
|
|
24
|
+
this.loader.start("Calculating test duration...");
|
|
14
25
|
const duration = await this.extractor.calculateTestDuration(runId, startTime, endTime);
|
|
26
|
+
this.loader.success("Calculated test duration");
|
|
27
|
+
this.loader.start("Extracting checks...");
|
|
15
28
|
const checks = await this.extractor.extractChecks(runId, startTime, endTime);
|
|
29
|
+
this.loader.success("Extracted checks");
|
|
30
|
+
this.loader.start("Extracting http_req_failed...");
|
|
16
31
|
const httpReqFailed = await this.extractor.extractHttpReqFailed(runId, startTime, endTime);
|
|
32
|
+
this.loader.success("Extracted http_req_failed");
|
|
33
|
+
this.loader.start("Extracting http_req_duration...");
|
|
17
34
|
const httpReqDuration = await this.extractor.extractHttpReqDuration(runId, startTime, endTime);
|
|
35
|
+
this.loader.success("Extracted http_req_duration");
|
|
36
|
+
this.loader.start("Extracting iteration_duration...");
|
|
18
37
|
const iterationDuration = await this.extractor.extractIterationDuration(runId, startTime, endTime);
|
|
38
|
+
this.loader.success("Extracted iteration_duration");
|
|
39
|
+
this.loader.start("Extracting error_responses...");
|
|
19
40
|
const errorResponses = await this.extractor.extractErrorResponses(runId, startTime, endTime);
|
|
41
|
+
this.loader.success("Extracted error_responses");
|
|
42
|
+
this.loader.start("Extracting top slow URLs...");
|
|
20
43
|
const topSlowUrls = await this.extractor.extractTopSlowUrls(runId, startTime, endTime);
|
|
44
|
+
this.loader.success("Extracted top slow URLs");
|
|
45
|
+
this.loader.start("Extracting error requests...");
|
|
21
46
|
const errorRequests = await this.extractor.extractErrorRequests(runId, startTime, endTime);
|
|
47
|
+
this.loader.success("Extracted error requests");
|
|
48
|
+
this.loader.start("Extracting success requests...");
|
|
22
49
|
const successRequests = await this.extractor.extractSuccessRequests(runId, startTime, endTime);
|
|
50
|
+
this.loader.success("Extracted success requests");
|
|
51
|
+
this.loader.start("Extracting error responses text...");
|
|
23
52
|
const errorResponsesText = await this.extractor.extractErrorResponsesText(runId, startTime, endTime);
|
|
53
|
+
this.loader.success("Extracted error responses text");
|
|
24
54
|
const reportData = {
|
|
25
55
|
...(typeof data === "object" && data !== null ? data : {}),
|
|
26
56
|
httpReqs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-collector.js","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":";;;AAAA,mEAA8D;
|
|
1
|
+
{"version":3,"file":"data-collector.js","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class Loader {
|
|
2
|
+
private frames;
|
|
3
|
+
private currentFrame;
|
|
4
|
+
private interval;
|
|
5
|
+
private message;
|
|
6
|
+
start(message: string): void;
|
|
7
|
+
stop(): void;
|
|
8
|
+
success(message: string): void;
|
|
9
|
+
error(message: string): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAAM;IAErB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU5B,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAI7B"}
|
package/dist/loader.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Loader = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
class Loader {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
11
|
+
this.currentFrame = 0;
|
|
12
|
+
this.interval = null;
|
|
13
|
+
this.message = "";
|
|
14
|
+
}
|
|
15
|
+
start(message) {
|
|
16
|
+
this.message = message;
|
|
17
|
+
this.currentFrame = 0;
|
|
18
|
+
this.interval = setInterval(() => {
|
|
19
|
+
process.stdout.write(`\r${chalk_1.default.cyan(this.frames[this.currentFrame])} ${this.message}`);
|
|
20
|
+
this.currentFrame = (this.currentFrame + 1) % this.frames.length;
|
|
21
|
+
}, 80);
|
|
22
|
+
}
|
|
23
|
+
stop() {
|
|
24
|
+
if (this.interval) {
|
|
25
|
+
clearInterval(this.interval);
|
|
26
|
+
this.interval = null;
|
|
27
|
+
}
|
|
28
|
+
process.stdout.write("\r" + " ".repeat(this.message.length + 3) + "\r");
|
|
29
|
+
}
|
|
30
|
+
success(message) {
|
|
31
|
+
this.stop();
|
|
32
|
+
console.log(`${chalk_1.default.green("✓")} ${message}`);
|
|
33
|
+
}
|
|
34
|
+
error(message) {
|
|
35
|
+
this.stop();
|
|
36
|
+
console.log(`${chalk_1.default.red("✗")} ${message}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Loader = Loader;
|
|
40
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,MAAM;IAAnB;QACU,WAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5D,iBAAY,GAAG,CAAC,CAAC;QACjB,aAAQ,GAA0B,IAAI,CAAC;QACvC,YAAO,GAAG,EAAE,CAAC;IA6BvB,CAAC;IA3BC,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAEtB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACnE,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF;AAjCD,wBAiCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,WAAW;IACtB,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"cli-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,WAAW;IACtB,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAMpC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;IA0InB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;CAgCrB"}
|
|
@@ -10,6 +10,7 @@ class CliReporter {
|
|
|
10
10
|
report(data) {
|
|
11
11
|
this.printHeader(data);
|
|
12
12
|
this.printReport(data);
|
|
13
|
+
this.printSummary(data);
|
|
13
14
|
}
|
|
14
15
|
printHeader(data) {
|
|
15
16
|
console.log("\n---");
|
|
@@ -136,6 +137,34 @@ class CliReporter {
|
|
|
136
137
|
}
|
|
137
138
|
return `${(ms / 1000).toFixed(2)}s`;
|
|
138
139
|
}
|
|
140
|
+
printSummary(data) {
|
|
141
|
+
const reportData = data.data;
|
|
142
|
+
let errorPercent = 0;
|
|
143
|
+
let failedChecks = 0;
|
|
144
|
+
// Calculate error percentage
|
|
145
|
+
if (reportData.httpReqFailed) {
|
|
146
|
+
const failed = reportData.httpReqFailed;
|
|
147
|
+
errorPercent = typeof failed.failureRate === "number" ? failed.failureRate : 0;
|
|
148
|
+
}
|
|
149
|
+
// Get failed checks count
|
|
150
|
+
if (reportData.checks) {
|
|
151
|
+
const checks = reportData.checks;
|
|
152
|
+
failedChecks = typeof checks.fails === "number" ? checks.fails : 0;
|
|
153
|
+
}
|
|
154
|
+
// Determine success/failure
|
|
155
|
+
const isSuccess = errorPercent < 1 && failedChecks === 0;
|
|
156
|
+
console.log("\n---");
|
|
157
|
+
if (isSuccess) {
|
|
158
|
+
console.log(chalk_1.default.green.bold("✓ PASS"));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
console.log(chalk_1.default.red.bold("✗ FAIL"));
|
|
162
|
+
}
|
|
163
|
+
console.log("");
|
|
164
|
+
console.log(`${chalk_1.default.gray("Error Rate:")} ${chalk_1.default.cyan(errorPercent.toFixed(2) + "%")}`);
|
|
165
|
+
console.log(`${chalk_1.default.gray("Failed Checks:")} ${chalk_1.default.cyan(String(failedChecks))}`);
|
|
166
|
+
console.log("---\n");
|
|
167
|
+
}
|
|
139
168
|
}
|
|
140
169
|
exports.CliReporter = CliReporter;
|
|
141
170
|
//# sourceMappingURL=cli-reporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-reporter.js","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-reporter.js","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/config.ts
CHANGED
|
@@ -12,10 +12,56 @@ export class Config {
|
|
|
12
12
|
private static instance: Config;
|
|
13
13
|
private config: InfluxConfig;
|
|
14
14
|
|
|
15
|
-
private constructor(configPath
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
private constructor(configPath?: string) {
|
|
16
|
+
this.config = this.loadConfig(configPath);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private loadConfig(configPath?: string): InfluxConfig {
|
|
20
|
+
// Try to load from JSON file first
|
|
21
|
+
const filePath = configPath || ".config.json";
|
|
22
|
+
const fullPath = path.resolve(filePath);
|
|
23
|
+
let config: InfluxConfig;
|
|
24
|
+
|
|
25
|
+
if (fs.existsSync(fullPath)) {
|
|
26
|
+
const data = JSON.parse(fs.readFileSync(fullPath, "utf-8"));
|
|
27
|
+
config = data.influx;
|
|
28
|
+
} else {
|
|
29
|
+
// If file doesn't exist, try to load from env vars
|
|
30
|
+
const envConfig = this.loadFromEnv();
|
|
31
|
+
if (!envConfig) {
|
|
32
|
+
throw new Error(
|
|
33
|
+
`Config file not found at ${fullPath} and no environment variables set. ` +
|
|
34
|
+
`Set INFLUX_URL, INFLUX_TOKEN, INFLUX_ORG, INFLUX_BUCKET or provide a config file.`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
return envConfig;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Override with environment variables if they exist
|
|
41
|
+
return this.overrideWithEnv(config);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private loadFromEnv(): InfluxConfig | null {
|
|
45
|
+
const url = process.env.INFLUX_URL;
|
|
46
|
+
const token = process.env.INFLUX_TOKEN;
|
|
47
|
+
const org = process.env.INFLUX_ORG;
|
|
48
|
+
const bucket = process.env.INFLUX_BUCKET;
|
|
49
|
+
|
|
50
|
+
// Only return if all env vars are set
|
|
51
|
+
if (url && token && org && bucket) {
|
|
52
|
+
return { url, token, org, bucket };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private overrideWithEnv(config: InfluxConfig): InfluxConfig {
|
|
59
|
+
return {
|
|
60
|
+
url: process.env.INFLUX_URL || config.url,
|
|
61
|
+
token: process.env.INFLUX_TOKEN || config.token,
|
|
62
|
+
org: process.env.INFLUX_ORG || config.org,
|
|
63
|
+
bucket: process.env.INFLUX_BUCKET || config.bucket,
|
|
64
|
+
};
|
|
19
65
|
}
|
|
20
66
|
|
|
21
67
|
static getInstance(configPath?: string): Config {
|
package/src/data-collector.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InfluxDataExtractor } from "./influx-data-extractor";
|
|
2
2
|
import { InfluxConfig } from "./config";
|
|
3
|
+
import { Loader } from "./loader";
|
|
3
4
|
|
|
4
5
|
export interface ReporterResponse {
|
|
5
6
|
runId: string;
|
|
@@ -11,6 +12,7 @@ export interface ReporterResponse {
|
|
|
11
12
|
|
|
12
13
|
export class DataCollector {
|
|
13
14
|
private extractor: InfluxDataExtractor;
|
|
15
|
+
private loader = new Loader();
|
|
14
16
|
|
|
15
17
|
constructor(config: InfluxConfig) {
|
|
16
18
|
this.extractor = new InfluxDataExtractor(config);
|
|
@@ -22,20 +24,61 @@ export class DataCollector {
|
|
|
22
24
|
endTime: string = "now()",
|
|
23
25
|
data: unknown = {}
|
|
24
26
|
): Promise<ReporterResponse> {
|
|
27
|
+
this.loader.start("Extracting http_reqs...");
|
|
25
28
|
const httpReqs = await this.extractor.extractHttpReqs(runId, startTime, endTime);
|
|
29
|
+
this.loader.success("Extracted http_reqs");
|
|
30
|
+
|
|
31
|
+
this.loader.start("Extracting vus...");
|
|
26
32
|
const vus = await this.extractor.extractVus(runId, startTime, endTime);
|
|
33
|
+
this.loader.success("Extracted vus");
|
|
34
|
+
|
|
35
|
+
this.loader.start("Extracting vus_max...");
|
|
27
36
|
const vusMax = await this.extractor.extractVusMax(runId, startTime, endTime);
|
|
37
|
+
this.loader.success("Extracted vus_max");
|
|
38
|
+
|
|
39
|
+
this.loader.start("Extracting iterations...");
|
|
28
40
|
const iterations = await this.extractor.extractIterations(runId, startTime, endTime);
|
|
41
|
+
this.loader.success("Extracted iterations");
|
|
42
|
+
|
|
43
|
+
this.loader.start("Calculating test duration...");
|
|
29
44
|
const duration = await this.extractor.calculateTestDuration(runId, startTime, endTime);
|
|
45
|
+
this.loader.success("Calculated test duration");
|
|
46
|
+
|
|
47
|
+
this.loader.start("Extracting checks...");
|
|
30
48
|
const checks = await this.extractor.extractChecks(runId, startTime, endTime);
|
|
49
|
+
this.loader.success("Extracted checks");
|
|
50
|
+
|
|
51
|
+
this.loader.start("Extracting http_req_failed...");
|
|
31
52
|
const httpReqFailed = await this.extractor.extractHttpReqFailed(runId, startTime, endTime);
|
|
53
|
+
this.loader.success("Extracted http_req_failed");
|
|
54
|
+
|
|
55
|
+
this.loader.start("Extracting http_req_duration...");
|
|
32
56
|
const httpReqDuration = await this.extractor.extractHttpReqDuration(runId, startTime, endTime);
|
|
57
|
+
this.loader.success("Extracted http_req_duration");
|
|
58
|
+
|
|
59
|
+
this.loader.start("Extracting iteration_duration...");
|
|
33
60
|
const iterationDuration = await this.extractor.extractIterationDuration(runId, startTime, endTime);
|
|
61
|
+
this.loader.success("Extracted iteration_duration");
|
|
62
|
+
|
|
63
|
+
this.loader.start("Extracting error_responses...");
|
|
34
64
|
const errorResponses = await this.extractor.extractErrorResponses(runId, startTime, endTime);
|
|
65
|
+
this.loader.success("Extracted error_responses");
|
|
66
|
+
|
|
67
|
+
this.loader.start("Extracting top slow URLs...");
|
|
35
68
|
const topSlowUrls = await this.extractor.extractTopSlowUrls(runId, startTime, endTime);
|
|
69
|
+
this.loader.success("Extracted top slow URLs");
|
|
70
|
+
|
|
71
|
+
this.loader.start("Extracting error requests...");
|
|
36
72
|
const errorRequests = await this.extractor.extractErrorRequests(runId, startTime, endTime);
|
|
73
|
+
this.loader.success("Extracted error requests");
|
|
74
|
+
|
|
75
|
+
this.loader.start("Extracting success requests...");
|
|
37
76
|
const successRequests = await this.extractor.extractSuccessRequests(runId, startTime, endTime);
|
|
77
|
+
this.loader.success("Extracted success requests");
|
|
78
|
+
|
|
79
|
+
this.loader.start("Extracting error responses text...");
|
|
38
80
|
const errorResponsesText = await this.extractor.extractErrorResponsesText(runId, startTime, endTime);
|
|
81
|
+
this.loader.success("Extracted error responses text");
|
|
39
82
|
|
|
40
83
|
const reportData = {
|
|
41
84
|
...(typeof data === "object" && data !== null ? data : {}),
|
package/src/loader.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
|
|
3
|
+
export class Loader {
|
|
4
|
+
private frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
5
|
+
private currentFrame = 0;
|
|
6
|
+
private interval: NodeJS.Timeout | null = null;
|
|
7
|
+
private message = "";
|
|
8
|
+
|
|
9
|
+
start(message: string): void {
|
|
10
|
+
this.message = message;
|
|
11
|
+
this.currentFrame = 0;
|
|
12
|
+
|
|
13
|
+
this.interval = setInterval(() => {
|
|
14
|
+
process.stdout.write(`\r${chalk.cyan(this.frames[this.currentFrame])} ${this.message}`);
|
|
15
|
+
this.currentFrame = (this.currentFrame + 1) % this.frames.length;
|
|
16
|
+
}, 80);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
stop(): void {
|
|
20
|
+
if (this.interval) {
|
|
21
|
+
clearInterval(this.interval);
|
|
22
|
+
this.interval = null;
|
|
23
|
+
}
|
|
24
|
+
process.stdout.write("\r" + " ".repeat(this.message.length + 3) + "\r");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
success(message: string): void {
|
|
28
|
+
this.stop();
|
|
29
|
+
console.log(`${chalk.green("✓")} ${message}`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
error(message: string): void {
|
|
33
|
+
this.stop();
|
|
34
|
+
console.log(`${chalk.red("✗")} ${message}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -6,6 +6,7 @@ export class CliReporter {
|
|
|
6
6
|
report(data: ReporterResponse): void {
|
|
7
7
|
this.printHeader(data);
|
|
8
8
|
this.printReport(data);
|
|
9
|
+
this.printSummary(data);
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
private printHeader(data: ReporterResponse): void {
|
|
@@ -166,4 +167,37 @@ export class CliReporter {
|
|
|
166
167
|
}
|
|
167
168
|
return `${(ms / 1000).toFixed(2)}s`;
|
|
168
169
|
}
|
|
170
|
+
|
|
171
|
+
private printSummary(data: ReporterResponse): void {
|
|
172
|
+
const reportData = data.data as Record<string, unknown>;
|
|
173
|
+
|
|
174
|
+
let errorPercent = 0;
|
|
175
|
+
let failedChecks = 0;
|
|
176
|
+
|
|
177
|
+
// Calculate error percentage
|
|
178
|
+
if (reportData.httpReqFailed) {
|
|
179
|
+
const failed = reportData.httpReqFailed as Record<string, number>;
|
|
180
|
+
errorPercent = typeof failed.failureRate === "number" ? failed.failureRate : 0;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Get failed checks count
|
|
184
|
+
if (reportData.checks) {
|
|
185
|
+
const checks = reportData.checks as Record<string, number>;
|
|
186
|
+
failedChecks = typeof checks.fails === "number" ? checks.fails : 0;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Determine success/failure
|
|
190
|
+
const isSuccess = errorPercent < 1 && failedChecks === 0;
|
|
191
|
+
|
|
192
|
+
console.log("\n---");
|
|
193
|
+
if (isSuccess) {
|
|
194
|
+
console.log(chalk.green.bold("✓ PASS"));
|
|
195
|
+
} else {
|
|
196
|
+
console.log(chalk.red.bold("✗ FAIL"));
|
|
197
|
+
}
|
|
198
|
+
console.log("");
|
|
199
|
+
console.log(`${chalk.gray("Error Rate:")} ${chalk.cyan(errorPercent.toFixed(2) + "%")}`);
|
|
200
|
+
console.log(`${chalk.gray("Failed Checks:")} ${chalk.cyan(String(failedChecks))}`);
|
|
201
|
+
console.log("---\n");
|
|
202
|
+
}
|
|
169
203
|
}
|