From df713cc3845cb3131a1866a0e981defd28267e3b Mon Sep 17 00:00:00 2001 From: Robin Date: Tue, 24 Jun 2025 23:51:08 +0200 Subject: [PATCH 1/2] fix: add cache-busting to download URLs to prevent inflated speed measurements --- src/speedtest.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/speedtest.rs b/src/speedtest.rs index 03a7892..e48fb80 100644 --- a/src/speedtest.rs +++ b/src/speedtest.rs @@ -252,7 +252,14 @@ pub fn test_download( payload_size_bytes: usize, output_format: OutputFormat, ) -> f64 { - let url = &format!("{BASE_URL}/{DOWNLOAD_URL}{payload_size_bytes}"); + let timestamp = std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_nanos(); + let url = &format!( + "{BASE_URL}/{DOWNLOAD_URL}{payload_size_bytes}&t={}", + timestamp + ); let req_builder = client.get(url); let (status_code, mbits, duration) = { let response = req_builder.send().expect("failed to get response"); From a94ae64519597d1389f6ba335f02a334bb5acaee Mon Sep 17 00:00:00 2001 From: Robin B Date: Wed, 25 Jun 2025 22:17:18 +0200 Subject: [PATCH 2/2] fix measurement --- src/speedtest.rs | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/speedtest.rs b/src/speedtest.rs index e48fb80..2260f56 100644 --- a/src/speedtest.rs +++ b/src/speedtest.rs @@ -252,19 +252,12 @@ pub fn test_download( payload_size_bytes: usize, output_format: OutputFormat, ) -> f64 { - let timestamp = std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_nanos(); - let url = &format!( - "{BASE_URL}/{DOWNLOAD_URL}{payload_size_bytes}&t={}", - timestamp - ); + let url = &format!("{BASE_URL}/{DOWNLOAD_URL}{payload_size_bytes}"); let req_builder = client.get(url); let (status_code, mbits, duration) = { + let start = Instant::now(); let response = req_builder.send().expect("failed to get response"); let status_code = response.status(); - let start = Instant::now(); let _res_bytes = response.bytes(); let duration = start.elapsed(); let mbits = (payload_size_bytes as f64 * 8.0 / 1_000_000.0) / duration.as_secs_f64();