This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 50365b81584e8d68ecf947d02e0f7082f64bc507
Author: wujimin <wuji...@huawei.com>
AuthorDate: Thu Nov 22 09:22:28 2018 +0800

    [SCB-1034] log publisher switch to new mechanism
---
 .../metrics/publish/spectator/MeasurementTree.java |  2 +-
 .../metrics/core/publish/DefaultLogPublisher.java  | 54 ++++++++++-----------
 .../core/publish/TestDefaultLogPublisher.java      | 56 +++++++++++-----------
 3 files changed, 57 insertions(+), 55 deletions(-)

diff --git 
a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java
 
b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java
index a342f34..79101fa 100644
--- 
a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java
+++ 
b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java
@@ -56,7 +56,7 @@ public class MeasurementTree extends MeasurementNode {
         Tag tag = tagFinder.find(id.tags());
         if (tag == null) {
           if (tagFinder.skipOnNull()) {
-            return;
+            break;
           }
           throw new IllegalStateException(
               String.format("tag key \"%s\" not exist in %s",
diff --git 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
index 6052f7e..8259ff9 100644
--- 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
+++ 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
@@ -28,6 +28,7 @@ import 
org.apache.servicecomb.foundation.metrics.MetricsInitializer;
 import org.apache.servicecomb.foundation.metrics.PolledEvent;
 import 
org.apache.servicecomb.foundation.metrics.publish.spectator.MeasurementNode;
 import 
org.apache.servicecomb.foundation.metrics.publish.spectator.MeasurementTree;
+import org.apache.servicecomb.foundation.metrics.registry.GlobalRegistry;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import 
org.apache.servicecomb.metrics.core.meter.invocation.MeterInvocationConst;
 import org.apache.servicecomb.metrics.core.meter.os.NetMeter;
@@ -44,7 +45,6 @@ import org.slf4j.LoggerFactory;
 import com.google.common.eventbus.EventBus;
 import com.google.common.eventbus.Subscribe;
 import com.netflix.config.DynamicPropertyFactory;
-import com.netflix.spectator.api.CompositeRegistry;
 import com.netflix.spectator.api.Meter;
 
 import io.vertx.core.impl.VertxImplEx;
@@ -56,30 +56,30 @@ public class DefaultLogPublisher implements 
MetricsInitializer {
 
   //sample
   private static final String SIMPLE_HEADER = "%s:\n  simple:\n"
-      + "    status          tps           latency                             
       operation\n";
+      + "    status          tps      latency             operation\n";
 
-  private static final String FIRST_LINE_SIMPLE_FORMAT = "    %-15s %-13s 
%-42s %s\n";
+  private static final String FIRST_LINE_SIMPLE_FORMAT = "    %-15s %-8s %-19s 
%s\n";
 
-  private static final String SIMPLE_FORMAT = "                    %-13s %-42s 
%s\n";
+  private static final String SIMPLE_FORMAT = "                    %-8s %-19s 
%s\n";
 
   //details
-  private static final String PRODUCER_DETAILS_FORMAT =
-      "        prepare: %-22s queue       : %-22s filtersReq : %-22s 
handlersReq: %s\n"
-          + "        execute: %-22s handlersResp: %-22s filtersResp: %-22s 
sendResp   : %s\n";
+  private static final String PRODUCER_DETAILS_FORMAT = ""
+      + "        prepare: %-19s queue       : %-19s filtersReq : %-19s 
handlersReq: %s\n"
+      + "        execute: %-19s handlersResp: %-19s filtersResp: %-19s 
sendResp   : %s\n";
 
-  private static final String CONSUMER_DETAILS_FORMAT =
-      "        prepare          : %-22s handlersReq : %-22s clientFiltersReq: 
%-22s sendReq     : %s\n"
-          + "        getConnect       : %-22s writeBuf    : %-22s waitResp     
   : %-22s wakeConsumer: %s\n"
-          + "        clientFiltersResp: %-22s handlersResp: %s\n";
+  private static final String CONSUMER_DETAILS_FORMAT = ""
+      + "        prepare     : %-19s handlersReq : %-19s cFiltersReq: %-19s 
sendReq     : %s\n"
+      + "        getConnect  : %-19s writeBuf    : %-19s waitResp   : %-19s 
wakeConsumer: %s\n"
+      + "        cFiltersResp: %-19s handlersResp: %s\n";
 
-  private static final String EDGE_DETAILS_FORMAT =
-      "        prepare          : %-22s queue       : %-22s serverFiltersReq : 
%-22s handlersReq : %s\n"
-          + "        clientFiltersReq : %-22s sendReq     : %-22s getConnect   
    : %-22s writeBuf    : %s\n"
-          + "        waitResp         : %-22s wakeConsumer: %-22s 
clientFiltersResp: %-22s handlersResp: %s\n"
-          + "        serverFiltersResp: %-22s sendResp    : %s\n";
+  private static final String EDGE_DETAILS_FORMAT = ""
+      + "        prepare     : %-19s queue       : %-19s sFiltersReq : %-19s 
handlersReq : %s\n"
+      + "        cFiltersReq : %-19s sendReq     : %-19s getConnect  : %-19s 
writeBuf    : %s\n"
+      + "        waitResp    : %-19s wakeConsumer: %-19s cFiltersResp: %-19s 
handlersResp: %s\n"
+      + "        sFiltersResp: %-19s sendResp    : %s\n";
 
   @Override
-  public void init(CompositeRegistry globalRegistry, EventBus eventBus, 
MetricsBootstrapConfig config) {
+  public void init(GlobalRegistry globalRegistry, EventBus eventBus, 
MetricsBootstrapConfig config) {
     if (!DynamicPropertyFactory.getInstance()
         .getBooleanProperty(ENABLED, false)
         .get()) {
@@ -100,17 +100,16 @@ public class DefaultLogPublisher implements 
MetricsInitializer {
   }
 
   protected void printLog(List<Meter> meters) {
-
     StringBuilder sb = new StringBuilder();
     sb.append("\n");
 
-    printVertxMetrics(sb);
-
     PublishModelFactory factory = new PublishModelFactory(meters);
     DefaultPublishModel model = factory.createDefaultPublishModel();
 
-    printThreadPoolMetrics(model, sb);
     printOsLog(factory.getTree(), sb);
+    printVertxMetrics(sb);
+    printThreadPoolMetrics(model, sb);
+
     printConsumerLog(model, sb);
     printProducerLog(model, sb);
     printEdgeLog(model, sb);
@@ -152,7 +151,7 @@ public class DefaultLogPublisher implements 
MetricsInitializer {
           interfaceNode.getName());
     }
     if (tmpSb.length() != 0) {
-      appendLine(sb, tmpSb.toString());
+      sb.append(tmpSb.toString());
     }
   }
 
@@ -372,7 +371,6 @@ public class DefaultLogPublisher implements 
MetricsInitializer {
     PerfInfo prepare, queue, serverFiltersReq, handlersReq, clientFiltersReq, 
sendReq, getConnect, writeBuf,
         waitResp, wakeConsumer, clientFiltersResp, handlersResp, 
serverFiltersResp, sendResp;
     for (OperationPerf operationPerf : perfGroup.getOperationPerfs()) {
-
       prepare = operationPerf.findStage(MeterInvocationConst.STAGE_PREPARE);
       queue = 
operationPerf.findStage(MeterInvocationConst.STAGE_EXECUTOR_QUEUE);
       serverFiltersReq = 
operationPerf.findStage(MeterInvocationConst.STAGE_SERVER_FILTERS_REQUEST);
@@ -413,12 +411,14 @@ public class DefaultLogPublisher implements 
MetricsInitializer {
   }
 
   protected void printVertxMetrics(StringBuilder sb) {
-    sb.append("vertx:\n")
-        .append("  name       eventLoopContext-created\n");
+    appendLine(sb, "vertx:");
+
+    appendLine(sb, "  instances:");
+    appendLine(sb, "    name       eventLoopContext-created");
     for (Entry<String, VertxImplEx> entry : 
VertxUtils.getVertxMap().entrySet()) {
-      sb.append(String.format("  %-10s %d\n",
+      appendLine(sb, "    %-10s %d",
           entry.getKey(),
-          entry.getValue().getEventLoopContextCreatedCount()));
+          entry.getValue().getEventLoopContextCreatedCount());
     }
   }
 
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
index 2ad68a6..81ab22c 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
@@ -30,6 +30,7 @@ import 
org.apache.servicecomb.foundation.metrics.MetricsBootstrapConfig;
 import org.apache.servicecomb.foundation.metrics.PolledEvent;
 import 
org.apache.servicecomb.foundation.metrics.publish.spectator.MeasurementNode;
 import 
org.apache.servicecomb.foundation.metrics.publish.spectator.MeasurementTree;
+import org.apache.servicecomb.foundation.metrics.registry.GlobalRegistry;
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.apache.servicecomb.foundation.test.scaffolding.log.LogCollector;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
@@ -47,7 +48,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.google.common.eventbus.EventBus;
-import com.netflix.spectator.api.CompositeRegistry;
 import com.netflix.spectator.api.Measurement;
 
 import io.vertx.core.impl.VertxImplEx;
@@ -57,7 +57,7 @@ import mockit.MockUp;
 import mockit.Mocked;
 
 public class TestDefaultLogPublisher {
-  CompositeRegistry globalRegistry = null;
+  GlobalRegistry globalRegistry = new GlobalRegistry();
 
   EventBus eventBus = new EventBus();
 
@@ -145,8 +145,9 @@ public class TestDefaultLogPublisher {
     DefaultPublishModel model = new DefaultPublishModel();
 
     PerfInfo perfTotal = new PerfInfo();
-    perfTotal.setTps(10);
-    perfTotal.setMsTotalTime(100);
+    perfTotal.setTps(100_0000);
+    perfTotal.setMsTotalTime(30000L * 100_0000);
+    perfTotal.setMsMaxLatency(30000);
 
     OperationPerf operationPerf = new OperationPerf();
     operationPerf.setOperation("op");
@@ -222,41 +223,42 @@ public class TestDefaultLogPublisher {
     List<LoggingEvent> events = collector.getEvents().stream().filter(e -> {
       return DefaultLogPublisher.class.getName().equals(e.getLoggerName());
     }).collect(Collectors.toList());
+
     LoggingEvent event = events.get(0);
-    Assert.assertEquals("\n" +
-            "vertx:\n" +
-            "  name       eventLoopContext-created\n" +
-            "  v          1\n" +
-            "threadPool:\n" +
-            "  corePoolSize maxThreads poolSize currentThreadsBusy queueSize 
taskCount completedTaskCount name\n" +
-            "  0            0          0        0                  0         
0.0       0.0                test\n" +
-            "os:\n"
+    Assert.assertEquals("\n"
+            + "os:\n"
             + "  cpu: 100.00%\n"
             + "  net:\n"
             + "    send         receive      interface\n"
-            + "    1 B          1 B          eth0\n" +
-            "\n" +
-            "consumer:\n" +
-            "  simple:\n"
-            + "    status          tps           latency                       
             operation\n"
-            + "    rest.OK         10            10.000/0.000                  
             op\n"
-            + "                    10            10.000/0.000                  
             (summary)\n"
+            + "    1 B          1 B          eth0\n"
+            + "vertx:\n"
+            + "  instances:\n"
+            + "    name       eventLoopContext-created\n"
+            + "    v          1\n"
+            + "threadPool:\n"
+            + "  corePoolSize maxThreads poolSize currentThreadsBusy queueSize 
taskCount completedTaskCount name\n"
+            + "  0            0          0        0                  0         
0.0       0.0                test\n"
+            + "consumer:\n"
+            + "  simple:\n"
+            + "    status          tps      latency             operation\n"
+            + "    rest.OK         1000000  30000.000/30000.000 op\n"
+            + "                    1000000  30000.000/30000.000 (summary)\n"
             + "  details:\n"
             + "    rest.OK:\n"
             + "      op:\n"
-            + "        prepare          : 10.000/0.000           handlersReq : 
10.000/0.000           clientFiltersReq: 10.000/0.000           sendReq     : 
10.000/0.000\n"
-            + "        getConnect       : 10.000/0.000           writeBuf    : 
10.000/0.000           waitResp        : 10.000/0.000           wakeConsumer: 
10.000/0.000\n"
-            + "        clientFiltersResp: 10.000/0.000           handlersResp: 
10.000/0.000\n"
+            + "        prepare     : 30000.000/30000.000 handlersReq : 
30000.000/30000.000 cFiltersReq: 30000.000/30000.000 sendReq     : 
30000.000/30000.000\n"
+            + "        getConnect  : 30000.000/30000.000 writeBuf    : 
30000.000/30000.000 waitResp   : 30000.000/30000.000 wakeConsumer: 
30000.000/30000.000\n"
+            + "        cFiltersResp: 30000.000/30000.000 handlersResp: 
30000.000/30000.000\n"
             + "producer:\n"
             + "  simple:\n"
-            + "    status          tps           latency                       
             operation\n"
-            + "    rest.OK         10            10.000/0.000                  
             op\n"
-            + "                    10            10.000/0.000                  
             (summary)\n"
+            + "    status          tps      latency             operation\n"
+            + "    rest.OK         1000000  30000.000/30000.000 op\n"
+            + "                    1000000  30000.000/30000.000 (summary)\n"
             + "  details:\n"
             + "    rest.OK:\n"
             + "      op:\n"
-            + "        prepare: 10.000/0.000           queue       : 
10.000/0.000           filtersReq : 10.000/0.000           handlersReq: 
10.000/0.000\n"
-            + "        execute: 10.000/0.000           handlersResp: 
10.000/0.000           filtersResp: 10.000/0.000           sendResp   : 
10.000/0.000\n",
+            + "        prepare: 30000.000/30000.000 queue       : 
30000.000/30000.000 filtersReq : 30000.000/30000.000 handlersReq: 
30000.000/30000.000\n"
+            + "        execute: 30000.000/30000.000 handlersResp: 
30000.000/30000.000 filtersResp: 30000.000/30000.000 sendResp   : 
30000.000/30000.000\n",
         event.getMessage());
   }
 }

Reply via email to