Skip to content

Instantly share code, notes, and snippets.

@wangsquirrel
Last active April 4, 2019 03:55
Show Gist options
  • Select an option

  • Save wangsquirrel/85150acd4278cd5d25458bbd305b4073 to your computer and use it in GitHub Desktop.

Select an option

Save wangsquirrel/85150acd4278cd5d25458bbd305b4073 to your computer and use it in GitHub Desktop.
test vultr speed
#!/usr/bin/python2.7
#pip install pyping requests
import pyping
import requests
import sys
import time
import math
vultr_addrs = ["fra-de-ping.vultr.com", "ams-nl-ping.vultr.com", "par-fr-ping.vultr.com",
"lon-gb-ping.vultr.com", "sgp-ping.vultr.com", "hnd-jp-ping.vultr.com",
"nj-us-ping.vultr.com", "il-us-ping.vultr.com", "ga-us-ping.vultr.com",
"wa-us-ping.vultr.com", "fl-us-ping.vultr.com", "tx-us-ping.vultr.com",
"sjo-ca-us-ping.vultr.com", "lax-ca-us-ping.vultr.com", "syd-au-ping.vultr.com"]
def get_ping_avg(addr, ping_count):
print(addr + " Ping ...")
r = pyping.ping(hostname=addr, count=ping_count)
if r.ret_code == 0:
return r.avg_rtt
else:
return 100000000
def test_ping(addrs):
ping_resps_map = {}
ping_resps_list = []
for addr in addrs:
ping = get_ping_avg(addr, 10)
ping_resps_map[ping] = addr
ping_resps_list.append(ping)
ping_resps_list.sort()
print("="*10+"Ping result (ms)"+"="*10)
for s in ping_resps_list:
print(str(ping_resps_map[s])+" " + s + "ms")
def test_download(addrs):
download_resps_map = {}
download_resps_list = []
for addr in addrs:
download = downloadFile(addr, 10*1024*1024)
download_resps_map[download] = addr
download_resps_list.append(download)
download_resps_list.sort(reverse=True)
print("="*10+"Download result (KBps)"+"="*10)
for s in download_resps_list:
print(str(download_resps_map[s])+" " + str(s) + "KBps")
def downloadFile(url, total):
'''
return KBps
'''
print(int(time.time()), url + " Downloading ...")
r = requests.get(url, stream=True)
total_length = r.headers.get('content-length')
if int(total_length) < total:
print(total_length, total)
print('total < content length')
raise Exception
start = time.time()
for chunk in r.iter_content(total):
return total//((time.time() - start) * 1024)
return (time.time() - start)
test_ping(vultr_addrs)
test_download(["https://" + x + "/vultr.com.100MB.bin" for x in vultr_addrs])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment