Skip to content

pichillilorenzo/mlab-speed-test

Repository files navigation

MLab Speed Test

Test your download and upload speed using speed.measurementlab.net

NPM

NPM Version Coverage Status license Donate to this project using Paypal

Getting started

To get started with this library, you need to install it and add it to your project.

Installation

# npm
npm install mlab-speed-test --save

# yarn
yarn add mlab-speed-test

Library Usage

API Reference available at https://pichillilorenzo.github.io/mlab-speed-test/.

import {MLabSpeedTest} from 'mlab-speed-test';
// or
const {MLabSpeedTest} = require('mlab-speed-test');

const speedTest = new MLabSpeedTest();
speedTest.on('server-chosen', (serverInfo) => {
   console.log(serverInfo.location);
});
speedTest.on('download-complete', downloadData => {
   const downloadSpeed = downloadData.LastClientMeasurement ? downloadData.LastClientMeasurement.MeanClientMbps.toFixed(2) : '0';
   console.log(downloadSpeed + 'Mb/s');
});
speedTest.on('upload-complete', uploadData => {
   const uploadSpeed = uploadData.LastServerMeasurement ?
           (uploadData.LastServerMeasurement.TCPInfo.BytesReceived / uploadData.LastServerMeasurement.TCPInfo.ElapsedTime * 8).toFixed(2) : '0';
   console.log(uploadSpeed + 'Mb/s');
});
const exitCode = await speedTest.run();

CLI Usage

Usage: mlab-speed-test [options]

Examples: 
  mlab-speed-test -a -p
  mlab-speed-test -a -p --json

Options:
  -p, --accept-privacy-policy  Accept M-Lab's Privacy Policy (https://www.measurementlab.net/privacy/) (default: false)
  -a, --autostart              Run speed test on command start. Requires --accept-privacy-policy (default: false)
  --json                       Output data in json format (default: false)
  --pretty                     If json should be pretty formatted (default: false)
  -h, --help                   display help for command

CLI Usage Example

Example 1

mlab-speed-test -a -p

Example output:


    M-Lab's Speed Test

    ⊠ Privacy Policy ( https://www.measurementlab.net/privacy/ )

    Test Server: 🖥  Milan, IT
  ⠸ 65.98 Mb/s ↓ / 17.04 Mb/s ↑
    Latency: 26 ms
    Loss: 1.81%

    Restart (enter) - Stop (delete)
    Decline Privacy Policy (a) - Quit (ctrl + q)

Example 2

mlab-speed-test -ap --json --pretty

Example output:

{
   "privacyPolicyAccepted": true,
   "running": true,
   "isDone": false,
   "downloadSpeed": "64.80",
   "downloadUnit": "Mb/s",
   "downloadCompleted": true,
   "downloadProgress": 1,
   "uploadSpeed": "16.97",
   "uploadUnit": "Mb/s",
   "uploadCompleted": false,
   "uploadProgress": 0.6515323619008064,
   "latencyUnit": "ms",
   "lossUnit": "%",
   "location": {
      "city": "Milan",
      "country": "IT"
   },
   "latency": "51",
   "loss": "6.57"
}

Contributors

Any contribution is appreciated. You can get started with the steps below:

  1. Fork this repository (learn how to do this here).

  2. Clone the forked repository.

  3. Make your changes and create a pull request (learn how to do this) .

  4. I will attend to your pull request and provide some feedback.

License

This repository is licensed under the ISC License.

This project is strongly inspired by the fast-cli package.