k6-perf-reporter 1.0.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.
Files changed (113) hide show
  1. package/.claude/settings.local.json +54 -0
  2. package/.config.example.json +8 -0
  3. package/.config.json +8 -0
  4. package/.eslintrc.json +18 -0
  5. package/.github/workflows/build.yml +30 -0
  6. package/.github/workflows/release.yml +44 -0
  7. package/README.md +449 -0
  8. package/dist/cli-reporter.d.ts +5 -0
  9. package/dist/cli-reporter.d.ts.map +1 -0
  10. package/dist/cli-reporter.js +71 -0
  11. package/dist/cli-reporter.js.map +1 -0
  12. package/dist/cli.d.ts +2 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +43 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/config.d.ts +14 -0
  17. package/dist/config.d.ts.map +1 -0
  18. package/dist/config.js +26 -0
  19. package/dist/config.js.map +1 -0
  20. package/dist/data-collector.d.ts +14 -0
  21. package/dist/data-collector.d.ts.map +1 -0
  22. package/dist/data-collector.js +51 -0
  23. package/dist/data-collector.js.map +1 -0
  24. package/dist/data-extractor.d.ts +31 -0
  25. package/dist/data-extractor.d.ts.map +1 -0
  26. package/dist/data-extractor.js +250 -0
  27. package/dist/data-extractor.js.map +1 -0
  28. package/dist/explore.d.ts +2 -0
  29. package/dist/explore.d.ts.map +1 -0
  30. package/dist/explore.js +27 -0
  31. package/dist/explore.js.map +1 -0
  32. package/dist/index.d.ts +7 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +43 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/influx-client.d.ts +16 -0
  37. package/dist/influx-client.d.ts.map +1 -0
  38. package/dist/influx-client.interface.d.ts +21 -0
  39. package/dist/influx-client.interface.d.ts.map +1 -0
  40. package/dist/influx-client.interface.js +3 -0
  41. package/dist/influx-client.interface.js.map +1 -0
  42. package/dist/influx-client.js +35 -0
  43. package/dist/influx-client.js.map +1 -0
  44. package/dist/influx-data-extractor.d.ts +112 -0
  45. package/dist/influx-data-extractor.d.ts.map +1 -0
  46. package/dist/influx-data-extractor.interface.d.ts +21 -0
  47. package/dist/influx-data-extractor.interface.d.ts.map +1 -0
  48. package/dist/influx-data-extractor.interface.js +3 -0
  49. package/dist/influx-data-extractor.interface.js.map +1 -0
  50. package/dist/influx-data-extractor.js +445 -0
  51. package/dist/influx-data-extractor.js.map +1 -0
  52. package/dist/influx.d.ts +122 -0
  53. package/dist/influx.d.ts.map +1 -0
  54. package/dist/influx.js +899 -0
  55. package/dist/influx.js.map +1 -0
  56. package/dist/logger.d.ts +7 -0
  57. package/dist/logger.d.ts.map +1 -0
  58. package/dist/logger.js +12 -0
  59. package/dist/logger.js.map +1 -0
  60. package/dist/metrics-collector.d.ts +10 -0
  61. package/dist/metrics-collector.d.ts.map +1 -0
  62. package/dist/metrics-collector.js +99 -0
  63. package/dist/metrics-collector.js.map +1 -0
  64. package/dist/metrics-collector.test.d.ts +2 -0
  65. package/dist/metrics-collector.test.d.ts.map +1 -0
  66. package/dist/metrics-collector.test.js +235 -0
  67. package/dist/metrics-collector.test.js.map +1 -0
  68. package/dist/reporters/cli-reporter.d.ts +9 -0
  69. package/dist/reporters/cli-reporter.d.ts.map +1 -0
  70. package/dist/reporters/cli-reporter.js +141 -0
  71. package/dist/reporters/cli-reporter.js.map +1 -0
  72. package/dist/reporters/cli.d.ts +5 -0
  73. package/dist/reporters/cli.d.ts.map +1 -0
  74. package/dist/reporters/cli.js +150 -0
  75. package/dist/reporters/cli.js.map +1 -0
  76. package/dist/reporters/index.d.ts +3 -0
  77. package/dist/reporters/index.d.ts.map +1 -0
  78. package/dist/reporters/index.js +8 -0
  79. package/dist/reporters/index.js.map +1 -0
  80. package/dist/reporters/json-reporter.d.ts +5 -0
  81. package/dist/reporters/json-reporter.d.ts.map +1 -0
  82. package/dist/reporters/json-reporter.js +18 -0
  83. package/dist/reporters/json-reporter.js.map +1 -0
  84. package/dist/reporters/json.d.ts +5 -0
  85. package/dist/reporters/json.d.ts.map +1 -0
  86. package/dist/reporters/json.js +70 -0
  87. package/dist/reporters/json.js.map +1 -0
  88. package/dist/reporters/markdown.d.ts +5 -0
  89. package/dist/reporters/markdown.d.ts.map +1 -0
  90. package/dist/reporters/markdown.js +87 -0
  91. package/dist/reporters/markdown.js.map +1 -0
  92. package/dist/reports.d.ts +11 -0
  93. package/dist/reports.d.ts.map +1 -0
  94. package/dist/reports.js +325 -0
  95. package/dist/reports.js.map +1 -0
  96. package/dist/types.d.ts +113 -0
  97. package/dist/types.d.ts.map +1 -0
  98. package/dist/types.js +4 -0
  99. package/dist/types.js.map +1 -0
  100. package/dist/utils.d.ts +2 -0
  101. package/dist/utils.d.ts.map +1 -0
  102. package/dist/utils.js +19 -0
  103. package/dist/utils.js.map +1 -0
  104. package/package.json +33 -0
  105. package/src/cli.ts +47 -0
  106. package/src/config.ts +31 -0
  107. package/src/data-collector.ts +66 -0
  108. package/src/influx-client.ts +48 -0
  109. package/src/influx-data-extractor.ts +722 -0
  110. package/src/reporters/cli-reporter.ts +169 -0
  111. package/src/reporters/index.ts +2 -0
  112. package/src/reporters/json-reporter.ts +15 -0
  113. package/tsconfig.json +20 -0
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InfluxDataExtractor = void 0;
4
+ const influx_client_1 = require("./influx-client");
5
+ const percentile = (values, p) => {
6
+ if (values.length === 0)
7
+ return 0;
8
+ const index = (p / 100) * (values.length - 1);
9
+ const lower = Math.floor(index);
10
+ const upper = Math.ceil(index);
11
+ const weight = index - lower;
12
+ if (lower === upper) {
13
+ return values[lower];
14
+ }
15
+ return values[lower] * (1 - weight) + values[upper] * weight;
16
+ };
17
+ class InfluxDataExtractor {
18
+ constructor(config) {
19
+ this.client = new influx_client_1.InfluxClient(config);
20
+ this.config = config;
21
+ }
22
+ async extractHttpReqs(runId, startTime, endTime) {
23
+ const query = `
24
+ from(bucket: "${this.config.bucket}")
25
+ |> range(start: ${startTime}, stop: ${endTime})
26
+ |> filter(fn: (r) => r._measurement == "http_reqs" and r.runId == "${runId}")
27
+ |> keep(columns: ["_value", "_time"])
28
+ `;
29
+ const results = await this.client.queryData(query);
30
+ if (!results || results.length === 0) {
31
+ return { total: 0, rate: 0 };
32
+ }
33
+ const total = results.length;
34
+ // Get full test duration
35
+ const durationQuery = `
36
+ from(bucket: "${this.config.bucket}")
37
+ |> range(start: ${startTime}, stop: ${endTime})
38
+ |> filter(fn: (r) => r.runId == "${runId}")
39
+ |> keep(columns: ["_time"])
40
+ |> sort(columns: ["_time"])
41
+ `;
42
+ const durationResults = await this.client.queryData(durationQuery);
43
+ if (!durationResults || durationResults.length < 2) {
44
+ return { total, rate: 0 };
45
+ }
46
+ const timeValues = durationResults
47
+ .map((r) => r._time)
48
+ .filter((t) => t !== null && t !== undefined);
49
+ if (timeValues.length < 2) {
50
+ return { total, rate: 0 };
51
+ }
52
+ const startTimeMs = new Date(timeValues[0]).getTime();
53
+ const endTimeMs = new Date(timeValues[timeValues.length - 1]).getTime();
54
+ const durationSeconds = (endTimeMs - startTimeMs) / 1000;
55
+ const rate = durationSeconds > 0 ? total / durationSeconds : 0;
56
+ return { total, rate };
57
+ }
58
+ async extractVus(runId, startTime, endTime) {
59
+ const query = `
60
+ from(bucket: "${this.config.bucket}")
61
+ |> range(start: ${startTime}, stop: ${endTime})
62
+ |> filter(fn: (r) => r._measurement == "vus" and r.runId == "${runId}")
63
+ |> keep(columns: ["_value"])
64
+ `;
65
+ const results = await this.client.queryData(query);
66
+ if (!results || results.length === 0) {
67
+ return { current: 0, min: 0, max: 0 };
68
+ }
69
+ const values = results.map((r) => r._value || 0);
70
+ const min = Math.min(...values);
71
+ const max = Math.max(...values);
72
+ return { current: max, min, max };
73
+ }
74
+ async extractVusMax(runId, startTime, endTime) {
75
+ const query = `
76
+ from(bucket: "${this.config.bucket}")
77
+ |> range(start: ${startTime}, stop: ${endTime})
78
+ |> filter(fn: (r) => r._measurement == "vus_max" and r.runId == "${runId}")
79
+ `;
80
+ const results = await this.client.queryData(query);
81
+ if (!results || results.length === 0) {
82
+ return { min: 0, max: 0 };
83
+ }
84
+ const values = results.map((r) => r._value || 0);
85
+ const min = Math.min(...values);
86
+ const max = Math.max(...values);
87
+ return { min, max };
88
+ }
89
+ async extractIterations(runId, startTime, endTime) {
90
+ const query = `
91
+ from(bucket: "${this.config.bucket}")
92
+ |> range(start: ${startTime}, stop: ${endTime})
93
+ |> filter(fn: (r) => r._measurement == "iterations" and r.runId == "${runId}")
94
+ |> keep(columns: ["_value", "_time"])
95
+ `;
96
+ const results = await this.client.queryData(query);
97
+ if (!results || results.length === 0) {
98
+ return { total: 0, rate: 0 };
99
+ }
100
+ const total = results.length;
101
+ // Get full test duration
102
+ const durationQuery = `
103
+ from(bucket: "${this.config.bucket}")
104
+ |> range(start: ${startTime}, stop: ${endTime})
105
+ |> filter(fn: (r) => r.runId == "${runId}")
106
+ |> keep(columns: ["_time"])
107
+ |> sort(columns: ["_time"])
108
+ `;
109
+ const durationResults = await this.client.queryData(durationQuery);
110
+ if (!durationResults || durationResults.length < 2) {
111
+ return { total, rate: 0 };
112
+ }
113
+ const timeValues = durationResults
114
+ .map((r) => r._time)
115
+ .filter((t) => t !== null && t !== undefined);
116
+ if (timeValues.length < 2) {
117
+ return { total, rate: 0 };
118
+ }
119
+ const startTimeMs = new Date(timeValues[0]).getTime();
120
+ const endTimeMs = new Date(timeValues[timeValues.length - 1]).getTime();
121
+ const durationSeconds = (endTimeMs - startTimeMs) / 1000;
122
+ const rate = durationSeconds > 0 ? total / durationSeconds : 0;
123
+ return { total, rate };
124
+ }
125
+ async calculateTestDuration(runId, startTime, endTime) {
126
+ const query = `
127
+ from(bucket: "${this.config.bucket}")
128
+ |> range(start: ${startTime}, stop: ${endTime})
129
+ |> filter(fn: (r) => r.runId == "${runId}")
130
+ |> keep(columns: ["_time"])
131
+ |> sort(columns: ["_time"])
132
+ `;
133
+ const results = await this.client.queryData(query);
134
+ if (!results || results.length === 0) {
135
+ return { startTime: "", endTime: "", durationSeconds: 0 };
136
+ }
137
+ const timeValues = results
138
+ .map((r) => r._time)
139
+ .filter((t) => t !== null && t !== undefined);
140
+ if (timeValues.length === 0) {
141
+ return { startTime: "", endTime: "", durationSeconds: 0 };
142
+ }
143
+ const firstTime = timeValues[0];
144
+ const lastTime = timeValues[timeValues.length - 1];
145
+ const startTimeMs = new Date(firstTime).getTime();
146
+ const endTimeMs = new Date(lastTime).getTime();
147
+ const durationSeconds = (endTimeMs - startTimeMs) / 1000;
148
+ return {
149
+ startTime: firstTime,
150
+ endTime: lastTime,
151
+ durationSeconds,
152
+ };
153
+ }
154
+ async extractChecks(runId, startTime, endTime) {
155
+ const query = `
156
+ from(bucket: "${this.config.bucket}")
157
+ |> range(start: ${startTime}, stop: ${endTime})
158
+ |> filter(fn: (r) => r._measurement == "checks" and r.runId == "${runId}")
159
+ |> keep(columns: ["_value"])
160
+ `;
161
+ const results = await this.client.queryData(query);
162
+ if (!results || results.length === 0) {
163
+ return { passes: 0, fails: 0, passRate: 0 };
164
+ }
165
+ const passes = results.filter((r) => r._value === 1).length;
166
+ const fails = results.filter((r) => r._value === 0).length;
167
+ const total = passes + fails;
168
+ const passRate = total > 0 ? (passes / total) * 100 : 0;
169
+ return { passes, fails, passRate };
170
+ }
171
+ async extractHttpReqFailed(runId, startTime, endTime) {
172
+ const query = `
173
+ from(bucket: "${this.config.bucket}")
174
+ |> range(start: ${startTime}, stop: ${endTime})
175
+ |> filter(fn: (r) => r._measurement == "http_reqs" and r.runId == "${runId}")
176
+ |> keep(columns: ["status"])
177
+ `;
178
+ const results = await this.client.queryData(query);
179
+ if (!results || results.length === 0) {
180
+ return { total: 0, failed: 0, failureRate: 0 };
181
+ }
182
+ const total = results.length;
183
+ const failed = results.filter((r) => {
184
+ const status = r.status;
185
+ return status > 400;
186
+ }).length;
187
+ const failureRate = total > 0 ? (failed / total) * 100 : 0;
188
+ return { total, failed, failureRate };
189
+ }
190
+ async extractHttpReqDuration(runId, startTime, endTime) {
191
+ const query = `
192
+ from(bucket: "${this.config.bucket}")
193
+ |> range(start: ${startTime}, stop: ${endTime})
194
+ |> filter(fn: (r) => r._measurement == "http_req_duration" and r.runId == "${runId}")
195
+ |> keep(columns: ["_value"])
196
+ `;
197
+ const results = await this.client.queryData(query);
198
+ if (!results || results.length === 0) {
199
+ return { avg: 0, min: 0, med: 0, max: 0, p90: 0, p95: 0 };
200
+ }
201
+ const values = results
202
+ .map((r) => {
203
+ const val = r._value;
204
+ return typeof val === "string" ? parseFloat(val) : val || 0;
205
+ })
206
+ .sort((a, b) => a - b);
207
+ const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
208
+ const min = values[0];
209
+ const max = values[values.length - 1];
210
+ const med = percentile(values, 50);
211
+ const p90 = percentile(values, 90);
212
+ const p95 = percentile(values, 95);
213
+ return { avg, min, med, max, p90, p95 };
214
+ }
215
+ async extractIterationDuration(runId, startTime, endTime) {
216
+ const query = `
217
+ from(bucket: "${this.config.bucket}")
218
+ |> range(start: ${startTime}, stop: ${endTime})
219
+ |> filter(fn: (r) => r._measurement == "iteration_duration" and r.runId == "${runId}")
220
+ |> keep(columns: ["_value"])
221
+ `;
222
+ const results = await this.client.queryData(query);
223
+ if (!results || results.length === 0) {
224
+ return { avg: 0, min: 0, med: 0, max: 0, p90: 0, p95: 0 };
225
+ }
226
+ const values = results
227
+ .map((r) => {
228
+ const val = r._value;
229
+ return typeof val === "string" ? parseFloat(val) : val || 0;
230
+ })
231
+ .sort((a, b) => a - b);
232
+ const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
233
+ const min = values[0];
234
+ const max = values[values.length - 1];
235
+ const med = percentile(values, 50);
236
+ const p90 = percentile(values, 90);
237
+ const p95 = percentile(values, 95);
238
+ return { avg, min, med, max, p90, p95 };
239
+ }
240
+ async extractErrorResponses(runId, startTime, endTime) {
241
+ const query = `
242
+ from(bucket: "${this.config.bucket}")
243
+ |> range(start: ${startTime}, stop: ${endTime})
244
+ |> filter(fn: (r) => r._measurement == "http_reqs" and r.runId == "${runId}")
245
+ |> keep(columns: ["status", "_time"])
246
+ `;
247
+ const results = await this.client.queryData(query);
248
+ if (!results || results.length === 0) {
249
+ return { count: 0, rate: 0 };
250
+ }
251
+ const count = results.filter((r) => {
252
+ const status = r.status;
253
+ return status > 300;
254
+ }).length;
255
+ // Get full test duration
256
+ const durationQuery = `
257
+ from(bucket: "${this.config.bucket}")
258
+ |> range(start: ${startTime}, stop: ${endTime})
259
+ |> filter(fn: (r) => r.runId == "${runId}")
260
+ |> keep(columns: ["_time"])
261
+ |> sort(columns: ["_time"])
262
+ `;
263
+ const durationResults = await this.client.queryData(durationQuery);
264
+ if (!durationResults || durationResults.length < 2) {
265
+ return { count, rate: 0 };
266
+ }
267
+ const timeValues = durationResults
268
+ .map((r) => r._time)
269
+ .filter((t) => t !== null && t !== undefined);
270
+ if (timeValues.length < 2) {
271
+ return { count, rate: 0 };
272
+ }
273
+ const startTimeMs = new Date(timeValues[0]).getTime();
274
+ const endTimeMs = new Date(timeValues[timeValues.length - 1]).getTime();
275
+ const durationSeconds = (endTimeMs - startTimeMs) / 1000;
276
+ const rate = durationSeconds > 0 ? count / durationSeconds : 0;
277
+ return { count, rate };
278
+ }
279
+ async extractTopSlowUrls(runId, startTime, endTime) {
280
+ const query = `
281
+ from(bucket: "${this.config.bucket}")
282
+ |> range(start: ${startTime}, stop: ${endTime})
283
+ |> filter(fn: (r) => r._measurement == "http_req_duration" and r.runId == "${runId}")
284
+ |> keep(columns: ["_value", "url", "method"])
285
+ `;
286
+ const results = await this.client.queryData(query);
287
+ if (!results || results.length === 0) {
288
+ return { urls: [] };
289
+ }
290
+ // Group by URL and method, calculate p95 duration
291
+ const urlMap = new Map();
292
+ results.forEach((r) => {
293
+ const url = r.url;
294
+ const method = r.method;
295
+ const duration = typeof r._value === "string" ? parseFloat(r._value) : r._value || 0;
296
+ const key = `${method} ${url}`;
297
+ if (!urlMap.has(key)) {
298
+ urlMap.set(key, { durations: [], method });
299
+ }
300
+ urlMap.get(key).durations.push(duration);
301
+ });
302
+ // Calculate p95 for each URL and sort
303
+ const topUrls = Array.from(urlMap.entries())
304
+ .map(([key, data]) => {
305
+ const sorted = data.durations.sort((a, b) => a - b);
306
+ const p95Duration = percentile(sorted, 95);
307
+ const [method, url] = key.split(" ");
308
+ return { method, url, p95Duration };
309
+ })
310
+ .sort((a, b) => b.p95Duration - a.p95Duration)
311
+ .slice(0, 10);
312
+ return { urls: topUrls };
313
+ }
314
+ async extractErrorRequests(runId, startTime, endTime) {
315
+ const query = `
316
+ from(bucket: "${this.config.bucket}")
317
+ |> range(start: ${startTime}, stop: ${endTime})
318
+ |> filter(fn: (r) => r._measurement == "http_reqs" and r.runId == "${runId}")
319
+ |> keep(columns: ["_value", "url", "method", "status"])
320
+ `;
321
+ const results = await this.client.queryData(query);
322
+ if (!results || results.length === 0) {
323
+ return { errors: [] };
324
+ }
325
+ // Filter only error responses (status > 400)
326
+ const errorResults = results.filter((r) => {
327
+ const status = r.status;
328
+ return status > 400;
329
+ });
330
+ if (errorResults.length === 0) {
331
+ return { errors: [] };
332
+ }
333
+ // Group by URL, method, and status
334
+ const errorMap = new Map();
335
+ errorResults.forEach((r) => {
336
+ const url = r.url;
337
+ const method = r.method;
338
+ const status = r.status;
339
+ const duration = typeof r._value === "string" ? parseFloat(r._value) : r._value || 0;
340
+ const key = `${method} ${url} ${status}`;
341
+ if (!errorMap.has(key)) {
342
+ errorMap.set(key, { durations: [], method, status, count: 0 });
343
+ }
344
+ const entry = errorMap.get(key);
345
+ entry.durations.push(duration);
346
+ entry.count++;
347
+ });
348
+ // Calculate p95 for each error endpoint and sort by count (descending)
349
+ const topErrors = Array.from(errorMap.entries())
350
+ .map(([key, data]) => {
351
+ const sorted = data.durations.sort((a, b) => a - b);
352
+ const p95Duration = percentile(sorted, 95);
353
+ const [method, url] = key.split(" ").slice(0, 2).join(" ").split(" ");
354
+ return { method, url, status: data.status, p95Duration, count: data.count };
355
+ })
356
+ .sort((a, b) => b.count - a.count)
357
+ .slice(0, 10);
358
+ return { errors: topErrors };
359
+ }
360
+ async extractSuccessRequests(runId, startTime, endTime) {
361
+ const query = `
362
+ from(bucket: "${this.config.bucket}")
363
+ |> range(start: ${startTime}, stop: ${endTime})
364
+ |> filter(fn: (r) => r._measurement == "http_reqs" and r.runId == "${runId}")
365
+ |> keep(columns: ["_value", "url", "method", "status"])
366
+ `;
367
+ const results = await this.client.queryData(query);
368
+ if (!results || results.length === 0) {
369
+ return { requests: [] };
370
+ }
371
+ // Filter only successful responses (status < 400)
372
+ const successResults = results.filter((r) => {
373
+ const status = r.status;
374
+ return status < 400;
375
+ });
376
+ if (successResults.length === 0) {
377
+ return { requests: [] };
378
+ }
379
+ // Get duration data for successful requests
380
+ const durationQuery = `
381
+ from(bucket: "${this.config.bucket}")
382
+ |> range(start: ${startTime}, stop: ${endTime})
383
+ |> filter(fn: (r) => r._measurement == "http_req_duration" and r.runId == "${runId}")
384
+ |> keep(columns: ["_value", "url", "method", "status"])
385
+ `;
386
+ const durationResults = await this.client.queryData(durationQuery);
387
+ if (!durationResults || durationResults.length === 0) {
388
+ return { requests: [] };
389
+ }
390
+ // Filter only successful durations (status < 400)
391
+ const successDurations = durationResults.filter((r) => {
392
+ const status = r.status;
393
+ return status < 400;
394
+ });
395
+ // Group by URL, method, and status
396
+ const requestMap = new Map();
397
+ successDurations.forEach((r) => {
398
+ const url = r.url;
399
+ const method = r.method;
400
+ const status = r.status;
401
+ const duration = typeof r._value === "string" ? parseFloat(r._value) : r._value || 0;
402
+ const key = `${method} ${url} ${status}`;
403
+ if (!requestMap.has(key)) {
404
+ requestMap.set(key, { durations: [], method, status, count: 0 });
405
+ }
406
+ const entry = requestMap.get(key);
407
+ entry.durations.push(duration);
408
+ entry.count++;
409
+ });
410
+ // Calculate stats for each endpoint and sort by count (descending)
411
+ const topRequests = Array.from(requestMap.entries())
412
+ .map(([key, data]) => {
413
+ const sorted = data.durations.sort((a, b) => a - b);
414
+ const min = sorted[0];
415
+ const avg = data.durations.reduce((sum, val) => sum + val, 0) / data.durations.length;
416
+ const p95 = percentile(sorted, 95);
417
+ const [method, url] = key.split(" ").slice(0, 2).join(" ").split(" ");
418
+ return { method, url, status: data.status, count: data.count, min, avg, p95 };
419
+ })
420
+ .sort((a, b) => b.count - a.count);
421
+ return { requests: topRequests };
422
+ }
423
+ async extractErrorResponsesText(runId, startTime, endTime) {
424
+ const query = `
425
+ from(bucket: "${this.config.bucket}")
426
+ |> range(start: ${startTime}, stop: ${endTime})
427
+ |> filter(fn: (r) => r._measurement == "error_responses" and r.runId == "${runId}")
428
+ |> keep(columns: ["endpoint", "method", "status", "err"])
429
+ `;
430
+ const results = await this.client.queryData(query);
431
+ if (!results || results.length === 0) {
432
+ return { responses: [] };
433
+ }
434
+ // Map to error response format
435
+ const responses = results.map((r) => ({
436
+ url: r.endpoint,
437
+ method: r.method,
438
+ status: r.status,
439
+ error: String(r.err || ""),
440
+ }));
441
+ return { responses };
442
+ }
443
+ }
444
+ exports.InfluxDataExtractor = InfluxDataExtractor;
445
+ //# sourceMappingURL=influx-data-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"influx-data-extractor.js","sourceRoot":"","sources":["../src/influx-data-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import { IInfluxQueryClient } from "./influx-client.interface";
2
+ export interface InfluxConfig {
3
+ url: string;
4
+ token: string;
5
+ org: string;
6
+ bucket: string;
7
+ }
8
+ export interface MetricsData {
9
+ timestamp: Date;
10
+ metric: string;
11
+ value: number;
12
+ tags: Record<string, string>;
13
+ }
14
+ export type { TestMetrics } from "./types";
15
+ export declare class InfluxQueryClient implements IInfluxQueryClient {
16
+ private influxDB;
17
+ private config;
18
+ constructor(config: InfluxConfig);
19
+ queryMetrics(startTime: string, endTime: string, runId?: string): Promise<MetricsData[]>;
20
+ getResponseTimePercentiles(startTime: string, endTime: string, runId?: string): Promise<{
21
+ p50: number;
22
+ p95: number;
23
+ p99: number;
24
+ }>;
25
+ private calculatePercentile;
26
+ private buildRunIdFilter;
27
+ getRequestStats(startTime: string, endTime: string, runId?: string): Promise<{
28
+ total: number;
29
+ success: number;
30
+ failed: number;
31
+ }>;
32
+ getErrorBreakdown(startTime: string, endTime: string, runId?: string): Promise<Record<string, number>>;
33
+ getErrorDetails(startTime: string, endTime: string, runId?: string): Promise<Array<{
34
+ status: number;
35
+ url: string;
36
+ count: number;
37
+ }>>;
38
+ getErrorRequestsSummary(startTime: string, endTime: string, runId?: string): Promise<Record<string, {
39
+ count: number;
40
+ minResponseTime: number;
41
+ avgResponseTime: number;
42
+ p95ResponseTime: number;
43
+ p99ResponseTime: number;
44
+ maxResponseTime: number;
45
+ }>>;
46
+ getErrorRequestsDetailedSummary(startTime: string, endTime: string, runId?: string): Promise<Array<{
47
+ url: string;
48
+ method: string;
49
+ status: number;
50
+ count: number;
51
+ minResponseTime: number;
52
+ avgResponseTime: number;
53
+ p95ResponseTime: number;
54
+ p99ResponseTime: number;
55
+ maxResponseTime: number;
56
+ }>>;
57
+ getVUsStats(startTime: string, endTime: string): Promise<{
58
+ vusMax: number;
59
+ vusConfiguredMax: number;
60
+ }>;
61
+ getPodCount(startTime: string, endTime: string): Promise<number>;
62
+ getDroppedIterations(startTime: string, endTime: string, runId?: string): Promise<number>;
63
+ getRPSStats(startTime: string, endTime: string, runId?: string): Promise<{
64
+ rpsMax: number;
65
+ rpsAvg: number;
66
+ rpsP95: number;
67
+ }>;
68
+ getThroughput(startTime: string, endTime: string, runId?: string): Promise<number>;
69
+ getSlowestRequests(startTime: string, endTime: string, topN?: number, runId?: string): Promise<Array<{
70
+ url: string;
71
+ p95: number;
72
+ max: number;
73
+ }>>;
74
+ getIterationCount(startTime: string, endTime: string, runId?: string): Promise<number>;
75
+ getIterationDurationPercentiles(startTime: string, endTime: string, runId?: string): Promise<{
76
+ p50: number;
77
+ p95: number;
78
+ p99: number;
79
+ }>;
80
+ getChecksStats(startTime: string, endTime: string, runId?: string): Promise<{
81
+ total: number;
82
+ succeeded: number;
83
+ failed: number;
84
+ successRate: number;
85
+ }>;
86
+ getHttpPhaseStats(startTime: string, endTime: string, runId?: string): Promise<Record<string, {
87
+ avg: number;
88
+ min: number;
89
+ max: number;
90
+ p90: number;
91
+ p95: number;
92
+ }>>;
93
+ getDataTransferStats(startTime: string, endTime: string, runId?: string): Promise<{
94
+ received: number;
95
+ sent: number;
96
+ receivedRate: number;
97
+ sentRate: number;
98
+ }>;
99
+ getRequestsByEndpoint(startTime: string, endTime: string, runId?: string): Promise<Record<string, number>>;
100
+ getRpsPerEndpoint(startTime: string, endTime: string, runId?: string): Promise<Record<string, {
101
+ avg: number;
102
+ max: number;
103
+ p95: number;
104
+ }>>;
105
+ getRpsTimeSeriesByEndpoint(startTime: string, endTime: string, interval?: string, runId?: string): Promise<Record<string, Array<{
106
+ timestamp: Date;
107
+ rps: number;
108
+ }>>>;
109
+ getRequestsSummary(startTime: string, endTime: string, runId?: string): Promise<Record<string, {
110
+ url: string;
111
+ method: string;
112
+ count: number;
113
+ successful: number;
114
+ failed: number;
115
+ minResponseTime: number;
116
+ avgResponseTime: number;
117
+ p95ResponseTime: number;
118
+ p99ResponseTime: number;
119
+ maxResponseTime: number;
120
+ }>>;
121
+ }
122
+ //# sourceMappingURL=influx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"influx.d.ts","sourceRoot":"","sources":["../src/influx.ts"],"names":[],"mappings":"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"}