Improved exception and header handling.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6a006eba Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6a006eba Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6a006eba Branch: refs/heads/master Commit: 6a006eba25fbb9357b8eece030ef0956938aa641 Parents: 3fe1d6c Author: Lauri Kimmel <lauri.kim...@gmx.com> Authored: Wed May 28 23:55:40 2014 +1000 Committer: Lauri Kimmel <lauri.kim...@gmx.com> Committed: Mon Jun 16 21:02:52 2014 +1000 ---------------------------------------------------------------------- README.md | 61 ++++--- .../camel/metrics/AbstractMetricsEndpoint.java | 18 -- .../camel/metrics/AbstractMetricsProducer.java | 59 +++++++ .../apache/camel/metrics/MetricsComponent.java | 9 +- .../camel/metrics/counter/CounterProducer.java | 20 +-- .../metrics/histogram/HistogramProducer.java | 16 +- .../camel/metrics/meter/MeterProducer.java | 12 +- .../camel/metrics/timer/TimerProducer.java | 12 +- .../metrics/AbstractMetricsEndpointTest.java | 65 ------- .../metrics/AbstractMetricsProducerTest.java | 172 +++++++++++++++++++ .../metrics/MetricsComponentRouteTest.java | 42 ++++- .../metrics/counter/CounterProducerTest.java | 119 +++++++------ .../camel/metrics/counter/CounterRouteTest.java | 14 +- .../histogram/HistogramProducerTest.java | 44 ++--- .../camel/metrics/meter/MeterProducerTest.java | 9 +- .../camel/metrics/timer/TimerProducerTest.java | 13 +- 16 files changed, 418 insertions(+), 267 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/README.md ---------------------------------------------------------------------- diff --git a/README.md b/README.md index 296b2f3..2a99a44 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,9 @@ from("direct:in") will update counter with name ```new.name``` instead of ```name.not.used```. +All Metrics specific headers are removed from the message once Metrics endpoint finishes processing of exchange. +While processing exchange Metrics endpoint will catch all exceptions and write log entry using level warn. + ## Metrics type counter @@ -133,34 +136,6 @@ from("direct:in") ``` -## Metric type meter - -``` -metrics:meter:metricname[?options] -``` - -Where options are - -| Name | Default | Description | -|------|---------|---------------------------| -| mark | | long value to use as mark | - -If ```mark``` is not set ```meter.mark()``` is called without argument. - -```java -// marks simple.meter without value -from("direct:in") - .to("metric:simple.meter") - .to("direct:out") -``` - -```java -// marks simple.meter with value 81 -from("direct:in") - .to("metric:meter:simple.meter?mark=81") - .to("direct:out") -``` - ## Metric type histogram ``` @@ -203,6 +178,36 @@ from("direct:in") .to("direct:out") ``` + +## Metric type meter + +``` +metrics:meter:metricname[?options] +``` + +Where options are + +| Name | Default | Description | +|------|---------|---------------------------| +| mark | | long value to use as mark | + +If ```mark``` is not set ```meter.mark()``` is called without argument. + +```java +// marks simple.meter without value +from("direct:in") + .to("metric:simple.meter") + .to("direct:out") +``` + +```java +// marks simple.meter with value 81 +from("direct:in") + .to("metric:meter:simple.meter?mark=81") + .to("direct:out") +``` + + ## Metrics type timer ``` http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/main/java/org/apache/camel/metrics/AbstractMetricsEndpoint.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/camel/metrics/AbstractMetricsEndpoint.java b/src/main/java/org/apache/camel/metrics/AbstractMetricsEndpoint.java index 9560758..d8c8af7 100644 --- a/src/main/java/org/apache/camel/metrics/AbstractMetricsEndpoint.java +++ b/src/main/java/org/apache/camel/metrics/AbstractMetricsEndpoint.java @@ -1,12 +1,9 @@ package org.apache.camel.metrics; import org.apache.camel.Consumer; -import org.apache.camel.Exchange; -import org.apache.camel.Message; import org.apache.camel.Processor; import org.apache.camel.RuntimeCamelException; import org.apache.camel.impl.DefaultEndpoint; -import org.apache.camel.util.ObjectHelper; import com.codahale.metrics.MetricRegistry; @@ -37,19 +34,4 @@ public abstract class AbstractMetricsEndpoint extends DefaultEndpoint { public String getMetricsName() { return metricsName; } - - public String getMetricsName(Exchange exchange) { - return getStringHeader(exchange, MetricsComponent.HEADER_METRIC_NAME, metricsName); - } - - public String getStringHeader(Exchange exchange, String header, String defaultValue) { - Message in = exchange.getIn(); - String headerValue = in.getHeader(header, String.class); - return ObjectHelper.isNotEmpty(headerValue) ? headerValue : defaultValue; - } - - public Long getLongHeader(Exchange exchange, String header, Long defaultValue) { - Message in = exchange.getIn(); - return in.getHeader(header, defaultValue, Long.class); - } } http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/main/java/org/apache/camel/metrics/AbstractMetricsProducer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/camel/metrics/AbstractMetricsProducer.java b/src/main/java/org/apache/camel/metrics/AbstractMetricsProducer.java new file mode 100644 index 0000000..24149af --- /dev/null +++ b/src/main/java/org/apache/camel/metrics/AbstractMetricsProducer.java @@ -0,0 +1,59 @@ +package org.apache.camel.metrics; + +import static org.apache.camel.metrics.MetricsComponent.HEADER_METRIC_NAME; +import static org.apache.camel.metrics.MetricsComponent.HEADER_PERFIX; + +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.apache.camel.impl.DefaultProducer; +import org.apache.camel.util.ObjectHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.codahale.metrics.MetricRegistry; + +public abstract class AbstractMetricsProducer<T extends AbstractMetricsEndpoint> extends DefaultProducer { + + public static final String HEADER_PATTERN = HEADER_PERFIX + "*"; + private static final Logger LOG = LoggerFactory.getLogger(AbstractMetricsProducer.class); + + public AbstractMetricsProducer(T endpoint) { + super(endpoint); + } + + @Override + public void process(Exchange exchange) throws Exception { + @SuppressWarnings("unchecked") + T endpoint = (T) getEndpoint(); + Message in = exchange.getIn(); + String defaultMetricsName = endpoint.getMetricsName(); + String finalMetricsName = getMetricsName(in, defaultMetricsName); + MetricRegistry registry = endpoint.getRegistry(); + try { + doProcess(exchange, endpoint, registry, finalMetricsName); + } + catch (Exception e) { + LOG.warn("Failed to produce metrics for {} in {} - {}", finalMetricsName, getClass().getSimpleName(), e.getMessage()); + } + clearMetricsHeaders(in); + } + + protected abstract void doProcess(Exchange exchange, T endpoint, MetricRegistry registry, String metricsName) throws Exception; + + public String getMetricsName(Message in, String defaultValue) { + return getStringHeader(in, HEADER_METRIC_NAME, defaultValue); + } + + public String getStringHeader(Message in, String header, String defaultValue) { + String headerValue = in.getHeader(header, String.class); + return ObjectHelper.isNotEmpty(headerValue) ? headerValue : defaultValue; + } + + public Long getLongHeader(Message in, String header, Long defaultValue) { + return in.getHeader(header, defaultValue, Long.class); + } + + protected boolean clearMetricsHeaders(Message in) { + return in.removeHeaders(HEADER_PATTERN); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/main/java/org/apache/camel/metrics/MetricsComponent.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/camel/metrics/MetricsComponent.java b/src/main/java/org/apache/camel/metrics/MetricsComponent.java index c129c07..1ff175d 100644 --- a/src/main/java/org/apache/camel/metrics/MetricsComponent.java +++ b/src/main/java/org/apache/camel/metrics/MetricsComponent.java @@ -26,10 +26,11 @@ public class MetricsComponent extends DefaultComponent { public static final String METRIC_REGISTRY_NAME = "metricRegistry"; public static final MetricsType DEFAULT_METRICS_TYPE = MetricsType.METER; public static final long DEFAULT_REPORTING_INTERVAL_SECONDS = 60L; - public static final String HEADER_METRIC_NAME = "CamelMetricsName"; - public static final String HEADER_COUNTER_INCREMENT = "CamelMetricsCounterIncrement"; - public static final String HEADER_COUNTER_DECREMENT = "CamelMetricsCounterDecrement"; - public static final String HEADER_HISTOGRAM_VALUE = "CamelMetricsHistogramValue"; + public static final String HEADER_PERFIX = "CamelMetrics"; + public static final String HEADER_METRIC_NAME = HEADER_PERFIX + "Name"; + public static final String HEADER_COUNTER_INCREMENT = HEADER_PERFIX + "CounterIncrement"; + public static final String HEADER_COUNTER_DECREMENT = HEADER_PERFIX + "CounterDecrement"; + public static final String HEADER_HISTOGRAM_VALUE = HEADER_PERFIX + "HistogramValue"; private static final Logger LOG = LoggerFactory.getLogger(MetricsComponent.class); http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/main/java/org/apache/camel/metrics/counter/CounterProducer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/camel/metrics/counter/CounterProducer.java b/src/main/java/org/apache/camel/metrics/counter/CounterProducer.java index e7db514..2d9431c 100644 --- a/src/main/java/org/apache/camel/metrics/counter/CounterProducer.java +++ b/src/main/java/org/apache/camel/metrics/counter/CounterProducer.java @@ -3,27 +3,27 @@ package org.apache.camel.metrics.counter; import static org.apache.camel.metrics.MetricsComponent.HEADER_COUNTER_DECREMENT; import static org.apache.camel.metrics.MetricsComponent.HEADER_COUNTER_INCREMENT; -import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.camel.impl.DefaultProducer; +import org.apache.camel.Message; +import org.apache.camel.metrics.AbstractMetricsProducer; import com.codahale.metrics.Counter; +import com.codahale.metrics.MetricRegistry; -public class CounterProducer extends DefaultProducer { +public class CounterProducer extends AbstractMetricsProducer<CounterEndpoint> { - public CounterProducer(Endpoint endpoint) { + public CounterProducer(CounterEndpoint endpoint) { super(endpoint); } @Override - public void process(Exchange exchange) throws Exception { - CounterEndpoint endpoint = (CounterEndpoint) getEndpoint(); - String metricName = endpoint.getMetricsName(exchange); - Counter counter = endpoint.getRegistry().counter(metricName); + protected void doProcess(Exchange exchange, CounterEndpoint endpoint, MetricRegistry registry, String metricsName) throws Exception { + Message in = exchange.getIn(); + Counter counter = registry.counter(metricsName); Long increment = endpoint.getIncrement(); Long decrement = endpoint.getDecrement(); - Long finalIncrement = endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, increment); - Long finalDecrement = endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, decrement); + Long finalIncrement = getLongHeader(in, HEADER_COUNTER_INCREMENT, increment); + Long finalDecrement = getLongHeader(in, HEADER_COUNTER_DECREMENT, decrement); if (finalIncrement != null) { counter.inc(finalIncrement); } http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/main/java/org/apache/camel/metrics/histogram/HistogramProducer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/camel/metrics/histogram/HistogramProducer.java b/src/main/java/org/apache/camel/metrics/histogram/HistogramProducer.java index bd701c0..46c586d 100644 --- a/src/main/java/org/apache/camel/metrics/histogram/HistogramProducer.java +++ b/src/main/java/org/apache/camel/metrics/histogram/HistogramProducer.java @@ -2,31 +2,29 @@ package org.apache.camel.metrics.histogram; import static org.apache.camel.metrics.MetricsComponent.HEADER_HISTOGRAM_VALUE; -import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.camel.impl.DefaultProducer; +import org.apache.camel.Message; +import org.apache.camel.metrics.AbstractMetricsProducer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.codahale.metrics.Histogram; import com.codahale.metrics.MetricRegistry; -public class HistogramProducer extends DefaultProducer { +public class HistogramProducer extends AbstractMetricsProducer<HistogramEndpoint> { private static final Logger LOG = LoggerFactory.getLogger(HistogramProducer.class); - public HistogramProducer(Endpoint endpoint) { + public HistogramProducer(HistogramEndpoint endpoint) { super(endpoint); } @Override - public void process(Exchange exchange) throws Exception { - HistogramEndpoint endpoint = (HistogramEndpoint) getEndpoint(); - MetricRegistry registry = endpoint.getRegistry(); - String metricsName = endpoint.getMetricsName(exchange); + protected void doProcess(Exchange exchange, HistogramEndpoint endpoint, MetricRegistry registry, String metricsName) throws Exception { + Message in = exchange.getIn(); Histogram histogram = registry.histogram(metricsName); Long value = endpoint.getValue(); - Long finalValue = endpoint.getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, value); + Long finalValue = getLongHeader(in, HEADER_HISTOGRAM_VALUE, value); if (finalValue != null) { histogram.update(finalValue); } http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/main/java/org/apache/camel/metrics/meter/MeterProducer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/camel/metrics/meter/MeterProducer.java b/src/main/java/org/apache/camel/metrics/meter/MeterProducer.java index 0de6ba5..5777134 100644 --- a/src/main/java/org/apache/camel/metrics/meter/MeterProducer.java +++ b/src/main/java/org/apache/camel/metrics/meter/MeterProducer.java @@ -1,23 +1,19 @@ package org.apache.camel.metrics.meter; -import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.camel.impl.DefaultProducer; +import org.apache.camel.metrics.AbstractMetricsProducer; import com.codahale.metrics.Meter; import com.codahale.metrics.MetricRegistry; -public class MeterProducer extends DefaultProducer { +public class MeterProducer extends AbstractMetricsProducer<MeterEndpoint> { - public MeterProducer(Endpoint endpoint) { + public MeterProducer(MeterEndpoint endpoint) { super(endpoint); } @Override - public void process(Exchange exchange) throws Exception { - MeterEndpoint endpoint = (MeterEndpoint) getEndpoint(); - String metricsName = endpoint.getMetricsName(exchange); - MetricRegistry registry = endpoint.getRegistry(); + protected void doProcess(Exchange exchange, MeterEndpoint endpoint, MetricRegistry registry, String metricsName) throws Exception { Meter meter = registry.meter(metricsName); Long mark = endpoint.getMark(); if (mark == null) { http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/main/java/org/apache/camel/metrics/timer/TimerProducer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/camel/metrics/timer/TimerProducer.java b/src/main/java/org/apache/camel/metrics/timer/TimerProducer.java index bd8e2b1..4f5b809 100644 --- a/src/main/java/org/apache/camel/metrics/timer/TimerProducer.java +++ b/src/main/java/org/apache/camel/metrics/timer/TimerProducer.java @@ -1,8 +1,7 @@ package org.apache.camel.metrics.timer; -import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.camel.impl.DefaultProducer; +import org.apache.camel.metrics.AbstractMetricsProducer; import org.apache.camel.metrics.timer.TimerEndpoint.TimerAction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,19 +9,16 @@ import org.slf4j.LoggerFactory; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; -public class TimerProducer extends DefaultProducer { +public class TimerProducer extends AbstractMetricsProducer<TimerEndpoint> { private static final Logger LOG = LoggerFactory.getLogger(TimerProducer.class); - public TimerProducer(Endpoint endpoint) { + public TimerProducer(TimerEndpoint endpoint) { super(endpoint); } @Override - public void process(Exchange exchange) throws Exception { - TimerEndpoint endpoint = (TimerEndpoint) getEndpoint(); - MetricRegistry registry = endpoint.getRegistry(); - String metricsName = endpoint.getMetricsName(exchange); + protected void doProcess(Exchange exchange, TimerEndpoint endpoint, MetricRegistry registry, String metricsName) throws Exception { TimerAction action = endpoint.getAction(); if (action == TimerAction.start) { handleStart(exchange, registry, metricsName); http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/AbstractMetricsEndpointTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/AbstractMetricsEndpointTest.java b/src/test/java/org/apache/camel/metrics/AbstractMetricsEndpointTest.java index 824581c..1a7543e 100644 --- a/src/test/java/org/apache/camel/metrics/AbstractMetricsEndpointTest.java +++ b/src/test/java/org/apache/camel/metrics/AbstractMetricsEndpointTest.java @@ -2,7 +2,6 @@ package org.apache.camel.metrics; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.when; import org.apache.camel.Exchange; @@ -94,68 +93,4 @@ public class AbstractMetricsEndpointTest { public void testGetMetricsName() throws Exception { assertThat(endpoint.getMetricsName(), is(METRICS_NAME)); } - - @Test - public void testGetStringHeaderValue() { - when(in.getHeader(HEADER, String.class)).thenReturn(STRING_VALUE); - assertThat(endpoint.getStringHeader(exchange, HEADER, DEFAULT_STRING_VALUE), is(STRING_VALUE)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(HEADER, String.class); - } - - @Test - public void testGetStringHeaderValueNotFound() { - when(in.getHeader(HEADER, String.class)).thenReturn(null); - assertThat(endpoint.getStringHeader(exchange, HEADER, DEFAULT_STRING_VALUE), is(DEFAULT_STRING_VALUE)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(HEADER, String.class); - } - - @Test - public void testGetStringHeaderValueEmptyString() { - when(in.getHeader(HEADER, String.class)).thenReturn(""); - assertThat(endpoint.getStringHeader(exchange, HEADER, DEFAULT_STRING_VALUE), is(DEFAULT_STRING_VALUE)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(HEADER, String.class); - } - - @Test - public void testGetStringHeaderValueWhiteSpaces() { - when(in.getHeader(HEADER, String.class)).thenReturn(" \n\t\r"); - assertThat(endpoint.getStringHeader(exchange, HEADER, DEFAULT_STRING_VALUE), is(DEFAULT_STRING_VALUE)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(HEADER, String.class); - } - - @Test - public void testGetLongHeaderValue() { - when(in.getHeader(HEADER, DEFAULT_LONG_VALUE, Long.class)).thenReturn(LONG_VALUE); - assertThat(endpoint.getLongHeader(exchange, HEADER, DEFAULT_LONG_VALUE), is(LONG_VALUE)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(HEADER, DEFAULT_LONG_VALUE, Long.class); - } - - @Test - public void testGetLongHeaderValueNotFound() { - when(in.getHeader(HEADER, DEFAULT_LONG_VALUE, Long.class)).thenReturn(DEFAULT_LONG_VALUE); - assertThat(endpoint.getLongHeader(exchange, HEADER, DEFAULT_LONG_VALUE), is(DEFAULT_LONG_VALUE)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(HEADER, DEFAULT_LONG_VALUE, Long.class); - } - - @Test - public void testGetMetricsNameFromExchange() { - when(in.getHeader(MetricsComponent.HEADER_METRIC_NAME, String.class)).thenReturn(STRING_VALUE); - assertThat(endpoint.getMetricsName(exchange), is(STRING_VALUE)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(MetricsComponent.HEADER_METRIC_NAME, String.class); - } - - @Test - public void testGetMetricsNameFromExchangeNotFound() { - when(in.getHeader(MetricsComponent.HEADER_METRIC_NAME, String.class)).thenReturn(null); - assertThat(endpoint.getMetricsName(exchange), is(METRICS_NAME)); - inOrder.verify(exchange, times(1)).getIn(); - inOrder.verify(in, times(1)).getHeader(MetricsComponent.HEADER_METRIC_NAME, String.class); - } } http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/AbstractMetricsProducerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/AbstractMetricsProducerTest.java b/src/test/java/org/apache/camel/metrics/AbstractMetricsProducerTest.java new file mode 100644 index 0000000..3435247 --- /dev/null +++ b/src/test/java/org/apache/camel/metrics/AbstractMetricsProducerTest.java @@ -0,0 +1,172 @@ +package org.apache.camel.metrics; + +import static org.apache.camel.metrics.AbstractMetricsProducer.HEADER_PATTERN; +import static org.apache.camel.metrics.MetricsComponent.HEADER_HISTOGRAM_VALUE; +import static org.apache.camel.metrics.MetricsComponent.HEADER_METRIC_NAME; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.when; + +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.apache.camel.impl.DefaultMessage; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InOrder; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; + +import com.codahale.metrics.MetricRegistry; + +@RunWith(MockitoJUnitRunner.class) +public class AbstractMetricsProducerTest { + + public static final String METRIC_NAME = "a metric"; + + @Mock + private AbstractMetricsEndpoint endpoint; + + @Mock + private Exchange exchange; + + @Mock + private Message in; + + @Mock + private MetricRegistry registry; + + private AbstractMetricsProducer<AbstractMetricsEndpoint> okProducer; + + private AbstractMetricsProducer<AbstractMetricsEndpoint> failProducer; + + private InOrder inOrder; + + @Before + public void setUp() throws Exception { + okProducer = new AbstractMetricsProducer<AbstractMetricsEndpoint>(endpoint) { + @Override + protected void doProcess(Exchange exchange, AbstractMetricsEndpoint endpoint, MetricRegistry registry, String metricsName) throws Exception { + } + }; + failProducer = new AbstractMetricsProducer<AbstractMetricsEndpoint>(endpoint) { + + @Override + protected void doProcess(Exchange exchange, AbstractMetricsEndpoint endpoint, MetricRegistry registry, String metricsName) throws Exception { + throw new Exception("Muchos problemos"); + } + }; + inOrder = Mockito.inOrder(endpoint, exchange, in, registry); + when(exchange.getIn()).thenReturn(in); + when(endpoint.getMetricsName()).thenReturn(METRIC_NAME); + when(endpoint.getRegistry()).thenReturn(registry); + } + + @Test + public void testDoProcess() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn(null); + when(in.removeHeaders(HEADER_PATTERN)).thenReturn(true); + okProducer.process(exchange); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(endpoint, times(1)).getMetricsName(); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verify(endpoint, times(1)).getRegistry(); + inOrder.verify(in, times(1)).removeHeaders(HEADER_PATTERN); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testDoProcessWithException() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn(null); + when(in.removeHeaders(HEADER_PATTERN)).thenReturn(true); + failProducer.process(exchange); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(endpoint, times(1)).getMetricsName(); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verify(endpoint, times(1)).getRegistry(); + inOrder.verify(in, times(1)).removeHeaders(HEADER_PATTERN); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testGetMetricsName() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn("A"); + assertThat(okProducer.getMetricsName(in, "value"), is("A")); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testGetMetricsNameNotSet() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn(null); + assertThat(okProducer.getMetricsName(in, "name"), is("name")); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testGetStringHeader() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn("A"); + assertThat(okProducer.getStringHeader(in, HEADER_METRIC_NAME, "value"), is("A")); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testGetStringHeaderWithNullValue() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn(null); + assertThat(okProducer.getStringHeader(in, HEADER_METRIC_NAME, "value"), is("value")); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testGetStringHeaderWithWhiteSpaces() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn(" "); + assertThat(okProducer.getStringHeader(in, HEADER_METRIC_NAME, "value"), is("value")); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testGetStringHeaderWithEmptySrting() throws Exception { + when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn(""); + assertThat(okProducer.getStringHeader(in, HEADER_METRIC_NAME, "value"), is("value")); + inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testGetLongHeader() throws Exception { + when(in.getHeader(HEADER_HISTOGRAM_VALUE, 19L, Long.class)).thenReturn(201L); + assertThat(okProducer.getLongHeader(in, HEADER_HISTOGRAM_VALUE, 19L), is(201L)); + inOrder.verify(in, times(1)).getHeader(HEADER_HISTOGRAM_VALUE, 19L, Long.class); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testClearMetricsHeaders() throws Exception { + when(in.removeHeaders(HEADER_PATTERN)).thenReturn(true); + assertThat(okProducer.clearMetricsHeaders(in), is(true)); + inOrder.verify(in, times(1)).removeHeaders(HEADER_PATTERN); + inOrder.verifyNoMoreInteractions(); + } + + @Test + public void testClearRealHeaders() throws Exception { + Message msg = new DefaultMessage(); + Object val = new Object(); + msg.setHeader(HEADER_HISTOGRAM_VALUE, 109L); + msg.setHeader(HEADER_METRIC_NAME, "the metric"); + msg.setHeader("notRemoved", val); + assertThat(msg.getHeaders().size(), is(3)); + assertThat(msg.getHeader(HEADER_HISTOGRAM_VALUE, Long.class), is(109L)); + assertThat(msg.getHeader(HEADER_METRIC_NAME, String.class), is("the metric")); + assertThat(msg.getHeader("notRemoved"), is(val)); + okProducer.clearMetricsHeaders(msg); + assertThat(msg.getHeaders().size(), is(1)); + assertThat(msg.getHeader("notRemoved"), is(val)); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/MetricsComponentRouteTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/MetricsComponentRouteTest.java b/src/test/java/org/apache/camel/metrics/MetricsComponentRouteTest.java index 97301c3..4ef44f3 100644 --- a/src/test/java/org/apache/camel/metrics/MetricsComponentRouteTest.java +++ b/src/test/java/org/apache/camel/metrics/MetricsComponentRouteTest.java @@ -1,5 +1,9 @@ package org.apache.camel.metrics; +import static org.apache.camel.metrics.MetricsComponent.HEADER_HISTOGRAM_VALUE; +import static org.apache.camel.metrics.MetricsComponent.HEADER_METRIC_NAME; +import static org.apache.camel.metrics.MetricsComponent.HEADER_PERFIX; + import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -13,14 +17,17 @@ import org.junit.Test; public class MetricsComponentRouteTest extends CamelTestSupport { - @Produce(uri = "direct:start") - protected ProducerTemplate template; + @Produce(uri = "direct:start-1") + protected ProducerTemplate template1; + + @Produce(uri = "direct:start-2") + protected ProducerTemplate template2; @Test public void testMetrics() throws Exception { MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMinimumMessageCount(1); - template.sendBody(new Object()); + template1.sendBody(new Object()); assertMockEndpointsSatisfied(); } @@ -38,7 +45,28 @@ public class MetricsComponentRouteTest extends CamelTestSupport { Map<String, Object> headers = new HashMap<String, Object>(); headers.put(header1, value1); headers.put(header2, value2); - template.sendBodyAndHeaders(body, headers); + template1.sendBodyAndHeaders(body, headers); + assertMockEndpointsSatisfied(); + } + + @Test + public void testHeaderRemoval() throws Exception { + MockEndpoint mock = getMockEndpoint("mock:result"); + Object body = new Object(); + Date now = new Date(); + + mock.expectedBodiesReceived(body); + mock.expectedHeaderReceived("." + HEADER_PERFIX, "value"); + mock.expectedHeaderReceived("date", now); + + Map<String, Object> headers = new HashMap<String, Object>(); + headers.put(HEADER_METRIC_NAME, "a name"); + headers.put(HEADER_HISTOGRAM_VALUE, 34L); + headers.put(HEADER_PERFIX + "notExistingHeader", "?"); + headers.put("." + HEADER_PERFIX, "value"); + headers.put("date", now); + + template2.sendBodyAndHeaders(body, headers); assertMockEndpointsSatisfied(); } @@ -47,7 +75,7 @@ public class MetricsComponentRouteTest extends CamelTestSupport { return new RouteBuilder() { @Override public void configure() { - from("direct:start") + from("direct:start-1") .to("metrics:timer:T?action=start") .to("metrics:A") .to("metrics:counter://B") @@ -61,6 +89,10 @@ public class MetricsComponentRouteTest extends CamelTestSupport { .to("metrics:histogram:E?value=12000000031") .to("metrics:timer:T?action=stop") .to("mock:result"); + + from("direct:start-2") + .to("metrics:meter:F?mark=88") + .to("mock:result"); } }; } http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/counter/CounterProducerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/counter/CounterProducerTest.java b/src/test/java/org/apache/camel/metrics/counter/CounterProducerTest.java index c136cf8..6351814 100644 --- a/src/test/java/org/apache/camel/metrics/counter/CounterProducerTest.java +++ b/src/test/java/org/apache/camel/metrics/counter/CounterProducerTest.java @@ -8,6 +8,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.when; import org.apache.camel.Exchange; +import org.apache.camel.Message; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -22,7 +23,7 @@ import com.codahale.metrics.MetricRegistry; @RunWith(MockitoJUnitRunner.class) public class CounterProducerTest { - private static final String ENDPOINT_NAME = "endpoint.name"; + private static final String METRICS_NAME = "metrics.name"; private static final Long INCREMENT = 100000L; private static final Long DECREMENT = 91929199L; @@ -38,6 +39,9 @@ public class CounterProducerTest { @Mock private Counter counter; + @Mock + private Message in; + private CounterProducer producer; private InOrder inOrder; @@ -45,10 +49,10 @@ public class CounterProducerTest { @Before public void setUp() throws Exception { producer = new CounterProducer(endpoint); - inOrder = Mockito.inOrder(endpoint, exchange, registry, counter); - when(endpoint.getMetricsName(exchange)).thenReturn(ENDPOINT_NAME); + inOrder = Mockito.inOrder(endpoint, exchange, registry, counter, in); when(endpoint.getRegistry()).thenReturn(registry); - when(registry.counter(ENDPOINT_NAME)).thenReturn(counter); + when(registry.counter(METRICS_NAME)).thenReturn(counter); + when(exchange.getIn()).thenReturn(in); } @Test @@ -60,16 +64,15 @@ public class CounterProducerTest { public void testProcessWithIncrementOnly() throws Exception { when(endpoint.getIncrement()).thenReturn(INCREMENT); when(endpoint.getDecrement()).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, INCREMENT)).thenReturn(INCREMENT); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, null)).thenReturn(null); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(registry, times(1)).counter(ENDPOINT_NAME); + when(in.getHeader(HEADER_COUNTER_INCREMENT, INCREMENT, Long.class)).thenReturn(INCREMENT); + when(in.getHeader(HEADER_COUNTER_DECREMENT, null, Long.class)).thenReturn(null); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(registry, times(1)).counter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getIncrement(); inOrder.verify(endpoint, times(1)).getDecrement(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_INCREMENT, INCREMENT); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_DECREMENT, null); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_INCREMENT, INCREMENT, Long.class); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_DECREMENT, null, Long.class); inOrder.verify(counter, times(1)).inc(INCREMENT); inOrder.verifyNoMoreInteractions(); } @@ -78,34 +81,32 @@ public class CounterProducerTest { public void testProcessWithDecrementOnly() throws Exception { when(endpoint.getIncrement()).thenReturn(null); when(endpoint.getDecrement()).thenReturn(DECREMENT); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null)).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT)).thenReturn(DECREMENT); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(registry, times(1)).counter(ENDPOINT_NAME); + when(in.getHeader(HEADER_COUNTER_INCREMENT, null, Long.class)).thenReturn(null); + when(in.getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class)).thenReturn(DECREMENT); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(registry, times(1)).counter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getIncrement(); inOrder.verify(endpoint, times(1)).getDecrement(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_INCREMENT, null, Long.class); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class); inOrder.verify(counter, times(1)).dec(DECREMENT); inOrder.verifyNoMoreInteractions(); } @Test - public void testProcessWithIncrementAndDecrement() throws Exception { + public void testDoProcessWithIncrementAndDecrement() throws Exception { when(endpoint.getIncrement()).thenReturn(INCREMENT); when(endpoint.getDecrement()).thenReturn(DECREMENT); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, INCREMENT)).thenReturn(INCREMENT); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT)).thenReturn(DECREMENT); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(registry, times(1)).counter(ENDPOINT_NAME); + when(in.getHeader(HEADER_COUNTER_INCREMENT, INCREMENT, Long.class)).thenReturn(INCREMENT); + when(in.getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class)).thenReturn(DECREMENT); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(registry, times(1)).counter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getIncrement(); inOrder.verify(endpoint, times(1)).getDecrement(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_INCREMENT, INCREMENT); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_INCREMENT, INCREMENT, Long.class); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class); inOrder.verify(counter, times(1)).inc(INCREMENT); inOrder.verifyNoMoreInteractions(); } @@ -114,16 +115,15 @@ public class CounterProducerTest { public void testProcessWithOutIncrementAndDecrement() throws Exception { when(endpoint.getIncrement()).thenReturn(null); when(endpoint.getDecrement()).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null)).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, null)).thenReturn(null); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(registry, times(1)).counter(ENDPOINT_NAME); + when(in.getHeader(HEADER_COUNTER_INCREMENT, null, Long.class)).thenReturn(null); + when(in.getHeader(HEADER_COUNTER_DECREMENT, null, Long.class)).thenReturn(null); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(registry, times(1)).counter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getIncrement(); inOrder.verify(endpoint, times(1)).getDecrement(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_DECREMENT, null); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_INCREMENT, null, Long.class); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_DECREMENT, null, Long.class); inOrder.verify(counter, times(1)).inc(); inOrder.verifyNoMoreInteractions(); } @@ -132,16 +132,15 @@ public class CounterProducerTest { public void testProcessWithHeaderValuesOnly() throws Exception { when(endpoint.getIncrement()).thenReturn(null); when(endpoint.getDecrement()).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null)).thenReturn(INCREMENT + 1); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, null)).thenReturn(DECREMENT - 1); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(registry, times(1)).counter(ENDPOINT_NAME); + when(in.getHeader(HEADER_COUNTER_INCREMENT, null, Long.class)).thenReturn(INCREMENT + 1); + when(in.getHeader(HEADER_COUNTER_DECREMENT, null, Long.class)).thenReturn(DECREMENT - 1); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(registry, times(1)).counter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getIncrement(); inOrder.verify(endpoint, times(1)).getDecrement(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_DECREMENT, null); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_INCREMENT, null, Long.class); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_DECREMENT, null, Long.class); inOrder.verify(counter, times(1)).inc(INCREMENT + 1); inOrder.verifyNoMoreInteractions(); } @@ -150,16 +149,15 @@ public class CounterProducerTest { public void testProcessOverridingIncrement() throws Exception { when(endpoint.getIncrement()).thenReturn(INCREMENT); when(endpoint.getDecrement()).thenReturn(DECREMENT); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, INCREMENT)).thenReturn(INCREMENT + 1); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT)).thenReturn(DECREMENT); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(registry, times(1)).counter(ENDPOINT_NAME); + when(in.getHeader(HEADER_COUNTER_INCREMENT, INCREMENT, Long.class)).thenReturn(INCREMENT + 1); + when(in.getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class)).thenReturn(DECREMENT); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(registry, times(1)).counter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getIncrement(); inOrder.verify(endpoint, times(1)).getDecrement(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_INCREMENT, INCREMENT); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_INCREMENT, INCREMENT, Long.class); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class); inOrder.verify(counter, times(1)).inc(INCREMENT + 1); inOrder.verifyNoMoreInteractions(); } @@ -168,16 +166,15 @@ public class CounterProducerTest { public void testProcessOverridingDecrement() throws Exception { when(endpoint.getIncrement()).thenReturn(null); when(endpoint.getDecrement()).thenReturn(DECREMENT); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null)).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT)).thenReturn(DECREMENT - 1); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(registry, times(1)).counter(ENDPOINT_NAME); + when(in.getHeader(HEADER_COUNTER_INCREMENT, null, Long.class)).thenReturn(null); + when(in.getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class)).thenReturn(DECREMENT - 1); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); + inOrder.verify(registry, times(1)).counter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getIncrement(); inOrder.verify(endpoint, times(1)).getDecrement(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_INCREMENT, null); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_COUNTER_DECREMENT, DECREMENT); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_INCREMENT, null, Long.class); + inOrder.verify(in, times(1)).getHeader(HEADER_COUNTER_DECREMENT, DECREMENT, Long.class); inOrder.verify(counter, times(1)).dec(DECREMENT - 1); inOrder.verifyNoMoreInteractions(); } http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/counter/CounterRouteTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/counter/CounterRouteTest.java b/src/test/java/org/apache/camel/metrics/counter/CounterRouteTest.java index d28e07a..844401e 100644 --- a/src/test/java/org/apache/camel/metrics/counter/CounterRouteTest.java +++ b/src/test/java/org/apache/camel/metrics/counter/CounterRouteTest.java @@ -4,9 +4,6 @@ import static org.apache.camel.metrics.MetricsComponent.HEADER_COUNTER_DECREMENT import static org.apache.camel.metrics.MetricsComponent.HEADER_COUNTER_INCREMENT; import static org.apache.camel.metrics.MetricsComponent.HEADER_METRIC_NAME; import static org.apache.camel.metrics.MetricsComponent.METRIC_REGISTRY_NAME; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; @@ -15,7 +12,6 @@ import static org.mockito.Mockito.when; import java.util.HashMap; import java.util.Map; -import org.apache.camel.CamelExecutionException; import org.apache.camel.EndpointInject; import org.apache.camel.Produce; import org.apache.camel.ProducerTemplate; @@ -167,14 +163,8 @@ public class CounterRouteTest { @Test public void testOverrideIncrementWithWrongType() throws Exception { when(mockRegistry.counter("A")).thenReturn(mockCounter); - endpoint.expectedMessageCount(0); - try { - producer1.sendBodyAndHeader(new Object(), HEADER_COUNTER_INCREMENT, "this is not a valid long value"); - fail("Exception expected"); - } - catch (Exception e) { - assertThat(e, instanceOf(CamelExecutionException.class)); - } + endpoint.expectedMessageCount(1); + producer1.sendBodyAndHeader(new Object(), HEADER_COUNTER_INCREMENT, "this is not a valid long value"); endpoint.assertIsSatisfied(); inOrder.verify(mockRegistry, times(1)).counter("A"); inOrder.verifyNoMoreInteractions(); http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/histogram/HistogramProducerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/histogram/HistogramProducerTest.java b/src/test/java/org/apache/camel/metrics/histogram/HistogramProducerTest.java index 5cb5529..8fe1e06 100644 --- a/src/test/java/org/apache/camel/metrics/histogram/HistogramProducerTest.java +++ b/src/test/java/org/apache/camel/metrics/histogram/HistogramProducerTest.java @@ -7,6 +7,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.when; import org.apache.camel.Exchange; +import org.apache.camel.Message; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -36,6 +37,9 @@ public class HistogramProducerTest { @Mock private Exchange exchange; + @Mock + private Message in; + private HistogramProducer producer; private InOrder inOrder; @@ -43,10 +47,10 @@ public class HistogramProducerTest { @Before public void setUp() throws Exception { producer = new HistogramProducer(endpoint); - inOrder = Mockito.inOrder(endpoint, registry, histogram, exchange); + inOrder = Mockito.inOrder(endpoint, registry, histogram, exchange, in); when(endpoint.getRegistry()).thenReturn(registry); - when(endpoint.getMetricsName(exchange)).thenReturn(METRICS_NAME); when(registry.histogram(METRICS_NAME)).thenReturn(histogram); + when(exchange.getIn()).thenReturn(in); } @Test @@ -57,13 +61,12 @@ public class HistogramProducerTest { @Test public void testProcessValueSet() throws Exception { when(endpoint.getValue()).thenReturn(VALUE); - when(endpoint.getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, VALUE)).thenReturn(VALUE); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); + when(in.getHeader(HEADER_HISTOGRAM_VALUE, VALUE, Long.class)).thenReturn(VALUE); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); inOrder.verify(registry, times(1)).histogram(METRICS_NAME); inOrder.verify(endpoint, times(1)).getValue(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, VALUE); + inOrder.verify(in, times(1)).getHeader(HEADER_HISTOGRAM_VALUE, VALUE, Long.class); inOrder.verify(histogram, times(1)).update(VALUE); inOrder.verifyNoMoreInteractions(); } @@ -71,26 +74,24 @@ public class HistogramProducerTest { @Test public void testProcessValueNotSet() throws Exception { when(endpoint.getValue()).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, null)).thenReturn(null); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); + when(in.getHeader(HEADER_HISTOGRAM_VALUE, null, Long.class)).thenReturn(null); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); inOrder.verify(registry, times(1)).histogram(METRICS_NAME); inOrder.verify(endpoint, times(1)).getValue(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, null); + inOrder.verify(in, times(1)).getHeader(HEADER_HISTOGRAM_VALUE, null, Long.class); inOrder.verifyNoMoreInteractions(); } @Test public void testProcessOverrideValue() throws Exception { when(endpoint.getValue()).thenReturn(VALUE); - when(endpoint.getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, VALUE)).thenReturn(VALUE + 3); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); + when(in.getHeader(HEADER_HISTOGRAM_VALUE, VALUE, Long.class)).thenReturn(VALUE + 3); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); inOrder.verify(registry, times(1)).histogram(METRICS_NAME); inOrder.verify(endpoint, times(1)).getValue(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, VALUE); + inOrder.verify(in, times(1)).getHeader(HEADER_HISTOGRAM_VALUE, VALUE, Long.class); inOrder.verify(histogram, times(1)).update(VALUE + 3); inOrder.verifyNoMoreInteractions(); } @@ -98,13 +99,12 @@ public class HistogramProducerTest { @Test public void testProcessOverrideUriValueNotSet() throws Exception { when(endpoint.getValue()).thenReturn(null); - when(endpoint.getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, null)).thenReturn(VALUE + 2); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); + when(in.getHeader(HEADER_HISTOGRAM_VALUE, null, Long.class)).thenReturn(VALUE + 2); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); + inOrder.verify(exchange, times(1)).getIn(); inOrder.verify(registry, times(1)).histogram(METRICS_NAME); inOrder.verify(endpoint, times(1)).getValue(); - inOrder.verify(endpoint, times(1)).getLongHeader(exchange, HEADER_HISTOGRAM_VALUE, null); + inOrder.verify(in, times(1)).getHeader(HEADER_HISTOGRAM_VALUE, null, Long.class); inOrder.verify(histogram, times(1)).update(VALUE + 2); inOrder.verifyNoMoreInteractions(); } http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/meter/MeterProducerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/meter/MeterProducerTest.java b/src/test/java/org/apache/camel/metrics/meter/MeterProducerTest.java index ba62a18..ffa8224 100644 --- a/src/test/java/org/apache/camel/metrics/meter/MeterProducerTest.java +++ b/src/test/java/org/apache/camel/metrics/meter/MeterProducerTest.java @@ -45,7 +45,6 @@ public class MeterProducerTest { producer = new MeterProducer(endpoint); inOrder = Mockito.inOrder(endpoint, registry, meter, exchange); when(endpoint.getRegistry()).thenReturn(registry); - when(endpoint.getMetricsName(exchange)).thenReturn(METRICS_NAME); when(registry.meter(METRICS_NAME)).thenReturn(meter); } @@ -58,9 +57,7 @@ public class MeterProducerTest { @Test public void testProcessMarkSet() throws Exception { when(endpoint.getMark()).thenReturn(MARK); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); inOrder.verify(registry, times(1)).meter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getMark(); inOrder.verify(meter, times(1)).mark(MARK); @@ -70,9 +67,7 @@ public class MeterProducerTest { @Test public void testProcessMarkNotSet() throws Exception { when(endpoint.getMark()).thenReturn(null); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); inOrder.verify(registry, times(1)).meter(METRICS_NAME); inOrder.verify(endpoint, times(1)).getMark(); inOrder.verify(meter, times(1)).mark(); http://git-wip-us.apache.org/repos/asf/camel/blob/6a006eba/src/test/java/org/apache/camel/metrics/timer/TimerProducerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/camel/metrics/timer/TimerProducerTest.java b/src/test/java/org/apache/camel/metrics/timer/TimerProducerTest.java index 09e572b..e61da97 100644 --- a/src/test/java/org/apache/camel/metrics/timer/TimerProducerTest.java +++ b/src/test/java/org/apache/camel/metrics/timer/TimerProducerTest.java @@ -51,7 +51,6 @@ public class TimerProducerTest { producer = new TimerProducer(endpoint); inOrder = Mockito.inOrder(endpoint, exchange, registry, timer, context); when(endpoint.getRegistry()).thenReturn(registry); - when(endpoint.getMetricsName(exchange)).thenReturn(METRICS_NAME); when(registry.timer(METRICS_NAME)).thenReturn(timer); when(timer.time()).thenReturn(context); } @@ -66,9 +65,7 @@ public class TimerProducerTest { public void testProcessStart() throws Exception { when(endpoint.getAction()).thenReturn(TimerAction.start); when(exchange.getProperty(PROPERTY_NAME, Timer.Context.class)).thenReturn(null); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); inOrder.verify(endpoint, times(1)).getAction(); inOrder.verify(exchange, times(1)).getProperty(PROPERTY_NAME, Timer.Context.class); inOrder.verify(registry, times(1)).timer(METRICS_NAME); @@ -81,9 +78,7 @@ public class TimerProducerTest { public void testProcessStop() throws Exception { when(endpoint.getAction()).thenReturn(TimerAction.stop); when(exchange.getProperty(PROPERTY_NAME, Timer.Context.class)).thenReturn(context); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); inOrder.verify(endpoint, times(1)).getAction(); inOrder.verify(exchange, times(1)).getProperty(PROPERTY_NAME, Timer.Context.class); inOrder.verify(context, times(1)).stop(); @@ -94,9 +89,7 @@ public class TimerProducerTest { @Test public void testProcessNoAction() throws Exception { when(endpoint.getAction()).thenReturn(null); - producer.process(exchange); - inOrder.verify(endpoint, times(1)).getRegistry(); - inOrder.verify(endpoint, times(1)).getMetricsName(exchange); + producer.doProcess(exchange, endpoint, registry, METRICS_NAME); inOrder.verify(endpoint, times(1)).getAction(); inOrder.verifyNoMoreInteractions(); }