speedtest-go

command module
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2020 License: MIT Imports: 6 Imported by: 0

README

speedtest-go

Command Line Interface and pure Go API to Test Internet Speed using speedtest.net

You can speedtest 2x faster than speedtest.net with almost the same result. See the experimental results..

This fork allows abstracts the implementation of the speed test to a package so it can be used by other go programs.

Inspired by sivel/speedtest-cli

API Installation

go get github.com/cbergoon/speedtest-go

API Usage

The code below finds closest available speedtest server and tests the latency, download, and upload speeds.

package main

import (
	"fmt"
	"github.com/cbergoon/speedtest-go/speedtest"
)

func main() {
	user, _ := speedtest.FetchUserInfo()

	serverList, _ := speedtest.FetchServerList(user)
	targets, _ := serverList.FindServer([]int{})

	for _, s := range targets {
		s.PingTest()
		s.DownloadTest()
		s.UploadTest()

		fmt.Printf("Latency: %s, Download: %f, Upload: %f\n", s.Latency, s.DLSpeed, s.ULSpeed)
	}
}

CLI Installation

OS X (homebrew)
$ brew tap showwin/speedtest
$ brew install speedtest

### How to Update ###
$ brew update
$ brew upgrade speedtest
Others (Linux, Windows, etc.)

Please download compatible package from Releases.
If there are no compatible package you want, please let me know by creating an issue.

CLI Usage

$ speedtest --help
usage: download [<flags>]

Flags:
      --help             Show context-sensitive help (also try --help-long and --help-man).
  -l, --list             Show available speedtest.net servers
  -s, --server=SERVER    Select server id to speedtest
  -t, --timeout=TIMEOUT  Define timeout seconds. Default: 10 sec
      --version          Show application version.
Select Closest Server by Default
$ speedtest
Testing From IP: 124.27.199.165 (Fujitsu) [34.9769, 138.3831]

Target Server: [6691]     9.03km Shizuoka (Japan) by sudosan
latency: 39.436061ms
Download Test: ................
Upload Test: ................

Download: 73.30 Mbit/s
Upload: 35.26 Mbit/s
Show Available Servers
$ speedtest --list
Testing From IP: 124.27.199.165 (Fujitsu) [34.9769, 138.3831]
[6691]     9.03km Shizuoka (Japan) by sudosan
[6087]   120.55km Fussa-shi (Japan) by Allied Telesis Capital Corporation
[6508]   125.44km Yokohama (Japan) by at2wn
[6424]   148.23km Tokyo (Japan) by Cordeos Corp.
[6492]   153.06km Sumida (Japan) by denpa893
[7139]   192.63km Tsukuba (Japan) by SoftEther Corporation
[6368]   194.83km Maibara (Japan) by gatolabo
[6463]   220.39km Kusatsu (Japan) by j416dy
[6766]   232.54km Nomi (Japan) by JAIST(ino-lab)
[6476]   265.10km Osaka (Japan) by rxy (individual)
[6477]   268.94km Sakai (Japan) by satoweb
...
Select Multiple Servers by Server ID
$ speedtest --server 6691 --server 6087
Testing From IP: 124.27.199.165 (Fujitsu) [34.9769, 138.3831]

Target Server: [6691]     9.03km Shizuoka (Japan) by sudosan
Latency: 23.612861ms
Download Test: ................
Upload Test: ........

Target Server: [6087]   120.55km Fussa-shi (Japan) by Allied Telesis Capital Corporation
Latency: 38.694699ms
Download Test: ................
Upload Test: ................

[6691] Download: 65.82 Mbit/s, Upload: 27.00 Mbit/s
[6087] Download: 72.24 Mbit/s, Upload: 29.56 Mbit/s
Download Avg: 69.03 Mbit/s
Upload Avg: 28.28 Mbit/s

Summary of Experimental Results

Speedtest-go is a great tool because of following 2 reasons:

Following data is summarized. If you got interested in, please see more details.

Download (Mbps)

distance = distance to testing server

  • 0 - 1000(km) ≒ domestic
  • 1000 - 8000(km) ≒ same region
  • 8000 - 20000(km) ≒ really far!
  • 20000km is the half of the circumference of our planet.
distance (km) speedtest.net speedtest-go speedtest-cli
0 - 1000 92.12 91.21 70.27
1000 - 8000 66.45 65.51 56.56
8000 - 20000 11.84 9.43 11.87
Upload (Mbps)
distance (km) speedtest.net speedtest-go speedtest-cli
0 - 1000 65.56 47.58 36.16
1000 - 8000 58.02 54.74 26.78
8000 - 20000 5.20 8.32 2.58
Testing Time (sec)
distance (km) speedtest.net speedtest-go speedtest-cli
0 - 1000 45.03 22.84 24.46
1000 - 8000 44.89 24.45 28.52
8000 - 20000 49.64 34.08 41.26

Contributors

LICENSE

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL