mlab-speed-test
Version:
Test your download and upload speed using speed.measurementlab.net
153 lines (111 loc) • 4.32 kB
Markdown
<div align="center">
# MLab Speed Test
### Test your download and upload speed using [speed.measurementlab.net](https://speed.measurementlab.net/)
[](https://nodei.co/npm/mlab-speed-test/)
<br />
[](https://www.npmjs.com/package/mlab-speed-test)
</div>
[](https://npmjs.org/package/mlab-speed-test)
[](https://coveralls.io/github/pichillilorenzo/mlab-speed-test?branch=main)
[](/LICENSE)
[](https://www.paypal.me/LorenzoPichilli)
## Getting started
To get started with this library, you need to install it and add it to your project.
### Installation
```bash
# 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/](https://pichillilorenzo.github.io/mlab-speed-test/).
```javascript
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
```bash
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
```bash
mlab-speed-test -ap --json --pretty
```
Example output:
```json
{
"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](https://github.com/pichillilorenzo/mlab-speed-test) (learn how to do
this [here](https://help.github.com/articles/fork-a-repo)).
2. Clone the forked repository.
3. Make your changes and create a pull
request ([learn how to do this](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request))
.
4. I will attend to your pull request and provide some feedback.
## License
This repository is licensed under the [ISC](LICENSE) License.
This project is strongly inspired by the [fast-cli](https://github.com/sindresorhus/fast-cli) package.