From 1880378f813075338edb346fb87cff093f722e2f Mon Sep 17 00:00:00 2001 From: Franz Knipp Date: Thu, 29 Oct 2020 16:43:13 +0000 Subject: [PATCH] Add a generator for consecutive timestamps --- config.ts | 32 +++++++++++++++++++++++++++----- generators/datetime.ts | 19 +++++++++++++++++++ generators/index.ts | 3 ++- 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 generators/datetime.ts diff --git a/config.ts b/config.ts index c0b3c2b..c8186f2 100644 --- a/config.ts +++ b/config.ts @@ -3,21 +3,43 @@ export default { lineSeparator: "\n", lines: { min: 30000, max: 40000 }, fields: [ + { + type: "datetime", + name: "timestamp", + config: { + startingDate: "2020-09-01", + step: { min: 0, max: 100000 }, + }, + }, { type: "ipv4", name: "source", config: { - number: { min: 10, max: 10 }, + number: { min: 100, max: 1000 }, + distribution: "uniform", + }, + }, + { + type: "ipv4", + name: "target", + config: { + number: { min: 10, max: 20 }, distribution: "linear", }, }, { type: "integer", name: "size", + config: { + number: { max: 1500 }, + }, + }, + { + type: "element", + name: "protocol", + config: { + list: ["TCP", "UDP"], + }, }, - // { - // type: "ipv4", - // name: "target", - // }, ], }; diff --git a/generators/datetime.ts b/generators/datetime.ts new file mode 100644 index 0000000..4113fc4 --- /dev/null +++ b/generators/datetime.ts @@ -0,0 +1,19 @@ +import { format as dateFormat } from "https://deno.land/std@0.71.0/datetime/mod.ts"; +import { getInteger } from "../random/number.ts"; + +export default function* ( + { + startingDate = "2020-01-01", + step = { min: 0, max: 1000 }, + format = "toISOString", + } = {}, +) { + const date = new Date(startingDate); + + while (true) { + date.setTime(date.getTime() + getInteger(step)); + yield format === "toISOString" + ? date.toISOString() + : dateFormat(date, format); + } +} diff --git a/generators/index.ts b/generators/index.ts index 79f12c0..86cd6a9 100644 --- a/generators/index.ts +++ b/generators/index.ts @@ -1,3 +1,4 @@ +import datetime from "./datetime.ts"; import element from "./element.ts"; import integer from "./integer.ts"; import ipv4 from "./ipv4.ts"; @@ -6,6 +7,6 @@ interface Generators { [index: string]: (config: any) => any; } -const generators: Generators = { element, integer, ipv4 }; +const generators: Generators = { datetime, element, integer, ipv4 }; export default generators; -- 2.51.2