public async Task PostTestResult(SpeedTestResult testResult) { var token = await _accessTokenHttpClient.GetToken(); _httpClient.SetBearerToken(token); await _httpClient.PostAsJsonAsync($"{_apiOptions.BaseUrl}/api/results", testResult); }
public async Task RunAsync() { _logger.LogDebug("Running speed test with Node client..."); var executionDateTime = DateTime.UtcNow; var nodeResult = await _nodeServices.InvokeExportAsync <SpeedTestNodeResult>("./Node/speedtest.js", "test"); _logger.LogDebug("Speed test from Node client complete"); _logger.LogDebug("Publishing results..."); var result = new SpeedTestResult { NodeName = _runnerOptions.NodeName, Location = _runnerOptions.Location, ExecutionDateTime = executionDateTime, AverageDownloadSpeed = (decimal)nodeResult.Speeds.Download * 1000, AverageUploadSpeed = (decimal)nodeResult.Speeds.Upload * 1000, MaximumDownloadSpeed = (decimal)nodeResult.Speeds.Download * 1000, MaximumUploadSpeed = (decimal)nodeResult.Speeds.Upload * 1000, Latency = (decimal)nodeResult.Server.Ping, TestServerName = nodeResult.Server.Host }; await _speedtestHttpClient.PostTestResult(result); _logger.LogDebug("Results published"); }
public async Task <SpeedTestResult> Run() { _process.Start(); _process.WaitForExit(); return(await SpeedTestResult.Parse(_process.StandardOutput)); }
private void RunTest(object state) { lock (testLock) { try { PrintTestStatus(true); SpeedTest speedTest = new SpeedTest(); SpeedTestResult speedTestResult = speedTest.Run(speedTestServerId); TraceRoute traceRoute = new TraceRoute(); TraceRouteResult traceRouteResult = traceRoute.Run(speedTestResult.Server.Ip); results.Add(new DiagnosticResult { SpeedTestResult = speedTestResult, TraceRouteResult = traceRouteResult }); WriteResults(); PrintTestStatus(); } catch (Exception e) { Console.WriteLine($"[{DateTime.Now:MM-dd hh:mm:ss}] Exception encountered running test: {e}"); } } }
public async Task AddTestResult(TestResult testResult) { var speedTest = SpeedTestResult.From(testResult); await _database.SpeedTestResults.AddAsync(speedTest); await _database.SaveChangesAsync(); }
internal SpeedTestResult SpeedTestSigned(Node nodeToTesting) { var result = new SpeedTestResult { Speed = SpeedTest(nodeToTesting), NodeIp = _networkConnection.MyNode.Ip }; result.SignTheResult(_networkConnection.MyNode, nodeToTesting.Ip, _networkConnection.Now.Ticks); return(result); }
public async Task RunAsync() { var executionDateTime = DateTime.UtcNow; _logger.LogDebug("Getting speed test client settings..."); var settings = _speedTestClient.GetSettings(); _logger.LogDebug("Retrieved settings"); var servers = settings.Servers; var serverEnumerator = servers.GetEnumerator(); var testSuccessful = false; SpeedTestResult result = null; while (serverEnumerator.MoveNext() && !testSuccessful) { var server = serverEnumerator.Current; try { _logger.LogDebug($"Testing server {server.Host} latency"); server.Latency = _speedTestClient.TestServerLatency(server); _logger.LogDebug($"Latency test complete"); _logger.LogDebug("Testing doownload speed..."); var downloadSpeed = _speedTestClient.TestDownloadSpeed(server, _runnerOptions.SpeedTestNetClient.ConcurrentDownloads); _logger.LogDebug("Download test completed"); _logger.LogDebug("Testing upload speed..."); var uploadSpeed = _speedTestClient.TestUploadSpeed(server, _runnerOptions.SpeedTestNetClient.ConcurrentUploads); _logger.LogDebug("Upload test completed"); result = new SpeedTestResult { NodeName = _runnerOptions.NodeName, Location = _runnerOptions.Location, ExecutionDateTime = executionDateTime, AverageDownloadSpeed = (decimal)downloadSpeed, AverageUploadSpeed = (decimal)uploadSpeed, MaximumDownloadSpeed = (decimal)downloadSpeed, MaximumUploadSpeed = (decimal)uploadSpeed, Latency = server.Latency, TestServerName = server.Host }; testSuccessful = true; } catch (HttpRequestException hre) { var message = $"Error testing server {server.Host}. Skipping..."; if (_runnerOptions.LogExceptions) { _logger.LogError(hre, message); } else { _logger.LogError(message); } } } if (result != null) { _logger.LogDebug("Posting speed test results..."); await _speedtestHttpClient.PostTestResult(result); _logger.LogDebug("Speed test results posted"); } else { _logger.LogError("All speed tests failed"); } }