Giter Site home page Giter Site logo

ticks-tracer's Introduction

Ticks Tracer

npm npm

Takes snapshots for an object across event loop ticks.

Hint

Good for testing flow control packages like flowa, async, q, etc.

Table of Contents

Installation

npm install --save ticks-tracer

Usage

Take snapshot on every check phase of the event loop (using setImmediate internally).

var TicksTracer = require('ticks-tracer');

// A flow control package
var Flowa = require('flowa');

// The object to trace
var context = {};

// A dummy flow
var flow = new Flowa({
  type: 'serial',
  task1: generateDummyTask(1),
  task2: generateDummyTask(2),
  group1: {
    type: 'parallel',
    task3: generateDummyTask(3),
    task4: generateDummyTask(4)
  },
  task5: generateDummyTask(5)
});

// Start tracing
var ticksTracer = new TicksTracer(context);

// Execute the tasks
flow.run(context).then(function(result) {

  // Get the taken snapshots
  console.log(ticksTracer.getSnapshots());
  console.log(ticksTracer.getSnapshotsDiffs());

  // Stop the tracing
  ticksTracer.stop();

});

// Don't worry about this
function generateDummyTask(id) {
  
  return function(context, callback) {
    context['task' + id] = true;
    setImmediate(callback);
  };

}

The output is:

[
  {},
  { task1: true },
  { task1: true, task2: true },
  { task1: true, task2: true, task3: true, task4: true },
  { task1: true, task2: true, task3: true, task4: true, task5: true }
]

API

TicksTracer(tracedObject)

To create a TicksTracer object and start tracing

stop()

Stop tracing

getTicksCount()Number

Get the current tick number

getSnapshotAt(tick)Object

Get a taken snapshot by a tick number

getSnapshots()Array

Get all taken snapshots indexed by ticks numbers

getSnapshotsDiffs()Array

Get a list of snapshots that represent only the diffs

TicksTracer(tracedObject)

To create a TicksTracer object and start tracing.

Param Type Description
tracedObject Object The object to take snapshots of

stop()

Stop tracing.

getTicksCount() ⇒ Number

Get the current tick number.

Returns: Number

getSnapshotAt(tick) ⇒ Object

Get a taken snapshot by a tick number.

Param Type Description
tick Number The tick number

Returns: Object

getSnapshots() ⇒ Array

Get all taken snapshots indexed by ticks numbers.

Returns: Array

getSnapshotsDiffs() ⇒ Array

Get a list of snapshots that represent only the diffs

Returns: Array

License

This project is under the MIT license.

ticks-tracer's People

Contributors

faressoft avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.