public void AggregatedAlertNullSourceAndTarget() { StatusAuditReport report = new StatusAuditReport(DateTime.MinValue, TimeSpan.FromSeconds(1)); AggregatedAlert a = new AggregatedAlert(null, null, DateTime.MinValue, report); Assert.AreEqual(Status.DefaultSource, a.Sources[0]); Assert.AreEqual(Status.DefaultTarget, a.Target); }
public void AggregatedAlertProperties() { using (AmbientClock.Pause()) { StatusAuditAlert commonAlert = new StatusAuditAlert(.7f, "TestCode", "TerseTest", "Detailed Test Message"); StatusAuditReport report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10), commonAlert); AggregatedAlert first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, report1); Assert.IsNotNull(first.PropertyRanges); Assert.AreEqual(first.Report, report1); } }
public void AggregatedDefaultRating() { using (AmbientClock.Pause()) { StatusAuditAlert commonAlert = new StatusAuditAlert(.7f, "TestCode", "TerseTest", "Detailed Test Message"); StatusResults results = new StatusResults("TestSource", "TestTarget", ImmutableArray <StatusResults> .Empty); AggregatedAlert alert = new AggregatedAlert(results); Assert.AreEqual(StatusRating.Okay, alert.RatingSum); StatusAuditReport report = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10)); results = new StatusResults("TestSource", "TestTarget", AmbientClock.UtcNow, 0, ImmutableArray <StatusProperty> .Empty, report); alert = new AggregatedAlert(results); Assert.AreEqual(StatusRating.Okay, alert.RatingSum); } }
public void NotificationWriterWithProperties() { StatusNotificationWriter writer = new StatusNotificationWriter(); string terse; string details; writer = new StatusNotificationWriter(); writer.EnterStatusRange(StatusRating.Fail); writer.EnterTarget("SampleTarget", StatusRating.Fail - 0.5f); writer.LeaveTarget(); writer.LeaveStatusRange(); terse = writer.Terse; details = writer.Details; writer = new StatusNotificationWriter(); writer.EnterHtmlAndBody(StatusRating.Fail); writer.EnterStatusRange(StatusRating.Fail); writer.EnterTarget("SampleTarget", StatusRating.Fail - 0.5f); writer.LeaveTarget(); writer.LeaveStatusRange(); writer.LeaveBodyAndHtml(); terse = writer.Terse; details = writer.Details; writer = new StatusNotificationWriter(); StatusResults r = new StatusResults("Source", "Target", new StatusResults[0]); AggregatedAlert a = new AggregatedAlert(r); writer = new StatusNotificationWriter(); writer.EnterStatusRange(a.AverageRating); writer.WriteAggregatedAlert(a); writer.LeaveStatusRange(); terse = writer.Terse; details = writer.Details; writer = new StatusNotificationWriter(); r = new StatusResults("Source1", "Target", new StatusResults[0]); a = new AggregatedAlert(r); r = new StatusResults("Source2", "Target", new StatusResults[0]); a.Aggregate(r); writer = new StatusNotificationWriter(); writer.EnterStatusRange(a.AverageRating); writer.WriteAggregatedAlert(a); writer.LeaveStatusRange(); terse = writer.Terse; details = writer.Details; }
public void AggregatedAlertExceptions() { using (AmbientClock.Pause()) { StatusAuditAlert alert1 = new StatusAuditAlert(.7f, "TestCode1", "TerseTest", "Detailed Test Message"); StatusAuditAlert alert2 = new StatusAuditAlert(.7f, "TestCode2", "TerseTest", "Detailed Test Message"); StatusAuditReport report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10), alert1); StatusAuditReport report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2), AmbientClock.UtcNow.AddSeconds(-10).AddMinutes(10), alert2); AggregatedAlert first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, report1); AggregatedAlert second = new AggregatedAlert("TestSource2", "TestTarget", DateTime.MinValue, report2); StatusResults secondResults = new StatusResults("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray <StatusProperty> .Empty, report2); Assert.ThrowsException <InvalidOperationException>(() => first.Aggregate(secondResults)); Assert.ThrowsException <InvalidOperationException>(() => first.Aggregate("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), report2)); report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2), AmbientClock.UtcNow.AddSeconds(-10).AddMinutes(10), alert1); secondResults = new StatusResults("TestSource2", "MismatchedTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray <StatusProperty> .Empty, report2); Assert.ThrowsException <InvalidOperationException>(() => first.Aggregate(secondResults)); Assert.ThrowsException <InvalidOperationException>(() => first.Aggregate("TestSource2", "MismatchedTarget", AmbientClock.UtcNow.AddSeconds(-10), report2)); } }
public void AggregatedAlertCanBeAggregated() { using (AmbientClock.Pause()) { StatusAuditAlert alert1 = new StatusAuditAlert(.7f, "TestCode1", "TerseTest", "Detailed Test Message"); StatusAuditAlert alert2 = new StatusAuditAlert(.7f, "TestCode2", "TerseTest", "Detailed Test Message"); StatusAuditReport report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10), alert1); StatusAuditReport report1NoAlert = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10), null); StatusAuditReport report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2), AmbientClock.UtcNow.AddSeconds(-10).AddMinutes(10), alert2); StatusAuditReport report2NoAlert = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2), AmbientClock.UtcNow.AddSeconds(-10).AddMinutes(10), null); AggregatedAlert first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, report1); AggregatedAlert second = new AggregatedAlert("TestSource2", "TestTarget", DateTime.MinValue, report2); Assert.IsFalse(first.CanBeAggregated("/", report2)); Assert.IsFalse(first.CanBeAggregated("/", report2NoAlert)); Assert.IsFalse(first.CanBeAggregated("/", null)); Assert.IsTrue(first.CanBeAggregated("TestTarget", report1)); Assert.IsFalse(first.CanBeAggregated("TestTarget", report1NoAlert)); Assert.IsFalse(first.CanBeAggregated("TestTarget", null)); } }
public void NotificationWriter() { StatusNotificationWriter writer = new StatusNotificationWriter(); string terse; string details; writer = new StatusNotificationWriter(); writer.EnterStatusRange(StatusRating.Fail); writer.EnterTarget("SampleTarget", StatusRating.Fail - 0.5f); writer.LeaveTarget(); writer.LeaveStatusRange(); terse = writer.Terse; details = writer.Details; Assert.IsTrue(terse.Contains("FAIL")); Assert.IsTrue(terse.Contains("SampleTarget")); Assert.IsTrue(details.Contains("Fail")); Assert.IsTrue(details.Contains("SampleTarget")); writer = new StatusNotificationWriter(); writer.EnterHtmlAndBody(StatusRating.Fail); writer.EnterStatusRange(StatusRating.Fail); writer.EnterTarget("SampleTarget", StatusRating.Fail - 0.5f); writer.LeaveTarget(); writer.LeaveStatusRange(); writer.LeaveBodyAndHtml(); terse = writer.Terse; details = writer.Details; Assert.IsTrue(terse.Contains("FAIL")); Assert.IsTrue(terse.Contains("SampleTarget")); Assert.IsTrue(details.Contains("Fail")); Assert.IsTrue(details.Contains("SampleTarget")); writer = new StatusNotificationWriter(); writer.EnterHtmlAndBody(StatusRating.Fail); writer.EnterStatusRange(StatusRating.Okay); writer.EnterTarget("SampleTarget", StatusRating.Superlative - 0.5f); writer.LeaveTarget(); writer.LeaveStatusRange(); writer.LeaveBodyAndHtml(); terse = writer.Terse; details = writer.Details; Assert.IsTrue(terse.Contains("OKAY")); Assert.IsTrue(terse.Contains("SampleTarget")); Assert.IsTrue(details.Contains("Okay")); Assert.IsTrue(details.Contains("SampleTarget")); writer = new StatusNotificationWriter(); StatusResults r = new StatusResults("Source", "Target", new StatusResults[0]); AggregatedAlert a = new AggregatedAlert(r); a.PropertyRanges.Add(new StatusPropertyRange(new StatusProperty("property", "value1"))); writer = new StatusNotificationWriter(); writer.EnterStatusRange(a.AverageRating); writer.WriteAggregatedAlert(a); writer.LeaveStatusRange(); terse = writer.Terse; details = writer.Details; Assert.IsTrue(terse.Contains("OKAY")); Assert.IsTrue(terse.Contains("Target")); Assert.IsTrue(details.Contains("Okay")); Assert.IsTrue(details.Contains("Target")); writer = new StatusNotificationWriter(); r = new StatusResults("Source", "Target", AmbientClock.UtcNow, 0, Array.Empty <StatusProperty>(), new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromMilliseconds(5))); a = new AggregatedAlert(r); a.PropertyRanges.Add(new StatusPropertyRange(new StatusProperty("property", "value1"))); writer = new StatusNotificationWriter(); writer.EnterStatusRange(a.AverageRating); writer.WriteAggregatedAlert(a); writer.LeaveStatusRange(); terse = writer.Terse; details = writer.Details; Assert.IsTrue(terse.Contains("OKAY")); Assert.IsTrue(terse.Contains("Target")); Assert.IsTrue(details.Contains("Okay")); Assert.IsTrue(details.Contains("Target")); writer = new StatusNotificationWriter(); r = new StatusResults("Source1", "Target", new StatusResults[0]); a = new AggregatedAlert(r); a.PropertyRanges.Add(new StatusPropertyRange(new StatusProperty("property", "value1"))); a.PropertyRanges.Add(new StatusPropertyRange(new StatusProperty("property", "value2"))); a.PropertyRanges.Add(new StatusPropertyRange(new StatusProperty("property", "value5"))); r = new StatusResults("Source2", "Target", new StatusResults[0]); a.Aggregate(r); writer = new StatusNotificationWriter(); writer.EnterStatusRange(a.AverageRating); writer.WriteAggregatedAlert(a); writer.LeaveStatusRange(); terse = writer.Terse; details = writer.Details; Assert.IsTrue(terse.Contains("OKAY")); Assert.IsTrue(terse.Contains("Target")); Assert.IsTrue(details.Contains("Okay")); Assert.IsTrue(details.Contains("Target")); }
public void AggregatedAlertAggregate() { using (AmbientClock.Pause()) { StatusAuditAlert commonAlert = new StatusAuditAlert(.7f, "TestCode", "TerseTest", "Detailed Test Message"); StatusAuditReport report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10), commonAlert); StatusAuditReport report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2), AmbientClock.UtcNow.AddSeconds(-10).AddMinutes(10), commonAlert); AggregatedAlert first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, report1); AggregatedAlert second = new AggregatedAlert("TestSource2", "TestTarget", DateTime.MinValue, report2); StatusResults secondResults = new StatusResults("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray <StatusProperty> .Empty, report2); first.Aggregate(secondResults); report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10)); report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2), AmbientClock.UtcNow.AddSeconds(-10).AddMinutes(10)); first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, report1); second = new AggregatedAlert("TestSource2", "TestTarget", DateTime.MinValue, report2); secondResults = new StatusResults("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray <StatusProperty> .Empty, report2); first.Aggregate(secondResults); Assert.AreEqual(StatusRating.Okay, first.AverageRating); first.Aggregate("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), report2); Assert.AreEqual(StatusRating.Okay, first.AverageRating); //report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1)); //report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2)); //first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, report1); //second = new AggregatedAlert("TestSource2", "TestTarget", DateTime.MinValue, report2); //secondResults = new StatusResults("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray<StatusProperty>.Empty, report2); //first.Aggregate(secondResults); //Assert.AreEqual(StatusRating.Okay, first.AverageRating); //first.Aggregate("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), report2); //Assert.AreEqual(StatusRating.Okay, first.AverageRating); report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1)); report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2)); first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, report1); second = new AggregatedAlert("TestSource2", "TestTarget", DateTime.MinValue, report2); secondResults = new StatusResults("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray <StatusProperty> .Empty, new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromMilliseconds(50), AmbientClock.UtcNow.AddSeconds(5))); first.Aggregate(secondResults); Assert.AreEqual(StatusRating.Okay, first.AverageRating); first.Aggregate("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromMilliseconds(50), AmbientClock.UtcNow.AddSeconds(5))); Assert.AreEqual(StatusRating.Okay, first.AverageRating); first = new AggregatedAlert("TestSource1", "TestTarget", DateTime.MinValue, null); second = new AggregatedAlert("TestSource2", "TestTarget", DateTime.MinValue, null); secondResults = new StatusResults("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray <StatusProperty> .Empty, null); first.Aggregate(secondResults); Assert.AreEqual(StatusRating.Okay, first.AverageRating); first.Aggregate("TestSource2", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), null); Assert.AreEqual(StatusRating.Okay, first.AverageRating); report1 = new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(1), AmbientClock.UtcNow.AddMinutes(10)); report2 = new StatusAuditReport(AmbientClock.UtcNow.AddSeconds(-10), TimeSpan.FromSeconds(2), AmbientClock.UtcNow.AddSeconds(-10).AddMinutes(10)); first = new AggregatedAlert("TestSource", "TestTarget", DateTime.MinValue, report1); second = new AggregatedAlert("TestSource", "TestTarget", DateTime.MinValue, report2); secondResults = new StatusResults("TestSource", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), 0, ImmutableArray <StatusProperty> .Empty, new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(13))); first.Aggregate(secondResults); Assert.AreEqual(StatusRating.Okay, first.AverageRating); first.Aggregate("TestSource", "TestTarget", AmbientClock.UtcNow.AddSeconds(-10), new StatusAuditReport(AmbientClock.UtcNow, TimeSpan.FromSeconds(13))); Assert.AreEqual(StatusRating.Okay, first.AverageRating); } }