Files
speedtest/test_mcp_full.py
2026-02-05 16:25:54 +00:00

51 lines
1.8 KiB
Python

import asyncio
import json
from mcp_server import list_servers, run_speedtest
async def main():
print("--- 1. Testing Discovery: list_servers('Singapore') ---")
servers_json = await list_servers("Singapore")
servers = json.loads(servers_json)
print(f"Found {len(servers)} servers.")
if not servers:
print("No servers found!")
return
# Print found servers
for s in servers:
print(f"ID: {s['id']} | Name: {s['name']} | Sponsor: {s['sponsor']}")
# Pick the Singtel server (ID 13623) if available, otherwise the first one
target_server = next((s for s in servers if str(s['id']) == "13623"), servers[0])
target_id = target_server['id']
target_name = target_server['sponsor']
print(f"\n--- 2. Testing Execution: run_speedtest({target_id}) [{target_name}] ---")
print("Running speedtest... (Please wait ~30 seconds)...")
# Run the speedtest
result_json = run_speedtest(int(target_id))
try:
data = json.loads(result_json)
if "error" in data:
print(f"Error from speedtest: {data['error']}")
else:
# Convert bytes/sec to Mbps (1 Mbps = 125,000 bytes/sec)
dl_mbps = data['download']['bandwidth'] / 125000
ul_mbps = data['upload']['bandwidth'] / 125000
ping = data['ping']['latency']
print(f"\nSUCCESS! Results for {target_name}:")
print(f"Ping: {ping} ms")
print(f"Download: {dl_mbps:.2f} Mbps")
print(f"Upload: {ul_mbps:.2f} Mbps")
print(f"Link: {data['result']['url']}")
except Exception as e:
print(f"Failed to parse results: {e}")
print(f"Raw Output: {result_json}")
if __name__ == "__main__":
asyncio.run(main())