private IPingStats GetUpdatedStats(IPingResponse pingResponse) { PingStats stats; IPAddress targetIpAddress = pingResponse.TargetIpAddress; bool isSuccess = _pingResponseUtil.IsSuccess(pingResponse.Status); if (_stats.TryGetValue(targetIpAddress, out PingStats found)) { stats = found; } else { DateTime?lastSuccess = isSuccess ? DateTime.Now : (DateTime?)null; DateTime?lastFailure = !isSuccess ? DateTime.Now : (DateTime?)null; stats = new PingStats(lastSuccess, lastFailure); _stats.Add(targetIpAddress, stats); } _pingStatsUtil.AddStatus(stats.StatusHistory, isSuccess); double v = isSuccess ? 1.0 : 0.0; stats.Average25 = ((stats.Average25 * stats.Average25Count) + v) / (stats.Average25Count + 1); if (stats.Average25Count < 25) { stats.Average25Count++; } return(stats); }
public void AverageLatency_PingCountIsThree() { //Assign PingStats stats = new PingStats(); PingResult result1 = new PingResult() { AddressOrIp = "www.google.com", Latency = 0, Status = PingResult.StatusMessage.SUCCESS, }; PingResult result2 = new PingResult() { AddressOrIp = "www.google.com", Latency = 50, Status = PingResult.StatusMessage.SUCCESS, }; PingResult result3 = new PingResult() { AddressOrIp = "www.google.com", Latency = 100, Status = PingResult.StatusMessage.SUCCESS, }; double expectedResult = 50; double actualResult; //act stats.Add(result1); stats.Add(result2); stats.Add(result3); actualResult = stats.AverageLatency; //assert Assert.AreEqual(expectedResult, actualResult); }
public void Add_ResultStatusFailureAndSuccess() { //Assign PingStats stats = new PingStats(); PingResult result = new PingResult() { AddressOrIp = "www.google.com", Latency = 1, Status = PingResult.StatusMessage.FAILURE, }; PingResult result2 = new PingResult() { AddressOrIp = "www.google.com", Latency = 5, Status = PingResult.StatusMessage.SUCCESS, }; bool expectedResult = true; bool actualResult; //act stats.Add(result); stats.Add(result2); actualResult = (stats.MaxLatency == 5 && stats.PacketsLost == 1 && stats.PacketsSent == 2 && stats.AverageLatency == 5); //assert Assert.AreEqual(expectedResult, actualResult); }
public void AverageLatency_PingCountIsZero() { //Assign PingStats stats = new PingStats(); double expectedResult = 0; double actualResult; //act actualResult = stats.AverageLatency; //assert Assert.AreEqual(expectedResult, actualResult); }
public void Add_AddressResultIsNull() { //Assign PingStats stats = new PingStats(); PingResult result = new PingResult() { AddressOrIp = null, }; bool expectedResult = true; bool actualResult; //act stats.Add(result); actualResult = (stats.MaxLatency == 0 && stats.PacketsLost == 0 && stats.PacketsSent == 0 && stats.AverageLatency == 0); //assert Assert.AreEqual(expectedResult, actualResult); }
public void GetVector_100PercentSuccess_WillMatchBoring() { // Arrange PingVectorFactory unitUnderTest = CreateFactory(); IPingResponse pingResponse = new PingResponse(IPAddress.Loopback, TimeSpan.Zero, IPStatus.Success, IPAddress.Loopback); IPingStats stats = new PingStats(DateTime.Now, null) { Average25 = 0, Average25Count = 0, StatusHistory = Enumerable.Range(1, PingStatsUtil.MaxHistoryCount).Select(i => true).ToList() }; // Act IVector actual = unitUnderTest.GetVector( pingResponse, stats); // Assert IVector expected = Boring; VectorComparer.AssertAreEqual(expected, actual, HundredthPi); }
public void GetVector_1Failure_CloseToInteresting() { // Arrange PingVectorFactory unitUnderTest = CreateFactory(); IPingResponse pingResponse = new PingResponse(IPAddress.Loopback, TimeSpan.Zero, IPStatus.Success, IPAddress.Loopback); IPingStats stats = new PingStats(null, DateTime.Now) { Average25 = 0, Average25Count = 0, StatusHistory = Enumerable.Range(1, PingStatsUtil.MaxHistoryCount).Select(i => true).Append(false).ToList() }; // Act IVector actual = unitUnderTest.GetVector( pingResponse, stats); // Assert IVector expected = Interesting; VectorComparer.AssertAreEqual(expected, actual, EighthPi); }
public void Add_LatencyResultIsNegative() { //Assign PingStats stats = new PingStats(); PingResult result = new PingResult() { AddressOrIp = "www.google.com", Status = PingResult.StatusMessage.SUCCESS, Latency = -1, }; bool expectedResult = true; bool actualResult; //act stats.Add(result); actualResult = (stats.MaxLatency == 0 && stats.PacketsLost == 0 && stats.PacketsSent == 1 && stats.AverageLatency == 1); //assert Assert.AreEqual(expectedResult, actualResult); }