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 d8203236c3b033bf275c68c21ecda3f6cda3f836
Author: zhengyangyong <yangyong.zh...@huawei.com>
AuthorDate: Sat Dec 23 16:13:55 2017 +0800

    JAV-539 & SCB-9 resolve conflicts and change "SystemResource" -> 
"SystemMonitor"
    
    Signed-off-by: zhengyangyong <yangyong.zh...@huawei.com>
---
 .../metrics/core/metric/CallMetric.java            |  3 --
 .../metrics/core/metric/InstanceMetric.java        | 16 +++++----
 .../metrics/core/metric/InvocationMetric.java      |  3 --
 .../metrics/core/metric/RegistryMetric.java        | 10 ++----
 .../metrics/core/metric/TimerMetric.java           |  3 --
 .../DefaultSystemMonitor.java}                     | 17 ++++++---
 .../metrics/core/monitor/RegistryMonitor.java      |  9 +++--
 .../SystemMonitor.java}                            |  8 +++--
 .../metrics/core/TestEventAndRunner.java           | 40 +++++++++++++++++++++-
 9 files changed, 76 insertions(+), 33 deletions(-)

diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
index 84a06e4..9c3b0a7 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
@@ -20,10 +20,7 @@ package io.servicecomb.metrics.core.metric;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
 public class CallMetric {
-  @JsonIgnore
   private final String prefix;
 
   private final long total;
diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
index 7a934bd..283a664 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
@@ -20,6 +20,8 @@ package io.servicecomb.metrics.core.metric;
 public class InstanceMetric {
   private final long waitInQueue;
 
+  private final SystemMetric systemMetric;
+
   private final ConsumerInvocationMetric consumerMetric;
 
   private final ProducerInvocationMetric producerMetric;
@@ -28,6 +30,10 @@ public class InstanceMetric {
     return waitInQueue;
   }
 
+  public SystemMetric getSystemMetric() {
+    return systemMetric;
+  }
+
   public ConsumerInvocationMetric getConsumerMetric() {
     return consumerMetric;
   }
@@ -36,15 +42,11 @@ public class InstanceMetric {
     return producerMetric;
   }
 
-  public InstanceMetric() {
-    waitInQueue = 0;
-    consumerMetric = null;
-    producerMetric = null;
-  }
-
-  public InstanceMetric(long waitInQueue, ConsumerInvocationMetric 
consumerMetric,
+  public InstanceMetric(long waitInQueue, SystemMetric systemMetric,
+      ConsumerInvocationMetric consumerMetric,
       ProducerInvocationMetric producerMetric) {
     this.waitInQueue = waitInQueue;
+    this.systemMetric = systemMetric;
     this.consumerMetric = consumerMetric;
     this.producerMetric = producerMetric;
   }
diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
index 03c66db..62e489d 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
@@ -17,12 +17,9 @@
 
 package io.servicecomb.metrics.core.metric;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
 public class InvocationMetric {
   private final String operationName;
 
-  @JsonIgnore
   private final String prefix;
 
   private final long waitInQueue;
diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
index e7e1460..ccb5706 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
@@ -42,13 +42,7 @@ public class RegistryMetric {
     return producerMetrics;
   }
 
-  public RegistryMetric() {
-    consumerMetrics = new HashMap<>();
-    producerMetrics = new HashMap<>();
-    instanceMetric = new InstanceMetric();
-  }
-
-  public RegistryMetric(Map<String, InvocationMetric> invocationMetrics) {
+  public RegistryMetric(SystemMetric systemMetric, Map<String, 
InvocationMetric> invocationMetrics) {
     //sum instance level metric
     consumerMetrics = new HashMap<>();
     producerMetrics = new HashMap<>();
@@ -85,7 +79,7 @@ public class RegistryMetric {
       }
     }
 
-    instanceMetric = new InstanceMetric(totalWaitInQueue,
+    instanceMetric = new InstanceMetric(totalWaitInQueue, systemMetric,
         new ConsumerInvocationMetric("instance", 
MetricsConst.INSTANCE_CONSUMER_PREFIX,
             producerWaitInQueue, consumerLatency, consumerCall),
         new ProducerInvocationMetric("instance", 
MetricsConst.INSTANCE_PRODUCER_PREFIX,
diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
index 7212806..45f3f57 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
@@ -20,10 +20,7 @@ package io.servicecomb.metrics.core.metric;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
 public class TimerMetric {
-  @JsonIgnore
   private final String prefix;
 
   private final double total;
diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/DefaultSystemResource.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
similarity index 81%
rename from 
metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/DefaultSystemResource.java
rename to 
metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
index c045dc6..16b475b 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/DefaultSystemResource.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.extra;
+package io.servicecomb.metrics.core.monitor;
 
 import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryMXBean;
@@ -24,8 +24,10 @@ import java.lang.management.ThreadMXBean;
 
 import org.springframework.stereotype.Component;
 
+import io.servicecomb.metrics.core.metric.SystemMetric;
+
 @Component
-public class DefaultSystemResource implements SystemResource {
+public class DefaultSystemMonitor implements SystemMonitor {
 
   private final OperatingSystemMXBean systemMXBean;
 
@@ -33,12 +35,12 @@ public class DefaultSystemResource implements 
SystemResource {
 
   private final MemoryMXBean memoryMXBean;
 
-  public DefaultSystemResource() {
+  public DefaultSystemMonitor() {
     this(ManagementFactory.getOperatingSystemMXBean(), 
ManagementFactory.getThreadMXBean(),
         ManagementFactory.getMemoryMXBean());
   }
 
-  public DefaultSystemResource(OperatingSystemMXBean systemMXBean, 
ThreadMXBean threadMXBean,
+  public DefaultSystemMonitor(OperatingSystemMXBean systemMXBean, ThreadMXBean 
threadMXBean,
       MemoryMXBean memoryMXBean) {
     this.systemMXBean = systemMXBean;
     this.threadMXBean = threadMXBean;
@@ -94,4 +96,11 @@ public class DefaultSystemResource implements SystemResource 
{
   public long getNonHeapUsed() {
     return memoryMXBean.getNonHeapMemoryUsage().getUsed();
   }
+
+  @Override
+  public SystemMetric toSystemMetric() {
+    return new SystemMetric(getCpuLoad(),
+        getCpuRunningThreads(), getHeapInit(), getHeapMax(), getHeapCommit(), 
getHeapUsed(),
+        getNonHeapInit(), getNonHeapMax(), getNonHeapCommit(), 
getNonHeapUsed());
+  }
 }
diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
index 0f592d2..c1060de 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import io.servicecomb.metrics.core.metric.InvocationMetric;
@@ -29,9 +30,13 @@ import io.servicecomb.metrics.core.metric.RegistryMetric;
 @Component
 public class RegistryMonitor extends BasicMonitor {
 
+  private final SystemMonitor systemMonitor;
+
   private final Map<String, InvocationMonitor> invocationMonitors;
 
-  public RegistryMonitor() {
+  @Autowired
+  public RegistryMonitor(SystemMonitor systemMonitor) {
+    this.systemMonitor = systemMonitor;
     this.invocationMonitors = new ConcurrentHashMap<>();
   }
 
@@ -44,6 +49,6 @@ public class RegistryMonitor extends BasicMonitor {
     for (InvocationMonitor monitor : invocationMonitors.values()) {
       invocationMetrics.put(monitor.getOperationName(), 
monitor.toInvocationMetric(windowTimeIndex));
     }
-    return new RegistryMetric(invocationMetrics);
+    return new RegistryMetric(systemMonitor.toSystemMetric(), 
invocationMetrics);
   }
 }
diff --git 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/SystemResource.java
 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
similarity index 86%
rename from 
metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/SystemResource.java
rename to 
metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
index d1b72be..c35e6cc 100644
--- 
a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/SystemResource.java
+++ 
b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
@@ -15,9 +15,11 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.extra;
+package io.servicecomb.metrics.core.monitor;
 
-public interface SystemResource {
+import io.servicecomb.metrics.core.metric.SystemMetric;
+
+public interface SystemMonitor {
   double getCpuLoad();
 
   int getCpuRunningThreads();
@@ -37,4 +39,6 @@ public interface SystemResource {
   long getNonHeapCommit();
 
   long getNonHeapUsed();
+
+  SystemMetric toSystemMetric();
 }
diff --git 
a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
 
b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
index ae518fd..8c638d6 100644
--- 
a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
+++ 
b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
@@ -17,12 +17,19 @@
 
 package io.servicecomb.metrics.core;
 
+import static org.mockito.Mockito.when;
+
+import java.lang.management.MemoryMXBean;
+import java.lang.management.MemoryUsage;
+import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.ThreadMXBean;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import org.junit.Assert;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import io.servicecomb.core.metrics.InvocationFinishedEvent;
 import io.servicecomb.core.metrics.InvocationStartProcessingEvent;
@@ -30,6 +37,7 @@ import io.servicecomb.core.metrics.InvocationStartedEvent;
 import io.servicecomb.foundation.common.utils.EventUtils;
 import io.servicecomb.metrics.core.event.DefaultEventListenerManager;
 import io.servicecomb.metrics.core.metric.RegistryMetric;
+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;
@@ -38,7 +46,26 @@ public class TestEventAndRunner {
 
   @Test
   public void test() throws InterruptedException {
-    RegistryMonitor monitor = new RegistryMonitor();
+    OperatingSystemMXBean systemMXBean = 
Mockito.mock(OperatingSystemMXBean.class);
+    when(systemMXBean.getSystemLoadAverage()).thenReturn(1.0);
+    ThreadMXBean threadMXBean = Mockito.mock(ThreadMXBean.class);
+    when(threadMXBean.getThreadCount()).thenReturn(2);
+    MemoryMXBean memoryMXBean = Mockito.mock(MemoryMXBean.class);
+    MemoryUsage heap = Mockito.mock(MemoryUsage.class);
+    when(memoryMXBean.getHeapMemoryUsage()).thenReturn(heap);
+    when(heap.getCommitted()).thenReturn(100L);
+    when(heap.getInit()).thenReturn(200L);
+    when(heap.getMax()).thenReturn(300L);
+    when(heap.getUsed()).thenReturn(400L);
+    MemoryUsage nonHeap = Mockito.mock(MemoryUsage.class);
+    when(memoryMXBean.getNonHeapMemoryUsage()).thenReturn(nonHeap);
+    when(nonHeap.getCommitted()).thenReturn(500L);
+    when(nonHeap.getInit()).thenReturn(600L);
+    when(nonHeap.getMax()).thenReturn(700L);
+    when(nonHeap.getUsed()).thenReturn(800L);
+
+    DefaultSystemMonitor systemMonitor = new 
DefaultSystemMonitor(systemMXBean, threadMXBean, memoryMXBean);
+    RegistryMonitor monitor = new RegistryMonitor(systemMonitor);
     DefaultDataSource dataSource = new DefaultDataSource(monitor, "1000");
 
     List<Long> intervals = dataSource.getAppliedWindowTime();
@@ -224,5 +251,16 @@ public class TestEventAndRunner {
 
     Map<String, Number> metrics = model.toMap();
     Assert.assertEquals(metrics.size(), 68);
+
+    
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);
   }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <commits@servicecomb.apache.org>.

Reply via email to