@nestia/e2e 0.5.0-dev.20240617-3 → 0.5.0-dev.20240617-5

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.
@@ -2,6 +2,35 @@ import { IConnection } from "@nestia/fetcher";
2
2
  import { WorkerServer } from "tgrid";
3
3
  import { IBenchmarkMaster } from "./structures/IBenchmarkMaster";
4
4
  import { IBenchmarkServant } from "./structures/IBenchmarkServant";
5
+ /**
6
+ * Dynamic benchmark executor running prefixed functions.
7
+ *
8
+ * `DynamicBenchmarker` is composed with two programs,
9
+ * {@link DynamicBenchmarker.master} and
10
+ * {@link DynamicBenchmarker.servant servants}. The master program creates
11
+ * multiple servant programs, and the servant programs execute the prefixed
12
+ * functions in parallel. When the pre-congirued count of requests are all
13
+ * completed, the master program collects the results and returns them.
14
+ *
15
+ * Therefore, when you want to benchmark the performance of a backend server,
16
+ * you have to make two programs; one for calling the
17
+ * {@link DynamicBenchmarker.master} function, and the other for calling the
18
+ * {@link DynamicBenchmarker.servant} function. Also, never forget to write
19
+ * the path of the servant program to the
20
+ * {@link DynamicBenchmarker.IMasterProps.servant} property.
21
+ *
22
+ * Also, you when you complete the benchmark execution through the
23
+ * {@link DynamicBenchmarker.master} and {@link DynamicBenchmarker.servant}
24
+ * functions, you can convert the result to markdown content by using the
25
+ * {@link DynamicBenchmarker.markdown} function.
26
+ *
27
+ * Additionally, if you hope to see some utilization cases,
28
+ * see the below example tagged links.
29
+ *
30
+ * @example https://github.com/samchon/nestia-start/blob/master/test/benchmaark/index.ts
31
+ * @example https://github.com/samchon/backend/blob/master/test/benchmark/index.ts
32
+ * @author Jeongho Nam - https://github.com/samchon
33
+ */
5
34
  export declare namespace DynamicBenchmarker {
6
35
  /**
7
36
  * Properties of the master program.
@@ -90,7 +119,13 @@ export declare namespace DynamicBenchmarker {
90
119
  */
91
120
  parameters: (connection: IConnection, name: string) => Parameters;
92
121
  }
122
+ /**
123
+ * Benchmark report.
124
+ */
93
125
  interface IReport {
126
+ count: number;
127
+ threads: number;
128
+ simultaneous: number;
94
129
  time: number;
95
130
  statistics: IReport.IStatistics;
96
131
  endpoints: Array<IReport.IEndpoint & IReport.IStatistics>;
@@ -109,6 +144,32 @@ export declare namespace DynamicBenchmarker {
109
144
  maximum: number | null;
110
145
  }
111
146
  }
147
+ /**
148
+ * Master program.
149
+ *
150
+ * Creates a master program that executing the servant programs in parallel.
151
+ *
152
+ * Note that, {@link IMasterProps.servant} property must be the path of
153
+ * the servant program executing the {@link servant} function.
154
+ *
155
+ * @param props Properties of the master program
156
+ * @returns Benchmark report
157
+ */
112
158
  const master: (props: IMasterProps) => Promise<IReport>;
159
+ /**
160
+ * Create a servant program.
161
+ *
162
+ * Creates a servant program executing the prefixed functions in parallel.
163
+ *
164
+ * @param props Properties of the servant program
165
+ * @returns Servant program as a worker server
166
+ */
113
167
  const servant: <Parameters extends any[]>(props: IServantProps<Parameters>) => Promise<WorkerServer<null, IBenchmarkServant, IBenchmarkMaster>>;
168
+ /**
169
+ * Convert the benchmark report to markdown content.
170
+ *
171
+ * @param doc Benchmark report
172
+ * @returns Markdown content
173
+ */
174
+ const report: (doc: DynamicBenchmarker.IReport) => string;
114
175
  }
@@ -111,11 +111,52 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
111
111
  Object.defineProperty(exports, "__esModule", { value: true });
112
112
  exports.DynamicBenchmarker = void 0;
113
113
  var fs_1 = __importDefault(require("fs"));
114
+ var os_1 = __importDefault(require("os"));
114
115
  var tgrid_1 = require("tgrid");
115
116
  var tstl_1 = require("tstl");
117
+ /**
118
+ * Dynamic benchmark executor running prefixed functions.
119
+ *
120
+ * `DynamicBenchmarker` is composed with two programs,
121
+ * {@link DynamicBenchmarker.master} and
122
+ * {@link DynamicBenchmarker.servant servants}. The master program creates
123
+ * multiple servant programs, and the servant programs execute the prefixed
124
+ * functions in parallel. When the pre-congirued count of requests are all
125
+ * completed, the master program collects the results and returns them.
126
+ *
127
+ * Therefore, when you want to benchmark the performance of a backend server,
128
+ * you have to make two programs; one for calling the
129
+ * {@link DynamicBenchmarker.master} function, and the other for calling the
130
+ * {@link DynamicBenchmarker.servant} function. Also, never forget to write
131
+ * the path of the servant program to the
132
+ * {@link DynamicBenchmarker.IMasterProps.servant} property.
133
+ *
134
+ * Also, you when you complete the benchmark execution through the
135
+ * {@link DynamicBenchmarker.master} and {@link DynamicBenchmarker.servant}
136
+ * functions, you can convert the result to markdown content by using the
137
+ * {@link DynamicBenchmarker.markdown} function.
138
+ *
139
+ * Additionally, if you hope to see some utilization cases,
140
+ * see the below example tagged links.
141
+ *
142
+ * @example https://github.com/samchon/nestia-start/blob/master/test/benchmaark/index.ts
143
+ * @example https://github.com/samchon/backend/blob/master/test/benchmark/index.ts
144
+ * @author Jeongho Nam - https://github.com/samchon
145
+ */
116
146
  var DynamicBenchmarker;
117
147
  (function (DynamicBenchmarker) {
118
148
  var _this = this;
149
+ /**
150
+ * Master program.
151
+ *
152
+ * Creates a master program that executing the servant programs in parallel.
153
+ *
154
+ * Note that, {@link IMasterProps.servant} property must be the path of
155
+ * the servant program executing the {@link servant} function.
156
+ *
157
+ * @param props Properties of the master program
158
+ * @returns Benchmark report
159
+ */
119
160
  DynamicBenchmarker.master = function (props) { return __awaiter(_this, void 0, void 0, function () {
120
161
  var completes, servants, started_at, events, time, endpoints, events_1, events_1_1, e;
121
162
  var e_1, _a;
@@ -183,6 +224,9 @@ var DynamicBenchmarker;
183
224
  finally { if (e_1) throw e_1.error; }
184
225
  }
185
226
  return [2 /*return*/, {
227
+ count: props.count,
228
+ threads: props.threads,
229
+ simultaneous: props.simultaneous,
186
230
  time: time,
187
231
  statistics: statistics(events),
188
232
  endpoints: __spreadArray([], __read(endpoints), false).map(function (it) { return (__assign(__assign({}, statistics(it.second)), it.first)); }),
@@ -190,6 +234,14 @@ var DynamicBenchmarker;
190
234
  }
191
235
  });
192
236
  }); };
237
+ /**
238
+ * Create a servant program.
239
+ *
240
+ * Creates a servant program executing the prefixed functions in parallel.
241
+ *
242
+ * @param props Properties of the servant program
243
+ * @returns Servant program as a worker server
244
+ */
193
245
  DynamicBenchmarker.servant = function (props) { return __awaiter(_this, void 0, void 0, function () {
194
246
  var server;
195
247
  return __generator(this, function (_a) {
@@ -208,6 +260,81 @@ var DynamicBenchmarker;
208
260
  }
209
261
  });
210
262
  }); };
263
+ /**
264
+ * Convert the benchmark report to markdown content.
265
+ *
266
+ * @param doc Benchmark report
267
+ * @returns Markdown content
268
+ */
269
+ DynamicBenchmarker.report = function (doc) {
270
+ var format = function (value) {
271
+ return value === null ? "N/A" : (Math.floor(value * 100) / 100).toLocaleString();
272
+ };
273
+ var writeHead = function () {
274
+ return [
275
+ "Type",
276
+ "Count",
277
+ "Success",
278
+ "Mean.",
279
+ "Stdev.",
280
+ "Minimum",
281
+ "Maximum",
282
+ ].join(" | ") +
283
+ "\n" +
284
+ new Array(7).fill("----").join("|");
285
+ };
286
+ var writeRow = function (title, statistics) {
287
+ return [
288
+ title,
289
+ statistics.count.toLocaleString(),
290
+ statistics.success.toLocaleString(),
291
+ format(statistics.mean),
292
+ format(statistics.stdev),
293
+ format(statistics.minimum),
294
+ format(statistics.maximum),
295
+ ].join(" | ");
296
+ };
297
+ return __spreadArray(__spreadArray(__spreadArray([
298
+ "## Benchmark Report",
299
+ "> - CPU: ".concat(os_1.default.cpus()[0].model),
300
+ "> - RAM: ".concat(Math.floor(os_1.default.totalmem() / 1024 / 1024 / 1024).toLocaleString(), " GB"),
301
+ "> - NodeJS Version: ".concat(process.version),
302
+ "> - Backend Server: 1 core / 1 thread",
303
+ "> - Arguments: ",
304
+ "> - Count: ".concat(doc.count.toLocaleString()),
305
+ "> - Threads: ".concat(doc.threads.toLocaleString()),
306
+ "> - Simultaneous: ".concat(doc.simultaneous.toLocaleString()),
307
+ "> - Total Elapsed Time: ".concat(doc.time.toLocaleString(), " ms"),
308
+ "",
309
+ "### Total",
310
+ writeHead(),
311
+ writeRow("Total", doc.statistics),
312
+ "",
313
+ "### Endpoints",
314
+ writeHead()
315
+ ], __read(doc.endpoints
316
+ .slice()
317
+ .sort(function (a, b) { var _a, _b; return ((_a = b.mean) !== null && _a !== void 0 ? _a : 0) - ((_b = a.mean) !== null && _b !== void 0 ? _b : 0); })
318
+ .map(function (endpoint) {
319
+ return writeRow("".concat(endpoint.method, " ").concat(endpoint.path), endpoint);
320
+ })), false), [
321
+ "",
322
+ "### Failures",
323
+ "Method | Path | Count | Success",
324
+ "-------|------|-------|--------"
325
+ ], false), __read(doc.endpoints
326
+ .filter(function (e) { return e.success !== e.count; })
327
+ .slice()
328
+ .sort(function (a, b) { return b.count - a.count; })
329
+ .map(function (e) {
330
+ return [
331
+ e.method,
332
+ e.path,
333
+ e.count.toLocaleString(),
334
+ e.success.toLocaleString(),
335
+ ].join(" | ");
336
+ })), false).join("\n");
337
+ };
211
338
  var execute = function (ctx) {
212
339
  return function (mass) { return __awaiter(_this, void 0, void 0, function () {
213
340
  var functions, events;
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAAoB;AACpB,+BAA8D;AAC9D,6BAAqC;AAMrC,IAAiB,kBAAkB,CA8RlC;AA9RD,WAAiB,kBAAkB;;IAsHpB,yBAAM,GAAG,UAAO,KAAmB;;;;;;;;oBACxC,SAAS,GAAa,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAKvD,qBAAM,OAAO,CAAC,GAAG,CACrB,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAO,CAAC;;;;;;wCACxC,SAAS,GAIX,IAAI,uBAAe,CACrB,IAAI,EACJ;4CACE,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;4CACpC,QAAQ,EAAE,UAAC,OAAO;gDAChB,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;gDACvB,IAAI,KAAK,CAAC,QAAQ;oDAChB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAAE,CAAC,CAAC,CAAC,CAAC;4CACzD,CAAC;yCACF,EACD,SAAS,CACV,CAAC;wCACF,qBAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAA;;wCAA9D,SAA8D,CAAC;wCAC/D,sBAAO,SAAS,EAAC;;;6BAClB,CAAC,CACH,EAAA;;oBAzBK,QAAQ,GAIR,SAqBL;oBACK,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;oBAElC,qBAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,UAAC,SAAS;4BACrB,OAAA,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC;gCAC5B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;gCAC7C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;6BAC5D,CAAC;wBAHF,CAGE,CACH,CACF,EAAA;;oBARG,MAAM,GAAsB,CAChC,SAOC,CACF,CAAC,IAAI,EAAE;oBACF,IAAI,GAAW,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;oBACvD,qBAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,SAAS,IAAK,OAAA,SAAS,CAAC,KAAK,EAAE,EAAjB,CAAiB,CAAC,CAAC,EAAA;;oBAAjE,SAAiE,CAAC;oBAClE,IAAI,KAAK,CAAC,QAAQ;wBAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAE1C,SAAS,GACb,IAAI,cAAO,CACT,UAAC,GAAG,IAAK,OAAA,IAAA,WAAI,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAA1B,CAA0B,EACnC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAA1C,CAA0C,CACrD,CAAC;;wBACJ,KAAgB,WAAA,SAAA,MAAM,CAAA;4BAAX,CAAC;4BACV,SAAS;iCACN,IAAI,CACH;gCACE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;gCACzB,IAAI,EAAE,MAAA,CAAC,CAAC,QAAQ,CAAC,QAAQ,mCAAI,CAAC,CAAC,QAAQ,CAAC,IAAI;6BAC7C,EACD,cAAM,OAAA,EAAE,EAAF,CAAE,CACT;iCACA,IAAI,CAAC,CAAC,CAAC,CAAC;yBAAA;;;;;;;;;oBACb,sBAAO;4BACL,IAAI,MAAA;4BACJ,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC;4BAC9B,SAAS,EAAE,yBAAI,SAAS,UAAE,GAAG,CAAC,UAAC,EAAE,IAAK,OAAA,uBACjC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,GACrB,EAAE,CAAC,KAAK,EACX,EAHoC,CAGpC,CAAC;yBACJ,EAAC;;;SACH,CAAC;IAEW,0BAAO,GAAG,UACrB,KAAgC;;;;;oBAE1B,MAAM,GACV,IAAI,oBAAY,EAAE,CAAC;oBACrB,qBAAM,MAAM,CAAC,IAAI,CAAC;4BAChB,OAAO,EAAE,OAAO,CAAC;gCACf,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;gCAC1B,KAAK,OAAA;6BACN,CAAC;yBACH,CAAC,EAAA;;oBALF,SAKE,CAAC;oBACH,sBAAO,MAAM,EAAC;;;SACf,CAAC;IAEF,IAAM,OAAO,GACX,UAA2B,GAG1B;QACD,OAAA,UAAO,IAGN;;;;;;wBACO,SAAS,GAA4B,EAAE,CAAC;wBAC9C,qBAAM,OAAO,CAAC;gCACZ,UAAU,EAAE,SAAS;gCACrB,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,KAAK,EAAE,GAAG,CAAC,KAAK;6BACjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAA;;wBAJtB,SAIsB,CAAC;wBACjB,MAAM,GAAsB,EAAE,CAAC;wBAErC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,UAAO,CAAC;;;gCACpC,MAAM,CAAC,IAAI,CAAC;oCACV,QAAQ,EAAE,CAAC,CAAC,KAAK;oCACjB,MAAM,EAAE,CAAC,CAAC,MAAM;oCAChB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE;oCACtC,SAAS,EAAE,MAAA,MAAA,CAAC,CAAC,UAAU,0CAAE,WAAW,EAAE,mCAAI,IAAI;oCAC9C,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE;iCAC3C,CAAC,CAAC;;;6BACJ,CAAC;wBAEF,qBAAM,OAAO,CAAC,GAAG,CACf,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;;;;;iDACnC,CAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;4CACzB,IAAI,GAAW,MAAM,CAAC,MAAM,CAAC;4CAC7B,IAAI,GACR,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;;;;4CAExD,qBAAM,IAAI,CAAC,KAAK,OAAV,IAAI,2BACL,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,YACxD;;4CAFD,SAEC,CAAC;4CACI,OAAO,GAAW,MAAM,CAAC,MAAM,CAAC;4CACtC,IAAI,OAAO,KAAK,IAAI;gDAClB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;;;;;;;;;iCAGpD,CAAC,CACH,EAAA;;wBAhBD,SAgBC,CAAC;wBACF,qBAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAA;;wBAAxC,SAAwC,CAAC;wBACzC,sBAAO,MAAM,EAAC;;;aACf;IAzCD,CAyCC,CAAC;IAEJ,IAAM,UAAU,GAAG,UAAC,MAAyB;QAC3C,IAAM,SAAS,GAAsB,MAAM,CAAC,MAAM,CAChD,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAA5C,CAA4C,CACxD,CAAC;QACF,kBACE,KAAK,EAAE,MAAM,CAAC,MAAM,EACpB,OAAO,EAAE,SAAS,CAAC,MAAM,IACtB,OAAO,CAAC,MAAM,CAAC,EAClB;IACJ,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UACd,MAAyB;;QAEzB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,IAAI,IAAI,GAAW,CAAC,CAAC;QACrB,IAAI,KAAK,GAAW,CAAC,CAAC;QACtB,IAAI,OAAO,GAAW,MAAM,CAAC,gBAAgB,CAAC;QAC9C,IAAI,OAAO,GAAW,MAAM,CAAC,gBAAgB,CAAC;;YAC9C,KAAoB,IAAA,WAAA,SAAA,MAAM,CAAA,8BAAA,kDAAE,CAAC;gBAAxB,IAAM,OAAK,mBAAA;gBACd,IAAM,OAAO,GACX,IAAI,IAAI,CAAC,OAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;oBACtC,IAAI,IAAI,CAAC,OAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,IAAI,OAAO,CAAC;gBAChB,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC;gBAC3B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;;;;;;;;;QACD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;QACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,MAAA,EAAE,KAAK,OAAA,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC,EA9RgB,kBAAkB,kCAAlB,kBAAkB,QA8RlC;AAOD,IAAM,OAAO,GACX,UAA2B,GAI1B;IACD,OAAA,UAAO,IAAY;;;;;wBACW,qBAAM,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAA;;oBAArD,SAAS,GAAa,SAA+B;;;;oBACxC,cAAA,SAAA,SAAS,CAAA;;;;oBAAjB,IAAI;oBACP,aAAmB,UAAG,IAAI,cAAI,IAAI,CAAE,CAAC;oBACpB,qBAAM,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAQ,CAAC,EAAA;;oBAAjD,IAAI,GAAa,SAAgC;yBACnD,CAAA,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAA,EAA3B,wBAA2B;oBAAE,qBAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAQ,CAAC,EAAA;;oBAA5B,SAA4B,CAAC;;;yBACrD,CAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAA,EAA7B,yBAA6B;oBACrB,+CAAa,UAAQ,4DAAC;;oBAA/B,MAAM,GAAG,SAAsB;;;;oBACV,oBAAA,SAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAA;;;;oBAAtC,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;yBAChB,CAAA,OAAO,KAAK,KAAK,UAAU,CAAA,EAA3B,yBAA2B;oBAAE,yBAAS;;yBACjC,CAAA,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAA,EAA1C,yBAA0C;oBAAE,yBAAS;yBACpD,qBAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAA;;oBAAjC,IAAI,CAAC,SAA4B,CAAC,KAAK,KAAK;wBAAE,yBAAS;;;oBAC5D,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;wBAClB,GAAG,KAAA;wBACH,KAAK,EAAE,KAA8C;qBACtD,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAIV;AAnBD,CAmBC,CAAC"}
1
+ {"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,19 @@
1
1
  /**
2
2
  * Dynamic Executor running prefixed functions.
3
3
  *
4
- * `DynamicExecutor` runs every prefixed functions in a specific directory.
5
- * However, if you want to run only specific functions, you can use
6
- * `--include` or `--exclude` option in the CLI (Command Line Interface) level.
4
+ * `DynamicExecutor` runs every (or some filtered) prefixed functions
5
+ * in a specific directory.
7
6
  *
8
- * When you want to see example utilization cases, see the below example links.
7
+ * For reference, it's useful for test program development of a backend server.
8
+ * Just write test functions under a directory, and just specify it.
9
+ * Furthermore, if you compose e2e test programs to utilize the `@nestia/sdk`
10
+ * generated API functions, you can take advantage of {@link DynamicBenchmarker}
11
+ * at the same time.
9
12
  *
10
- * @example https://github.com/samchon/nestia-template/blob/master/src/test/index.ts
11
- * @example https://github.com/samchon/backend/blob/master/src/test/index.ts
13
+ * When you want to see some utilization cases, see the below example links.
14
+ *
15
+ * @example https://github.com/samchon/nestia-start/blob/master/test/index.ts
16
+ * @example https://github.com/samchon/backend/blob/master/test/index.ts
12
17
  * @author Jeongho Nam - https://github.com/samchon
13
18
  */
14
19
  export declare namespace DynamicExecutor {
@@ -106,14 +106,19 @@ var StopWatch_1 = require("./StopWatch");
106
106
  /**
107
107
  * Dynamic Executor running prefixed functions.
108
108
  *
109
- * `DynamicExecutor` runs every prefixed functions in a specific directory.
110
- * However, if you want to run only specific functions, you can use
111
- * `--include` or `--exclude` option in the CLI (Command Line Interface) level.
109
+ * `DynamicExecutor` runs every (or some filtered) prefixed functions
110
+ * in a specific directory.
112
111
  *
113
- * When you want to see example utilization cases, see the below example links.
112
+ * For reference, it's useful for test program development of a backend server.
113
+ * Just write test functions under a directory, and just specify it.
114
+ * Furthermore, if you compose e2e test programs to utilize the `@nestia/sdk`
115
+ * generated API functions, you can take advantage of {@link DynamicBenchmarker}
116
+ * at the same time.
114
117
  *
115
- * @example https://github.com/samchon/nestia-template/blob/master/src/test/index.ts
116
- * @example https://github.com/samchon/backend/blob/master/src/test/index.ts
118
+ * When you want to see some utilization cases, see the below example links.
119
+ *
120
+ * @example https://github.com/samchon/nestia-start/blob/master/test/index.ts
121
+ * @example https://github.com/samchon/backend/blob/master/test/index.ts
117
122
  * @author Jeongho Nam - https://github.com/samchon
118
123
  */
119
124
  var DynamicExecutor;
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.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.5.0-dev.20240617-3",
3
+ "version": "0.5.0-dev.20240617-5",
4
4
  "description": "E2E test utilify functions",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -1,5 +1,6 @@
1
1
  import { IConnection } from "@nestia/fetcher";
2
2
  import fs from "fs";
3
+ import os from "os";
3
4
  import { Driver, WorkerConnector, WorkerServer } from "tgrid";
4
5
  import { HashMap, hash } from "tstl";
5
6
 
@@ -7,6 +8,35 @@ import { IBenchmarkEvent } from "./structures/IBenchmarkEvent";
7
8
  import { IBenchmarkMaster } from "./structures/IBenchmarkMaster";
8
9
  import { IBenchmarkServant } from "./structures/IBenchmarkServant";
9
10
 
11
+ /**
12
+ * Dynamic benchmark executor running prefixed functions.
13
+ *
14
+ * `DynamicBenchmarker` is composed with two programs,
15
+ * {@link DynamicBenchmarker.master} and
16
+ * {@link DynamicBenchmarker.servant servants}. The master program creates
17
+ * multiple servant programs, and the servant programs execute the prefixed
18
+ * functions in parallel. When the pre-congirued count of requests are all
19
+ * completed, the master program collects the results and returns them.
20
+ *
21
+ * Therefore, when you want to benchmark the performance of a backend server,
22
+ * you have to make two programs; one for calling the
23
+ * {@link DynamicBenchmarker.master} function, and the other for calling the
24
+ * {@link DynamicBenchmarker.servant} function. Also, never forget to write
25
+ * the path of the servant program to the
26
+ * {@link DynamicBenchmarker.IMasterProps.servant} property.
27
+ *
28
+ * Also, you when you complete the benchmark execution through the
29
+ * {@link DynamicBenchmarker.master} and {@link DynamicBenchmarker.servant}
30
+ * functions, you can convert the result to markdown content by using the
31
+ * {@link DynamicBenchmarker.markdown} function.
32
+ *
33
+ * Additionally, if you hope to see some utilization cases,
34
+ * see the below example tagged links.
35
+ *
36
+ * @example https://github.com/samchon/nestia-start/blob/master/test/benchmaark/index.ts
37
+ * @example https://github.com/samchon/backend/blob/master/test/benchmark/index.ts
38
+ * @author Jeongho Nam - https://github.com/samchon
39
+ */
10
40
  export namespace DynamicBenchmarker {
11
41
  /**
12
42
  * Properties of the master program.
@@ -105,7 +135,14 @@ export namespace DynamicBenchmarker {
105
135
  */
106
136
  parameters: (connection: IConnection, name: string) => Parameters;
107
137
  }
138
+
139
+ /**
140
+ * Benchmark report.
141
+ */
108
142
  export interface IReport {
143
+ count: number;
144
+ threads: number;
145
+ simultaneous: number;
109
146
  time: number;
110
147
  statistics: IReport.IStatistics;
111
148
  endpoints: Array<IReport.IEndpoint & IReport.IStatistics>;
@@ -125,6 +162,17 @@ export namespace DynamicBenchmarker {
125
162
  }
126
163
  }
127
164
 
165
+ /**
166
+ * Master program.
167
+ *
168
+ * Creates a master program that executing the servant programs in parallel.
169
+ *
170
+ * Note that, {@link IMasterProps.servant} property must be the path of
171
+ * the servant program executing the {@link servant} function.
172
+ *
173
+ * @param props Properties of the master program
174
+ * @returns Benchmark report
175
+ */
128
176
  export const master = async (props: IMasterProps): Promise<IReport> => {
129
177
  const completes: number[] = new Array(props.threads).fill(0);
130
178
  const servants: WorkerConnector<
@@ -184,6 +232,9 @@ export namespace DynamicBenchmarker {
184
232
  )
185
233
  .push(e);
186
234
  return {
235
+ count: props.count,
236
+ threads: props.threads,
237
+ simultaneous: props.simultaneous,
187
238
  time,
188
239
  statistics: statistics(events),
189
240
  endpoints: [...endpoints].map((it) => ({
@@ -193,6 +244,14 @@ export namespace DynamicBenchmarker {
193
244
  };
194
245
  };
195
246
 
247
+ /**
248
+ * Create a servant program.
249
+ *
250
+ * Creates a servant program executing the prefixed functions in parallel.
251
+ *
252
+ * @param props Properties of the servant program
253
+ * @returns Servant program as a worker server
254
+ */
196
255
  export const servant = async <Parameters extends any[]>(
197
256
  props: IServantProps<Parameters>,
198
257
  ): Promise<WorkerServer<null, IBenchmarkServant, IBenchmarkMaster>> => {
@@ -207,6 +266,83 @@ export namespace DynamicBenchmarker {
207
266
  return server;
208
267
  };
209
268
 
269
+ /**
270
+ * Convert the benchmark report to markdown content.
271
+ *
272
+ * @param doc Benchmark report
273
+ * @returns Markdown content
274
+ */
275
+ export const report = (doc: DynamicBenchmarker.IReport): string => {
276
+ const format = (value: number | null) =>
277
+ value === null ? "N/A" : (Math.floor(value * 100) / 100).toLocaleString();
278
+ const writeHead = () =>
279
+ [
280
+ "Type",
281
+ "Count",
282
+ "Success",
283
+ "Mean.",
284
+ "Stdev.",
285
+ "Minimum",
286
+ "Maximum",
287
+ ].join(" | ") +
288
+ "\n" +
289
+ new Array(7).fill("----").join("|");
290
+ const writeRow = (
291
+ title: string,
292
+ statistics: DynamicBenchmarker.IReport.IStatistics,
293
+ ) =>
294
+ [
295
+ title,
296
+ statistics.count.toLocaleString(),
297
+ statistics.success.toLocaleString(),
298
+ format(statistics.mean),
299
+ format(statistics.stdev),
300
+ format(statistics.minimum),
301
+ format(statistics.maximum),
302
+ ].join(" | ");
303
+ return [
304
+ `## Benchmark Report`,
305
+ `> - CPU: ${os.cpus()[0].model}`,
306
+ `> - RAM: ${Math.floor(os.totalmem() / 1024 / 1024 / 1024).toLocaleString()} GB`,
307
+ `> - NodeJS Version: ${process.version}`,
308
+ `> - Backend Server: 1 core / 1 thread`,
309
+ `> - Arguments: `,
310
+ `> - Count: ${doc.count.toLocaleString()}`,
311
+ `> - Threads: ${doc.threads.toLocaleString()}`,
312
+ `> - Simultaneous: ${doc.simultaneous.toLocaleString()}`,
313
+ `> - Total Elapsed Time: ${doc.time.toLocaleString()} ms`,
314
+ "",
315
+ "### Total",
316
+ writeHead(),
317
+ writeRow("Total", doc.statistics),
318
+ "",
319
+ "### Endpoints",
320
+ writeHead(),
321
+ ...doc.endpoints
322
+ .slice()
323
+ .sort((a, b) => (b.mean ?? 0) - (a.mean ?? 0))
324
+ .map((endpoint) =>
325
+ writeRow(`${endpoint.method} ${endpoint.path}`, endpoint),
326
+ ),
327
+ "",
328
+ "### Failures",
329
+ "Method | Path | Count | Success",
330
+ "-------|------|-------|--------",
331
+ ...doc.endpoints
332
+ .filter((e) => e.success !== e.count)
333
+ .slice()
334
+ .sort((a, b) => b.count - a.count)
335
+ .map((e) =>
336
+ [
337
+ e.method,
338
+ e.path,
339
+ e.count.toLocaleString(),
340
+ e.success.toLocaleString(),
341
+ ].join(" | "),
342
+ ),
343
+ ].join("\n");
344
+ };
345
+
210
346
  const execute =
211
347
  <Parameters extends any[]>(ctx: {
212
348
  driver: Driver<IBenchmarkMaster>;
@@ -7,14 +7,19 @@ import { StopWatch } from "./StopWatch";
7
7
  /**
8
8
  * Dynamic Executor running prefixed functions.
9
9
  *
10
- * `DynamicExecutor` runs every prefixed functions in a specific directory.
11
- * However, if you want to run only specific functions, you can use
12
- * `--include` or `--exclude` option in the CLI (Command Line Interface) level.
10
+ * `DynamicExecutor` runs every (or some filtered) prefixed functions
11
+ * in a specific directory.
13
12
  *
14
- * When you want to see example utilization cases, see the below example links.
13
+ * For reference, it's useful for test program development of a backend server.
14
+ * Just write test functions under a directory, and just specify it.
15
+ * Furthermore, if you compose e2e test programs to utilize the `@nestia/sdk`
16
+ * generated API functions, you can take advantage of {@link DynamicBenchmarker}
17
+ * at the same time.
15
18
  *
16
- * @example https://github.com/samchon/nestia-template/blob/master/src/test/index.ts
17
- * @example https://github.com/samchon/backend/blob/master/src/test/index.ts
19
+ * When you want to see some utilization cases, see the below example links.
20
+ *
21
+ * @example https://github.com/samchon/nestia-start/blob/master/test/index.ts
22
+ * @example https://github.com/samchon/backend/blob/master/test/index.ts
18
23
  * @author Jeongho Nam - https://github.com/samchon
19
24
  */
20
25
  export namespace DynamicExecutor {