Skip to content

elavoie/pull-stream-protocol-checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pull-stream-protocol-checker

Pull-stream module for detecting protocol violations at the interface of two modules.

Report an error if one of the following invariants is violated:

  1. No ask request (read(false, ...)) after termination
  2. Every callback is eventually invoked
  3. Every callback is invoked only once
  4. The callbacks are invoked in the order in which they were created
  5. No value answer (cb(false, data)) after termination

Optionally can check:

  1. That no other request are made after the stream has terminated or was aborted
  2. The stream is eventually terminated

Usage

var checker = require('pull-stream-protocol-checker')
var pull = require('pull-stream')

var probe = checker()

pull(
  pull.count(10),
  probe,
  pull.drain(null, function () {
    probe.terminate()
  }) 
)

probe = checker([forbidExtraRequests][, enforceStreamTermination][, notifyEagerly])

  • forbidExtraRequests <Boolean> (Defaults to false)
  • enforceStreamTermination <Boolean> (Defaults to false)
  • notifyEagerly <Boolean> (Defaults to true)

Invariant 6 is activated by setting forbidExtraRequests to true. Invariant 7 is activated by setting enforceStreamTermination to true. If notifyEagerly===true, an invariant violation is reported as an error that is thrown immediately; otherwise all violations are remembered and returned as an error array when invoking errors = probe.terminate().

Other modules with similar goals

https://github.com/dominictarr/pull-spec

https://github.com/nichoth/pull-stream-spec

About

Pull-stream module for detecting protocol violations at the interface of two modules.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published