@gent-js/gent 0.1.4 → 0.1.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.
- package/README.md +9 -4
- package/dist/generated/packageEnv.d.ts +4 -3
- package/dist/generated/packageEnv.js +4 -3
- package/dist/generated/packageEnv.js.map +1 -1
- package/dist/src/consts.d.ts +6 -5
- package/dist/src/consts.js +5 -4
- package/dist/src/consts.js.map +1 -1
- package/dist/src/createGeneratingDocumentStream.d.ts +2 -2
- package/dist/src/createGeneratingDocumentStream.js +5 -19
- package/dist/src/createGeneratingDocumentStream.js.map +1 -1
- package/dist/src/documentTransformStream.d.ts +19 -0
- package/dist/src/documentTransformStream.js +118 -0
- package/dist/src/documentTransformStream.js.map +1 -0
- package/dist/src/documentTransformTypes.d.ts +25 -0
- package/dist/src/documentTransformTypes.js +2 -0
- package/dist/src/documentTransformTypes.js.map +1 -0
- package/dist/src/output/initializeOutput.js +2 -2
- package/dist/src/output/initializeOutput.js.map +1 -1
- package/dist/src/output/tcpDocumentStream.js.map +1 -1
- package/dist/src/output/udpDocumentStream.d.ts +4 -6
- package/dist/src/output/udpDocumentStream.js +14 -9
- package/dist/src/output/udpDocumentStream.js.map +1 -1
- package/dist/src/run.js +51 -2
- package/dist/src/run.js.map +1 -1
- package/dist/src/template/documentTransformStream.d.ts +19 -0
- package/dist/src/template/documentTransformStream.js +118 -0
- package/dist/src/template/documentTransformStream.js.map +1 -0
- package/dist/src/template/documentTransformTypes.d.ts +25 -0
- package/dist/src/template/documentTransformTypes.js +2 -0
- package/dist/src/template/documentTransformTypes.js.map +1 -0
- package/dist/src/types.d.ts +5 -5
- package/dist/src/utils.d.ts +2 -2
- package/dist/src/utils.js +4 -3
- package/dist/src/utils.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/createGeneratingLogStream.d.ts +0 -4
- package/dist/src/createGeneratingLogStream.js +0 -21
- package/dist/src/createGeneratingLogStream.js.map +0 -1
- package/dist/src/output/createUdpOutput.d.ts +0 -3
- package/dist/src/output/createUdpOutput.js +0 -5
- package/dist/src/output/createUdpOutput.js.map +0 -1
- package/dist/src/output/updStream.d.ts +0 -17
- package/dist/src/output/updStream.js +0 -78
- package/dist/src/output/updStream.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# GenT
|
|
2
2
|
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+
|
|
3
8
|
## Introduction
|
|
4
9
|
|
|
5
|
-
GenT is a template-based
|
|
10
|
+
GenT is a template-based data generator. The generated data is used as test data for software that process such data. You can define data format with a simple text file (referred to as a "template") and obtain the output as text file. It means that both input and output are non-programing interfaces. These features are particularly useful as test data in end-to-end testing situations, rather than in Unit testing.
|
|
6
11
|
|
|
7
12
|
## Features
|
|
8
13
|
|
|
@@ -20,15 +25,15 @@ GenT is a template-based dummy text data generator. The generated data is used a
|
|
|
20
25
|
|
|
21
26
|
## Quick Start
|
|
22
27
|
|
|
28
|
+
> [!NOTE]
|
|
29
|
+
> This quick start explains the steps how to use GenT as shell cli application. If you are looking for how to use as a dependency or how to develop, see other sections.
|
|
30
|
+
|
|
23
31
|
install with npm globally.
|
|
24
32
|
|
|
25
33
|
```shell
|
|
26
34
|
npm install -g gent
|
|
27
35
|
```
|
|
28
36
|
|
|
29
|
-
> [!NOTE]
|
|
30
|
-
> This quick start explains the steps how to use GenT as shell cli application. If you are looking for how to use as a dependency or how to develop, see other sections.
|
|
31
|
-
|
|
32
37
|
Then, create a template. Save the following content as a text file in any directory, for instance `{dir path}/template.log`.
|
|
33
38
|
|
|
34
39
|
```text
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const packageEnv: {
|
|
2
|
-
readonly
|
|
3
|
-
readonly
|
|
4
|
-
readonly
|
|
2
|
+
readonly fullName: "@gent-js/gent";
|
|
3
|
+
readonly name: "gent";
|
|
4
|
+
readonly version: "0.1.5";
|
|
5
|
+
readonly description: "template-based data generator.";
|
|
5
6
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// generated codes about package environmental information.
|
|
2
2
|
export const packageEnv = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
fullName: "@gent-js/gent",
|
|
4
|
+
name: "gent",
|
|
5
|
+
version: "0.1.5",
|
|
6
|
+
description: "template-based data generator."
|
|
6
7
|
};
|
|
7
8
|
//# sourceMappingURL=packageEnv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageEnv.js","sourceRoot":"","sources":["../../generated/packageEnv.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG;
|
|
1
|
+
{"version":3,"file":"packageEnv.js","sourceRoot":"","sources":["../../generated/packageEnv.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,gCAAgC;CACvC,CAAC"}
|
package/dist/src/consts.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NonTransparentFramingMethod, TcpFramingMethod } from "./types.js";
|
|
2
2
|
export declare const DEFAULT_TEMPLATE_WEIGHT = 1;
|
|
3
3
|
export declare const TemplateModes: readonly ["text", "json"];
|
|
4
4
|
export declare const NetworkOutputTypes: readonly ["udp", "tcp"];
|
|
5
5
|
export declare const OutputTypes: readonly ["file", "udp", "tcp"];
|
|
6
6
|
export declare const DefaultEps = 3000;
|
|
7
|
+
export declare const MaxEps: number;
|
|
7
8
|
export declare const OctetCounting: "octet-counting";
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
9
|
+
export declare const NonTransparentFramingMethods: readonly ["lf"];
|
|
10
|
+
export declare const TcpFramingMethods: readonly ["octet-counting", "lf"];
|
|
11
|
+
export declare const DefaultTcpFramingMethod: TcpFramingMethod;
|
|
11
12
|
export declare const DefaultTrailerReplacer: " ";
|
|
12
13
|
export declare const TrailerMap: {
|
|
13
|
-
[Key in
|
|
14
|
+
[Key in NonTransparentFramingMethod]: string;
|
|
14
15
|
};
|
package/dist/src/consts.js
CHANGED
|
@@ -3,13 +3,14 @@ export const TemplateModes = ["text", "json"];
|
|
|
3
3
|
export const NetworkOutputTypes = ["udp", "tcp"];
|
|
4
4
|
export const OutputTypes = ["file", ...NetworkOutputTypes];
|
|
5
5
|
export const DefaultEps = 3000;
|
|
6
|
+
export const MaxEps = Number.MAX_SAFE_INTEGER;
|
|
6
7
|
export const OctetCounting = "octet-counting";
|
|
7
|
-
export const
|
|
8
|
-
export const
|
|
8
|
+
export const NonTransparentFramingMethods = ["lf"];
|
|
9
|
+
export const TcpFramingMethods = [
|
|
9
10
|
OctetCounting,
|
|
10
|
-
...
|
|
11
|
+
...NonTransparentFramingMethods,
|
|
11
12
|
];
|
|
12
|
-
export const
|
|
13
|
+
export const DefaultTcpFramingMethod = "lf";
|
|
13
14
|
export const DefaultTrailerReplacer = " ";
|
|
14
15
|
export const TrailerMap = {
|
|
15
16
|
lf: "\n",
|
package/dist/src/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAU,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAU,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAyB,CAAC;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAI,CAAU,CAAC;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,aAAa;IACb,GAAG,4BAA4B;CACvB,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAqB,IAAI,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAY,CAAC;AACnD,MAAM,CAAC,MAAM,UAAU,GAAqD;IAC1E,EAAE,EAAE,IAAI;CACA,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as stream from "node:stream";
|
|
2
2
|
import { WeightedItemFeeder } from "./common/weightedItemFeeder.js";
|
|
3
3
|
import { type DocumentContent } from "./document/index.js";
|
|
4
|
-
export declare function createGeneratingDocumentStream(documentFeeder: WeightedItemFeeder<DocumentContent>, count: number
|
|
4
|
+
export declare function createGeneratingDocumentStream(documentFeeder: WeightedItemFeeder<DocumentContent>, count: number): stream.Readable;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as stream from "node:stream";
|
|
2
2
|
import { createDocumentContextIterator, GeneratingDocument, } from "./document/index.js";
|
|
3
|
-
export function createGeneratingDocumentStream(documentFeeder, count
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
return Readable.from(generate(documentFeeder, count), {
|
|
11
|
-
objectMode: false,
|
|
12
|
-
});
|
|
13
|
-
}
|
|
3
|
+
export function createGeneratingDocumentStream(documentFeeder, count) {
|
|
4
|
+
return stream.Readable.from(generateGeneratingDocument(documentFeeder, count), {
|
|
5
|
+
objectMode: true,
|
|
6
|
+
});
|
|
14
7
|
}
|
|
15
8
|
function* generateGeneratingDocument(documentFeeder, count) {
|
|
16
9
|
const documentContextIterator = createDocumentContextIterator(count);
|
|
@@ -23,11 +16,4 @@ function* generateGeneratingDocument(documentFeeder, count) {
|
|
|
23
16
|
yield new GeneratingDocument(document, context);
|
|
24
17
|
}
|
|
25
18
|
}
|
|
26
|
-
function* generate(documentFeeder, count) {
|
|
27
|
-
const generatingDocumentIterator = generateGeneratingDocument(documentFeeder, count);
|
|
28
|
-
for (let generatingDocument of generatingDocumentIterator) {
|
|
29
|
-
const output = generatingDocument.stamp();
|
|
30
|
-
yield output + "\n";
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
19
|
//# sourceMappingURL=createGeneratingDocumentStream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGeneratingDocumentStream.js","sourceRoot":"","sources":["../../src/createGeneratingDocumentStream.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createGeneratingDocumentStream.js","sourceRoot":"","sources":["../../src/createGeneratingDocumentStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EACL,6BAA6B,EAE7B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,8BAA8B,CAC5C,cAAmD,EACnD,KAAa;IAEb,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CACzB,0BAA0B,CAAC,cAAc,EAAE,KAAK,CAAC,EACjD;QACE,UAAU,EAAE,IAAI;KACjB,CACF,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,CAAC,0BAA0B,CAClC,cAAmD,EACnD,KAAa;IAEb,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACrE,KAAK,IAAI,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC5C,IAAI,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpC,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as stream from "node:stream";
|
|
2
|
+
import type { DocumentTransformOptions } from "./documentTransformTypes.js";
|
|
3
|
+
export declare class DocumentTransformStream extends stream.Transform {
|
|
4
|
+
private readonly documentTransformer;
|
|
5
|
+
private readonly timeWindow;
|
|
6
|
+
private readonly numOfEventPerTimeWindow;
|
|
7
|
+
private readonly timeWindowIntervalTimeout;
|
|
8
|
+
private numOfEventInCurrentTimeWindow;
|
|
9
|
+
private pendingTransformTasks;
|
|
10
|
+
private nThTimeWindow;
|
|
11
|
+
private totalNumOfEvent;
|
|
12
|
+
constructor(options: DocumentTransformOptions, debug?: boolean);
|
|
13
|
+
private debugReport;
|
|
14
|
+
_transform(chunk: any, encoding: BufferEncoding, callback: stream.TransformCallback): void;
|
|
15
|
+
_flush(callback: stream.TransformCallback): void;
|
|
16
|
+
private __transformDocument;
|
|
17
|
+
private __flushPendingTransformTasks;
|
|
18
|
+
private __clearWindowInternal;
|
|
19
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import * as stream from "node:stream";
|
|
3
|
+
import { GeneratingDocument } from "./document/index.js";
|
|
4
|
+
const Per1000Window = 1000;
|
|
5
|
+
const Per100Window = 100;
|
|
6
|
+
export class DocumentTransformStream extends stream.Transform {
|
|
7
|
+
documentTransformer;
|
|
8
|
+
timeWindow;
|
|
9
|
+
numOfEventPerTimeWindow;
|
|
10
|
+
timeWindowIntervalTimeout;
|
|
11
|
+
numOfEventInCurrentTimeWindow;
|
|
12
|
+
pendingTransformTasks = [];
|
|
13
|
+
nThTimeWindow = 0;
|
|
14
|
+
totalNumOfEvent = 0;
|
|
15
|
+
constructor(options, debug = false) {
|
|
16
|
+
super({
|
|
17
|
+
highWaterMark: 0,
|
|
18
|
+
objectMode: true,
|
|
19
|
+
});
|
|
20
|
+
const transformMode = options.transformMode;
|
|
21
|
+
if (transformMode === "object") {
|
|
22
|
+
this.documentTransformer = undefined;
|
|
23
|
+
}
|
|
24
|
+
else if (transformMode === "buffer") {
|
|
25
|
+
const framing = options.framing;
|
|
26
|
+
if (framing === "octet-counting") {
|
|
27
|
+
this.documentTransformer = transformDocumentIntoOctetCountingBuffer;
|
|
28
|
+
}
|
|
29
|
+
else if (framing === "non-transparent") {
|
|
30
|
+
this.documentTransformer = createNonTransparentDocumentTransformer(options.trailer, options.trailerReplacer);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
throw new Error(`Unexpected framingMethod: ${framing}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new Error(`Unexpected transferMode: ${transformMode}`);
|
|
38
|
+
}
|
|
39
|
+
if (options.eps < Per100Window) {
|
|
40
|
+
this.timeWindow = Per1000Window;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.timeWindow = Per100Window;
|
|
44
|
+
}
|
|
45
|
+
this.numOfEventPerTimeWindow = Math.ceil(options.eps * (this.timeWindow / 1000));
|
|
46
|
+
this.numOfEventInCurrentTimeWindow = 0;
|
|
47
|
+
this.timeWindowIntervalTimeout = setInterval(() => {
|
|
48
|
+
this.__flushPendingTransformTasks();
|
|
49
|
+
if (debug) {
|
|
50
|
+
this.debugReport();
|
|
51
|
+
}
|
|
52
|
+
this.numOfEventInCurrentTimeWindow = 0;
|
|
53
|
+
}, this.timeWindow);
|
|
54
|
+
}
|
|
55
|
+
debugReport() {
|
|
56
|
+
this.totalNumOfEvent =
|
|
57
|
+
this.totalNumOfEvent + this.numOfEventInCurrentTimeWindow;
|
|
58
|
+
this.nThTimeWindow = this.nThTimeWindow + 1;
|
|
59
|
+
console.log(`[${this.nThTimeWindow}] => ${this.numOfEventInCurrentTimeWindow}/${this.totalNumOfEvent}`);
|
|
60
|
+
}
|
|
61
|
+
_transform(chunk, encoding, callback) {
|
|
62
|
+
if (!(chunk instanceof GeneratingDocument)) {
|
|
63
|
+
callback(new Error(`Unexpected chunk type(${typeof chunk}). Cannot process any chunk type except Document.`));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (this.numOfEventInCurrentTimeWindow < this.numOfEventPerTimeWindow) {
|
|
67
|
+
this.numOfEventInCurrentTimeWindow =
|
|
68
|
+
this.numOfEventInCurrentTimeWindow + 1;
|
|
69
|
+
this.__transformDocument(chunk, encoding, callback);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.pendingTransformTasks.push([chunk, encoding, callback]);
|
|
73
|
+
}
|
|
74
|
+
_flush(callback) {
|
|
75
|
+
this.__flushPendingTransformTasks();
|
|
76
|
+
this.__clearWindowInternal();
|
|
77
|
+
callback();
|
|
78
|
+
}
|
|
79
|
+
__transformDocument(document, encoding, callback) {
|
|
80
|
+
const documentTransformer = this.documentTransformer;
|
|
81
|
+
if (documentTransformer === undefined) {
|
|
82
|
+
callback(null, document);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const bufferArray = documentTransformer(document, encoding);
|
|
86
|
+
bufferArray.forEach((buffer) => this.push(buffer, encoding));
|
|
87
|
+
callback();
|
|
88
|
+
}
|
|
89
|
+
__flushPendingTransformTasks() {
|
|
90
|
+
const tasks = this.pendingTransformTasks;
|
|
91
|
+
this.pendingTransformTasks = [];
|
|
92
|
+
tasks.forEach(([document, encoding, callback]) => this.__transformDocument(document, encoding, callback));
|
|
93
|
+
}
|
|
94
|
+
__clearWindowInternal() {
|
|
95
|
+
clearInterval(this.timeWindowIntervalTimeout);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const SP = " ";
|
|
99
|
+
function transformDocumentIntoOctetCountingBuffer(document, encoding) {
|
|
100
|
+
const outputString = document.stamp();
|
|
101
|
+
const messageBuf8 = Buffer.from(outputString, encoding);
|
|
102
|
+
const lengthCount = messageBuf8.length.toString();
|
|
103
|
+
const lengthBuf8 = Buffer.from(lengthCount + SP, encoding);
|
|
104
|
+
return [lengthBuf8, messageBuf8];
|
|
105
|
+
}
|
|
106
|
+
function createNonTransparentDocumentTransformer(trailer, trailerReplacer) {
|
|
107
|
+
return (document, encoding) => {
|
|
108
|
+
let outputString = document.stamp();
|
|
109
|
+
if (trailerReplacer !== undefined) {
|
|
110
|
+
outputString = outputString.replaceAll(trailer, trailerReplacer);
|
|
111
|
+
}
|
|
112
|
+
return [
|
|
113
|
+
Buffer.from(outputString, encoding),
|
|
114
|
+
Buffer.from(trailer, encoding),
|
|
115
|
+
];
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=documentTransformStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentTransformStream.js","sourceRoot":"","sources":["../../src/documentTransformStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type TransformMode = "object" | "buffer";
|
|
2
|
+
interface PrimitiveDocumentTransformOptions {
|
|
3
|
+
readonly transformMode: TransformMode;
|
|
4
|
+
readonly eps: number;
|
|
5
|
+
}
|
|
6
|
+
export interface DocumentObjectTransformOptions extends PrimitiveDocumentTransformOptions {
|
|
7
|
+
readonly transformMode: "object";
|
|
8
|
+
}
|
|
9
|
+
export type FramingMethod = "octet-counting" | "non-transparent";
|
|
10
|
+
interface DocumentBufferTransformOptions extends PrimitiveDocumentTransformOptions {
|
|
11
|
+
readonly transformMode: "buffer";
|
|
12
|
+
readonly framing: FramingMethod;
|
|
13
|
+
}
|
|
14
|
+
export interface DocumentOctetCountingTransformOptions extends DocumentBufferTransformOptions {
|
|
15
|
+
readonly transformMode: "buffer";
|
|
16
|
+
readonly framing: "octet-counting";
|
|
17
|
+
}
|
|
18
|
+
export interface DocumentNonTransparentTransformOptions extends DocumentBufferTransformOptions {
|
|
19
|
+
readonly transformMode: "buffer";
|
|
20
|
+
readonly framing: "non-transparent";
|
|
21
|
+
readonly trailer: string;
|
|
22
|
+
readonly trailerReplacer: string | undefined;
|
|
23
|
+
}
|
|
24
|
+
export type DocumentTransformOptions = DocumentObjectTransformOptions | DocumentOctetCountingTransformOptions | DocumentNonTransparentTransformOptions;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentTransformTypes.js","sourceRoot":"","sources":["../../src/documentTransformTypes.ts"],"names":[],"mappings":""}
|
|
@@ -3,7 +3,7 @@ import * as fsPromises from "node:fs/promises";
|
|
|
3
3
|
import * as nodePath from "node:path";
|
|
4
4
|
import { assertNever } from "../utils.js";
|
|
5
5
|
import { createFileOutput } from "./createFileOutput.js";
|
|
6
|
-
import {
|
|
6
|
+
import { createTcpOutput } from "./createTcpOutput.js";
|
|
7
7
|
import { UdpDocumentStream } from "./udpDocumentStream.js";
|
|
8
8
|
export async function initializeOutput(outputOptions) {
|
|
9
9
|
// region clean dir
|
|
@@ -24,7 +24,7 @@ export async function initializeOutput(outputOptions) {
|
|
|
24
24
|
return new UdpDocumentStream(outputOptions);
|
|
25
25
|
}
|
|
26
26
|
else if (outputOptions.type === "tcp") {
|
|
27
|
-
return
|
|
27
|
+
return createTcpOutput(outputOptions);
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
30
|
return assertNever(outputOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeOutput.js","sourceRoot":"","sources":["../../../src/output/initializeOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"initializeOutput.js","sourceRoot":"","sources":["../../../src/output/initializeOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAA4B;IAE5B,mBAAmB;IAEnB,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAElD,MAAM,yBAAyB,GAAG,CAAC,gBAAwB,EAAE,EAAE;QAC7D,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,gBAAgB,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QACnE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1E,MAAM,oBAAoB,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,UAAU,CACpE,IAAI,EACJ,GAAG,CACJ,CAAC;IAEF,MAAM,cAAc,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,CAAC;IAEpE,YAAY;IAEZ,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO,gBAAgB,CACrB,mBAAmB,EACnB,aAAa,CAAC,IAAI,EAClB,yBAAyB,CAC1B,CAAC;IACJ,CAAC;SAAM,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxC,OAAO,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxC,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAG,SAAmB;IAClD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpDocumentStream.js","sourceRoot":"","sources":["../../../src/output/tcpDocumentStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,EAAE,GAAG,GAAY,CAAC;AAExB,MAAM,OAAO,iBAAkB,SAAQ,wBAAwB;IAC5C,OAAO,CAAS;IAChB,IAAI,CAAS;IACb,OAAO,
|
|
1
|
+
{"version":3,"file":"tcpDocumentStream.js","sourceRoot":"","sources":["../../../src/output/tcpDocumentStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as stream from "node:stream";
|
|
2
2
|
import type { UdpOutputOptions } from "../types.js";
|
|
3
|
-
|
|
4
|
-
export declare class UdpDocumentStream extends ThrottlingDocumentStream {
|
|
3
|
+
export declare class UdpDocumentStream extends stream.Writable {
|
|
5
4
|
private readonly address;
|
|
6
5
|
private readonly port;
|
|
7
6
|
private socketType;
|
|
8
7
|
constructor(options: UdpOutputOptions);
|
|
9
8
|
_construct(callback: (error?: Error | null) => void): void;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
protected _throttledDestroy(error: Error | null, callback: (error?: Error | null) => void): void;
|
|
9
|
+
_write(chunk: unknown, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
10
|
+
_final(callback: (error?: Error | null) => void): void;
|
|
13
11
|
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import * as dgram from "node:dgram";
|
|
2
2
|
import * as dnsPromises from "node:dns/promises";
|
|
3
|
-
import
|
|
4
|
-
|
|
3
|
+
import * as stream from "node:stream";
|
|
4
|
+
import { GeneratingDocument } from "../document/index.js";
|
|
5
|
+
export class UdpDocumentStream extends stream.Writable {
|
|
5
6
|
address;
|
|
6
7
|
port;
|
|
7
8
|
socketType;
|
|
8
9
|
constructor(options) {
|
|
9
|
-
super(
|
|
10
|
+
super({
|
|
11
|
+
highWaterMark: 0,
|
|
12
|
+
objectMode: true,
|
|
13
|
+
});
|
|
10
14
|
this.address = options.address;
|
|
11
15
|
this.port = options.port;
|
|
12
16
|
}
|
|
@@ -21,14 +25,18 @@ export class UdpDocumentStream extends ThrottlingDocumentStream {
|
|
|
21
25
|
})
|
|
22
26
|
.catch((reason) => callback(reason));
|
|
23
27
|
}
|
|
24
|
-
|
|
28
|
+
_write(chunk, encoding, callback) {
|
|
29
|
+
if (!(chunk instanceof GeneratingDocument)) {
|
|
30
|
+
callback(new Error(`Unexpected chunk type(${typeof chunk}). Cannot process any chunk type except Document.`));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
25
33
|
const socketType = this.socketType;
|
|
26
34
|
if (socketType === undefined) {
|
|
27
35
|
callback(new Error("called write before socketType has not been determined."));
|
|
28
36
|
return;
|
|
29
37
|
}
|
|
30
38
|
const client = dgram.createSocket(socketType);
|
|
31
|
-
client.send(chunk.stamp(), this.port, this.address, (error) => {
|
|
39
|
+
client.send(chunk.stamp(), this.port, this.address, (error, bytes) => {
|
|
32
40
|
client.close();
|
|
33
41
|
if (error !== null) {
|
|
34
42
|
callback(error);
|
|
@@ -37,11 +45,8 @@ export class UdpDocumentStream extends ThrottlingDocumentStream {
|
|
|
37
45
|
callback();
|
|
38
46
|
});
|
|
39
47
|
}
|
|
40
|
-
|
|
48
|
+
_final(callback) {
|
|
41
49
|
callback();
|
|
42
50
|
}
|
|
43
|
-
_throttledDestroy(error, callback) {
|
|
44
|
-
callback(error);
|
|
45
|
-
}
|
|
46
51
|
}
|
|
47
52
|
//# sourceMappingURL=udpDocumentStream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udpDocumentStream.js","sourceRoot":"","sources":["../../../src/output/udpDocumentStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"udpDocumentStream.js","sourceRoot":"","sources":["../../../src/output/udpDocumentStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,QAAQ;IACnC,OAAO,CAAS;IAChB,IAAI,CAAS;IAEtB,UAAU,CAA+B;IAEjD,YAAY,OAAyB;QACnC,KAAK,CAAC;YACJ,aAAa,EAAE,CAAC;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAEe,UAAU,CAAC,QAAwC;QACjE,WAAW;aACR,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC;aACD,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/D,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;IAEe,MAAM,CACpB,KAAc,EACd,QAAwB,EACxB,QAAwC;QAExC,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAkB,CAAC,EAAE,CAAC;YAC3C,QAAQ,CACN,IAAI,KAAK,CACP,yBAAyB,OAAO,KAAK,mDAAmD,CACzF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,QAAQ,CACN,IAAI,KAAK,CAAC,yDAAyD,CAAC,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,KAAK,EAAE,EACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,CAAC,KAAmB,EAAE,KAAa,EAAQ,EAAE;YAC3C,MAAM,CAAC,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,QAAQ,EAAE,CAAC;QACb,CAAC,CACF,CAAC;IACJ,CAAC;IAEe,MAAM,CAAC,QAAwC;QAC7D,QAAQ,EAAE,CAAC;IACb,CAAC;CACF"}
|
package/dist/src/run.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as fsPromises from "node:fs/promises";
|
|
3
3
|
import * as nodePath from "node:path";
|
|
4
|
+
import * as stream from "node:stream";
|
|
4
5
|
import { FAILED, SUCCEEDED } from "./cliConsts.js";
|
|
5
6
|
import { commandManager } from "./command/index.js";
|
|
7
|
+
import { MaxEps, TrailerMap } from "./consts.js";
|
|
6
8
|
import { createDocumentFeeder } from "./createDocumentFeeder.js";
|
|
7
9
|
import { createGeneratingDocumentStream } from "./createGeneratingDocumentStream.js";
|
|
8
10
|
import { debugFileWriter } from "./debugFileWriter.js";
|
|
9
11
|
import { initializeOutput } from "./output/initializeOutput.js";
|
|
12
|
+
import { DocumentTransformStream } from "./documentTransformStream.js";
|
|
10
13
|
import "./command/commands/index.js";
|
|
11
14
|
export async function run(programOptions) {
|
|
12
15
|
const { debug, count, out, templates } = programOptions;
|
|
@@ -47,9 +50,55 @@ export async function run(programOptions) {
|
|
|
47
50
|
}
|
|
48
51
|
// endregion
|
|
49
52
|
const documentFeeder = await createDocumentFeeder(templates, programOptions, commandManager);
|
|
50
|
-
const documentStream = createGeneratingDocumentStream(documentFeeder, count, out.type !== "file");
|
|
51
53
|
const writeStream = await initializeOutput(out);
|
|
52
|
-
|
|
54
|
+
let documentTransformOptions;
|
|
55
|
+
if (out.type === "file") {
|
|
56
|
+
documentTransformOptions = {
|
|
57
|
+
transformMode: "buffer",
|
|
58
|
+
eps: MaxEps,
|
|
59
|
+
framing: "non-transparent",
|
|
60
|
+
trailer: "\n",
|
|
61
|
+
trailerReplacer: undefined,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
else if (out.type === "udp") {
|
|
65
|
+
documentTransformOptions = {
|
|
66
|
+
transformMode: "object",
|
|
67
|
+
eps: out.eps,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
else if (out.type === "tcp") {
|
|
71
|
+
if (out.framing === "octet-counting") {
|
|
72
|
+
documentTransformOptions = {
|
|
73
|
+
transformMode: "buffer",
|
|
74
|
+
eps: out.eps,
|
|
75
|
+
framing: "octet-counting",
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else if (out.framing === "lf") {
|
|
79
|
+
const trailer = TrailerMap[out.framing];
|
|
80
|
+
documentTransformOptions = {
|
|
81
|
+
transformMode: "buffer",
|
|
82
|
+
eps: out.eps,
|
|
83
|
+
framing: "non-transparent",
|
|
84
|
+
trailer: trailer,
|
|
85
|
+
trailerReplacer: out.trailerReplacer,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
throw new Error(`Unexpected out options: ${out}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
throw new Error(`Unexpected out options: ${out}`);
|
|
94
|
+
}
|
|
95
|
+
const documentTransformStream = new DocumentTransformStream(documentTransformOptions, true);
|
|
96
|
+
const documentStream = createGeneratingDocumentStream(documentFeeder, count);
|
|
97
|
+
stream.pipeline(documentStream, documentTransformStream, writeStream, (error) => {
|
|
98
|
+
if (error !== null) {
|
|
99
|
+
console.error(error);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
53
102
|
return SUCCEEDED;
|
|
54
103
|
}
|
|
55
104
|
//# sourceMappingURL=run.js.map
|
package/dist/src/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as stream from "node:stream";
|
|
2
|
+
import type { DocumentTransformOptions } from "./documentTransformTypes.js";
|
|
3
|
+
export declare class DocumentTransformStream extends stream.Transform {
|
|
4
|
+
private readonly documentTransformer;
|
|
5
|
+
private readonly timeWindow;
|
|
6
|
+
private readonly numOfEventPerTimeWindow;
|
|
7
|
+
private readonly timeWindowIntervalTimeout;
|
|
8
|
+
private numOfEventInCurrentTimeWindow;
|
|
9
|
+
private pendingTransformTasks;
|
|
10
|
+
private nThTimeWindow;
|
|
11
|
+
private totalNumOfEvent;
|
|
12
|
+
constructor(options: DocumentTransformOptions, debug?: boolean);
|
|
13
|
+
private debugReport;
|
|
14
|
+
_transform(chunk: any, encoding: BufferEncoding, callback: stream.TransformCallback): void;
|
|
15
|
+
_flush(callback: stream.TransformCallback): void;
|
|
16
|
+
private __transformDocument;
|
|
17
|
+
private __flushPendingTransformTasks;
|
|
18
|
+
private __clearWindowInternal;
|
|
19
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import * as stream from "node:stream";
|
|
3
|
+
import { GeneratingDocument } from "../document/index.js";
|
|
4
|
+
const Per1000Window = 1000;
|
|
5
|
+
const Per100Window = 100;
|
|
6
|
+
export class DocumentTransformStream extends stream.Transform {
|
|
7
|
+
documentTransformer;
|
|
8
|
+
timeWindow;
|
|
9
|
+
numOfEventPerTimeWindow;
|
|
10
|
+
timeWindowIntervalTimeout;
|
|
11
|
+
numOfEventInCurrentTimeWindow;
|
|
12
|
+
pendingTransformTasks = [];
|
|
13
|
+
nThTimeWindow = 0;
|
|
14
|
+
totalNumOfEvent = 0;
|
|
15
|
+
constructor(options, debug = false) {
|
|
16
|
+
super({
|
|
17
|
+
highWaterMark: 0,
|
|
18
|
+
objectMode: true,
|
|
19
|
+
});
|
|
20
|
+
const transformMode = options.transformMode;
|
|
21
|
+
if (transformMode === "object") {
|
|
22
|
+
this.documentTransformer = undefined;
|
|
23
|
+
}
|
|
24
|
+
else if (transformMode === "buffer") {
|
|
25
|
+
const framing = options.framing;
|
|
26
|
+
if (framing === "octet-counting") {
|
|
27
|
+
this.documentTransformer = transformDocumentIntoOctetCountingBuffer;
|
|
28
|
+
}
|
|
29
|
+
else if (framing === "non-transparent") {
|
|
30
|
+
this.documentTransformer = createNonTransparentDocumentTransformer(options.trailer, options.trailerReplacer);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
throw new Error(`Unexpected framingMethod: ${framing}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new Error(`Unexpected transferMode: ${transformMode}`);
|
|
38
|
+
}
|
|
39
|
+
if (options.eps < Per100Window) {
|
|
40
|
+
this.timeWindow = Per1000Window;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.timeWindow = Per100Window;
|
|
44
|
+
}
|
|
45
|
+
this.numOfEventPerTimeWindow = Math.ceil(options.eps * (this.timeWindow / 1000));
|
|
46
|
+
this.numOfEventInCurrentTimeWindow = 0;
|
|
47
|
+
this.timeWindowIntervalTimeout = setInterval(() => {
|
|
48
|
+
this.__flushPendingTransformTasks();
|
|
49
|
+
if (debug) {
|
|
50
|
+
this.debugReport();
|
|
51
|
+
}
|
|
52
|
+
this.numOfEventInCurrentTimeWindow = 0;
|
|
53
|
+
}, this.timeWindow);
|
|
54
|
+
}
|
|
55
|
+
debugReport() {
|
|
56
|
+
this.totalNumOfEvent =
|
|
57
|
+
this.totalNumOfEvent + this.numOfEventInCurrentTimeWindow;
|
|
58
|
+
this.nThTimeWindow = this.nThTimeWindow + 1;
|
|
59
|
+
console.log(`[${this.nThTimeWindow}] => ${this.numOfEventInCurrentTimeWindow}/${this.totalNumOfEvent}`);
|
|
60
|
+
}
|
|
61
|
+
_transform(chunk, encoding, callback) {
|
|
62
|
+
if (!(chunk instanceof GeneratingDocument)) {
|
|
63
|
+
callback(new Error(`Unexpected chunk type(${typeof chunk}). Cannot process any chunk type except Document.`));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (this.numOfEventInCurrentTimeWindow < this.numOfEventPerTimeWindow) {
|
|
67
|
+
this.numOfEventInCurrentTimeWindow =
|
|
68
|
+
this.numOfEventInCurrentTimeWindow + 1;
|
|
69
|
+
this.__transformDocument(chunk, encoding, callback);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.pendingTransformTasks.push([chunk, encoding, callback]);
|
|
73
|
+
}
|
|
74
|
+
_flush(callback) {
|
|
75
|
+
this.__flushPendingTransformTasks();
|
|
76
|
+
this.__clearWindowInternal();
|
|
77
|
+
callback();
|
|
78
|
+
}
|
|
79
|
+
__transformDocument(document, encoding, callback) {
|
|
80
|
+
const documentTransformer = this.documentTransformer;
|
|
81
|
+
if (documentTransformer === undefined) {
|
|
82
|
+
callback(null, document);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const bufferArray = documentTransformer(document, encoding);
|
|
86
|
+
bufferArray.forEach((buffer) => this.push(buffer, encoding));
|
|
87
|
+
callback();
|
|
88
|
+
}
|
|
89
|
+
__flushPendingTransformTasks() {
|
|
90
|
+
const tasks = this.pendingTransformTasks;
|
|
91
|
+
this.pendingTransformTasks = [];
|
|
92
|
+
tasks.forEach(([document, encoding, callback]) => this.__transformDocument(document, encoding, callback));
|
|
93
|
+
}
|
|
94
|
+
__clearWindowInternal() {
|
|
95
|
+
clearInterval(this.timeWindowIntervalTimeout);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const SP = " ";
|
|
99
|
+
function transformDocumentIntoOctetCountingBuffer(document, encoding) {
|
|
100
|
+
const outputString = document.stamp();
|
|
101
|
+
const messageBuf8 = Buffer.from(outputString, encoding);
|
|
102
|
+
const lengthCount = messageBuf8.length.toString();
|
|
103
|
+
const lengthBuf8 = Buffer.from(lengthCount + SP, encoding);
|
|
104
|
+
return [lengthBuf8, messageBuf8];
|
|
105
|
+
}
|
|
106
|
+
function createNonTransparentDocumentTransformer(trailer, trailerReplacer) {
|
|
107
|
+
return (document, encoding) => {
|
|
108
|
+
let outputString = document.stamp();
|
|
109
|
+
if (trailerReplacer !== undefined) {
|
|
110
|
+
outputString = outputString.replaceAll(trailer, trailerReplacer);
|
|
111
|
+
}
|
|
112
|
+
return [
|
|
113
|
+
Buffer.from(outputString, encoding),
|
|
114
|
+
Buffer.from(trailer, encoding),
|
|
115
|
+
];
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=documentTransformStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentTransformStream.js","sourceRoot":"","sources":["../../../src/template/documentTransformStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type TransformMode = "object" | "buffer";
|
|
2
|
+
interface PrimitiveDocumentTransformOptions {
|
|
3
|
+
readonly transformMode: TransformMode;
|
|
4
|
+
readonly eps: number;
|
|
5
|
+
}
|
|
6
|
+
export interface DocumentObjectTransformOptions extends PrimitiveDocumentTransformOptions {
|
|
7
|
+
readonly transformMode: "object";
|
|
8
|
+
}
|
|
9
|
+
export type FramingMethod = "octet-counting" | "non-transparent";
|
|
10
|
+
interface DocumentBufferTransformOptions extends PrimitiveDocumentTransformOptions {
|
|
11
|
+
readonly transformMode: "buffer";
|
|
12
|
+
readonly framing: FramingMethod;
|
|
13
|
+
}
|
|
14
|
+
export interface DocumentOctetCountingTransformOptions extends DocumentBufferTransformOptions {
|
|
15
|
+
readonly transformMode: "buffer";
|
|
16
|
+
readonly framing: "octet-counting";
|
|
17
|
+
}
|
|
18
|
+
export interface DocumentNonTransparentTransformOptions extends DocumentBufferTransformOptions {
|
|
19
|
+
readonly transformMode: "buffer";
|
|
20
|
+
readonly framing: "non-transparent";
|
|
21
|
+
readonly trailer: string;
|
|
22
|
+
readonly trailerReplacer: string | undefined;
|
|
23
|
+
}
|
|
24
|
+
export type DocumentTransformOptions = DocumentObjectTransformOptions | DocumentOctetCountingTransformOptions | DocumentNonTransparentTransformOptions;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentTransformTypes.js","sourceRoot":"","sources":["../../../src/template/documentTransformTypes.ts"],"names":[],"mappings":""}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NetworkOutputTypes,
|
|
1
|
+
import type { NetworkOutputTypes, NonTransparentFramingMethods, OutputTypes, TcpFramingMethods, TemplateModes } from "./consts.js";
|
|
2
2
|
export interface TypeTaggedStructure {
|
|
3
3
|
readonly type: string;
|
|
4
4
|
}
|
|
@@ -49,11 +49,11 @@ interface NetworkOutputOptions extends PrimitiveOutputOptions {
|
|
|
49
49
|
export interface UdpOutputOptions extends NetworkOutputOptions {
|
|
50
50
|
readonly type: "udp";
|
|
51
51
|
}
|
|
52
|
-
export type
|
|
53
|
-
export type
|
|
52
|
+
export type NonTransparentFramingMethod = (typeof NonTransparentFramingMethods)[number];
|
|
53
|
+
export type TcpFramingMethod = (typeof TcpFramingMethods)[number];
|
|
54
54
|
interface PrimitiveTcpOutputOptions extends NetworkOutputOptions {
|
|
55
55
|
readonly type: "tcp";
|
|
56
|
-
readonly framing:
|
|
56
|
+
readonly framing: TcpFramingMethod;
|
|
57
57
|
}
|
|
58
58
|
interface TcpOctetCountingOutputOptions extends PrimitiveTcpOutputOptions {
|
|
59
59
|
readonly type: "tcp";
|
|
@@ -61,7 +61,7 @@ interface TcpOctetCountingOutputOptions extends PrimitiveTcpOutputOptions {
|
|
|
61
61
|
}
|
|
62
62
|
interface TcpNonFramingOutputOptions extends PrimitiveTcpOutputOptions {
|
|
63
63
|
readonly type: "tcp";
|
|
64
|
-
readonly framing:
|
|
64
|
+
readonly framing: NonTransparentFramingMethod;
|
|
65
65
|
readonly trailerReplacer: string;
|
|
66
66
|
}
|
|
67
67
|
export type TcpOutputOptions = TcpOctetCountingOutputOptions | TcpNonFramingOutputOptions;
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { NetworkOutputType, OutputType, ProgramOptions,
|
|
1
|
+
import type { NetworkOutputType, OutputType, ProgramOptions, TcpFramingMethod, TemplateMode } from "./types.js";
|
|
2
2
|
export declare function isString(value: unknown): value is string;
|
|
3
3
|
export declare function isNonNullObject(value: unknown): value is Record<string, unknown>;
|
|
4
4
|
export declare function isTemplateMode(value: unknown): value is TemplateMode;
|
|
5
5
|
export declare function isOutputType(value: unknown): value is OutputType;
|
|
6
6
|
export declare function isNetworkOutputType(value: unknown): value is NetworkOutputType;
|
|
7
|
-
export declare function isTcpFramingType(value: unknown): value is
|
|
7
|
+
export declare function isTcpFramingType(value: unknown): value is TcpFramingMethod;
|
|
8
8
|
export declare function parseString(value: unknown): string | undefined;
|
|
9
9
|
export declare function parseNonNaNInteger(value: unknown): number | undefined;
|
|
10
10
|
export declare function parseNonNaNFloat(value: unknown): number | undefined;
|
package/dist/src/utils.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as fs from "node:fs";
|
|
|
2
2
|
import * as fsPromises from "node:fs/promises";
|
|
3
3
|
import * as nodePath from "node:path";
|
|
4
4
|
import { normalizeWeight } from "./common/weightedItemFeeder.js";
|
|
5
|
-
import { DEFAULT_TEMPLATE_WEIGHT, DefaultEps,
|
|
5
|
+
import { DEFAULT_TEMPLATE_WEIGHT, DefaultEps, DefaultTcpFramingMethod, DefaultTrailerReplacer, NetworkOutputTypes, OutputTypes, TcpFramingMethods, TemplateModes, } from "./consts.js";
|
|
6
6
|
// region type guards
|
|
7
7
|
export function isString(value) {
|
|
8
8
|
return typeof value === "string";
|
|
@@ -38,7 +38,7 @@ export function isTcpFramingType(value) {
|
|
|
38
38
|
if (typeof value !== "string") {
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
|
-
const candidates =
|
|
41
|
+
const candidates = TcpFramingMethods;
|
|
42
42
|
return candidates.includes(value);
|
|
43
43
|
}
|
|
44
44
|
// endregion
|
|
@@ -245,7 +245,8 @@ function normalizeOutputOptions(possibleOutputOptions, basePath) {
|
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
247
|
else if (possibleType === "tcp") {
|
|
248
|
-
const possibleFraming = parseString(possibleOutputOptions["framing"]) ??
|
|
248
|
+
const possibleFraming = parseString(possibleOutputOptions["framing"]) ??
|
|
249
|
+
DefaultTcpFramingMethod;
|
|
249
250
|
if (!isTcpFramingType(possibleFraming)) {
|
|
250
251
|
console.error(`invalid framing type.(${possibleFraming})`);
|
|
251
252
|
return undefined;
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gent-js/gent",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "template
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "template-based data generator.",
|
|
5
5
|
"homepage": "https://github.com/tomo-waka/gent",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Tomokazu Wakabayashi",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prepare": "npm run build",
|
|
26
26
|
"start": "tsx src/cli.ts --template sample/syslog_RFC3164(ISO_Date).template.log --count 5 --out out/out.log --debug",
|
|
27
27
|
"start-json": "tsx src/cli.ts --template sample/aws_CloudWatch.json --count 5 --out out/out.log --debug",
|
|
28
|
-
"start-meta": "tsx src/cli.ts --meta sample/
|
|
28
|
+
"start-meta": "tsx src/cli.ts --meta sample/tcp_meta.json",
|
|
29
29
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
30
30
|
"version": "npm run generate:package-env"
|
|
31
31
|
},
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { Readable } from "node:stream";
|
|
2
|
-
import { WeightedItemFeeder } from "./common/weightedItemFeeder.js";
|
|
3
|
-
import type { DocumentContent } from "./document/index.js";
|
|
4
|
-
export declare function createGeneratingLogStream(documentFeeder: WeightedItemFeeder<DocumentContent>, count: number): Readable;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Readable } from "node:stream";
|
|
2
|
-
import { createDocumentContextIterator, stampDocumentContent, } from "./document/index.js";
|
|
3
|
-
export function createGeneratingLogStream(documentFeeder, count) {
|
|
4
|
-
return Readable.from(generate(documentFeeder, count));
|
|
5
|
-
}
|
|
6
|
-
function* generate(documentFeeder, count) {
|
|
7
|
-
const documentContextIterator = createDocumentContextIterator(count);
|
|
8
|
-
for (let documentContext of documentContextIterator) {
|
|
9
|
-
const document = documentFeeder.getItem();
|
|
10
|
-
let output;
|
|
11
|
-
if (document === undefined) {
|
|
12
|
-
console.error("no document found.");
|
|
13
|
-
output = "";
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
output = stampDocumentContent(document, documentContext);
|
|
17
|
-
}
|
|
18
|
-
yield output + "\n";
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=createGeneratingLogStream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createGeneratingLogStream.js","sourceRoot":"","sources":["../../src/createGeneratingLogStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,yBAAyB,CACvC,cAAmD,EACnD,KAAa;IAEb,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,CAAC,QAAQ,CAChB,cAAmD,EACnD,KAAa;IAEb,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACrE,KAAK,IAAI,eAAe,IAAI,uBAAuB,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,MAAc,CAAC;QACnB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpC,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createUdpOutput.js","sourceRoot":"","sources":["../../../src/output/createUdpOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,aAA+B;IAE/B,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as stream from "node:stream";
|
|
2
|
-
export interface UdpStreamOptions extends stream.WritableOptions {
|
|
3
|
-
readonly address: string;
|
|
4
|
-
readonly port: number;
|
|
5
|
-
}
|
|
6
|
-
export declare class UpdStream extends stream.Writable {
|
|
7
|
-
private readonly address;
|
|
8
|
-
private readonly port;
|
|
9
|
-
private chunks;
|
|
10
|
-
private chunkSize;
|
|
11
|
-
private client;
|
|
12
|
-
constructor(options: UdpStreamOptions);
|
|
13
|
-
_construct(callback: (error?: Error | null) => void): void;
|
|
14
|
-
_write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
15
|
-
_final(callback: (error?: Error | null) => void): void;
|
|
16
|
-
_destroy(error: Error | null, callback: (error?: Error | null) => void): void;
|
|
17
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import * as dgram from "node:dgram";
|
|
2
|
-
import * as dnsPromises from "node:dns/promises";
|
|
3
|
-
import * as stream from "node:stream";
|
|
4
|
-
export class UpdStream extends stream.Writable {
|
|
5
|
-
address;
|
|
6
|
-
port;
|
|
7
|
-
chunks;
|
|
8
|
-
chunkSize;
|
|
9
|
-
client;
|
|
10
|
-
constructor(options) {
|
|
11
|
-
super(options);
|
|
12
|
-
this.address = options.address;
|
|
13
|
-
this.port = options.port;
|
|
14
|
-
this.chunks = [];
|
|
15
|
-
this.chunkSize = 0;
|
|
16
|
-
}
|
|
17
|
-
_construct(callback) {
|
|
18
|
-
dnsPromises
|
|
19
|
-
.lookup(this.address, {
|
|
20
|
-
verbatim: true,
|
|
21
|
-
})
|
|
22
|
-
.then((lookupAddress) => {
|
|
23
|
-
const socketType = lookupAddress.family === 4 ? "udp4" : "udp6";
|
|
24
|
-
this.client = dgram.createSocket(socketType);
|
|
25
|
-
callback();
|
|
26
|
-
})
|
|
27
|
-
.catch((reason) => callback(reason));
|
|
28
|
-
}
|
|
29
|
-
_write(chunk, encoding, callback) {
|
|
30
|
-
const client = this.client;
|
|
31
|
-
if (client === undefined) {
|
|
32
|
-
callback(new Error("called write while client has not been initialized."));
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
this.chunks.push(chunk);
|
|
36
|
-
this.chunkSize = this.chunkSize + chunk.length;
|
|
37
|
-
if (this.chunkSize > this.writableHighWaterMark) {
|
|
38
|
-
client.send(Buffer.concat(this.chunks), this.port, this.address, (error) => {
|
|
39
|
-
if (error !== null) {
|
|
40
|
-
callback(error);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
this.chunks = [];
|
|
44
|
-
this.chunkSize = 0;
|
|
45
|
-
callback();
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
callback();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
_final(callback) {
|
|
53
|
-
const client = this.client;
|
|
54
|
-
if (client === undefined) {
|
|
55
|
-
callback(new Error("called write while client has not been initialized."));
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
client.send(Buffer.concat(this.chunks), this.port, this.address, (error) => {
|
|
59
|
-
if (error !== null) {
|
|
60
|
-
callback(error);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.chunks = [];
|
|
64
|
-
this.chunkSize = 0;
|
|
65
|
-
callback();
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
_destroy(error, callback) {
|
|
69
|
-
console.log("closing udp stream.");
|
|
70
|
-
if (this.client !== undefined) {
|
|
71
|
-
this.client.close(callback);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
callback(error);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=updStream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updStream.js","sourceRoot":"","sources":["../../../src/output/updStream.ts"],"names":[],"mappings":"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"}
|