コード例 #1
0
ファイル: App.cs プロジェクト: MAtchane/speed-tester
        public async System.Threading.Tasks.Task <string> StartSpeedTestAsync()
        {
            client   = new SpeedTestClient();
            settings = await client.GetSettingsAsync();

            Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
            {
                UpdateIndicators("Getting Settings");
            });

            Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
            {
                UpdateIndicators("Getting Client's Country");
            });
            clientCountry = await GetClienCountryAsync();

            Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
            {
                UpdateIndicators("Selecting Best Server by Distance");
            });
            var servers    = SelectServers();
            var bestServer = SelectBestServer(servers);

            UpdateServerInfo(bestServer);

            Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
            {
                UpdateIndicators("Testing Internet Speed");
            });
            var downloadSpeed = client.TestDownloadSpeed(bestServer, settings.Download.ThreadsPerUrl);

            UpdateDownloadUi(downloadSpeed);
            //PrintSpeed("Download", downloadSpeed);

            Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
            {
                UpdateIndicators("Testing Internet Speed");
            });
            var uploadSpeed = client.TestUploadSpeed(bestServer, settings.Upload.ThreadsPerUrl);

            //PrintSpeed("Upload", uploadSpeed);
            UpdateUploadUi(uploadSpeed);
            return("Down: " + Math.Round(downloadSpeed / 1024, 2).ToString() + "Up: " + Math.Round(uploadSpeed / 1024, 2).ToString());
            //Console.WriteLine("Press a key to exit.");
            //Console.ReadKey();
        }
コード例 #2
0
        private async Task <Speedtest> RunSpeedtest(DateTimeOffset timestamp)
        {
            await _semaphore.WaitAsync();

            IsRunning = true;
            RunStarted?.Invoke();

            var test = new Speedtest {
                Timestamp = timestamp
            };

            try
            {
                var settings = await _client.GetSettingsAsync();

                var server = settings.Servers
                             .OrderBy(s => s.Distance)
                             .FirstOrDefault();

                test.ServerLatency = await _client.TestServerLatencyAsync(server);

                test.DownloadSpeed = await _client.TestDownloadSpeedAsync(server);

                test.UploadSpeed = await _client.TestUploadSpeedAsync(server);

                _logger.LogInformation($"Test ran successfully - Time: {timestamp}, Latency: {test.ServerLatency} ms, " +
                                       $"Download: {test.DownloadSpeed / 1000} Mbps, Upload: {test.UploadSpeed / 1000} Mbps");

                using var scope = _services.CreateScope();
                var context = scope.ServiceProvider.GetRequiredService <AppDbContext>();
                context.Speedtests.Add(test);
                await context.SaveChangesAsync();
            }
            finally
            {
                IsRunning = false;
                RunCompleted?.Invoke(test);

                _semaphore.Release();
            }

            return(test);
        }
コード例 #3
0
        static async Task Main()
        {
            Console.WriteLine("Getting speedtest.net settings and server list...");
            client   = new SpeedTestClient();
            settings = await client.GetSettingsAsync();

            var servers = await SelectServers();

            var bestServer = SelectBestServer(servers);

            Console.WriteLine("Testing speed...");
            var downloadSpeed = await client.TestDownloadSpeedAsync(bestServer, settings.Download.ThreadsPerUrl);

            PrintSpeed("Download", downloadSpeed);
            var uploadSpeed = await client.TestUploadSpeedAsync(bestServer, settings.Upload.ThreadsPerUrl);

            PrintSpeed("Upload", uploadSpeed);

            Console.WriteLine("Press a key to exit.");
            Console.ReadKey();
        }