stream-log-playback
v1.0.6
Published
Stream log playback library
Downloads
6
Readme
stream-log-playback
A simple library that reproduces a data stream for development purposes, while respecting order and time separation between events
The library providers both recorder and playback functions
The recorder StreamLogRecorder
is an implementation of pass-throught Writable
stream can be wired either in a pipeline e.g.
const {StreamLogRecorder} = require('stream-log-playback');
const streamRecorder = StreamLogRecorder.createInterface({
fileName : 'stream.log'
});
someOtherStream.pipe(streamRecorder).pipe(process.stdout);
or data can be pushed using write
function.
const {StreamLogRecorder} = require('stream-log-playback');
const streamRecorder = StreamLogRecorder.createInterface({
fileName : 'stream.log'
});
streamRecorder.write(JSON.strigify({data:1}));
streamRecorder.write(JSON.strigify({data:2}));
streamRecorder.end();
StreamLogRecorder.createInterface(options)
Create a recorder
options
object properties
property | Description ---------------|------------ fileName | name of file containing the log to read flags | usual createFileStream flags. Default value is 'w' create, but if set 'a' it will ammend on existing file new entries autoclose. | usual createFileStream option. Default is true.
In either case the recorder will persist the data to a file called stream.log
, and the pass the original data to next stage of the pipeline.
The generated format is as following
{ "dt": 151.321274, "rawJson": "{\"key\":2500178}"}
{ "dt": 20.483183, "rawJson": "{\"key\":2500356}"}
Each line represents an event with the properties
property name | description -------------- | ------------ dt | the time in msec the event was generated from the previous event rawJson | event details
So in the above example the first line says , wait for 151 msec before creating the first event.The second line for says wait for 20 msec.
The reader is an implementation of a Tranform
and can be used either as
const {StreamLogReader} = require('stream-log-playback');
const reader = StreamLogReader.createInterface({
fileName:'stream.log'
});
reader.on('data',(lineEntry)=>{
console.log(line.toString());
});
or wired in a pipeline
const {StreamLogReader} = require('stream-log-playback');
const reader = StreamLogReader.createInterface({
fileName:'stream.log'
});
reader.pipe(someOtherStream);
StreamLogReader.createInterface(options)
Create a reader
- StreamLogReader
options
object proerties
property | Description ---------------|------------ fileName | name of file containing the log to read timeResolution | don't wait if dt < timeResolution e.g. if timeResolution is 10 then the second event in the previous exmple will fire immediately. maxWait | if dt>maxWait then wait for maxWait e.g. is maxWait is 100 then in the above example the first event will fire after 100 msec.