From d6f0bf73fc5dc8f14355ae88d3fea7ec753b7cae Mon Sep 17 00:00:00 2001 From: CristianD Date: Thu, 5 Nov 2026 14:57:06 +0000 Subject: [PATCH] Add SpeedTest --- SpeedTest | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 SpeedTest diff --git a/SpeedTest b/SpeedTest new file mode 100644 index 0000000..a114f26 --- /dev/null +++ b/SpeedTest @@ -0,0 +1,53 @@ +[CmdletBinding()] +param( + [int]$DownloadMB = 50, + [int]$UploadMB = 20 +) + +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13 + +Write-Host "Initializing HTTPS speed test via Cloudflare CDN..." -ForegroundColor Cyan + +# 1. Latency (TTFB probe) +$wc = New-Object System.Net.WebClient +$stopwatch = [System.Diagnostics.Stopwatch]::StartNew() +try { + $null = $wc.DownloadString("https://speed.cloudflare.com/meta") + $latencyMs = [math]::Round($stopwatch.ElapsedMilliseconds) + Write-Host "Latency: $latencyMs ms" -ForegroundColor Yellow +} catch { + Write-Warning "Latency probe failed: $_" +} + +# 2. Download Test +$downBytes = $DownloadMB * 1MB +Write-Host "Testing Download ($DownloadMB MB payload)..." -NoNewline +$stopwatch.Restart() +try { + $downData = $wc.DownloadData("https://speed.cloudflare.com/__down?bytes=$downBytes") + $stopwatch.Stop() + $downSec = $stopwatch.Elapsed.TotalSeconds + $downMbps = [math]::Round((($downData.Length * 8) / $downSec) / 1MB, 2) + Write-Host " Done." -ForegroundColor Green + Write-Host "Download: $downMbps Mbps" -ForegroundColor Green +} catch { + Write-Warning "`nDownload failed: $_" +} + +# 3. Upload Test +$upBytes = New-Object byte[] ($UploadMB * 1MB) +(New-Object System.Random).NextBytes($upBytes) +Write-Host "Testing Upload ($UploadMB MB payload)..." -NoNewline +$stopwatch.Restart() +try { + $null = $wc.UploadData("https://speed.cloudflare.com/__up", "POST", $upBytes) + $stopwatch.Stop() + $upSec = $stopwatch.Elapsed.TotalSeconds + $upMbps = [math]::Round((($upBytes.Length * 8) / $upSec) / 1MB, 2) + Write-Host " Done." -ForegroundColor Green + Write-Host "Upload: $upMbps Mbps" -ForegroundColor Green +} catch { + Write-Warning "`nUpload failed: $_" +} + +$wc.Dispose() \ No newline at end of file