This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit e4bf6300d20471d3a07e95ab5c91ec257584fd8a Author: zhengyangyong <[email protected]> AuthorDate: Fri Jan 12 11:34:41 2018 +0800 SCB-150 minor refactor and fix test case Signed-off-by: zhengyangyong <[email protected]> --- .../metrics/common/DoubleMetricValue.java | 2 + .../metrics/common/LongMetricValue.java | 2 + .../io/servicecomb/metrics/common/MetricValue.java | 7 +- .../servicecomb/metrics/common/CallMetric.java | 18 ++ .../metrics/core/utils/MonitorUtils.java | 5 +- .../metrics/core/monitor/CallMonitor.java | 12 +- .../core/monitor/ConsumerInvocationMonitor.java | 9 +- .../core/monitor/ProducerInvocationMonitor.java | 11 +- .../metrics/core/TestEventAndRunner.java | 346 ++++++++++----------- .../servicecomb/metrics/core/TestPublisher.java | 7 +- 10 files changed, 221 insertions(+), 198 deletions(-) diff --git a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/DoubleMetricValue.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/DoubleMetricValue.java index c116562..8b83191 100644 --- a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/DoubleMetricValue.java +++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/DoubleMetricValue.java @@ -53,6 +53,8 @@ public class DoubleMetricValue extends MetricValue<Double> { for (DoubleMetricValue s : source) { if (finalValues.containsKey(s.getKey())) { finalValues.put(s.getKey(), finalValues.get(s.getKey()).merge(s)); + } else { + finalValues.put(s.getKey(), s); } } return new ArrayList<>(finalValues.values()); diff --git a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/LongMetricValue.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/LongMetricValue.java index eb0ac8d..6f7429c 100644 --- a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/LongMetricValue.java +++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/LongMetricValue.java @@ -53,6 +53,8 @@ public class LongMetricValue extends MetricValue<Long> { for (LongMetricValue s : source) { if (finalValues.containsKey(s.getKey())) { finalValues.put(s.getKey(), finalValues.get(s.getKey()).merge(s)); + } else { + finalValues.put(s.getKey(), s); } } return new ArrayList<>(finalValues.values()); diff --git a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricValue.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricValue.java index c368aba..f1f95e3 100644 --- a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricValue.java +++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricValue.java @@ -48,7 +48,7 @@ public class MetricValue<T extends Number> { for (String key : keys) { builder.append(String.format("%s=%s,", key, dimensions.get(key))); } - builder.deleteCharAt(dimensions.size() - 1); + builder.deleteCharAt(builder.length() - 1); builder.append("}"); finalKey = builder.toString(); } @@ -62,4 +62,9 @@ public class MetricValue<T extends Number> { this.value = value; this.dimensions = dimensions; } + + public boolean containDimension(String dimensionKey, String dimensionValue) { + return this.getDimensions().containsKey(dimensionKey) && + dimensionValue.equals(this.getDimensions().get(dimensionKey)); + } } diff --git a/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java b/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java index a65ee92..f3e82d5 100644 --- a/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java +++ b/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java @@ -35,10 +35,28 @@ public class CallMetric { return totalValues; } + public LongMetricValue getTotalValues(String dimensionKey, String dimensionValue) { + for (LongMetricValue value : totalValues) { + if (value.containDimension(dimensionKey, dimensionValue)) { + return value; + } + } + return null; + } + public List<DoubleMetricValue> getTpsValues() { return tpsValues; } + public DoubleMetricValue getTpsValue(String dimensionKey, String dimensionValue) { + for (DoubleMetricValue value : tpsValues) { + if (value.containDimension(dimensionKey, dimensionValue)) { + return value; + } + } + return null; + } + public CallMetric(String prefix) { this(prefix, new ArrayList<>(), new ArrayList<>()); } diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/utils/MonitorUtils.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/utils/MonitorUtils.java index 7091724..741cdd5 100644 --- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/utils/MonitorUtils.java +++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/utils/MonitorUtils.java @@ -51,7 +51,10 @@ public class MonitorUtils { if (tags.size() != 0) { Map<String, String> tagMap = new HashMap<>(); for (Tag tag : tags) { - tagMap.put(tag.getKey(), tag.getValue()); + //we don't need servo internal type tag for metrics + if (!"type".equals(tag.getKey())) { + tagMap.put(tag.getKey(), tag.getValue()); + } } return tagMap; } diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java index fb47b9b..bd2829f 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java @@ -39,20 +39,20 @@ public class CallMonitor { private final List<StepCounter> tpsCounters; - public CallMonitor(String prefix, String... dimensions) { + public CallMonitor(String prefix, String... dimensionKeys) { this.prefix = prefix; this.totalCounters = new ArrayList<>(); this.tpsCounters = new ArrayList<>(); - if (dimensions.length == 0) { + if (dimensionKeys.length == 0) { this.totalCounters.add(new BasicCounter(MonitorConfig.builder(prefix + ".total").build())); this.tpsCounters.add(new StepCounter(MonitorConfig.builder(prefix + ".tps").build())); } else { - for (String dimension : dimensions) { - for (String option : MetricsDimension.getDimensionOptions(dimension)) { + for (String dimensionKey : dimensionKeys) { + for (String option : MetricsDimension.getDimensionOptions(dimensionKey)) { this.totalCounters - .add(new BasicCounter(MonitorConfig.builder(prefix + ".total").withTag(dimension, option).build())); + .add(new BasicCounter(MonitorConfig.builder(prefix + ".total").withTag(dimensionKey, option).build())); this.tpsCounters - .add(new StepCounter(MonitorConfig.builder(prefix + ".tps").withTag(dimension, option).build())); + .add(new StepCounter(MonitorConfig.builder(prefix + ".tps").withTag(dimensionKey, option).build())); } } } diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java index 1f2f247..4f8f7df 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java @@ -15,11 +15,12 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.core.monitor; +package io.servicecomb.metrics.core.monitor; -import org.apache.servicecomb.metrics.common.ConsumerInvocationMetric; -import org.apache.servicecomb.metrics.common.MetricsConst; +import io.servicecomb.metrics.common.ConsumerInvocationMetric; +import io.servicecomb.metrics.common.MetricsConst; +import io.servicecomb.metrics.core.MetricsDimension; public class ConsumerInvocationMonitor extends InvocationMonitor { private final TimerMonitor consumerLatency; @@ -37,7 +38,7 @@ public class ConsumerInvocationMonitor extends InvocationMonitor { public ConsumerInvocationMonitor(String operationName) { super(operationName, String.format(MetricsConst.CONSUMER_PREFIX_TEMPLATE, operationName)); this.consumerLatency = new TimerMonitor(this.getPrefix() + ".consumerLatency"); - this.consumerCall = new CallMonitor(this.getPrefix() + ".consumerCall"); + this.consumerCall = new CallMonitor(this.getPrefix() + ".consumerCall", MetricsDimension.DIMENSION_STATUS); } public ConsumerInvocationMetric toMetric(int windowTimeIndex) { diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java index 9c77ec8..a5cb7c4 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java @@ -15,14 +15,15 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.core.monitor; - -import org.apache.servicecomb.metrics.common.MetricsConst; -import org.apache.servicecomb.metrics.common.ProducerInvocationMetric; +package io.servicecomb.metrics.core.monitor; import com.netflix.servo.monitor.BasicCounter; import com.netflix.servo.monitor.MonitorConfig; +import io.servicecomb.metrics.common.MetricsConst; +import io.servicecomb.metrics.common.ProducerInvocationMetric; +import io.servicecomb.metrics.core.MetricsDimension; + public class ProducerInvocationMonitor extends InvocationMonitor { private final BasicCounter waitInQueue; @@ -60,7 +61,7 @@ public class ProducerInvocationMonitor extends InvocationMonitor { this.lifeTimeInQueue = new TimerMonitor(this.getPrefix() + ".lifeTimeInQueue"); this.executionTime = new TimerMonitor(this.getPrefix() + ".executionTime"); this.producerLatency = new TimerMonitor(this.getPrefix() + ".producerLatency"); - this.producerCall = new CallMonitor(this.getPrefix() + ".producerCall"); + this.producerCall = new CallMonitor(this.getPrefix() + ".producerCall", MetricsDimension.DIMENSION_STATUS); } public ProducerInvocationMetric toMetric(int windowTimeIndex) { diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java index 6edff5e..fc797cb 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.core; +package io.servicecomb.metrics.core; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.mockito.Mockito.when; @@ -29,20 +29,21 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import org.apache.servicecomb.core.metrics.InvocationFinishedEvent; -import org.apache.servicecomb.core.metrics.InvocationStartProcessingEvent; -import org.apache.servicecomb.core.metrics.InvocationStartedEvent; -import org.apache.servicecomb.foundation.common.utils.EventUtils; -import org.apache.servicecomb.metrics.common.RegistryMetric; -import org.apache.servicecomb.metrics.core.event.DefaultEventListenerManager; -import org.apache.servicecomb.metrics.core.monitor.DefaultSystemMonitor; -import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; -import org.apache.servicecomb.metrics.core.publish.DefaultDataSource; -import org.apache.servicecomb.swagger.invocation.InvocationType; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; +import io.servicecomb.core.metrics.InvocationFinishedEvent; +import io.servicecomb.core.metrics.InvocationStartProcessingEvent; +import io.servicecomb.core.metrics.InvocationStartedEvent; +import io.servicecomb.foundation.common.utils.EventUtils; +import io.servicecomb.metrics.common.RegistryMetric; +import io.servicecomb.metrics.core.event.DefaultEventListenerManager; +import io.servicecomb.metrics.core.monitor.DefaultSystemMonitor; +import io.servicecomb.metrics.core.monitor.RegistryMonitor; +import io.servicecomb.metrics.core.publish.DefaultDataSource; +import io.servicecomb.swagger.invocation.InvocationType; + public class TestEventAndRunner { @Test @@ -75,14 +76,15 @@ public class TestEventAndRunner { new DefaultEventListenerManager(monitor); - //fun1 is a PRODUCER invocation call twice and all is completed + //fun1 is a PRODUCER invocation call 2 time and all is completed + //two time success EventUtils.triggerEvent(new InvocationStartedEvent("fun1", InvocationType.PRODUCER, System.nanoTime())); EventUtils.triggerEvent( new InvocationStartProcessingEvent("fun1", InvocationType.PRODUCER, TimeUnit.MILLISECONDS.toNanos(100))); EventUtils .triggerEvent(new InvocationFinishedEvent("fun1", InvocationType.PRODUCER, - TimeUnit.MILLISECONDS.toNanos(200), TimeUnit.MILLISECONDS.toNanos(300))); + TimeUnit.MILLISECONDS.toNanos(200), TimeUnit.MILLISECONDS.toNanos(300), true)); EventUtils.triggerEvent(new InvocationStartedEvent("fun1", InvocationType.PRODUCER, System.nanoTime())); EventUtils.triggerEvent( @@ -90,7 +92,9 @@ public class TestEventAndRunner { TimeUnit.MILLISECONDS.toNanos(300))); EventUtils .triggerEvent(new InvocationFinishedEvent("fun1", InvocationType.PRODUCER, - TimeUnit.MILLISECONDS.toNanos(400), TimeUnit.MILLISECONDS.toNanos(700))); + TimeUnit.MILLISECONDS.toNanos(400), TimeUnit.MILLISECONDS.toNanos(700), false)); + + //========================================================================== //fun3 is a PRODUCER invocation call uncompleted EventUtils.triggerEvent(new InvocationStartedEvent("fun3", InvocationType.PRODUCER, System.nanoTime())); @@ -98,6 +102,13 @@ public class TestEventAndRunner { new InvocationStartProcessingEvent("fun3", InvocationType.PRODUCER, TimeUnit.MILLISECONDS.toNanos(500))); + //========================================================================== + + //fun4 is a PRODUCER call only started and no processing start and finished + EventUtils.triggerEvent(new InvocationStartedEvent("fun4", InvocationType.PRODUCER, System.nanoTime())); + + //========================================================================== + //fun2 is a CONSUMER invocation call once and completed EventUtils.triggerEvent(new InvocationStartedEvent("fun2", InvocationType.CONSUMER, System.nanoTime())); EventUtils.triggerEvent( @@ -105,10 +116,9 @@ public class TestEventAndRunner { TimeUnit.MILLISECONDS.toNanos(100))); EventUtils .triggerEvent(new InvocationFinishedEvent("fun2", InvocationType.CONSUMER, - TimeUnit.MILLISECONDS.toNanos(200), TimeUnit.MILLISECONDS.toNanos(300))); + TimeUnit.MILLISECONDS.toNanos(200), TimeUnit.MILLISECONDS.toNanos(300), true)); - //fun4 is a invocation call only started and no processing start and finished - EventUtils.triggerEvent(new InvocationStartedEvent("fun4", InvocationType.PRODUCER, System.nanoTime())); + //========================================================================== //sim lease one window time Thread.sleep(1000); @@ -116,194 +126,176 @@ public class TestEventAndRunner { RegistryMetric model = dataSource.getRegistryMetric(1000); //check InstanceMetric - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getWaitInQueue(), 1); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getCount(), 3); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getTotal(), - 900, - 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getAverage(), - 300, + Assert.assertEquals(1, model.getInstanceMetric().getProducerMetric().getWaitInQueue()); + Assert.assertEquals(3, model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getCount()); + Assert.assertEquals(900, model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getTotal(), 0); + Assert.assertEquals(300, model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getAverage(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getMax(), - 500, + Assert.assertEquals(500, model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getMax(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getMin(), - 100, + Assert.assertEquals(100, model.getInstanceMetric().getProducerMetric().getLifeTimeInQueue().getMin(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getExecutionTime().getCount(), 2); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getExecutionTime().getTotal(), - 600, + Assert.assertEquals(2, model.getInstanceMetric().getProducerMetric().getExecutionTime().getCount()); + Assert.assertEquals(600, model.getInstanceMetric().getProducerMetric().getExecutionTime().getTotal(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getExecutionTime().getAverage(), - 300, + Assert.assertEquals(300, model.getInstanceMetric().getProducerMetric().getExecutionTime().getAverage(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getExecutionTime().getMax(), - 400, + Assert.assertEquals(400, model.getInstanceMetric().getProducerMetric().getExecutionTime().getMax(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getExecutionTime().getMin(), - 200, + Assert.assertEquals(200, model.getInstanceMetric().getProducerMetric().getExecutionTime().getMin(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getProducerLatency().getCount(), 2); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getProducerLatency().getTotal(), - 1000, + Assert.assertEquals(2, model.getInstanceMetric().getProducerMetric().getProducerLatency().getCount()); + Assert.assertEquals(1000, model.getInstanceMetric().getProducerMetric().getProducerLatency().getTotal(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getProducerLatency().getAverage(), - 500, + Assert.assertEquals(500, model.getInstanceMetric().getProducerMetric().getProducerLatency().getAverage(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getProducerLatency().getMax(), - 700, + Assert.assertEquals(700, model.getInstanceMetric().getProducerMetric().getProducerLatency().getMax(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getProducerLatency().getMin(), - 300, + Assert.assertEquals(300, model.getInstanceMetric().getProducerMetric().getProducerLatency().getMin(), 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getProducerCall().getTps(), 4, 0); - Assert.assertEquals(model.getInstanceMetric().getProducerMetric().getProducerCall().getTotal(), 4); - - Assert.assertEquals(model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getCount(), 1); - Assert.assertEquals(model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getTotal(), - 300, - 0); - Assert.assertEquals(model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getAverage(), - 300, - 0); - Assert.assertEquals(model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getMax(), - 300, - 0); - Assert.assertEquals(model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getMin(), - 300, - 0); + Assert.assertEquals(4, model.getInstanceMetric().getProducerMetric().getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getInstanceMetric().getProducerMetric().getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(1, model.getInstanceMetric().getProducerMetric().getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); - Assert.assertEquals(model.getInstanceMetric().getConsumerMetric().getConsumerCall().getTps(), 1, 0); - Assert.assertEquals(model.getInstanceMetric().getConsumerMetric().getConsumerCall().getTotal(), 1); + Assert.assertEquals(4, model.getInstanceMetric().getProducerMetric().getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getInstanceMetric().getProducerMetric().getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(1, model.getInstanceMetric().getProducerMetric().getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); - //check ProducerMetrics - Assert.assertEquals(model.getProducerMetrics().get("fun1").getWaitInQueue(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getCount(), 2); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getTotal(), - 400, + Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getCount()); + Assert.assertEquals(300, model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getTotal(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getAverage(), - 200, + Assert.assertEquals(300, model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getAverage(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getMax(), - 300, + Assert.assertEquals(300, model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getMax(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getMin(), - 100, + Assert.assertEquals(300, model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getMin(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getExecutionTime().getCount(), 2); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getExecutionTime().getTotal(), - 600, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getExecutionTime().getAverage(), - 300, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getExecutionTime().getMax(), - 400, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getExecutionTime().getMin(), - 200, - 0); + Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(0, model.getInstanceMetric().getConsumerMetric().getConsumerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getProducerLatency().getCount(), 2); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getProducerLatency().getTotal(), - 1000, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getProducerLatency().getAverage(), - 500, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getProducerLatency().getMax(), - 700, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getProducerLatency().getMin(), - 300, - 0); + Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(0, model.getInstanceMetric().getConsumerMetric().getConsumerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getProducerCall().getTps(), 2, 0); - Assert.assertEquals(model.getProducerMetrics().get("fun1").getProducerCall().getTotal(), 2); + //check ProducerMetrics + Assert.assertEquals(0, model.getProducerMetrics().get("fun1").getWaitInQueue()); + Assert.assertEquals(2, model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getCount()); + Assert.assertEquals(400, model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getTotal(), 0); + Assert.assertEquals(200, model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getAverage(), 0); + Assert.assertEquals(300, model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getMax(), 0); + Assert.assertEquals(100, model.getProducerMetrics().get("fun1").getLifeTimeInQueue().getMin(), 0); + + Assert.assertEquals(2, model.getProducerMetrics().get("fun1").getExecutionTime().getCount()); + Assert.assertEquals(600, model.getProducerMetrics().get("fun1").getExecutionTime().getTotal(), 0); + Assert.assertEquals(300, model.getProducerMetrics().get("fun1").getExecutionTime().getAverage(), 0); + Assert.assertEquals(400, model.getProducerMetrics().get("fun1").getExecutionTime().getMax(), 0); + Assert.assertEquals(200, model.getProducerMetrics().get("fun1").getExecutionTime().getMin(), 0); + + Assert.assertEquals(2, model.getProducerMetrics().get("fun1").getProducerLatency().getCount()); + Assert.assertEquals(1000, model.getProducerMetrics().get("fun1").getProducerLatency().getTotal(), 0); + Assert.assertEquals(500, model.getProducerMetrics().get("fun1").getProducerLatency().getAverage(), 0); + Assert.assertEquals(700, model.getProducerMetrics().get("fun1").getProducerLatency().getMax(), 0); + Assert.assertEquals(300, model.getProducerMetrics().get("fun1").getProducerLatency().getMin(), 0); + + Assert.assertEquals(2, model.getProducerMetrics().get("fun1").getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getProducerMetrics().get("fun1").getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(1, model.getProducerMetrics().get("fun1").getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + + Assert.assertEquals(2, model.getProducerMetrics().get("fun1").getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getProducerMetrics().get("fun1").getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(1, model.getProducerMetrics().get("fun1").getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); //fun3 - Assert.assertEquals(model.getProducerMetrics().get("fun3").getWaitInQueue(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getCount(), 1); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getTotal(), - 500, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getAverage(), - 500, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getMax(), - 500, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getMin(), - 500, - 0); - - Assert.assertEquals(model.getProducerMetrics().get("fun3").getExecutionTime().getCount(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getExecutionTime().getTotal(), - 0, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getExecutionTime().getAverage(), - 0, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getExecutionTime().getMax(), - 0, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getExecutionTime().getMin(), - 0, - 0); - - Assert.assertEquals(model.getProducerMetrics().get("fun3").getProducerLatency().getCount(), 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getProducerLatency().getTotal(), - 0, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getProducerLatency().getAverage(), - 0, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getProducerLatency().getMax(), - 0, - 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getProducerLatency().getMin(), - 0, - 0); - - Assert.assertEquals(model.getProducerMetrics().get("fun3").getProducerCall().getTps(), 1, 0); - Assert.assertEquals(model.getProducerMetrics().get("fun3").getProducerCall().getTotal(), 1); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getWaitInQueue()); + Assert.assertEquals(1, model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getCount()); + Assert.assertEquals(500, model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getTotal(), 0); + Assert.assertEquals(500, model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getAverage(), 0); + Assert.assertEquals(500, model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getMax(), 0); + Assert.assertEquals(500, model.getProducerMetrics().get("fun3").getLifeTimeInQueue().getMin(), 0); + + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getExecutionTime().getCount()); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getExecutionTime().getTotal(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getExecutionTime().getAverage(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getExecutionTime().getMax(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getExecutionTime().getMin(), 0); + + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerLatency().getCount()); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerLatency().getTotal(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerLatency().getAverage(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerLatency().getMax(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerLatency().getMin(), 0); + + Assert.assertEquals(1, model.getProducerMetrics().get("fun3").getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + + Assert.assertEquals(1, model.getProducerMetrics().get("fun3").getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); //check ConsumerMetrics //no need - Assert.assertEquals(model.getConsumerMetrics().get("fun2").getConsumerLatency().getCount(), 1); - Assert.assertEquals(model.getConsumerMetrics().get("fun2").getConsumerLatency().getTotal(), - 300, - 0); - Assert.assertEquals(model.getConsumerMetrics().get("fun2").getConsumerLatency().getAverage(), - 300, - 0); - Assert.assertEquals(model.getConsumerMetrics().get("fun2").getConsumerLatency().getMax(), - 300, - 0); - Assert.assertEquals(model.getConsumerMetrics().get("fun2").getConsumerLatency().getMin(), - 300, - 0); - - Assert.assertEquals(model.getConsumerMetrics().get("fun2").getConsumerCall().getTps(), 1, 0); - Assert.assertEquals(model.getConsumerMetrics().get("fun2").getConsumerCall().getTotal(), 1); + Assert.assertEquals(1, model.getConsumerMetrics().get("fun2").getConsumerLatency().getCount()); + Assert.assertEquals(300, model.getConsumerMetrics().get("fun2").getConsumerLatency().getTotal(), 0); + Assert.assertEquals(300, model.getConsumerMetrics().get("fun2").getConsumerLatency().getAverage(), 0); + Assert.assertEquals(300, model.getConsumerMetrics().get("fun2").getConsumerLatency().getMax(), 0); + Assert.assertEquals(300, model.getConsumerMetrics().get("fun2").getConsumerLatency().getMin(), 0); + + Assert.assertEquals(1, model.getConsumerMetrics().get("fun2").getConsumerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getConsumerMetrics().get("fun2").getConsumerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(0, model.getConsumerMetrics().get("fun2").getConsumerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + + Assert.assertEquals(1, model.getConsumerMetrics().get("fun2").getConsumerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + Assert.assertEquals(1, model.getConsumerMetrics().get("fun2").getConsumerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + Assert.assertEquals(0, model.getConsumerMetrics().get("fun2").getConsumerCall() + .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Map<String, Number> metrics = model.toMap(); - Assert.assertEquals(96, metrics.size()); - - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getCpuLoad(), 1.0, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getCpuRunningThreads(), 2, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapCommit(), 100, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapInit(), 200, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapMax(), 300, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapUsed(), 400, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapCommit(), 500, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapInit(), 600, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapMax(), 700, 0); - Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapUsed(), 800, 0); + Assert.assertEquals(120, metrics.size()); + + Assert.assertEquals(1.0, model.getInstanceMetric().getSystemMetric().getCpuLoad(), 0); + Assert.assertEquals(2, model.getInstanceMetric().getSystemMetric().getCpuRunningThreads(), 0); + Assert.assertEquals(100, model.getInstanceMetric().getSystemMetric().getHeapCommit(), 0); + Assert.assertEquals(200, model.getInstanceMetric().getSystemMetric().getHeapInit(), 0); + Assert.assertEquals(300, model.getInstanceMetric().getSystemMetric().getHeapMax(), 0); + Assert.assertEquals(400, model.getInstanceMetric().getSystemMetric().getHeapUsed(), 0); + Assert.assertEquals(500, model.getInstanceMetric().getSystemMetric().getNonHeapCommit(), 0); + Assert.assertEquals(600, model.getInstanceMetric().getSystemMetric().getNonHeapInit(), 0); + Assert.assertEquals(700, model.getInstanceMetric().getSystemMetric().getNonHeapMax(), 0); + Assert.assertEquals(800, model.getInstanceMetric().getSystemMetric().getNonHeapUsed(), 0); } -} +} \ No newline at end of file diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestPublisher.java index ef44bc7..55bd705 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestPublisher.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestPublisher.java @@ -19,7 +19,6 @@ package org.apache.servicecomb.metrics.core; import static org.hamcrest.Matchers.containsInAnyOrder; -import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -36,7 +35,7 @@ import org.junit.Test; public class TestPublisher { @Test - public void test() throws IOException { + public void test() { SystemMonitor systemMonitor = new DefaultSystemMonitor(); RegistryMonitor registryMonitor = new RegistryMonitor(systemMonitor); DefaultDataSource dataSource = new DefaultDataSource(registryMonitor, "1000,2000,3000,3000,2000,1000"); @@ -44,11 +43,11 @@ public class TestPublisher { RegistryMetric registryMetric = publisher.metrics(); Map<String, Number> metricsMap = registryMetric.toMap(); - Assert.assertEquals(35, metricsMap.size()); + Assert.assertEquals(31, metricsMap.size()); registryMetric = publisher.metricsWithWindowTime(1000); metricsMap = registryMetric.toMap(); - Assert.assertEquals(35, metricsMap.size()); + Assert.assertEquals(31, metricsMap.size()); List<Long> appliedWindowTime = publisher.getAppliedWindowTime(); Assert.assertEquals(appliedWindowTime.size(), 3); -- To stop receiving notification emails like this one, please contact [email protected].
