mnagel 95 Report post Posted March 28 After a few failed attempts to get this working on Windows via Powershell (works, but too inaccurate), I punted and used speedtest-cli. If I can replicate that into Groovy, then perhaps it could be universal, but Linux-only for now. 4CN9AA This will be held for code review, but it is very simple code :). Quote Share this post Link to post Share on other sites
Michael Rodrigues 100 Report post Posted June 19 Reviewed. You weren't kidding about simple code. Quote Share this post Link to post Share on other sites
Cole McDonald 14 Report post Posted June 19 mnagel… would you mind if I took a peek at your powershell? Second set of eyes and all that. Quote Share this post Link to post Share on other sites
mnagel 95 Report post Posted June 19 @Cole McDonald Sure, no problem -- see below. The Ookla one is not much better in reality because the web method is not as accurate as the application socket method, but at least it tried to do bidirectional testing. I can't claim credit for this, I found it and modified a bit to work in LM. I set the mirror site as a property since auto-selection does not work with testmy.net. Mark $size = 50; $mirror = "##speedtest.testmy.mirror##"; if ($site -eq "") { $url = "https://testmy.net/dl-${size}MB" } else { $url = "https://${mirror}.testmy.net/dl-${size}MB" } $path = "Out-Null" $WebClient = New-Object System.Net.WebClient $mbps = "{0:N2}" -f (($size/(Measure-Command {$Request=Get-Date; $WebClient.DownloadFile( $url, $path )}).TotalSeconds) * 😎 Write-Host "Mbps="$mbps Quote Share this post Link to post Share on other sites
Cole McDonald 14 Report post Posted June 19 I wonder if I could dig up some powershell/.net to implement a socket we could push the test through... let me search through my saved favorites, I think I've used something like that to instantiate remote listeners for port route verification... https://stackoverflow.com/questions/29759854/how-to-connect-to-tcp-socket-with-powershell-to-send-and-receive-data I'm also testing invoke-webrequest -URI $URL right now as well using the URI from your code against dallas7. I'll see what it returns and if I can get that parsed to the value you're looking for. Quote Share this post Link to post Share on other sites
Cole McDonald 14 Report post Posted June 19 $stats = Measure-Command {$return = Invoke-WebRequest -Uri "https://dallas7.testmy.net/dl-10MB"} Seems to work to get the same data as the .net web client the other is implementing. This both implements the download test and retrieves the returned code to be parsed for any tokens that would allow it to perform the push... just have to figure out the request they're building to piece the next URL or REST request together. Quote Share this post Link to post Share on other sites
Cole McDonald 14 Report post Posted June 19 (edited) 1 hour ago, mnagel said: $size = 50 $mirror = "##speedtest.testmy.mirror##" if ( $mirror -eq "" ) { $url = "https://testmy.net/dl-${ $size }MB" } else { $url = "https://${ mirror }.testmy.net/dl-${ $size }MB" } $timer = Measure-Command { $response = invoke-webrequest -uri $url } $result = ( $size / ( $timer ).TotalSeconds ) * B $mbps = "{0:N2}" -f ( $result ) Write-Host "Mbps=$mbps" I changed the first If () {} to test the correct variable (was $site, which isn't represented anywhere else in the script). Then I cleaned the code up a bit and lined everything up... OCD is both great and horrible for programming. Edited June 19 by Cole McDonald Quote Share this post Link to post Share on other sites