public ProbeResult Execute <T>(T snapshot)
        {
            ChannelSnapshot data = snapshot as ChannelSnapshot;
            ProbeResult     result;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("PrefetchCount", data.PrefetchCount.ToString())
            };

            if (data.PrefetchCount == 0)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Warning, out var article);
                result = new WarningProbeResult(data.ConnectionIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Inconclusive, out var article);
                result = new InconclusiveProbeResult(data.ConnectionIdentifier,
                                                     data.Identifier,
                                                     Metadata.Id,
                                                     Metadata.Name,
                                                     ComponentType,
                                                     probeData,
                                                     article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #2
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ChannelSnapshot data = snapshot as ChannelSnapshot;
            ProbeResult     result;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("UnacknowledgedMessages", data.UnacknowledgedMessages.ToString()),
                new ProbeDataImpl("PrefetchCount", data.PrefetchCount.ToString())
            };

            if (data.UnacknowledgedMessages > data.PrefetchCount)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.ConnectionIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.ConnectionIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData, article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #3
0
        public void Verify_probe_healthy_condition()
        {
            var knowledgeBaseProvider = _services.GetService <IKnowledgeBaseProvider>();
            var probe = new ChannelThrottlingProbe(knowledgeBaseProvider);

            ChannelSnapshot snapshot = new ChannelSnapshot()
            {
                PrefetchCount = 6,
                UncommittedAcknowledgements = 2,
                UncommittedMessages         = 5,
                UnconfirmedMessages         = 8,
                UnacknowledgedMessages      = 4,
                Consumers  = 1,
                Identifier = "Channel1"
            };

            var result = probe.Execute(snapshot);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(ProbeResultStatus.Healthy, result.Status);
                Assert.AreEqual(typeof(ChannelThrottlingProbe).GetIdentifier(), result.KB.Id);
            });
        }