Tests.AppendersTest.BrokerSMIAppenderTest C# (CSharp) Method

BrokerSMIAppenderTest() private method

private BrokerSMIAppenderTest ( ) : void
return void
        public void BrokerSMIAppenderTest()
        {
            var trace = TraceManager.BeginTrace();
            var brokerAppender = TraceManager_Accessor.appenders.Where(a => a is pt.sapo.gis.trace.appender.SMI.BrokerSMILoggerAppender).FirstOrDefault() as pt.sapo.gis.trace.appender.SMI.BrokerSMILoggerAppender;

            var broker = new SapoBrokerClient.BrokerClient(new SapoBrokerClient.HostInfo(brokerAppender.Properties.Host, brokerAppender.Properties.Port));
            var subscription = new SapoBrokerClient.Subscription(brokerAppender.Properties.Topic, SapoBrokerClient.NetAction.DestinationType.TOPIC);
            JObject report = null;
            var ev = new ManualResetEvent(false);
            subscription.OnMessage += m =>
            {
                var str = new StringWriter();
                var jsonSer = new Newtonsoft.Json.JsonSerializer();
                report = JObject.Parse(Encoding.UTF8.GetString(m.Message.Payload));
                ev.Set();
            };
            broker.Subscribe(subscription);
            var e = new pt.sapo.gis.trace.Entry
            {
                Type = "UNKNOWN",
                Description = "Who knowns...",
                Severity = pt.sapo.gis.trace.configuration.severityType.FATAL,
                Properties = new Dictionary<String, Object> { { "a", "1" }, { "b", "foo" } }
            };
            trace.TraceEntry(e);
            if (ev.WaitOne(TimeSpan.FromSeconds(10)) == false)
                Assert.Fail("Broker message doesn't arrive.");
            Assert.IsNotNull(report["SourceID"]);
            var defaultSourceId = TraceManager_Accessor.appenders.Where(a => a is BrokerSMILoggerAppender).Cast<BrokerSMILoggerAppender>().First().Properties.DefaultSourceId;
            Assert.AreEqual(defaultSourceId, report["SourceID"]);
            Assert.IsNotNull(report["DateTime"]);
            var state = report["State"];
            Assert.IsNotNull(state);
            Assert.IsNotNull(state["Health"]);
            Assert.AreEqual(pt.sapo.sdb.smi.HealthState.OperationalWithFailures.ToString(), state["Health"]);
            Assert.IsNotNull(state["Execution"]);
            Assert.AreEqual(pt.sapo.sdb.smi.ExecutionState.Active.ToString(), state["Execution"]);
            Assert.IsNotNull(state["Failures"]);
            Assert.AreEqual(1, state["Failures"].Count());
            var failure = state["Failures"].First();
            Assert.IsNotNull(failure["FailureID"]);
            Assert.AreEqual(e.Type.ToString(), failure["FailureID"]);
            Assert.AreEqual(defaultSourceId, failure["SourceID"]);
            var details = failure["Details"];
            Assert.IsNotNull(details);
            Assert.IsNotNull(details["a"]);
            Assert.AreEqual(JTokenType.String, details["a"].Type);
            Assert.AreEqual("1", details["a"]);
            Assert.IsNotNull(details["b"]);
            Assert.AreEqual(JTokenType.String, details["b"].Type);
            Assert.AreEqual("foo", details["b"]);
            Assert.IsNotNull(report["Metrics"]);
            Assert.IsNotNull(report["ActivityID"]);
            Assert.IsNotNull(report["AgentID"]);
        }