コード例 #1
0
        public async Task PingStatsSource_EnsureAllServers()
        {
            var servers = await PingStatsSource.LoadInternalServerListAsync();

            var p             = new Ping();
            var failedServers = new List <Tuple <IPAddress, object> >();

            foreach (var s in servers)
            {
                // Make 5 attempts to successfully ping each server.
                for (int i = 0; i < 5; i++)
                {
                    try
                    {
                        var result = await p.SendPingAsync(s, 5000);

                        if (result.Status == IPStatus.Success)
                        {
                            break;
                        }
                        if (i == 4)
                        {
                            failedServers.Add(Tuple.Create(s, (object)result.Status));
                        }
                        else
                        {
                            await Task.Delay(1000);
                        }
                    }
                    catch (Exception ex)
                    {
                        failedServers.Add(Tuple.Create(s, (object)ex));
                        break;
                    }
                }
            }

            if (failedServers.Any())
            {
                throw new Exception("Servers failed to ping:\n" + String.Join("\n", failedServers.Select(x => x.Item1.ToString() + " - " + x.Item2.ToString())));
            }
        }
コード例 #2
0
        public void PingStatsSource_PingsPerSample()
        {
            var source = new PingStatsSource(TimeSpan.FromMinutes(1), null, 1000, 20);

            Assert.AreEqual(source.PingsPerSample, 1000);
        }
コード例 #3
0
        public void PingStatsSource_ConfigPeriod()
        {
            var source = new PingStatsSource(TimeSpan.FromMinutes(100));

            Assert.AreEqual(source.PeriodNormalPriority.TotalMinutes, 100.0);
        }