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 f55177e19f9a907c5e14cf372c78e8d2217c44b2 Author: zhengyangyong <[email protected]> AuthorDate: Sun Feb 25 10:40:50 2018 +0800 SCB-327 improve test case and fix pr comment Signed-off-by: zhengyangyong <[email protected]> --- .../foundation/common/event/TestEventBus.java | 26 ++- .../metrics/health/TestHealthCheckerManager.java | 76 +++++++-- .../foundation/metrics/publish/TestMetricNode.java | 39 ++++- .../metrics/publish/TestMetricsLoader.java | 17 +- .../core/publish/HealthCheckerPublisher.java | 5 +- .../metrics/core/TestHealthCheckerPublisher.java | 14 +- .../metrics/core/TestMetricsPublisher.java | 4 +- ...EventAndRunner.java => TestMonitorManager.java} | 181 +++++++++++++++------ 8 files changed, 275 insertions(+), 87 deletions(-) diff --git a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/event/TestEventBus.java b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/event/TestEventBus.java index d404508..5def0ad 100644 --- a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/event/TestEventBus.java +++ b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/event/TestEventBus.java @@ -28,7 +28,31 @@ import org.junit.Test; public class TestEventBus { @Test - public void test() throws InterruptedException { + public void checkEventReceivedAndProcessed() { + AtomicBoolean eventReceived = new AtomicBoolean(false); + + EventListener<String> listener = new EventListener<String>() { + @Override + public Class<String> getEventClass() { + return String.class; + } + + @Override + public void process(String data) { + eventReceived.set(true); + } + }; + + EventBus.getInstance().registerEventListener(listener); + + EventBus.getInstance().triggerEvent("xxx"); + await().atMost(1, TimeUnit.SECONDS) + .until(eventReceived::get); + Assert.assertTrue(eventReceived.get()); + } + + @Test + public void checkEventCanNotReceivedAfterUnregister() throws InterruptedException { AtomicBoolean eventReceived = new AtomicBoolean(false); EventListener<String> listener = new EventListener<String>() { diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java index bcc3a35..c8474ee 100644 --- a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java +++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java @@ -24,26 +24,72 @@ import org.junit.Test; public class TestHealthCheckerManager { - @Test - public void testRegistry() { - HealthCheckerManager.getInstance().register(new HealthChecker() { - @Override - public String getName() { - return "test"; - } - - @Override - public HealthCheckResult check() { - return new HealthCheckResult(false, "bad", "bad call"); - } - }); + private HealthChecker good = new HealthChecker() { + @Override + public String getName() { + return "testBad"; + } + + @Override + public HealthCheckResult check() { + return new HealthCheckResult(false, "bad", "bad component"); + } + }; + + private HealthChecker bad = new HealthChecker() { + @Override + public String getName() { + return "testGood"; + } + + @Override + public HealthCheckResult check() { + return new HealthCheckResult(true, "good", "good component"); + } + }; + private void reset() { + HealthCheckerManager.getInstance().unregister(good.getName()); + HealthCheckerManager.getInstance().unregister(bad.getName()); + } + + @Test + public void checkResultCount() { + reset(); Map<String, HealthCheckResult> results = HealthCheckerManager.getInstance().check(); + Assert.assertEquals(0, results.size()); + + reset(); + HealthCheckerManager.getInstance().register(good); + results = HealthCheckerManager.getInstance().check(); Assert.assertEquals(1, results.size()); - HealthCheckResult result = HealthCheckerManager.getInstance().check().get("test"); + reset(); + HealthCheckerManager.getInstance().register(good); + HealthCheckerManager.getInstance().register(bad); + results = HealthCheckerManager.getInstance().check(); + Assert.assertEquals(2, results.size()); + } + + @Test + public void checkGoodResult() { + reset(); + HealthCheckerManager.getInstance().register(good); + HealthCheckerManager.getInstance().register(bad); + HealthCheckResult result = HealthCheckerManager.getInstance().check().get("testGood"); + Assert.assertEquals(true, result.isHealthy()); + Assert.assertEquals("good", result.getInformation()); + Assert.assertEquals("good component", result.getExtraData()); + } + + @Test + public void checkBadResult() { + reset(); + HealthCheckerManager.getInstance().register(good); + HealthCheckerManager.getInstance().register(bad); + HealthCheckResult result = HealthCheckerManager.getInstance().check().get("testBad"); Assert.assertEquals(false, result.isHealthy()); Assert.assertEquals("bad", result.getInformation()); - Assert.assertEquals("bad call", result.getExtraData()); + Assert.assertEquals("bad component", result.getExtraData()); } } diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricNode.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricNode.java index 7468030..8601137 100644 --- a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricNode.java +++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricNode.java @@ -22,11 +22,14 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; public class TestMetricNode { - @Test - public void test() { + private static MetricsLoader loader; + + @BeforeClass + public static void steup() { Map<String, Double> metrics = new HashMap<>(); metrics.put("X(K1=1,K2=2,K3=3,unit=SECONDS,statistic=A)", 100.0); metrics.put("X(K1=1,K2=2,K3=30000,unit=SECONDS,statistic=AA)", 110.0); @@ -39,30 +42,48 @@ public class TestMetricNode { metrics.put("Y(K1=100,K2=200,K3=300)", 700.0); metrics.put("Y(K1=1000,K2=2000,K3=3000)", 800.0); - MetricsLoader loader = new MetricsLoader(metrics); + loader = new MetricsLoader(metrics); + } + + @Test + public void checkNodeMetricCount() { MetricNode node = loader.getMetricTree("X", "K1"); MetricNode node_k1 = node.getChildrenNode("1"); - - //check metrics list Assert.assertEquals(3, node_k1.getMetricCount()); + } - //check getFirstMatchMetricValue with single Tag + @Test + public void checkGetFirstMatchMetricValueWithSingleTag() { + MetricNode node = loader.getMetricTree("X", "K1"); + MetricNode node_k1 = node.getChildrenNode("1"); Assert.assertEquals(100, node_k1.getFirstMatchMetricValue("K2", "2"), 0); Assert.assertEquals(100 * 1000, node_k1.getFirstMatchMetricValue(TimeUnit.MILLISECONDS, "K2", "2"), 0); Assert.assertEquals(100 * 1000, node_k1.getFirstMatchMetricValue(TimeUnit.MILLISECONDS, "K2", "2"), 0); + } - //check getFirstMatchMetricValue with multi Tag + @Test + public void checkGetFirstMatchMetricValueWithMultiTag() { + MetricNode node = loader.getMetricTree("X", "K1"); + MetricNode node_k1 = node.getChildrenNode("1"); Assert.assertEquals(200, node_k1.getFirstMatchMetricValue("K3", "30", "K2", "20"), 0); Assert.assertEquals(200 * 1000, node_k1.getFirstMatchMetricValue(TimeUnit.MILLISECONDS, "K3", "30", "K2", "20"), 0); Assert.assertEquals(110.0, node_k1.getFirstMatchMetricValue("K2", "2", "K3", "30000"), 0); Assert .assertEquals(110 * 1000, node_k1.getFirstMatchMetricValue(TimeUnit.MILLISECONDS, "K2", "2", "K3", "30000"), 0); + } - //check direct get statistic value + @Test + public void checkGetMatchStatisticMetricValue() { + MetricNode node = loader.getMetricTree("X", "K1"); + MetricNode node_k1 = node.getChildrenNode("1"); Assert.assertEquals(100, node_k1.getMatchStatisticMetricValue("A"), 0); Assert.assertEquals(100 * 1000, node_k1.getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "A"), 0); + } - //check generate new MetricNode from existed MetricNode + @Test + public void checkGenerateMetricNodeFromExistedNode() { + MetricNode node = loader.getMetricTree("X", "K1"); + MetricNode node_k1 = node.getChildrenNode("1"); MetricNode newNode = new MetricNode(node_k1.getMetrics(), "K2", "K3"); Assert.assertEquals(1, newNode.getChildrenNode("2").getChildrenNode("3").getMetricCount(), 0); } diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricsLoader.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricsLoader.java index b650819..917d9e5 100644 --- a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricsLoader.java +++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricsLoader.java @@ -21,11 +21,14 @@ import java.util.HashMap; import java.util.Map; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; public class TestMetricsLoader { - @Test - public void test() { + private static MetricsLoader loader; + + @BeforeClass + public static void setup() { Map<String, Double> metrics = new HashMap<>(); metrics.put("X(K1=1,K2=2,K3=3)", 100.0); metrics.put("X(K1=1,K2=20,K3=30)", 200.0); @@ -37,8 +40,16 @@ public class TestMetricsLoader { metrics.put("Y(K1=100,K2=200,K3=300)", 700.0); metrics.put("Y(K1=1000,K2=2000,K3=3000)", 800.0); - MetricsLoader loader = new MetricsLoader(metrics); + loader = new MetricsLoader(metrics); + } + + @Test + public void checkFirstMatchMetricValue() { Assert.assertEquals(200.0, loader.getFirstMatchMetricValue("X", "K3", "30"), 0); + } + + @Test + public void checkGetChildrenCount() { MetricNode node = loader.getMetricTree("X", "K1"); Assert.assertEquals(2, node.getChildrenCount()); } diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerPublisher.java index 17679a3..fba4f44 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerPublisher.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerPublisher.java @@ -17,12 +17,9 @@ package org.apache.servicecomb.metrics.core.publish; -import java.util.List; import java.util.Map; -import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils; import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; -import org.apache.servicecomb.foundation.metrics.health.HealthChecker; import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; import org.apache.servicecomb.provider.rest.common.RestSchema; import org.springframework.web.bind.annotation.CrossOrigin; @@ -44,7 +41,7 @@ public class HealthCheckerPublisher { return true; } - @RequestMapping(path = "/detail", method = RequestMethod.GET) + @RequestMapping(path = "/details", method = RequestMethod.GET) @CrossOrigin public Map<String, HealthCheckResult> checkHealthDetails() { return HealthCheckerManager.getInstance().check(); diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java index 037d3cd..613b252 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java @@ -24,12 +24,13 @@ import org.apache.servicecomb.foundation.metrics.health.HealthChecker; import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; import org.apache.servicecomb.metrics.core.publish.HealthCheckerPublisher; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; public class TestHealthCheckerPublisher { - @Test - public void test() { + @BeforeClass + public static void setup() { HealthCheckerManager.getInstance().register(new HealthChecker() { @Override public String getName() { @@ -53,13 +54,18 @@ public class TestHealthCheckerPublisher { return new HealthCheckResult(false, "info2", "extra data 2"); } }); + } + @Test + public void checkHealth() { HealthCheckerPublisher publisher = new HealthCheckerPublisher(); - Assert.assertEquals(false, publisher.checkHealth()); + } + @Test + public void checkHealthDetails() { + HealthCheckerPublisher publisher = new HealthCheckerPublisher(); Map<String, HealthCheckResult> content = publisher.checkHealthDetails(); - Assert.assertEquals(true, content.get("test").isHealthy()); Assert.assertEquals("info", content.get("test").getInformation()); Assert.assertEquals("extra data", content.get("test").getExtraData()); diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java index c310dd6..a38a0a9 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java @@ -25,7 +25,9 @@ import org.junit.Test; public class TestMetricsPublisher { @Test - public void test() { + public void testMeasure() { + System.getProperties().setProperty(MetricsConfig.METRICS_WINDOW_TIME, "2000"); + MetricsPublisher publisher = new MetricsPublisher(); Map<String, Double> metrics = publisher.measure(); //10 jvm metrics get 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/TestMonitorManager.java similarity index 64% rename from metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java rename to metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMonitorManager.java index 88efd35..3f9e714 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/TestMonitorManager.java @@ -29,13 +29,17 @@ import org.apache.servicecomb.foundation.metrics.publish.MetricNode; import org.apache.servicecomb.foundation.metrics.publish.MetricsLoader; import org.apache.servicecomb.swagger.invocation.InvocationType; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; -public class TestEventAndRunner { +public class TestMonitorManager { - @Test - public void test() throws InterruptedException { - //init + private static MetricsLoader currentWindowMetricsLoader; + + private static MetricsLoader nextWindowMetricsLoader; + + @BeforeClass + public static void setup() throws InterruptedException { System.getProperties().setProperty(MetricsConfig.METRICS_WINDOW_TIME, "2000"); //========================================================================== @@ -74,19 +78,35 @@ public class TestEventAndRunner { //fun4 is a PRODUCER call only started and no processing start and finished EventBus.getInstance().triggerEvent(new InvocationStartedEvent("fun4", InvocationType.PRODUCER, System.nanoTime())); - //========================================================================== - Map<String, Double> metrics = MonitorManager.getInstance().measure(); - MetricsLoader loader = new MetricsLoader(metrics); - MetricNode node = loader + currentWindowMetricsLoader = new MetricsLoader(metrics); + + //sim at lease one window time + Thread.sleep(2000); + + metrics = MonitorManager.getInstance().measure(); + nextWindowMetricsLoader = new MetricsLoader(metrics); + } + + @Test + public void checkFun1WaitInQueue() { + MetricNode node = currentWindowMetricsLoader .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, MetricsConst.TAG_STAGE); - //checkHealth ProducerMetrics - //fun1 MetricNode node1_queue = node.getChildrenNode("fun1") .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) .getChildrenNode(MetricsConst.STAGE_QUEUE); Assert.assertEquals(0, node1_queue.getMatchStatisticMetricValue("waitInQueue"), 0); + } + + @Test + public void checkFun1Latency() { + MetricNode node = currentWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node1_queue = node.getChildrenNode("fun1") + .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) + .getChildrenNode(MetricsConst.STAGE_QUEUE); MetricNode node1_queue_status = new MetricNode(node1_queue.getMetrics(), MetricsConst.TAG_STATUS); Assert.assertEquals(200, node1_queue_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "latency"), 0); @@ -110,75 +130,136 @@ public class TestEventAndRunner { node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "latency"), 0); Assert.assertEquals(700, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "latency"), 0); - Assert.assertEquals(2, node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("count"), 0); - Assert.assertEquals(1, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("count"), 0); - - //checkHealth ConsumerMetrics - //fun2 - MetricNode node2_whole = node.getChildrenNode("fun2") - .getChildrenNode(String.valueOf(InvocationType.CONSUMER).toLowerCase()) - .getChildrenNode(MetricsConst.STAGE_TOTAL); - MetricNode node2_whole_status = new MetricNode(node2_whole.getMetrics(), MetricsConst.TAG_STATUS); - Assert.assertEquals(300, - node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "latency"), 0); - Assert.assertEquals(1, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("count"), 0); - - //fun3 - MetricNode node3_queue = node.getChildrenNode("fun3") - .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) - .getChildrenNode(MetricsConst.STAGE_QUEUE); - Assert.assertEquals(0, node3_queue.getMatchStatisticMetricValue("waitInQueue"), 0); + } - //fun4 - MetricNode node4_queue = node.getChildrenNode("fun4") + @Test + public void checkFun1Count() { + MetricNode node = currentWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node1_whole = node.getChildrenNode("fun1") .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) - .getChildrenNode(MetricsConst.STAGE_QUEUE); - Assert.assertEquals(1, node4_queue.getMatchStatisticMetricValue("waitInQueue"), 0); - - //sim at lease one window time - Thread.sleep(2000); + .getChildrenNode(MetricsConst.STAGE_TOTAL); + MetricNode node1_whole_status = new MetricNode(node1_whole.getMetrics(), MetricsConst.TAG_STATUS); + Assert.assertEquals(2, node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("count"), 0); + Assert.assertEquals(1, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("count"), 0); + } - metrics = MonitorManager.getInstance().measure(); - loader = new MetricsLoader(metrics); - node = loader + @Test + public void checkFun1Max() { + MetricNode node = nextWindowMetricsLoader .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, MetricsConst.TAG_STAGE); - - node1_queue = node.getChildrenNode("fun1").getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) + MetricNode node1_queue = node.getChildrenNode("fun1") + .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) .getChildrenNode(MetricsConst.STAGE_QUEUE); - node1_queue_status = new MetricNode(node1_queue.getMetrics(), MetricsConst.TAG_STATUS); + MetricNode node1_queue_status = new MetricNode(node1_queue.getMetrics(), MetricsConst.TAG_STATUS); Assert.assertEquals(300, node1_queue_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); Assert.assertEquals(300, node1_queue_status.getChildrenNode("500").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); - node1_exec = node.getChildrenNode("fun1").getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) + MetricNode node1_exec = node.getChildrenNode("fun1") + .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) .getChildrenNode(MetricsConst.STAGE_EXECUTION); - node1_exec_status = new MetricNode(node1_exec.getMetrics(), MetricsConst.TAG_STATUS); + MetricNode node1_exec_status = new MetricNode(node1_exec.getMetrics(), MetricsConst.TAG_STATUS); Assert.assertEquals(400, node1_exec_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); Assert.assertEquals(400, node1_exec_status.getChildrenNode("500").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); - node1_whole = node.getChildrenNode("fun1").getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) + MetricNode node1_whole = node.getChildrenNode("fun1") + .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) .getChildrenNode(MetricsConst.STAGE_TOTAL); - node1_whole_status = new MetricNode(node1_whole.getMetrics(), MetricsConst.TAG_STATUS); + MetricNode node1_whole_status = new MetricNode(node1_whole.getMetrics(), MetricsConst.TAG_STATUS); Assert.assertEquals(700, node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); Assert.assertEquals(700, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); + } + @Test + public void checkFun1Tps() { + MetricNode node = nextWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node1_whole = node.getChildrenNode("fun1") + .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) + .getChildrenNode(MetricsConst.STAGE_TOTAL); + MetricNode node1_whole_status = new MetricNode(node1_whole.getMetrics(), MetricsConst.TAG_STATUS); Assert.assertEquals(1, node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("tps"), 0); Assert.assertEquals(0.5, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("tps"), 0); + } - //checkHealth ConsumerMetrics - //fun2 - node2_whole = node.getChildrenNode("fun2").getChildrenNode(String.valueOf(InvocationType.CONSUMER).toLowerCase()) + @Test + public void checkFun2Latency() { + MetricNode node = currentWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node2_whole = node.getChildrenNode("fun2") + .getChildrenNode(String.valueOf(InvocationType.CONSUMER).toLowerCase()) .getChildrenNode(MetricsConst.STAGE_TOTAL); - node2_whole_status = new MetricNode(node2_whole.getMetrics(), MetricsConst.TAG_STATUS); + MetricNode node2_whole_status = new MetricNode(node2_whole.getMetrics(), MetricsConst.TAG_STATUS); Assert.assertEquals(300, - node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); + node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "latency"), 0); + } + + @Test + public void checkFun2Count() { + MetricNode node = currentWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node2_whole = node.getChildrenNode("fun2") + .getChildrenNode(String.valueOf(InvocationType.CONSUMER).toLowerCase()) + .getChildrenNode(MetricsConst.STAGE_TOTAL); + MetricNode node2_whole_status = new MetricNode(node2_whole.getMetrics(), MetricsConst.TAG_STATUS); + Assert.assertEquals(1, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("count"), 0); + } + @Test + public void checkFun2Tps() { + MetricNode node = nextWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node2_whole = node.getChildrenNode("fun2") + .getChildrenNode(String.valueOf(InvocationType.CONSUMER).toLowerCase()) + .getChildrenNode(MetricsConst.STAGE_TOTAL); + MetricNode node2_whole_status = new MetricNode(node2_whole.getMetrics(), MetricsConst.TAG_STATUS); Assert.assertEquals(0.5, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("tps"), 0); } + + @Test + public void checkFun2Max() { + MetricNode node = nextWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node2_whole = node.getChildrenNode("fun2") + .getChildrenNode(String.valueOf(InvocationType.CONSUMER).toLowerCase()) + .getChildrenNode(MetricsConst.STAGE_TOTAL); + MetricNode node2_whole_status = new MetricNode(node2_whole.getMetrics(), MetricsConst.TAG_STATUS); + Assert.assertEquals(300, + node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue(TimeUnit.MILLISECONDS, "max"), 0); + } + + @Test + public void checkFun3WaitInQueue() { + MetricNode node = currentWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node3_queue = node.getChildrenNode("fun3") + .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) + .getChildrenNode(MetricsConst.STAGE_QUEUE); + Assert.assertEquals(0, node3_queue.getMatchStatisticMetricValue("waitInQueue"), 0); + } + + @Test + public void checkFun4WaitInQueue() { + MetricNode node = currentWindowMetricsLoader + .getMetricTree(MetricsConst.SERVICECOMB_INVOCATION, MetricsConst.TAG_OPERATION, MetricsConst.TAG_ROLE, + MetricsConst.TAG_STAGE); + MetricNode node4_queue = node.getChildrenNode("fun4") + .getChildrenNode(String.valueOf(InvocationType.PRODUCER).toLowerCase()) + .getChildrenNode(MetricsConst.STAGE_QUEUE); + Assert.assertEquals(1, node4_queue.getMatchStatisticMetricValue("waitInQueue"), 0); + } } \ No newline at end of file -- To stop receiving notification emails like this one, please contact [email protected].
