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

    Install

    npm i toobs

    DownloadsWeekly Downloads

    5

    Version

    0.1.3

    License

    none

    Last publish

    Collaborators

    • avatar