@SuppressWarnings("unchecked") public void testBacklogTracerEventMessage() throws Exception { // JMX tests dont work well on AIX CI servers (hangs them) if (isPlatform("aix")) { return; } MBeanServer mbeanServer = getMBeanServer(); ObjectName on = new ObjectName("org.apache.camel:context=camel-1,type=tracer,name=BacklogTracer"); assertNotNull(on); assertTrue(mbeanServer.isRegistered(on)); Boolean enabled = (Boolean) mbeanServer.getAttribute(on, "Enabled"); assertEquals("Should not be enabled", Boolean.FALSE, enabled); Integer size = (Integer) mbeanServer.getAttribute(on, "BacklogSize"); assertEquals("Should be 1000", 1000, size.intValue()); Boolean removeOnDump = (Boolean) mbeanServer.getAttribute(on, "RemoveOnDump"); assertEquals(Boolean.TRUE, removeOnDump); // enable it mbeanServer.setAttribute(on, new Attribute("Enabled", Boolean.TRUE)); getMockEndpoint("mock:foo").expectedMessageCount(2); getMockEndpoint("mock:bar").expectedMessageCount(2); template.sendBody("direct:start", "Hello World"); template.sendBody("direct:start", "Bye World"); assertMockEndpointsSatisfied(); List<Exchange> exchanges = getMockEndpoint("mock:foo").getReceivedExchanges(); List<BacklogTracerEventMessage> events = (List<BacklogTracerEventMessage>) mbeanServer.invoke( on, "dumpTracedMessages", new Object[] {"foo"}, new String[] {"java.lang.String"}); assertNotNull(events); assertEquals(2, events.size()); BacklogTracerEventMessage event1 = events.get(0); assertEquals("foo", event1.getToNode()); assertEquals( " <message exchangeId=\"" + exchanges.get(0).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Hello World</body>\n" + " </message>", event1.getMessageAsXml()); BacklogTracerEventMessage event2 = events.get(1); assertEquals("foo", event2.getToNode()); assertEquals( " <message exchangeId=\"" + exchanges.get(1).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Bye World</body>\n" + " </message>", event2.getMessageAsXml()); }
@SuppressWarnings("unchecked") public void testBacklogTracerEventMessageDumpAll() throws Exception { MBeanServer mbeanServer = getMBeanServer(); ObjectName on = new ObjectName("org.apache.camel:context=camel-1,type=tracer,name=BacklogTracer"); assertNotNull(on); mbeanServer.isRegistered(on); Boolean enabled = (Boolean) mbeanServer.getAttribute(on, "Enabled"); assertEquals("Should not be enabled", Boolean.FALSE, enabled); // enable it mbeanServer.setAttribute(on, new Attribute("Enabled", Boolean.TRUE)); getMockEndpoint("mock:foo").expectedMessageCount(2); getMockEndpoint("mock:bar").expectedMessageCount(2); template.sendBody("direct:start", "Hello World"); template.sendBody("direct:start", "Bye World"); assertMockEndpointsSatisfied(); List<Exchange> fooExchanges = getMockEndpoint("mock:foo").getReceivedExchanges(); List<Exchange> barExchanges = getMockEndpoint("mock:bar").getReceivedExchanges(); List<BacklogTracerEventMessage> events = (List<BacklogTracerEventMessage>) mbeanServer.invoke(on, "dumpAllTracedMessages", null, null); assertNotNull(events); assertEquals(6, events.size()); BacklogTracerEventMessage event0 = events.get(0); assertEquals("route1", event0.getRouteId()); assertEquals(null, event0.getToNode()); assertEquals( " <message exchangeId=\"" + fooExchanges.get(0).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Hello World</body>\n" + " </message>", event0.getMessageAsXml()); BacklogTracerEventMessage event1 = events.get(1); assertEquals("route1", event1.getRouteId()); assertEquals("foo", event1.getToNode()); assertEquals( " <message exchangeId=\"" + fooExchanges.get(0).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Hello World</body>\n" + " </message>", event1.getMessageAsXml()); BacklogTracerEventMessage event2 = events.get(2); assertEquals("route1", event2.getRouteId()); assertEquals("bar", event2.getToNode()); assertEquals( " <message exchangeId=\"" + barExchanges.get(0).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Hello World</body>\n" + " </message>", event2.getMessageAsXml()); BacklogTracerEventMessage event3 = events.get(3); assertEquals("route1", event3.getRouteId()); assertEquals(null, event3.getToNode()); assertEquals( " <message exchangeId=\"" + fooExchanges.get(1).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Bye World</body>\n" + " </message>", event3.getMessageAsXml()); BacklogTracerEventMessage event4 = events.get(4); assertEquals("route1", event4.getRouteId()); assertEquals("foo", event4.getToNode()); assertEquals( " <message exchangeId=\"" + fooExchanges.get(1).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Bye World</body>\n" + " </message>", event3.getMessageAsXml()); BacklogTracerEventMessage event5 = events.get(5); assertEquals("route1", event5.getRouteId()); assertEquals("bar", event5.getToNode()); assertEquals( " <message exchangeId=\"" + barExchanges.get(1).getExchangeId() + "\">\n" + " <body type=\"java.lang.String\">Bye World</body>\n" + " </message>", event4.getMessageAsXml()); }