generators/color-logger-generator.ts (70 lines of code) (raw):

/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import { IBatchGenerator, ILogData } from "../core/ext-types.js" /* * Increment Generator * This generator creates logs with a standard message * And a number appended to the end of the log */ interface IGeneratorConfig { name: string, payloadSize: number, payloadCount: number, signalPayloadSize: number, signalPayloadCount: number, disableSignal: boolean, } const defaultConfig: IGeneratorConfig = { name: "logger", payloadSize: 10, payloadCount: 3, signalPayloadSize: 100, signalPayloadCount: 5, disableSignal: false }; const colorLoggerGenerator: IBatchGenerator = { name: "color-logger", defaultConfig: defaultConfig, createConfiguredGenerator: function (config: IGeneratorConfig) { return { generatorTemplate: this, makeInstance: (() => (async function*() { const payload = "x".repeat(config.payloadSize); const signalPayload = "x".repeat(config.signalPayloadSize); let logIndex = 0; let signalIndex = 0; let blueIndex = 0; const getTime = () => { const d = new Date(); return d.getFullYear() + "-" + ('0' + (d.getMonth() + 1)).slice(-2) + "-" + ('0' + d.getDate()).slice(-2) + " " + ('0' + d.getHours()).slice(-2) + ":" + ('0' + d.getMinutes()).slice(-2) + ":" + ('0' + d.getSeconds()).slice(-2) + ('0' + d.getMilliseconds()).slice(-2); } while (1) { const batch = []; /* Signal log: one out of 71 */ if (logIndex % 71 === 0 && !config.disableSignal && signalIndex < config.signalPayloadCount) { const logData: ILogData = ({ payload: signalPayload, event_id: Math.floor(Math.random() * 1000), // generateRandomString(1000), counter: signalIndex, global_counter: logIndex, time: getTime(), } as any); batch.push(logData); ++signalIndex; } /* Blue log: one out of 100 */ if (logIndex % 100 === 0 && blueIndex < config.payloadCount) { const logData: ILogData = ({ blue: true, id: logIndex, time: getTime(), } as any); batch.push(logData); ++blueIndex; } /* Normal log: always sent */ const logData: ILogData = ({ payload: payload, time: getTime(), gauge: logIndex, uuid: `abc${logIndex}`, } as any); batch.push(logData); ++logIndex; yield batch; } })()), } } }; export default colorLoggerGenerator;