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 56a4668eb748d4a78bc620fb88d1d289f2b16c6f
Author: wujimin <wuji...@huawei.com>
AuthorDate: Thu Nov 22 09:17:27 2018 +0800

    [SCB-1034][WIP] threadPool meters switch to new mechanism
---
 .../metrics/core/ThreadPoolMetersInitializer.java  |  9 ++----
 .../core/TestThreadPoolMetersInitializer.java      | 33 +++++++++-------------
 .../publish/TestThreadPoolPublishModelFactory.java |  2 ++
 3 files changed, 18 insertions(+), 26 deletions(-)

diff --git 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
index 1637cfb..621fd0f 100644
--- 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
+++ 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
@@ -27,12 +27,11 @@ import 
org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.executor.FixedThreadExecutor;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
 import org.apache.servicecomb.foundation.metrics.MetricsBootstrapConfig;
 import org.apache.servicecomb.foundation.metrics.MetricsInitializer;
+import org.apache.servicecomb.foundation.metrics.registry.GlobalRegistry;
 
 import com.google.common.eventbus.EventBus;
-import com.netflix.spectator.api.CompositeRegistry;
 import com.netflix.spectator.api.Registry;
 import com.netflix.spectator.api.patterns.ThreadPoolMonitor;
 
@@ -40,10 +39,8 @@ public class ThreadPoolMetersInitializer implements 
MetricsInitializer {
   private Registry registry;
 
   @Override
-  public void init(CompositeRegistry globalRegistry, EventBus eventBus, 
MetricsBootstrapConfig config) {
-    DefaultRegistryInitializer defaultRegistryInitializer =
-        SPIServiceUtils.getTargetService(MetricsInitializer.class, 
DefaultRegistryInitializer.class);
-    registry = defaultRegistryInitializer.getRegistry();
+  public void init(GlobalRegistry globalRegistry, EventBus eventBus, 
MetricsBootstrapConfig config) {
+    registry = globalRegistry.getDefaultRegistry();
 
     createThreadPoolMeters();
   }
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
index 378743d..4942ccf 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.RunnableScheduledFuture;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -33,31 +34,31 @@ import 
org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.executor.FixedThreadExecutor;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-import org.apache.servicecomb.foundation.metrics.MetricsInitializer;
+import org.apache.servicecomb.foundation.metrics.registry.GlobalRegistry;
 import org.hamcrest.Matchers;
 import org.junit.Assert;
 import org.junit.Test;
+import org.mockito.Mockito;
 import org.springframework.context.ApplicationContext;
 
 import com.netflix.spectator.api.DefaultRegistry;
 import com.netflix.spectator.api.ManualClock;
 import com.netflix.spectator.api.Registry;
+import com.netflix.spectator.api.patterns.PolledMeter;
+
 import mockit.Expectations;
 import mockit.Mock;
 import mockit.MockUp;
 import mockit.Mocked;
 
 public class TestThreadPoolMetersInitializer {
+  GlobalRegistry globalRegistry = new GlobalRegistry();
+
   Registry registry = new DefaultRegistry(new ManualClock());
 
   ThreadPoolMetersInitializer threadPoolMetersInitializer = new 
ThreadPoolMetersInitializer();
 
-  @Mocked
-  DefaultRegistryInitializer defaultRegistryInitializer;
-
-  @Mocked
-  ThreadPoolExecutor threadPoolExecutor;
+  ThreadPoolExecutor threadPoolExecutor = 
Mockito.mock(ThreadPoolExecutor.class);
 
   @Mocked
   BlockingQueue<Runnable> queue;
@@ -65,8 +66,7 @@ public class TestThreadPoolMetersInitializer {
   @Mocked
   FixedThreadExecutor fixedThreadExecutor;
 
-  @Mocked
-  Executor executor;
+  ExecutorService executor = Mockito.mock(ExecutorService.class);
 
   @Mocked
   ApplicationContext applicationContext;
@@ -92,14 +92,6 @@ public class TestThreadPoolMetersInitializer {
         result = microserviceMeta;
       }
     };
-    new Expectations(SPIServiceUtils.class) {
-      {
-        SPIServiceUtils.getTargetService(MetricsInitializer.class, 
DefaultRegistryInitializer.class);
-        result = defaultRegistryInitializer;
-        defaultRegistryInitializer.getRegistry();
-        result = registry;
-      }
-    };
     Map<String, Executor> beanExecutors = new HashMap<>();
     beanExecutors.put("executor", executor);
     beanExecutors.put("fixedThreadExecutor", fixedThreadExecutor);
@@ -113,6 +105,7 @@ public class TestThreadPoolMetersInitializer {
       }
     };
 
+    Mockito.when(threadPoolExecutor.getQueue()).thenReturn(queue);
     new Expectations(CseContext.getInstance()) {
       {
         microserviceMeta.getOperations();
@@ -127,8 +120,6 @@ public class TestThreadPoolMetersInitializer {
         fixedThreadExecutor.getExecutorList();
         result = Arrays.asList(threadPoolExecutor);
 
-        threadPoolExecutor.getQueue();
-        result = queue;
         queue.size();
         result = 10d;
       }
@@ -141,8 +132,10 @@ public class TestThreadPoolMetersInitializer {
       }
     };
 
-    threadPoolMetersInitializer.init(null, null, null);
+    globalRegistry.add(registry);
+    threadPoolMetersInitializer.init(globalRegistry, null, null);
 
+    PolledMeter.update(registry);
     List<String> result = new ArrayList<>();
     registry.iterator().forEachRemaining(meter -> {
       result.add(meter.measure().toString());
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestThreadPoolPublishModelFactory.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestThreadPoolPublishModelFactory.java
index 7f000f0..ab8c898 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestThreadPoolPublishModelFactory.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestThreadPoolPublishModelFactory.java
@@ -32,6 +32,7 @@ import com.google.common.eventbus.EventBus;
 import com.netflix.spectator.api.DefaultRegistry;
 import com.netflix.spectator.api.ManualClock;
 import com.netflix.spectator.api.Registry;
+import com.netflix.spectator.api.patterns.PolledMeter;
 import com.netflix.spectator.api.patterns.ThreadPoolMonitor;
 
 import mockit.Expectations;
@@ -68,6 +69,7 @@ public class TestThreadPoolPublishModelFactory {
     };
     ThreadPoolMonitor.attach(registry, threadPoolExecutor, "test");
 
+    PolledMeter.update(registry);
     PublishModelFactory factory = new 
PublishModelFactory(Lists.newArrayList(registry.iterator()));
     DefaultPublishModel model = factory.createDefaultPublishModel();
 

Reply via email to