Speedtest

A ruby gem for speedtest.net results

Adapted from https://github.com/lacostej/speedtest.rb

Installation

$ gem install speedtest

or put it in your Gemfile

gem 'speedtest'

and install with

$ bundle install

Usage:

require it in your script

require 'logger'
require 'speedtest'

Configure a new test with whatever options you want—all are optional:

  • minimum_transfer_secs - The transfers will continue for at least that many seconds
  • num_threads - The number of threads to perform the transfers in parallel
  • ping_runs - The number of ping attempts to establish latency
  • download_size - jpg dimensions (must be one or more of [350, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000])
  • upload_size - Size of the randomly generated file in bytes
  • logger
speedtest = Speedtest::Test.new(min_transfer_secs: 5,
                                download_size: 500,
                                upload_size: 10_000,
                                num_threads: 4,
                                logger: Logger.new(STDOUT),
                                skip_servers: "http://www.github.com")
 )
 => #<Speedtest::Test:0x007fac5ac9dca0 @download_runs=4, @upload_runs=4, @ping_runs=4, @download_sizes=[750, 1500], @upload_sizes=[10000, 400000], @debug=true>

test.run() returns some results:

results = test.run

With logger set, this produces:

Your IP: 97.126.32.16
Your coordinates: [47.4356, -122.1141]
Automatically selected server: http://lg.sea-z.fdcservers.net - 32.985 ms
Server http://lg.sea-z.fdcservers.net

starting download tests:
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random1500x1500.jpg
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random750x750.jpg
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random1500x1500.jpg
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random750x750.jpg
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random750x750.jpg
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random750x750.jpg
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random1500x1500.jpg
  downloading: http://lg.sea-z.fdcservers.net/speedtest/random1500x1500.jpg
Took 6.10022 seconds to download 22345012 bytes in 8 threads
Download: 27.95 Mbps

starting upload tests:
  uploading size 10000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
  uploading size 10000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
  uploading size 10000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
  uploading size 10000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
  uploading size 400000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
  uploading size 400000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
  uploading size 400000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
  uploading size 400000: http://lg.sea-z.fdcservers.net/speedtest/upload.php
Took 3.437126 seconds to upload 1644080 bytes in 8 threads
Upload: 3.65 Mbps

  => #<Speedtest::Result:0x007fac5ac1e680 @server="http://lg.sea-z.fdcservers.net", @latency=32.985, @download_size=22345012, @upload_size=1644080, @download_time=6.10022, @upload_time=3.437126>