Repository: camel Updated Branches: refs/heads/master f501f021d -> cdef307d4
CAMEL-9597 update tests to use Mockito instead of jsendnsca stub Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cdef307d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cdef307d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cdef307d Branch: refs/heads/master Commit: cdef307d49720c65a32ff7169ecdb79596f2802e Parents: f501f02 Author: Kevin Earls <ke...@kevinearls.com> Authored: Wed Nov 9 12:09:42 2016 +0100 Committer: Kevin Earls <ke...@kevinearls.com> Committed: Wed Nov 9 12:09:42 2016 +0100 ---------------------------------------------------------------------- components/camel-nagios/pom.xml | 12 +- .../component/nagios/NagiosEventNotifier.java | 12 +- .../component/nagios/NagiosAsyncSendTest.java | 25 +++- .../nagios/NagiosEventNotifierTest.java | 45 ++---- .../camel/component/nagios/NagiosTest.java | 138 +++++++------------ .../nagios/NagiosXorEncryptionTest.java | 63 ++++----- 6 files changed, 124 insertions(+), 171 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/cdef307d/components/camel-nagios/pom.xml ---------------------------------------------------------------------- diff --git a/components/camel-nagios/pom.xml b/components/camel-nagios/pom.xml index 14d542e..b8cdb54 100644 --- a/components/camel-nagios/pom.xml +++ b/components/camel-nagios/pom.xml @@ -65,12 +65,6 @@ <!-- test dependencies --> <dependency> - <groupId>com.googlecode</groupId> - <artifactId>jsendnsca-test</artifactId> - <scope>test</scope> - <version>${jsendnsca-version}</version> - </dependency> - <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-test</artifactId> <optional>true</optional> @@ -80,7 +74,11 @@ <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> - </dependency> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> http://git-wip-us.apache.org/repos/asf/camel/blob/cdef307d/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java ---------------------------------------------------------------------- diff --git a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java index eff2e3c..3f99f7f 100644 --- a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java +++ b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosEventNotifier.java @@ -44,6 +44,14 @@ public class NagiosEventNotifier extends EventNotifierSupport { private String serviceName = "Camel"; private String hostName = "localhost"; + public NagiosEventNotifier() { + + } + + public NagiosEventNotifier(NagiosPassiveCheckSender sender) { + this.sender = sender; + } + public void notify(EventObject eventObject) throws Exception { // create message payload to send String message = eventObject.toString(); @@ -122,7 +130,9 @@ public class NagiosEventNotifier extends EventNotifierSupport { if (nagiosSettings == null) { nagiosSettings = configuration.getNagiosSettings(); } - sender = new NagiosPassiveCheckSender(nagiosSettings); + if (sender == null) { + sender = new NagiosPassiveCheckSender(nagiosSettings); + } log.info("Using " + configuration); } http://git-wip-us.apache.org/repos/asf/camel/blob/cdef307d/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosAsyncSendTest.java ---------------------------------------------------------------------- diff --git a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosAsyncSendTest.java b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosAsyncSendTest.java index ed6bef4..cf3ff35 100644 --- a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosAsyncSendTest.java +++ b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosAsyncSendTest.java @@ -16,21 +16,40 @@ */ package org.apache.camel.component.nagios; +import com.googlecode.jsendnsca.core.NagiosPassiveCheckSender; +import com.googlecode.jsendnsca.core.NonBlockingNagiosPassiveCheckSender; +import org.apache.camel.Producer; import org.apache.camel.builder.RouteBuilder; +import org.junit.BeforeClass; +import org.mockito.Mock; +import org.mockito.Mockito; /** * @version */ public class NagiosAsyncSendTest extends NagiosTest { + @BeforeClass + public static void setSender() { + nagiosPassiveCheckSender = Mockito.mock(NonBlockingNagiosPassiveCheckSender.class); + } + @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { - // START SNIPPET: e1 - from("direct:start").to("nagios:127.0.0.1:25667?password=secret&sendSync=false").to("mock:result"); - // END SNIPPET: e1 + String uri = "nagios:127.0.0.1:25664?password=secret&sendSync=false"; + + NagiosComponent nagiosComponent = new NagiosComponent(); + nagiosComponent.setCamelContext(context); + NagiosEndpoint nagiousEndpoint = (NagiosEndpoint) nagiosComponent.createEndpoint(uri); + nagiousEndpoint.setSender(nagiosPassiveCheckSender); + Producer nagiosProducer = nagiousEndpoint.createProducer(); + + from("direct:start") + .to(nagiousEndpoint) + .to("mock:result"); } }; } http://git-wip-us.apache.org/repos/asf/camel/blob/cdef307d/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosEventNotifierTest.java ---------------------------------------------------------------------- diff --git a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosEventNotifierTest.java b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosEventNotifierTest.java index ce72f93..6c75998 100644 --- a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosEventNotifierTest.java +++ b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosEventNotifierTest.java @@ -19,20 +19,26 @@ package org.apache.camel.component.nagios; import java.util.List; import com.googlecode.jsendnsca.core.MessagePayload; -import com.googlecode.jsendnsca.core.mocks.NagiosNscaStub; +import com.googlecode.jsendnsca.core.NagiosPassiveCheckSender; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import static org.mockito.Mockito.*; /** * @version */ public class NagiosEventNotifierTest extends CamelTestSupport { protected boolean canRun; - private NagiosNscaStub nagios; + + @Mock + private NagiosPassiveCheckSender nagiosPassiveCheckSender = Mockito.mock(NagiosPassiveCheckSender.class); + @Override protected boolean useJmx() { @@ -43,33 +49,12 @@ public class NagiosEventNotifierTest extends CamelTestSupport { @Override public void setUp() throws Exception { canRun = true; - - nagios = new NagiosNscaStub(25669, "password"); - try { - nagios.start(); - } catch (Exception e) { - log.warn("Error starting NagiosNscaStub. This exception is ignored.", e); - canRun = false; - } - super.setUp(); } - @After - @Override - public void tearDown() throws Exception { - super.tearDown(); - try { - nagios.stop(); - } catch (Exception e) { - // ignore - log.warn("Error stopping NagiosNscaStub. This exception is ignored.", e); - } - } - @Override protected CamelContext createCamelContext() throws Exception { - NagiosEventNotifier notifier = new NagiosEventNotifier(); + NagiosEventNotifier notifier = new NagiosEventNotifier(nagiosPassiveCheckSender); notifier.getConfiguration().setHost("localhost"); notifier.getConfiguration().setPort(25669); notifier.getConfiguration().setPassword("password"); @@ -93,11 +78,7 @@ public class NagiosEventNotifierTest extends CamelTestSupport { context.stop(); - // sleep a little to let nagios stub process the payloads - Thread.sleep(2000); - - List<MessagePayload> events = nagios.getMessagePayloadList(); - assertTrue("Should be 11+ events, was: " + events.size(), events.size() >= 11); + verify(nagiosPassiveCheckSender, atLeast(11)).send(any(MessagePayload.class)); } @Test @@ -115,11 +96,7 @@ public class NagiosEventNotifierTest extends CamelTestSupport { context.stop(); - // sleep a little to let nagios stub process the payloads - Thread.sleep(2000); - - List<MessagePayload> events = nagios.getMessagePayloadList(); - assertTrue("Should be 9+ events, was: " + events.size(), events.size() >= 9); + verify(nagiosPassiveCheckSender, atLeast(9)).send(any(MessagePayload.class)); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/cdef307d/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosTest.java ---------------------------------------------------------------------- diff --git a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosTest.java b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosTest.java index 69382b2..1f4e3b9 100644 --- a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosTest.java +++ b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosTest.java @@ -19,50 +19,46 @@ package org.apache.camel.component.nagios; import java.util.HashMap; import java.util.Map; +import com.googlecode.jsendnsca.core.INagiosPassiveCheckSender; import com.googlecode.jsendnsca.core.Level; import com.googlecode.jsendnsca.core.MessagePayload; -import com.googlecode.jsendnsca.core.mocks.NagiosNscaStub; +import com.googlecode.jsendnsca.core.NagiosPassiveCheckSender; +import org.apache.camel.Producer; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.After; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + /** * @version */ public class NagiosTest extends CamelTestSupport { + @Mock + protected static INagiosPassiveCheckSender nagiosPassiveCheckSender; + protected boolean canRun; - private NagiosNscaStub nagios; - + + @BeforeClass + public static void setSender() { + nagiosPassiveCheckSender = Mockito.mock(NagiosPassiveCheckSender.class); + } + @Before @Override public void setUp() throws Exception { canRun = true; - - nagios = new NagiosNscaStub(25667, "secret"); - try { - nagios.start(); - } catch (Exception e) { - log.warn("Error starting NagiosNscaStub. This exception is ignored.", e); - canRun = false; - } - super.setUp(); } - @After - @Override - public void tearDown() throws Exception { - super.tearDown(); - try { - nagios.stop(); - } catch (Exception e) { - // ignore - log.warn("Error stopping NagiosNscaStub. This exception is ignored.", e); - } - } @Test public void testSendToNagios() throws Exception { @@ -70,24 +66,18 @@ public class NagiosTest extends CamelTestSupport { return; } + MessagePayload expectedPayload = new MessagePayload("localhost", Level.OK.ordinal(), context.getName(), "Hello Nagios"); + MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMessageCount(1); mock.allMessages().body().isInstanceOf(String.class); + mock.expectedBodiesReceived("Hello Nagios"); template.sendBody("direct:start", "Hello Nagios"); assertMockEndpointsSatisfied(); - // sleep a little to let nagios stub process the payloads - Thread.sleep(2000); - - assertEquals(1, nagios.getMessagePayloadList().size()); - - MessagePayload payload = nagios.getMessagePayloadList().get(0); - assertEquals("Hello Nagios", payload.getMessage()); - assertEquals("localhost", payload.getHostname()); - assertEquals(Level.OK.ordinal(), payload.getLevel()); - assertEquals(context.getName(), payload.getServiceName()); + verify(nagiosPassiveCheckSender, times(1)).send(expectedPayload); } @Test @@ -96,35 +86,21 @@ public class NagiosTest extends CamelTestSupport { return; } + MessagePayload expectedPayload1 = new MessagePayload("localhost", Level.OK.ordinal(), context.getName(), "Hello Nagios"); + MessagePayload expectedPayload2 = new MessagePayload("localhost", Level.OK.ordinal(), context.getName(), "Bye Nagios"); + MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMessageCount(2); mock.allMessages().body().isInstanceOf(String.class); + mock.expectedBodiesReceived("Hello Nagios", "Bye Nagios"); template.sendBody("direct:start", "Hello Nagios"); template.sendBody("direct:start", "Bye Nagios"); assertMockEndpointsSatisfied(); - // sleep a little to let nagios stub process the payloads - Thread.sleep(3000); - - assertEquals(2, nagios.getMessagePayloadList().size()); - - MessagePayload payload = nagios.getMessagePayloadList().get(0); - MessagePayload payload2 = nagios.getMessagePayloadList().get(1); - - assertEquals("localhost", payload.getHostname()); - assertEquals(Level.OK.ordinal(), payload.getLevel()); - assertEquals(context.getName(), payload.getServiceName()); - assertEquals("localhost", payload2.getHostname()); - assertEquals(Level.OK.ordinal(), payload2.getLevel()); - assertEquals(context.getName(), payload2.getServiceName()); - - // when using async they may arrive in different order - boolean hello = "Hello Nagios".equals(payload.getMessage()) || "Hello Nagios".equals(payload2.getMessage()); - boolean bye = "Bye Nagios".equals(payload.getMessage()) || "Bye Nagios".equals(payload2.getMessage()); - assertTrue("Should have received Hello Nagios message", hello); - assertTrue("Should have received Bye Nagios message", bye); + verify(nagiosPassiveCheckSender).send(expectedPayload1); + verify(nagiosPassiveCheckSender).send(expectedPayload2); } @Test @@ -133,23 +109,16 @@ public class NagiosTest extends CamelTestSupport { return; } + MessagePayload expectedPayload1 = new MessagePayload("localhost", Level.WARNING.ordinal(), context.getName(), "Hello Nagios"); + MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMessageCount(1); + mock.expectedBodiesReceived("Hello Nagios"); template.sendBodyAndHeader("direct:start", "Hello Nagios", NagiosConstants.LEVEL, Level.WARNING); assertMockEndpointsSatisfied(); - - // sleep a little to let nagios stub process the payloads - Thread.sleep(2000); - - assertEquals(1, nagios.getMessagePayloadList().size()); - - MessagePayload payload = nagios.getMessagePayloadList().get(0); - assertEquals("Hello Nagios", payload.getMessage()); - assertEquals("localhost", payload.getHostname()); - assertEquals(Level.WARNING.ordinal(), payload.getLevel()); - assertEquals(context.getName(), payload.getServiceName()); + verify(nagiosPassiveCheckSender).send(expectedPayload1); } @Test @@ -158,23 +127,16 @@ public class NagiosTest extends CamelTestSupport { return; } + MessagePayload expectedPayload1 = new MessagePayload("localhost", Level.WARNING.ordinal(), context.getName(), "Hello Nagios"); MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMessageCount(1); + mock.expectedBodiesReceived("Hello Nagios"); template.sendBodyAndHeader("direct:start", "Hello Nagios", NagiosConstants.LEVEL, "WARNING"); assertMockEndpointsSatisfied(); - // sleep a little to let nagios stub process the payloads - Thread.sleep(2000); - - assertEquals(1, nagios.getMessagePayloadList().size()); - - MessagePayload payload = nagios.getMessagePayloadList().get(0); - assertEquals("Hello Nagios", payload.getMessage()); - assertEquals("localhost", payload.getHostname()); - assertEquals(Level.WARNING.ordinal(), payload.getLevel()); - assertEquals(context.getName(), payload.getServiceName()); + verify(nagiosPassiveCheckSender).send(expectedPayload1); } @Test @@ -183,8 +145,10 @@ public class NagiosTest extends CamelTestSupport { return; } + MessagePayload expectedPayload1 = new MessagePayload("myHost", Level.CRITICAL.ordinal(), "myService", "Hello Nagios"); MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMessageCount(1); + mock.expectedBodiesReceived("Hello Nagios"); Map<String, Object> headers = new HashMap<String, Object>(); headers.put(NagiosConstants.LEVEL, "CRITICAL"); @@ -193,17 +157,7 @@ public class NagiosTest extends CamelTestSupport { template.sendBodyAndHeaders("direct:start", "Hello Nagios", headers); assertMockEndpointsSatisfied(); - - // sleep a little to let nagios stub process the payloads - Thread.sleep(2000); - - assertEquals(1, nagios.getMessagePayloadList().size()); - - MessagePayload payload = nagios.getMessagePayloadList().get(0); - assertEquals("Hello Nagios", payload.getMessage()); - assertEquals("myHost", payload.getHostname()); - assertEquals(Level.CRITICAL.ordinal(), payload.getLevel()); - assertEquals("myService", payload.getServiceName()); + verify(nagiosPassiveCheckSender).send(expectedPayload1); } @Override @@ -211,9 +165,17 @@ public class NagiosTest extends CamelTestSupport { return new RouteBuilder() { @Override public void configure() throws Exception { - // START SNIPPET: e1 - from("direct:start").to("nagios:127.0.0.1:25667?password=secret").to("mock:result"); - // END SNIPPET: e1 + String uri = "nagios:127.0.0.1:25664?password=secret"; + + NagiosComponent nagiosComponent = new NagiosComponent(); + nagiosComponent.setCamelContext(context); + NagiosEndpoint nagiousEndpoint = (NagiosEndpoint) nagiosComponent.createEndpoint(uri); + nagiousEndpoint.setSender(nagiosPassiveCheckSender); + Producer nagiosProducer = nagiousEndpoint.createProducer(); + + from("direct:start") + .to(nagiousEndpoint) + .to("mock:result"); } }; } http://git-wip-us.apache.org/repos/asf/camel/blob/cdef307d/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosXorEncryptionTest.java ---------------------------------------------------------------------- diff --git a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosXorEncryptionTest.java b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosXorEncryptionTest.java index be7ffe4..4147a43 100644 --- a/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosXorEncryptionTest.java +++ b/components/camel-nagios/src/test/java/org/apache/camel/component/nagios/NagiosXorEncryptionTest.java @@ -18,55 +18,43 @@ package org.apache.camel.component.nagios; import com.googlecode.jsendnsca.core.Level; import com.googlecode.jsendnsca.core.MessagePayload; -import com.googlecode.jsendnsca.core.mocks.NagiosNscaStub; +import com.googlecode.jsendnsca.core.NagiosPassiveCheckSender; +import org.apache.camel.Producer; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; /** * @version */ public class NagiosXorEncryptionTest extends CamelTestSupport { protected boolean canRun; - private NagiosNscaStub nagios; - + + @Mock + private NagiosPassiveCheckSender nagiosPassiveCheckSender = Mockito.mock(NagiosPassiveCheckSender.class); + @Before @Override public void setUp() throws Exception { canRun = true; - - nagios = new NagiosNscaStub(25664, "secret"); - try { - nagios.start(); - } catch (Exception e) { - log.warn("Error starting NagiosNscaStub. This exception is ignored.", e); - canRun = false; - } - super.setUp(); } - - @After - @Override - public void tearDown() throws Exception { - super.tearDown(); - try { - nagios.stop(); - } catch (Exception e) { - // ignore - log.warn("Error stopping NagiosNscaStub. This exception is ignored.", e); - } - } - + @Test public void testSendToNagios() throws Exception { if (!canRun) { return; } + MessagePayload expectedPayload = new MessagePayload("localhost", Level.OK.ordinal(), context.getName(), "Hello Nagios"); MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMessageCount(1); mock.allMessages().body().isInstanceOf(String.class); @@ -75,16 +63,7 @@ public class NagiosXorEncryptionTest extends CamelTestSupport { assertMockEndpointsSatisfied(); - // sleep a little to let nagios stub process the payloads - Thread.sleep(2000); - - assertEquals(1, nagios.getMessagePayloadList().size()); - - MessagePayload payload = nagios.getMessagePayloadList().get(0); - assertEquals("Hello Nagios", payload.getMessage()); - assertEquals("localhost", payload.getHostname()); - assertEquals(Level.OK.ordinal(), payload.getLevel()); - assertEquals(context.getName(), payload.getServiceName()); + verify(nagiosPassiveCheckSender, times(1)).send(expectedPayload); } @Override @@ -92,9 +71,17 @@ public class NagiosXorEncryptionTest extends CamelTestSupport { return new RouteBuilder() { @Override public void configure() throws Exception { - // START SNIPPET: e1 - from("direct:start").to("nagios:127.0.0.1:25664?password=secret&encryptionMethod=Xor").to("mock:result"); - // END SNIPPET: e1 + String uri = "nagios:127.0.0.1:25664?password=secret&encryptionMethod=Xor"; + + NagiosComponent nagiosComponent = new NagiosComponent(); + nagiosComponent.setCamelContext(context); + NagiosEndpoint nagiousEndpoint = (NagiosEndpoint) nagiosComponent.createEndpoint(uri); + nagiousEndpoint.setSender(nagiosPassiveCheckSender); + Producer nagiosProducer = nagiousEndpoint.createProducer(); + + from("direct:start") + .to(nagiousEndpoint) + .to("mock:result"); } }; }