toobs

0.1.3 • Public • Published

toobs Build Status NPM

A network speed testing tool for NodeJS.

Still in development, use at your own peril

Install

npm install toobs

Usage

Server Side

var toobs = require('toobs');
 
var server = new toobs.Server();
 
server.on('connection', function(socket) {
  console.log('connected');
 
  socket.on('test:sample', function(sample) {
    console.log(sample);
  });
 
  socket.on('test:start', function() {
    console.log('test started');
  });
 
  socket.on('test:done', function(summary) {
    console.log('test done');
    console.log(summary);
  });
 
});

Client Side

var toobs = require('toobs');
 
var client = new toobs.Client({ host: '192.168.1.14' });
 
client.on('test:sample', function(sample) {
  console.log(sample);
});
 
client.on('test:start', function() {
  console.log('test started');
});
 
client.on('test:done', function(summary) {
  console.log('test done');
  console.log(summary);
});
 
client.test({
  rate: '100MB',
  time: 10
});

bits vs. Bytes

Sockets record values in Bytes so I convert them to bits by multiplying by 8. Also, below is a table showing the conversions performed to translate human-readable sizes to Buffer() values:

var BYTES = {
  b: 0.125,
  bit: 0.125,
 
  kb: 128,
  kbit: 128,
  kilobit: 128,
 
  mb: 131072,
  mbit: 131072,
  megabit: 131072,
 
  gb: 134217728,
  gbit: 134217728,
  gigabit: 134217728,
 
  B: 1,
  Byte: 1,
 
  KB: 1024,
  KByte: 1024,
  KiloByte: 1024,
 
  MB: 1048576,
  MByte: 1048576,
  MegaByte: 1048576
 
  // sorry, NodeJS can't handle GB buffer sizes
}

Toobs Tests

Toobs tests work by sending new Buffer() data down a TCP socket. Node will dump the buffer straight to the kernel buffer so those rates are subject to interpretation.

Limitation - The highest size or rate value is 1023MB, Node can't support buffer sizes higher than that.

Client.test(options) The options object can have the following properties:

  • send rate/sec for time seconds
{
  rate: '1gb', // string format: "{num}(b|kb|mb|gb|B|KB|MB)", max is "1023MB"
  time: 10     // number of seconds to run the test
}
  • send size as fast as possible
{
  size: '500mb' // send a 500mbit buffer, same format as .rate
}

Events

  • Client
    • Class net.Socket events
    • test:sample - Returns an object containing the details of the most recent sample of traffic
    • test:start - Emitted when a test is started
    • test:done - Emitted when a socket is closed
  • Server

ToDo

  • Add more test types (ramp, etc?)
  • bump for Travis-CI

Package Sidebar

Install

npm i toobs

Weekly Downloads

3

Version

0.1.3

License

none

Last publish

Collaborators

  • ben-bradley