public async Task StatusAuditorHistory() { BasicAmbientSettingsSet settings = new BasicAmbientSettingsSet(nameof(StatusAuditorHistory)); settings.ChangeSetting(nameof(StatusChecker) + "-HistoryRetentionMinutes", "5"); settings.ChangeSetting(nameof(StatusChecker) + "-HistoryRetentionEntries", "10"); using (ScopedLocalServiceOverride <IAmbientSettingsSet> localOverrideTest = new ScopedLocalServiceOverride <IAmbientSettingsSet>(settings)) using (AmbientClock.Pause()) { using (StatusAuditorTest test = new StatusAuditorTest(nameof(StatusAuditorTest))) { StatusResults results = await test.GetStatus(); Assert.AreEqual("StatusAuditorTest", test.TargetSystem); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); // since we're rotating the status rating, the frequency will vary because of that Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); // this one starts kicking out history items due to count (this was determined by simply trying it out, but that part doesn't matter for this test) Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); // this one should start kicking history items out due to time Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(30)); Assert.IsTrue(test.History.Count() <= 10); Assert.IsTrue(test.History.First().Time >= AmbientClock.UtcNow.AddMinutes(-5)); } } }
public async Task StatusAuditorArgumentException() { using (AmbientClock.Pause()) { StatusResults auditorTestResults; StatusResults auditorAuditExceptionTestResults; using (StatusAuditorTest test = new StatusAuditorTest(nameof(StatusAuditorArgumentException))) { auditorTestResults = await test.GetStatus(); } using (StatusAuditorAuditExceptionTest test = new StatusAuditorAuditExceptionTest(nameof(StatusAuditorArgumentException) + "2")) { auditorAuditExceptionTestResults = await test.GetStatus(); Assert.ThrowsException <ArgumentException>(() => test.SetLatestResults(auditorTestResults)); } } }
public async Task StatusAuditor() { using (AmbientClock.Pause()) { using (StatusAuditorTest test = new StatusAuditorTest(nameof(StatusAuditorTest))) { StatusResults results = await test.GetStatus(); Assert.AreEqual("StatusAuditorTest", test.TargetSystem); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); // each of these skips should trigger another audit, with rotating values AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); AmbientClock.SkipAhead(TimeSpan.FromSeconds(10)); } } }