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 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"); } }