Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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));
            }
        }
Exemplo n.º 6
0
 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));
     }
 }
Exemplo n.º 7
0
        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"));
        }
Exemplo n.º 8
0
        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);
            }
        }