82 lines
2.1 KiB
Python
Executable File
82 lines
2.1 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import pandas as pd
|
|
import matplotlib.pyplot as plt
|
|
from datetime import datetime
|
|
|
|
# dictionary that maps IPs to server names for readability
|
|
servers = {
|
|
"2a01:258:fffe:f": "Ireland",
|
|
"213.5.132.231": "UK",
|
|
"150.241.82.187": "Europe",
|
|
"2603:c020:0:836": "US",
|
|
"159.196.178.7": "Australia",
|
|
"202.65.114.202": "Asia",
|
|
}
|
|
|
|
df = pd.read_csv("results.tsv", sep="\t")
|
|
|
|
df['time'] = df['timestamp'].apply(lambda x: datetime.utcfromtimestamp(x).strftime('%H:%M'))
|
|
|
|
plt.figure(figsize=(10, 6))
|
|
|
|
for remote in df['remote'].unique():
|
|
remote_data = df[df['remote'] == remote]
|
|
plt.plot(remote_data['time'], remote_data['jitter'], label=servers[remote], marker="o")
|
|
|
|
plt.title('Jitter over Time by Remote')
|
|
plt.xlabel('Time (UTC)')
|
|
plt.ylabel('Jitter')
|
|
plt.legend(title='Remote', loc='best')
|
|
plt.xticks(rotation=45)
|
|
plt.tight_layout()
|
|
|
|
plt.show()
|
|
|
|
plt.figure(figsize=(10, 6))
|
|
|
|
for remote in df['remote'].unique():
|
|
remote_data = df[df['remote'] == remote]
|
|
plt.plot(remote_data['time'], remote_data['delay'], label=servers[remote], marker="o")
|
|
|
|
plt.title('Delay over Time by Remote')
|
|
plt.xlabel('Time (UTC)')
|
|
plt.ylabel('Delay')
|
|
plt.legend(title='Remote', loc='best')
|
|
plt.xticks(rotation=45)
|
|
plt.tight_layout()
|
|
|
|
plt.show()
|
|
|
|
|
|
plt.figure(figsize=(10, 6))
|
|
|
|
for remote in df['remote'].unique():
|
|
remote_data = df[df['remote'] == remote]
|
|
plt.plot(remote_data['time'], remote_data['offset'], label=servers[remote], marker="o")
|
|
|
|
plt.title('Offset over Time by Remote')
|
|
plt.xlabel('Time (UTC)')
|
|
plt.ylabel('Offset')
|
|
plt.legend(title='Remote', loc='best')
|
|
plt.xticks(rotation=45)
|
|
plt.tight_layout()
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
df['server'] = df['remote'].map(servers)
|
|
jitter_statistics = df.groupby('server')['jitter'].agg(['max', 'min', 'mean', 'std']).reset_index()
|
|
|
|
print("Jitter stats:")
|
|
print(jitter_statistics)
|
|
|
|
delay_statistics = df.groupby('server')['delay'].agg(['max', 'min', 'mean', 'std']).reset_index()
|
|
print("Delay stats:")
|
|
print(delay_statistics)
|
|
|
|
offset_statistics = df.groupby('server')['offset'].agg(['max', 'min', 'mean', 'std']).reset_index()
|
|
print("Offset stats:")
|
|
print(offset_statistics)
|