k6-perf-reporter 1.3.0 → 1.4.1
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/package.json +2 -1
- package/src/config.ts +50 -4
- 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/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 {
|