@nestia/e2e 0.4.3 → 0.5.0-dev.20240617-2
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 +1 -1
- package/lib/DynamicBenchmarker.d.ts +114 -0
- package/lib/DynamicBenchmarker.js +404 -0
- package/lib/DynamicBenchmarker.js.map +1 -0
- package/lib/TestValidator.d.ts +1 -1
- package/lib/module.d.ts +1 -0
- package/lib/module.js +1 -0
- package/lib/module.js.map +1 -1
- package/lib/structures/IBenchmarkEvent.d.ts +8 -0
- package/lib/structures/IBenchmarkEvent.js +3 -0
- package/lib/structures/IBenchmarkEvent.js.map +1 -0
- package/lib/structures/IBenchmarkMaster.d.ts +6 -0
- package/lib/structures/IBenchmarkMaster.js +3 -0
- package/lib/structures/IBenchmarkMaster.js.map +1 -0
- package/lib/structures/IBenchmarkServant.d.ts +7 -0
- package/lib/structures/IBenchmarkServant.js +3 -0
- package/lib/structures/IBenchmarkServant.js.map +1 -0
- package/package.json +4 -2
- package/src/ArrayUtil.ts +98 -98
- package/src/DynamicBenchmarker.ts +328 -0
- package/src/DynamicExecutor.ts +277 -277
- package/src/GaffComparator.ts +69 -69
- package/src/StopWatch.ts +38 -38
- package/src/index.ts +4 -4
- package/src/internal/json_equal_to.ts +34 -34
- package/src/module.ts +7 -6
- package/src/structures/IBenchmarkEvent.ts +9 -0
- package/src/structures/IBenchmarkMaster.ts +5 -0
- package/src/structures/IBenchmarkServant.ts +8 -0
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Nestia is a set of helper libraries for NestJS, supporting below features:
|
|
|
18
18
|
- `@nestia/migrate`: migration from Swagger to NestJS
|
|
19
19
|
- `nestia`: just CLI (command line interface) tool
|
|
20
20
|
|
|
21
|
-
>
|
|
21
|
+
> [!NOTE]
|
|
22
22
|
>
|
|
23
23
|
> - **Only one line** required, with pure TypeScript type
|
|
24
24
|
> - Enhance performance **30x** up
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { IConnection } from "@nestia/fetcher";
|
|
2
|
+
import { WorkerServer } from "tgrid";
|
|
3
|
+
import { IBenchmarkMaster } from "./structures/IBenchmarkMaster";
|
|
4
|
+
import { IBenchmarkServant } from "./structures/IBenchmarkServant";
|
|
5
|
+
export declare namespace DynamicBenchmarker {
|
|
6
|
+
/**
|
|
7
|
+
* Properties of the master program.
|
|
8
|
+
*/
|
|
9
|
+
interface IMasterProps {
|
|
10
|
+
/**
|
|
11
|
+
* Total count of the requests.
|
|
12
|
+
*/
|
|
13
|
+
count: number;
|
|
14
|
+
/**
|
|
15
|
+
* Number of threads.
|
|
16
|
+
*
|
|
17
|
+
* The number of threads to be executed as parallel servant.
|
|
18
|
+
*/
|
|
19
|
+
threads: number;
|
|
20
|
+
/**
|
|
21
|
+
* Number of simultaneous requests.
|
|
22
|
+
*
|
|
23
|
+
* The number of requests to be executed simultaneously.
|
|
24
|
+
*
|
|
25
|
+
* This property value would be divided by the {@link threads} in the servants.
|
|
26
|
+
*/
|
|
27
|
+
simultaneous: number;
|
|
28
|
+
/**
|
|
29
|
+
* Path of the servant program.
|
|
30
|
+
*
|
|
31
|
+
* The path of the servant program executing the
|
|
32
|
+
* {@link DynamicBenchmarker.servant} function.
|
|
33
|
+
*/
|
|
34
|
+
servant: string;
|
|
35
|
+
/**
|
|
36
|
+
* Filter function.
|
|
37
|
+
*
|
|
38
|
+
* The filter function to determine whether to execute the function in
|
|
39
|
+
* the servant or not.
|
|
40
|
+
*
|
|
41
|
+
* @param name Function name
|
|
42
|
+
* @returns Whether to execute the function or not.
|
|
43
|
+
*/
|
|
44
|
+
filter?: (name: string) => boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Progress callback function.
|
|
47
|
+
*
|
|
48
|
+
* @param complete The number of completed requests.
|
|
49
|
+
*/
|
|
50
|
+
progress?: (complete: number) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Standard I/O option.
|
|
53
|
+
*
|
|
54
|
+
* The standard I/O option for the servant programs.
|
|
55
|
+
*/
|
|
56
|
+
stdio?: undefined | "overlapped" | "pipe" | "ignore" | "inherit";
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Properties of the servant progrma.
|
|
60
|
+
*/
|
|
61
|
+
interface IServantProps<Parameters extends any[]> {
|
|
62
|
+
/**
|
|
63
|
+
* Default connection.
|
|
64
|
+
*
|
|
65
|
+
* Default connection to be used in the servant.
|
|
66
|
+
*/
|
|
67
|
+
connection: IConnection;
|
|
68
|
+
/**
|
|
69
|
+
* Location of the benchmark functions.
|
|
70
|
+
*/
|
|
71
|
+
location: string;
|
|
72
|
+
/**
|
|
73
|
+
* Prefix of the benchmark functions.
|
|
74
|
+
*
|
|
75
|
+
* Every prefixed function will be executed in the servant.
|
|
76
|
+
*
|
|
77
|
+
* In other words, if a function name doesn't start with the prefix,
|
|
78
|
+
* then it would never be executed.
|
|
79
|
+
*/
|
|
80
|
+
prefix: string;
|
|
81
|
+
/**
|
|
82
|
+
* Get parameters of a function.
|
|
83
|
+
*
|
|
84
|
+
* When composing the parameters, never forget to copy the
|
|
85
|
+
* {@link IConnection.logger} property of default connection to the
|
|
86
|
+
* returning parameters.
|
|
87
|
+
*
|
|
88
|
+
* @param name Function name
|
|
89
|
+
* @param connection Default connection instance
|
|
90
|
+
*/
|
|
91
|
+
parameters: (name: string, connection: IConnection) => Parameters;
|
|
92
|
+
}
|
|
93
|
+
interface IReport {
|
|
94
|
+
time: number;
|
|
95
|
+
statistics: IReport.IStatistics;
|
|
96
|
+
endpoints: Array<IReport.IEndpoint & IReport.IStatistics>;
|
|
97
|
+
}
|
|
98
|
+
namespace IReport {
|
|
99
|
+
interface IEndpoint {
|
|
100
|
+
method: string;
|
|
101
|
+
path: string;
|
|
102
|
+
}
|
|
103
|
+
interface IStatistics {
|
|
104
|
+
count: number;
|
|
105
|
+
success: number;
|
|
106
|
+
mean: number | null;
|
|
107
|
+
stdev: number | null;
|
|
108
|
+
minimum: number | null;
|
|
109
|
+
maximum: number | null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const master: (props: IMasterProps) => Promise<IReport>;
|
|
113
|
+
const servant: <Parameters extends any[]>(props: IServantProps<Parameters>) => Promise<WorkerServer<null, IBenchmarkServant, IBenchmarkMaster>>;
|
|
114
|
+
}
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
+
function step(op) {
|
|
50
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
53
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
+
switch (op[0]) {
|
|
55
|
+
case 0: case 1: t = op; break;
|
|
56
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
+
default:
|
|
60
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
+
if (t[2]) _.ops.pop();
|
|
65
|
+
_.trys.pop(); continue;
|
|
66
|
+
}
|
|
67
|
+
op = body.call(thisArg, _);
|
|
68
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
var __values = (this && this.__values) || function(o) {
|
|
73
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
74
|
+
if (m) return m.call(o);
|
|
75
|
+
if (o && typeof o.length === "number") return {
|
|
76
|
+
next: function () {
|
|
77
|
+
if (o && i >= o.length) o = void 0;
|
|
78
|
+
return { value: o && o[i++], done: !o };
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
82
|
+
};
|
|
83
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
84
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
85
|
+
if (!m) return o;
|
|
86
|
+
var i = m.call(o), r, ar = [], e;
|
|
87
|
+
try {
|
|
88
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
89
|
+
}
|
|
90
|
+
catch (error) { e = { error: error }; }
|
|
91
|
+
finally {
|
|
92
|
+
try {
|
|
93
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
94
|
+
}
|
|
95
|
+
finally { if (e) throw e.error; }
|
|
96
|
+
}
|
|
97
|
+
return ar;
|
|
98
|
+
};
|
|
99
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
100
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
101
|
+
if (ar || !(i in from)) {
|
|
102
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
103
|
+
ar[i] = from[i];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
107
|
+
};
|
|
108
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
109
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
110
|
+
};
|
|
111
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
112
|
+
exports.DynamicBenchmarker = void 0;
|
|
113
|
+
var fs_1 = __importDefault(require("fs"));
|
|
114
|
+
var tgrid_1 = require("tgrid");
|
|
115
|
+
var tstl_1 = require("tstl");
|
|
116
|
+
var DynamicBenchmarker;
|
|
117
|
+
(function (DynamicBenchmarker) {
|
|
118
|
+
var _this = this;
|
|
119
|
+
DynamicBenchmarker.master = function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
120
|
+
var completes, servants, started_at, events, time, endpoints, events_1, events_1_1, e;
|
|
121
|
+
var e_1, _a;
|
|
122
|
+
var _this = this;
|
|
123
|
+
var _b;
|
|
124
|
+
return __generator(this, function (_c) {
|
|
125
|
+
switch (_c.label) {
|
|
126
|
+
case 0:
|
|
127
|
+
completes = new Array(props.threads).fill(0);
|
|
128
|
+
return [4 /*yield*/, Promise.all(new Array(props.threads).fill(null).map(function (i) { return __awaiter(_this, void 0, void 0, function () {
|
|
129
|
+
var connector;
|
|
130
|
+
var _a;
|
|
131
|
+
return __generator(this, function (_b) {
|
|
132
|
+
switch (_b.label) {
|
|
133
|
+
case 0:
|
|
134
|
+
connector = new tgrid_1.WorkerConnector(null, {
|
|
135
|
+
filter: (_a = props.filter) !== null && _a !== void 0 ? _a : (function () { return true; }),
|
|
136
|
+
progress: function (current) {
|
|
137
|
+
completes[i] = current;
|
|
138
|
+
if (props.progress)
|
|
139
|
+
props.progress(completes.reduce(function (a, b) { return a + b; }, 0));
|
|
140
|
+
},
|
|
141
|
+
}, "process");
|
|
142
|
+
return [4 /*yield*/, connector.connect(props.servant, { stdio: props.stdio })];
|
|
143
|
+
case 1:
|
|
144
|
+
_b.sent();
|
|
145
|
+
return [2 /*return*/, connector];
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}); }))];
|
|
149
|
+
case 1:
|
|
150
|
+
servants = _c.sent();
|
|
151
|
+
started_at = new Date();
|
|
152
|
+
return [4 /*yield*/, Promise.all(servants.map(function (connector) {
|
|
153
|
+
return connector.getDriver().execute({
|
|
154
|
+
count: Math.ceil(props.count / props.threads),
|
|
155
|
+
simultaneous: Math.ceil(props.simultaneous / props.threads),
|
|
156
|
+
});
|
|
157
|
+
}))];
|
|
158
|
+
case 2:
|
|
159
|
+
events = (_c.sent()).flat();
|
|
160
|
+
time = Date.now() - started_at.getTime();
|
|
161
|
+
return [4 /*yield*/, Promise.all(servants.map(function (connector) { return connector.close(); }))];
|
|
162
|
+
case 3:
|
|
163
|
+
_c.sent();
|
|
164
|
+
if (props.progress)
|
|
165
|
+
props.progress(props.count);
|
|
166
|
+
endpoints = new tstl_1.HashMap(function (key) { return (0, tstl_1.hash)(key.method, key.path); }, function (x, y) { return x.method === y.method && x.path === y.path; });
|
|
167
|
+
try {
|
|
168
|
+
for (events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {
|
|
169
|
+
e = events_1_1.value;
|
|
170
|
+
endpoints
|
|
171
|
+
.take({
|
|
172
|
+
method: e.metadata.method,
|
|
173
|
+
path: (_b = e.metadata.template) !== null && _b !== void 0 ? _b : e.metadata.path,
|
|
174
|
+
}, function () { return []; })
|
|
175
|
+
.push(e);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
179
|
+
finally {
|
|
180
|
+
try {
|
|
181
|
+
if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);
|
|
182
|
+
}
|
|
183
|
+
finally { if (e_1) throw e_1.error; }
|
|
184
|
+
}
|
|
185
|
+
return [2 /*return*/, {
|
|
186
|
+
time: time,
|
|
187
|
+
statistics: statistics(events),
|
|
188
|
+
endpoints: __spreadArray([], __read(endpoints), false).map(function (it) { return (__assign(__assign({}, statistics(it.second)), it.first)); }),
|
|
189
|
+
}];
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}); };
|
|
193
|
+
DynamicBenchmarker.servant = function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
194
|
+
var server;
|
|
195
|
+
return __generator(this, function (_a) {
|
|
196
|
+
switch (_a.label) {
|
|
197
|
+
case 0:
|
|
198
|
+
server = new tgrid_1.WorkerServer();
|
|
199
|
+
return [4 /*yield*/, server.open({
|
|
200
|
+
execute: execute({
|
|
201
|
+
driver: server.getDriver(),
|
|
202
|
+
props: props,
|
|
203
|
+
}),
|
|
204
|
+
})];
|
|
205
|
+
case 1:
|
|
206
|
+
_a.sent();
|
|
207
|
+
return [2 /*return*/, server];
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}); };
|
|
211
|
+
var execute = function (ctx) {
|
|
212
|
+
return function (mass) { return __awaiter(_this, void 0, void 0, function () {
|
|
213
|
+
var functions, events;
|
|
214
|
+
var _this = this;
|
|
215
|
+
return __generator(this, function (_a) {
|
|
216
|
+
switch (_a.label) {
|
|
217
|
+
case 0:
|
|
218
|
+
functions = [];
|
|
219
|
+
return [4 /*yield*/, iterate({
|
|
220
|
+
collection: functions,
|
|
221
|
+
driver: ctx.driver,
|
|
222
|
+
props: ctx.props,
|
|
223
|
+
})(ctx.props.location)];
|
|
224
|
+
case 1:
|
|
225
|
+
_a.sent();
|
|
226
|
+
events = [];
|
|
227
|
+
ctx.props.connection.logger = function (e) { return __awaiter(_this, void 0, void 0, function () {
|
|
228
|
+
var _a, _b;
|
|
229
|
+
return __generator(this, function (_c) {
|
|
230
|
+
events.push({
|
|
231
|
+
metadata: e.route,
|
|
232
|
+
status: e.status,
|
|
233
|
+
started_at: e.started_at.toISOString(),
|
|
234
|
+
repond_at: (_b = (_a = e.respond_at) === null || _a === void 0 ? void 0 : _a.toISOString()) !== null && _b !== void 0 ? _b : null,
|
|
235
|
+
completed_at: e.completed_at.toISOString(),
|
|
236
|
+
});
|
|
237
|
+
return [2 /*return*/];
|
|
238
|
+
});
|
|
239
|
+
}); };
|
|
240
|
+
return [4 /*yield*/, Promise.all(new Array(mass.simultaneous).fill(null).map(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
241
|
+
var prev, func, current, _a;
|
|
242
|
+
return __generator(this, function (_b) {
|
|
243
|
+
switch (_b.label) {
|
|
244
|
+
case 0:
|
|
245
|
+
if (!(events.length < mass.count)) return [3 /*break*/, 5];
|
|
246
|
+
prev = events.length;
|
|
247
|
+
func = functions[Math.floor(Math.random() * functions.length)];
|
|
248
|
+
_b.label = 1;
|
|
249
|
+
case 1:
|
|
250
|
+
_b.trys.push([1, 3, , 4]);
|
|
251
|
+
return [4 /*yield*/, func.value.apply(func, __spreadArray([], __read(ctx.props.parameters(func.key, ctx.props.connection)), false))];
|
|
252
|
+
case 2:
|
|
253
|
+
_b.sent();
|
|
254
|
+
current = events.length;
|
|
255
|
+
if (current !== prev)
|
|
256
|
+
ctx.driver.progress(current).catch(function () { });
|
|
257
|
+
return [3 /*break*/, 4];
|
|
258
|
+
case 3:
|
|
259
|
+
_a = _b.sent();
|
|
260
|
+
return [3 /*break*/, 4];
|
|
261
|
+
case 4: return [3 /*break*/, 0];
|
|
262
|
+
case 5: return [2 /*return*/];
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}); }))];
|
|
266
|
+
case 2:
|
|
267
|
+
_a.sent();
|
|
268
|
+
return [4 /*yield*/, ctx.driver.progress(events.length)];
|
|
269
|
+
case 3:
|
|
270
|
+
_a.sent();
|
|
271
|
+
return [2 /*return*/, events];
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
}); };
|
|
275
|
+
};
|
|
276
|
+
var statistics = function (events) {
|
|
277
|
+
var successes = events.filter(function (event) { return event.status === 200 || event.status === 201; });
|
|
278
|
+
return __assign({ count: events.length, success: successes.length }, average(events));
|
|
279
|
+
};
|
|
280
|
+
var average = function (events) {
|
|
281
|
+
var e_2, _a;
|
|
282
|
+
if (events.length === 0)
|
|
283
|
+
return {
|
|
284
|
+
mean: null,
|
|
285
|
+
stdev: null,
|
|
286
|
+
minimum: null,
|
|
287
|
+
maximum: null,
|
|
288
|
+
};
|
|
289
|
+
var mean = 0;
|
|
290
|
+
var stdev = 0;
|
|
291
|
+
var minimum = Number.MAX_SAFE_INTEGER;
|
|
292
|
+
var maximum = Number.MIN_SAFE_INTEGER;
|
|
293
|
+
try {
|
|
294
|
+
for (var events_2 = __values(events), events_2_1 = events_2.next(); !events_2_1.done; events_2_1 = events_2.next()) {
|
|
295
|
+
var event_1 = events_2_1.value;
|
|
296
|
+
var elapsed = new Date(event_1.completed_at).getTime() -
|
|
297
|
+
new Date(event_1.started_at).getTime();
|
|
298
|
+
mean += elapsed;
|
|
299
|
+
stdev += elapsed * elapsed;
|
|
300
|
+
minimum = Math.min(minimum, elapsed);
|
|
301
|
+
maximum = Math.max(maximum, elapsed);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
305
|
+
finally {
|
|
306
|
+
try {
|
|
307
|
+
if (events_2_1 && !events_2_1.done && (_a = events_2.return)) _a.call(events_2);
|
|
308
|
+
}
|
|
309
|
+
finally { if (e_2) throw e_2.error; }
|
|
310
|
+
}
|
|
311
|
+
mean /= events.length;
|
|
312
|
+
stdev = Math.sqrt(stdev / events.length - mean * mean);
|
|
313
|
+
return { mean: mean, stdev: stdev, minimum: minimum, maximum: maximum };
|
|
314
|
+
};
|
|
315
|
+
})(DynamicBenchmarker || (exports.DynamicBenchmarker = DynamicBenchmarker = {}));
|
|
316
|
+
var iterate = function (ctx) {
|
|
317
|
+
return function (path) { return __awaiter(void 0, void 0, void 0, function () {
|
|
318
|
+
var directory, directory_1, directory_1_1, file, location_1, stat, modulo, _a, _b, _c, key, value, e_3_1, e_4_1;
|
|
319
|
+
var e_4, _d, e_3, _e;
|
|
320
|
+
return __generator(this, function (_f) {
|
|
321
|
+
switch (_f.label) {
|
|
322
|
+
case 0: return [4 /*yield*/, fs_1.default.promises.readdir(path)];
|
|
323
|
+
case 1:
|
|
324
|
+
directory = _f.sent();
|
|
325
|
+
_f.label = 2;
|
|
326
|
+
case 2:
|
|
327
|
+
_f.trys.push([2, 20, 21, 22]);
|
|
328
|
+
directory_1 = __values(directory), directory_1_1 = directory_1.next();
|
|
329
|
+
_f.label = 3;
|
|
330
|
+
case 3:
|
|
331
|
+
if (!!directory_1_1.done) return [3 /*break*/, 19];
|
|
332
|
+
file = directory_1_1.value;
|
|
333
|
+
location_1 = "".concat(path, "/").concat(file);
|
|
334
|
+
return [4 /*yield*/, fs_1.default.promises.stat(location_1)];
|
|
335
|
+
case 4:
|
|
336
|
+
stat = _f.sent();
|
|
337
|
+
if (!(stat.isDirectory() === true)) return [3 /*break*/, 6];
|
|
338
|
+
return [4 /*yield*/, iterate(ctx)(location_1)];
|
|
339
|
+
case 5:
|
|
340
|
+
_f.sent();
|
|
341
|
+
return [3 /*break*/, 18];
|
|
342
|
+
case 6:
|
|
343
|
+
if (!(file.endsWith(".js") === true)) return [3 /*break*/, 18];
|
|
344
|
+
return [4 /*yield*/, Promise.resolve("".concat(location_1)).then(function (s) { return __importStar(require(s)); })];
|
|
345
|
+
case 7:
|
|
346
|
+
modulo = _f.sent();
|
|
347
|
+
_f.label = 8;
|
|
348
|
+
case 8:
|
|
349
|
+
_f.trys.push([8, 16, 17, 18]);
|
|
350
|
+
_a = (e_3 = void 0, __values(Object.entries(modulo))), _b = _a.next();
|
|
351
|
+
_f.label = 9;
|
|
352
|
+
case 9:
|
|
353
|
+
if (!!_b.done) return [3 /*break*/, 15];
|
|
354
|
+
_c = __read(_b.value, 2), key = _c[0], value = _c[1];
|
|
355
|
+
if (!(typeof value !== "function")) return [3 /*break*/, 10];
|
|
356
|
+
return [3 /*break*/, 14];
|
|
357
|
+
case 10:
|
|
358
|
+
if (!(key.startsWith(ctx.props.prefix) === false)) return [3 /*break*/, 11];
|
|
359
|
+
return [3 /*break*/, 14];
|
|
360
|
+
case 11: return [4 /*yield*/, ctx.driver.filter(key)];
|
|
361
|
+
case 12:
|
|
362
|
+
if ((_f.sent()) === false)
|
|
363
|
+
return [3 /*break*/, 14];
|
|
364
|
+
_f.label = 13;
|
|
365
|
+
case 13:
|
|
366
|
+
ctx.collection.push({
|
|
367
|
+
key: key,
|
|
368
|
+
value: value,
|
|
369
|
+
});
|
|
370
|
+
_f.label = 14;
|
|
371
|
+
case 14:
|
|
372
|
+
_b = _a.next();
|
|
373
|
+
return [3 /*break*/, 9];
|
|
374
|
+
case 15: return [3 /*break*/, 18];
|
|
375
|
+
case 16:
|
|
376
|
+
e_3_1 = _f.sent();
|
|
377
|
+
e_3 = { error: e_3_1 };
|
|
378
|
+
return [3 /*break*/, 18];
|
|
379
|
+
case 17:
|
|
380
|
+
try {
|
|
381
|
+
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
382
|
+
}
|
|
383
|
+
finally { if (e_3) throw e_3.error; }
|
|
384
|
+
return [7 /*endfinally*/];
|
|
385
|
+
case 18:
|
|
386
|
+
directory_1_1 = directory_1.next();
|
|
387
|
+
return [3 /*break*/, 3];
|
|
388
|
+
case 19: return [3 /*break*/, 22];
|
|
389
|
+
case 20:
|
|
390
|
+
e_4_1 = _f.sent();
|
|
391
|
+
e_4 = { error: e_4_1 };
|
|
392
|
+
return [3 /*break*/, 22];
|
|
393
|
+
case 21:
|
|
394
|
+
try {
|
|
395
|
+
if (directory_1_1 && !directory_1_1.done && (_d = directory_1.return)) _d.call(directory_1);
|
|
396
|
+
}
|
|
397
|
+
finally { if (e_4) throw e_4.error; }
|
|
398
|
+
return [7 /*endfinally*/];
|
|
399
|
+
case 22: return [2 /*return*/];
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}); };
|
|
403
|
+
};
|
|
404
|
+
//# sourceMappingURL=DynamicBenchmarker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":"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"}
|
package/lib/TestValidator.d.ts
CHANGED
|
@@ -81,7 +81,7 @@ export declare namespace TestValidator {
|
|
|
81
81
|
* @param title Title of error message when sorting is invalid
|
|
82
82
|
* @example https://github.com/samchon/nestia-template/blob/master/src/test/features/api/bbs/test_api_bbs_article_index_sort.ts
|
|
83
83
|
*/
|
|
84
|
-
const sort: (title: string) => <T extends object, Fields extends string, Sortable extends (`-${Fields}` | `+${Fields}`)[] = (`-${Fields}` | `+${Fields}`)[]>(getter: (sortable: Sortable) => Promise<T[]>) => (...fields: Fields[]) => (comp: (x: T, y: T) => number, filter?: (
|
|
84
|
+
const sort: (title: string) => <T extends object, Fields extends string, Sortable extends (`-${Fields}` | `+${Fields}`)[] = (`-${Fields}` | `+${Fields}`)[]>(getter: (sortable: Sortable) => Promise<T[]>) => (...fields: Fields[]) => (comp: (x: T, y: T) => number, filter?: (elem: T) => boolean) => (direction: "+" | "-", trace?: boolean) => Promise<void>;
|
|
85
85
|
type Sortable<Literal extends string> = Array<`-${Literal}` | `+${Literal}`>;
|
|
86
86
|
}
|
|
87
87
|
interface IEntity<Type extends string | number | bigint> {
|
package/lib/module.d.ts
CHANGED
package/lib/module.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./ArrayUtil"), exports);
|
|
18
|
+
__exportStar(require("./DynamicBenchmarker"), exports);
|
|
18
19
|
__exportStar(require("./DynamicExecutor"), exports);
|
|
19
20
|
__exportStar(require("./GaffComparator"), exports);
|
|
20
21
|
__exportStar(require("./RandomGenerator"), exports);
|
package/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC;AAClC,mDAAiC;AACjC,oDAAkC;AAClC,8CAA4B;AAC5B,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,uDAAqC;AACrC,oDAAkC;AAClC,mDAAiC;AACjC,oDAAkC;AAClC,8CAA4B;AAC5B,kDAAgC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBenchmarkEvent.js","sourceRoot":"","sources":["../../src/structures/IBenchmarkEvent.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBenchmarkMaster.js","sourceRoot":"","sources":["../../src/structures/IBenchmarkMaster.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBenchmarkServant.js","sourceRoot":"","sources":["../../src/structures/IBenchmarkServant.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/e2e",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-dev.20240617-2",
|
|
4
4
|
"description": "E2E test utilify functions",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -38,11 +38,13 @@
|
|
|
38
38
|
"ts-node": "^10.9.1",
|
|
39
39
|
"ts-patch": "^3.1.0",
|
|
40
40
|
"typescript": "^5.4.2",
|
|
41
|
-
"typia": "^
|
|
41
|
+
"typia": "^6.1.0"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
+
"@nestia/fetcher": "^3.2.2",
|
|
44
45
|
"chalk": "^4.1.2",
|
|
45
46
|
"cli": "^1.0.1",
|
|
47
|
+
"tgrid": "^1.0.1",
|
|
46
48
|
"tstl": "^3.0.0"
|
|
47
49
|
},
|
|
48
50
|
"files": [
|