You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/01/24 01:21:40 UTC
[incubator-servicecomb-java-chassis] 03/10: SCB-150 minor refactor
and fix test case
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 <ya...@huawei.com>
AuthorDate: Fri Jan 12 11:34:41 2018 +0800
SCB-150 minor refactor and fix test case
Signed-off-by: zhengyangyong <ya...@huawei.com>
---
.../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
ningjiang@apache.org.