@nestia/e2e 0.5.3 → 0.6.0-dev.20240620
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.
|
@@ -126,7 +126,8 @@ export declare namespace DynamicBenchmarker {
|
|
|
126
126
|
count: number;
|
|
127
127
|
threads: number;
|
|
128
128
|
simultaneous: number;
|
|
129
|
-
|
|
129
|
+
started_at: number;
|
|
130
|
+
elapsed_time: number;
|
|
130
131
|
statistics: IReport.IStatistics;
|
|
131
132
|
endpoints: Array<IReport.IEndpoint & IReport.IStatistics>;
|
|
132
133
|
}
|
|
@@ -158,7 +158,7 @@ var DynamicBenchmarker;
|
|
|
158
158
|
* @returns Benchmark report
|
|
159
159
|
*/
|
|
160
160
|
DynamicBenchmarker.master = function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
161
|
-
var completes, servants, started_at, events,
|
|
161
|
+
var completes, servants, started_at, events, elapsed_time, endpoints, events_1, events_1_1, e;
|
|
162
162
|
var e_1, _a;
|
|
163
163
|
var _this = this;
|
|
164
164
|
var _b;
|
|
@@ -189,7 +189,7 @@ var DynamicBenchmarker;
|
|
|
189
189
|
}); }))];
|
|
190
190
|
case 1:
|
|
191
191
|
servants = _c.sent();
|
|
192
|
-
started_at =
|
|
192
|
+
started_at = Date.now();
|
|
193
193
|
return [4 /*yield*/, Promise.all(servants.map(function (connector) {
|
|
194
194
|
return connector.getDriver().execute({
|
|
195
195
|
count: Math.ceil(props.count / props.threads),
|
|
@@ -198,7 +198,7 @@ var DynamicBenchmarker;
|
|
|
198
198
|
}))];
|
|
199
199
|
case 2:
|
|
200
200
|
events = (_c.sent()).flat();
|
|
201
|
-
|
|
201
|
+
elapsed_time = Date.now() - started_at;
|
|
202
202
|
return [4 /*yield*/, Promise.all(servants.map(function (connector) { return connector.close(); }))];
|
|
203
203
|
case 3:
|
|
204
204
|
_c.sent();
|
|
@@ -227,9 +227,10 @@ var DynamicBenchmarker;
|
|
|
227
227
|
count: props.count,
|
|
228
228
|
threads: props.threads,
|
|
229
229
|
simultaneous: props.simultaneous,
|
|
230
|
-
time: time,
|
|
231
230
|
statistics: statistics(events),
|
|
232
231
|
endpoints: __spreadArray([], __read(endpoints), false).map(function (it) { return (__assign(__assign({}, statistics(it.second)), it.first)); }),
|
|
232
|
+
started_at: started_at,
|
|
233
|
+
elapsed_time: elapsed_time,
|
|
233
234
|
}];
|
|
234
235
|
}
|
|
235
236
|
});
|
|
@@ -295,22 +296,24 @@ var DynamicBenchmarker;
|
|
|
295
296
|
].join(" | ");
|
|
296
297
|
};
|
|
297
298
|
return __spreadArray(__spreadArray(__spreadArray([
|
|
298
|
-
"
|
|
299
|
-
">
|
|
300
|
-
"
|
|
301
|
-
"
|
|
302
|
-
"
|
|
303
|
-
"
|
|
304
|
-
"
|
|
305
|
-
"
|
|
306
|
-
"
|
|
307
|
-
"
|
|
299
|
+
"# Benchmark Report",
|
|
300
|
+
"> Generated by [`@nestia/e2e`](https://github.com/samchon/nestia)",
|
|
301
|
+
"",
|
|
302
|
+
" - CPU: ".concat(os_1.default.cpus()[0].model),
|
|
303
|
+
" - RAM: ".concat(Math.floor(os_1.default.totalmem() / 1024 / 1024 / 1024).toLocaleString(), " GB"),
|
|
304
|
+
" - NodeJS Version: ".concat(process.version),
|
|
305
|
+
" - Backend Server: 1 core / 1 thread",
|
|
306
|
+
" - Arguments: ",
|
|
307
|
+
" - Count: ".concat(report.count.toLocaleString()),
|
|
308
|
+
" - Threads: ".concat(report.threads.toLocaleString()),
|
|
309
|
+
" - Simultaneous: ".concat(report.simultaneous.toLocaleString()),
|
|
310
|
+
" - Started At: ".concat(new Date(report.started_at).toLocaleString()),
|
|
311
|
+
" - Total Elapsed Time: ".concat(report.elapsed_time.toLocaleString(), " ms"),
|
|
308
312
|
"",
|
|
309
|
-
"### Total",
|
|
310
313
|
writeHead(),
|
|
311
314
|
writeRow("Total", report.statistics),
|
|
312
315
|
"",
|
|
313
|
-
"
|
|
316
|
+
"## Endpoints",
|
|
314
317
|
writeHead()
|
|
315
318
|
], __read(report.endpoints
|
|
316
319
|
.slice()
|
|
@@ -319,9 +322,9 @@ var DynamicBenchmarker;
|
|
|
319
322
|
return writeRow("".concat(endpoint.method, " ").concat(endpoint.path), endpoint);
|
|
320
323
|
})), false), [
|
|
321
324
|
"",
|
|
322
|
-
"
|
|
323
|
-
"Method | Path | Count |
|
|
324
|
-
"
|
|
325
|
+
"## Failures",
|
|
326
|
+
"Method | Path | Count | Failures",
|
|
327
|
+
"-------|------|-------|----------"
|
|
325
328
|
], false), __read(report.endpoints
|
|
326
329
|
.filter(function (e) { return e.success !== e.count; })
|
|
327
330
|
.slice()
|
|
@@ -331,13 +334,13 @@ var DynamicBenchmarker;
|
|
|
331
334
|
e.method,
|
|
332
335
|
e.path,
|
|
333
336
|
e.count.toLocaleString(),
|
|
334
|
-
e.success.toLocaleString(),
|
|
337
|
+
(e.count - e.success).toLocaleString(),
|
|
335
338
|
].join(" | ");
|
|
336
339
|
})), false).join("\n");
|
|
337
340
|
};
|
|
338
341
|
var execute = function (ctx) {
|
|
339
342
|
return function (mass) { return __awaiter(_this, void 0, void 0, function () {
|
|
340
|
-
var functions,
|
|
343
|
+
var functions, entireEvents;
|
|
341
344
|
var _this = this;
|
|
342
345
|
return __generator(this, function (_a) {
|
|
343
346
|
switch (_a.label) {
|
|
@@ -350,32 +353,38 @@ var DynamicBenchmarker;
|
|
|
350
353
|
})(ctx.props.location)];
|
|
351
354
|
case 1:
|
|
352
355
|
_a.sent();
|
|
353
|
-
|
|
354
|
-
return [4 /*yield*/, Promise.all(new Array(mass.simultaneous)
|
|
356
|
+
entireEvents = [];
|
|
357
|
+
return [4 /*yield*/, Promise.all(new Array(mass.simultaneous)
|
|
358
|
+
.fill(null)
|
|
359
|
+
.map(function () { return 1; })
|
|
360
|
+
.map(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
355
361
|
var _loop_1;
|
|
356
362
|
var _this = this;
|
|
357
363
|
return __generator(this, function (_a) {
|
|
358
364
|
switch (_a.label) {
|
|
359
365
|
case 0:
|
|
360
366
|
_loop_1 = function () {
|
|
361
|
-
var
|
|
367
|
+
var localEvents, func, connection, exp_1, localEvents_1, localEvents_1_1, e;
|
|
362
368
|
var e_2, _b;
|
|
363
369
|
return __generator(this, function (_c) {
|
|
364
370
|
switch (_c.label) {
|
|
365
371
|
case 0:
|
|
366
|
-
|
|
372
|
+
localEvents = [];
|
|
367
373
|
func = functions[Math.floor(Math.random() * functions.length)];
|
|
368
|
-
connection = __assign(__assign({}, ctx.props.connection), { logger: function (
|
|
374
|
+
connection = __assign(__assign({}, ctx.props.connection), { logger: function (fe) { return __awaiter(_this, void 0, void 0, function () {
|
|
375
|
+
var be;
|
|
369
376
|
var _a, _b;
|
|
370
377
|
return __generator(this, function (_c) {
|
|
371
|
-
|
|
372
|
-
metadata:
|
|
373
|
-
status:
|
|
374
|
-
started_at:
|
|
375
|
-
repond_at: (_b = (_a =
|
|
376
|
-
completed_at:
|
|
378
|
+
be = {
|
|
379
|
+
metadata: fe.route,
|
|
380
|
+
status: fe.status,
|
|
381
|
+
started_at: fe.started_at.toISOString(),
|
|
382
|
+
repond_at: (_b = (_a = fe.respond_at) === null || _a === void 0 ? void 0 : _a.toISOString()) !== null && _b !== void 0 ? _b : null,
|
|
383
|
+
completed_at: fe.completed_at.toISOString(),
|
|
377
384
|
success: true,
|
|
378
|
-
}
|
|
385
|
+
};
|
|
386
|
+
localEvents.push(be);
|
|
387
|
+
entireEvents.push(be);
|
|
379
388
|
return [2 /*return*/];
|
|
380
389
|
});
|
|
381
390
|
}); } });
|
|
@@ -389,32 +398,29 @@ var DynamicBenchmarker;
|
|
|
389
398
|
case 3:
|
|
390
399
|
exp_1 = _c.sent();
|
|
391
400
|
try {
|
|
392
|
-
for (
|
|
393
|
-
e =
|
|
401
|
+
for (localEvents_1 = (e_2 = void 0, __values(localEvents)), localEvents_1_1 = localEvents_1.next(); !localEvents_1_1.done; localEvents_1_1 = localEvents_1.next()) {
|
|
402
|
+
e = localEvents_1_1.value;
|
|
394
403
|
e.success = e.status === 200 || e.status === 201;
|
|
395
404
|
}
|
|
396
405
|
}
|
|
397
406
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
398
407
|
finally {
|
|
399
408
|
try {
|
|
400
|
-
if (
|
|
409
|
+
if (localEvents_1_1 && !localEvents_1_1.done && (_b = localEvents_1.return)) _b.call(localEvents_1);
|
|
401
410
|
}
|
|
402
411
|
finally { if (e_2) throw e_2.error; }
|
|
403
412
|
}
|
|
404
413
|
return [3 /*break*/, 4];
|
|
405
414
|
case 4:
|
|
406
|
-
if (
|
|
407
|
-
ctx.driver
|
|
408
|
-
.progress(output.length + events.length)
|
|
409
|
-
.catch(function () { });
|
|
410
|
-
output.push.apply(output, __spreadArray([], __read(events), false));
|
|
415
|
+
if (localEvents.length !== 0)
|
|
416
|
+
ctx.driver.progress(entireEvents.length).catch(function () { });
|
|
411
417
|
return [2 /*return*/];
|
|
412
418
|
}
|
|
413
419
|
});
|
|
414
420
|
};
|
|
415
421
|
_a.label = 1;
|
|
416
422
|
case 1:
|
|
417
|
-
if (!(
|
|
423
|
+
if (!(entireEvents.length < mass.count)) return [3 /*break*/, 3];
|
|
418
424
|
return [5 /*yield**/, _loop_1()];
|
|
419
425
|
case 2:
|
|
420
426
|
_a.sent();
|
|
@@ -425,10 +431,10 @@ var DynamicBenchmarker;
|
|
|
425
431
|
}); }))];
|
|
426
432
|
case 2:
|
|
427
433
|
_a.sent();
|
|
428
|
-
return [4 /*yield*/, ctx.driver.progress(
|
|
434
|
+
return [4 /*yield*/, ctx.driver.progress(entireEvents.length)];
|
|
429
435
|
case 3:
|
|
430
436
|
_a.sent();
|
|
431
|
-
return [2 /*return*/,
|
|
437
|
+
return [2 /*return*/, entireEvents];
|
|
432
438
|
}
|
|
433
439
|
});
|
|
434
440
|
}); };
|
|
@@ -523,7 +529,7 @@ var iterate = function (ctx) {
|
|
|
523
529
|
}); };
|
|
524
530
|
};
|
|
525
531
|
var statistics = function (events) {
|
|
526
|
-
var successes = events.filter(function (event) { return event.
|
|
532
|
+
var successes = events.filter(function (event) { return event.success; });
|
|
527
533
|
return __assign({ count: events.length, success: successes.length }, average(events));
|
|
528
534
|
};
|
|
529
535
|
var average = function (events) {
|
|
@@ -540,8 +546,8 @@ var average = function (events) {
|
|
|
540
546
|
var minimum = Number.MAX_SAFE_INTEGER;
|
|
541
547
|
var maximum = Number.MIN_SAFE_INTEGER;
|
|
542
548
|
try {
|
|
543
|
-
for (var
|
|
544
|
-
var event_1 =
|
|
549
|
+
for (var events_2 = __values(events), events_2_1 = events_2.next(); !events_2_1.done; events_2_1 = events_2.next()) {
|
|
550
|
+
var event_1 = events_2_1.value;
|
|
545
551
|
var elapsed = new Date(event_1.completed_at).getTime() -
|
|
546
552
|
new Date(event_1.started_at).getTime();
|
|
547
553
|
mean += elapsed;
|
|
@@ -553,7 +559,7 @@ var average = function (events) {
|
|
|
553
559
|
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
554
560
|
finally {
|
|
555
561
|
try {
|
|
556
|
-
if (
|
|
562
|
+
if (events_2_1 && !events_2_1.done && (_a = events_2.return)) _a.call(events_2);
|
|
557
563
|
}
|
|
558
564
|
finally { if (e_5) throw e_5.error; }
|
|
559
565
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAAoB;AACpB,0CAAoB;AACpB,+BAA8D;AAC9D,6BAAqC;AAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,IAAiB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/e2e",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-dev.20240620",
|
|
4
4
|
"description": "E2E test utilify functions",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"ts-node": "^10.9.1",
|
|
39
39
|
"ts-patch": "^3.1.0",
|
|
40
40
|
"typescript": "^5.4.2",
|
|
41
|
-
"typia": "^6.1.
|
|
41
|
+
"typia": "^6.1.1"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@nestia/fetcher": "^3.2.2",
|
|
@@ -143,7 +143,8 @@ export namespace DynamicBenchmarker {
|
|
|
143
143
|
count: number;
|
|
144
144
|
threads: number;
|
|
145
145
|
simultaneous: number;
|
|
146
|
-
|
|
146
|
+
started_at: number;
|
|
147
|
+
elapsed_time: number;
|
|
147
148
|
statistics: IReport.IStatistics;
|
|
148
149
|
endpoints: Array<IReport.IEndpoint & IReport.IStatistics>;
|
|
149
150
|
}
|
|
@@ -201,7 +202,7 @@ export namespace DynamicBenchmarker {
|
|
|
201
202
|
return connector;
|
|
202
203
|
}),
|
|
203
204
|
);
|
|
204
|
-
const started_at:
|
|
205
|
+
const started_at: number = Date.now();
|
|
205
206
|
const events: IBenchmarkEvent[] = (
|
|
206
207
|
await Promise.all(
|
|
207
208
|
servants.map((connector) =>
|
|
@@ -212,7 +213,7 @@ export namespace DynamicBenchmarker {
|
|
|
212
213
|
),
|
|
213
214
|
)
|
|
214
215
|
).flat();
|
|
215
|
-
const
|
|
216
|
+
const elapsed_time: number = Date.now() - started_at;
|
|
216
217
|
await Promise.all(servants.map((connector) => connector.close()));
|
|
217
218
|
if (props.progress) props.progress(props.count);
|
|
218
219
|
|
|
@@ -235,12 +236,13 @@ export namespace DynamicBenchmarker {
|
|
|
235
236
|
count: props.count,
|
|
236
237
|
threads: props.threads,
|
|
237
238
|
simultaneous: props.simultaneous,
|
|
238
|
-
time,
|
|
239
239
|
statistics: statistics(events),
|
|
240
240
|
endpoints: [...endpoints].map((it) => ({
|
|
241
241
|
...statistics(it.second),
|
|
242
242
|
...it.first,
|
|
243
243
|
})),
|
|
244
|
+
started_at,
|
|
245
|
+
elapsed_time,
|
|
244
246
|
};
|
|
245
247
|
};
|
|
246
248
|
|
|
@@ -301,22 +303,24 @@ export namespace DynamicBenchmarker {
|
|
|
301
303
|
format(statistics.maximum),
|
|
302
304
|
].join(" | ");
|
|
303
305
|
return [
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
306
|
+
`# Benchmark Report`,
|
|
307
|
+
"> Generated by [`@nestia/e2e`](https://github.com/samchon/nestia)",
|
|
308
|
+
``,
|
|
309
|
+
` - CPU: ${os.cpus()[0].model}`,
|
|
310
|
+
` - RAM: ${Math.floor(os.totalmem() / 1024 / 1024 / 1024).toLocaleString()} GB`,
|
|
311
|
+
` - NodeJS Version: ${process.version}`,
|
|
312
|
+
` - Backend Server: 1 core / 1 thread`,
|
|
313
|
+
` - Arguments: `,
|
|
314
|
+
` - Count: ${report.count.toLocaleString()}`,
|
|
315
|
+
` - Threads: ${report.threads.toLocaleString()}`,
|
|
316
|
+
` - Simultaneous: ${report.simultaneous.toLocaleString()}`,
|
|
317
|
+
` - Started At: ${new Date(report.started_at).toLocaleString()}`,
|
|
318
|
+
` - Total Elapsed Time: ${report.elapsed_time.toLocaleString()} ms`,
|
|
319
|
+
``,
|
|
316
320
|
writeHead(),
|
|
317
321
|
writeRow("Total", report.statistics),
|
|
318
322
|
"",
|
|
319
|
-
"
|
|
323
|
+
"## Endpoints",
|
|
320
324
|
writeHead(),
|
|
321
325
|
...report.endpoints
|
|
322
326
|
.slice()
|
|
@@ -325,9 +329,9 @@ export namespace DynamicBenchmarker {
|
|
|
325
329
|
writeRow(`${endpoint.method} ${endpoint.path}`, endpoint),
|
|
326
330
|
),
|
|
327
331
|
"",
|
|
328
|
-
"
|
|
329
|
-
"Method | Path | Count |
|
|
330
|
-
"
|
|
332
|
+
"## Failures",
|
|
333
|
+
"Method | Path | Count | Failures",
|
|
334
|
+
"-------|------|-------|----------",
|
|
331
335
|
...report.endpoints
|
|
332
336
|
.filter((e) => e.success !== e.count)
|
|
333
337
|
.slice()
|
|
@@ -337,7 +341,7 @@ export namespace DynamicBenchmarker {
|
|
|
337
341
|
e.method,
|
|
338
342
|
e.path,
|
|
339
343
|
e.count.toLocaleString(),
|
|
340
|
-
e.success.toLocaleString(),
|
|
344
|
+
(e.count - e.success).toLocaleString(),
|
|
341
345
|
].join(" | "),
|
|
342
346
|
),
|
|
343
347
|
].join("\n");
|
|
@@ -359,42 +363,44 @@ export namespace DynamicBenchmarker {
|
|
|
359
363
|
props: ctx.props,
|
|
360
364
|
})(ctx.props.location);
|
|
361
365
|
|
|
362
|
-
const
|
|
366
|
+
const entireEvents: IBenchmarkEvent[] = [];
|
|
363
367
|
await Promise.all(
|
|
364
|
-
new Array(mass.simultaneous)
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
368
|
+
new Array(mass.simultaneous)
|
|
369
|
+
.fill(null)
|
|
370
|
+
.map(() => 1)
|
|
371
|
+
.map(async () => {
|
|
372
|
+
while (entireEvents.length < mass.count) {
|
|
373
|
+
const localEvents: IBenchmarkEvent[] = [];
|
|
374
|
+
const func: IFunction<Parameters> =
|
|
375
|
+
functions[Math.floor(Math.random() * functions.length)];
|
|
376
|
+
const connection: IConnection = {
|
|
377
|
+
...ctx.props.connection,
|
|
378
|
+
logger: async (fe): Promise<void> => {
|
|
379
|
+
const be: IBenchmarkEvent = {
|
|
380
|
+
metadata: fe.route,
|
|
381
|
+
status: fe.status,
|
|
382
|
+
started_at: fe.started_at.toISOString(),
|
|
383
|
+
repond_at: fe.respond_at?.toISOString() ?? null,
|
|
384
|
+
completed_at: fe.completed_at.toISOString(),
|
|
385
|
+
success: true,
|
|
386
|
+
};
|
|
387
|
+
localEvents.push(be);
|
|
388
|
+
entireEvents.push(be);
|
|
389
|
+
},
|
|
390
|
+
};
|
|
391
|
+
try {
|
|
392
|
+
await func.value(...ctx.props.parameters(connection, func.key));
|
|
393
|
+
} catch (exp) {
|
|
394
|
+
for (const e of localEvents)
|
|
395
|
+
e.success = e.status === 200 || e.status === 201;
|
|
396
|
+
}
|
|
397
|
+
if (localEvents.length !== 0)
|
|
398
|
+
ctx.driver.progress(entireEvents.length).catch(() => {});
|
|
387
399
|
}
|
|
388
|
-
|
|
389
|
-
ctx.driver
|
|
390
|
-
.progress(output.length + events.length)
|
|
391
|
-
.catch(() => {});
|
|
392
|
-
output.push(...events);
|
|
393
|
-
}
|
|
394
|
-
}),
|
|
400
|
+
}),
|
|
395
401
|
);
|
|
396
|
-
await ctx.driver.progress(
|
|
397
|
-
return
|
|
402
|
+
await ctx.driver.progress(entireEvents.length);
|
|
403
|
+
return entireEvents;
|
|
398
404
|
};
|
|
399
405
|
}
|
|
400
406
|
|
|
@@ -433,9 +439,7 @@ const iterate =
|
|
|
433
439
|
const statistics = (
|
|
434
440
|
events: IBenchmarkEvent[],
|
|
435
441
|
): DynamicBenchmarker.IReport.IStatistics => {
|
|
436
|
-
const successes: IBenchmarkEvent[] = events.filter(
|
|
437
|
-
(event) => event.status === 200 || event.status === 201,
|
|
438
|
-
);
|
|
442
|
+
const successes: IBenchmarkEvent[] = events.filter((event) => event.success);
|
|
439
443
|
return {
|
|
440
444
|
count: events.length,
|
|
441
445
|
success: successes.length,
|