1.0.6 • Published 5 years ago

stream-log-playback v1.0.6

Weekly downloads
3
License
ISC
Repository
github
Last release
5 years ago

stream-log-playback

CircleCI Codacy Badge

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 Writablestream 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

propertyDescription
fileNamename of file containing the log to read
flagsusual 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 namedescription
dtthe time in msec the event was generated from the previous event
rawJsonevent 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

propertyDescription
fileNamename of file containing the log to read
timeResolutiondon't wait if dt < timeResolution e.g. if timeResolution is 10 then the second event in the previous exmple will fire immediately.
maxWaitif 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.
1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago