コード例 #1
0
        public void Verify_empty_result_returned_when_snapshot_null()
        {
            BrokerConnectivitySnapshot snapshot = null;

            var result = new BrokerConnectivityScanner(_probes)
                         .Scan(snapshot);

            Assert.IsEmpty(result);
        }
コード例 #2
0
        public void Verify_probe_na()
        {
            var knowledgeBaseProvider = _services.GetService <IKnowledgeBaseProvider>();
            var probe = new HighConnectionCreationRateProbe(null, knowledgeBaseProvider);

            BrokerConnectivitySnapshot snapshot = GetSnapshot(99, 100);

            var result = probe.Execute(snapshot);

            Assert.AreEqual(ProbeResultStatus.NA, result.Status);
        }
コード例 #3
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult result;
            BrokerConnectivitySnapshot data = snapshot as BrokerConnectivitySnapshot;

            if (_config.IsNull() || _config.Probes.IsNull())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.NA, out var article);
                result = new NotApplicableProbeResult(null,
                                                      null,
                                                      Metadata.Id,
                                                      Metadata.Name,
                                                      ComponentType,
                                                      article);

                NotifyObservers(result);

                return(result);
            }

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("ConnectionsCreated.Rate", data.ConnectionsCreated.Rate.ToString()),
                new ProbeDataImpl("HighConnectionCreationRateThreshold", _config.Probes.HighConnectionCreationRateThreshold.ToString())
            };

            if (data.ConnectionsCreated.Rate >= _config.Probes.HighConnectionCreationRateThreshold)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Warning, out var article);
                result = new WarningProbeResult(null,
                                                null,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(null,
                                                null,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
コード例 #4
0
        public void Verify_probe_healthy_condition()
        {
            HareDuConfig config = new () { Diagnostics = new () { Probes = new () { HighConnectionCreationRateThreshold = 100 } } };
            var          knowledgeBaseProvider = _services.GetService <IKnowledgeBaseProvider>();
            var          probe = new HighConnectionCreationRateProbe(config.Diagnostics, knowledgeBaseProvider);

            BrokerConnectivitySnapshot snapshot = GetSnapshot(99, 100);

            var result = probe.Execute(snapshot);

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