Skip to content

ben-bradley/toobs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

toobs Build Status NPM

A network speed testing tool for NodeJS.

Still in development, use at your own peril

Install

  • As a module
npm install toobs
  • As a binary
npm install -g toobs

Usage

Server Side

  • As a module
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);
  });

});
  • As a binary
$ toobs --server [--port=5000]

Client Side

  • As a module
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
});
  • As a binary
$ toobs --client --host=localhost [--port=5000] (--size=1gb | --rate=100mb --time=5)

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

About

A network speed testing tool for NodeJS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published