]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7417 add workerCount to SystemInfo and CE MBean
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 3 Mar 2016 10:38:39 +0000 (11:38 +0100)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 4 Mar 2016 08:22:06 +0000 (09:22 +0100)
server/sonar-server/src/main/java/org/sonar/server/computation/monitoring/ComputeEngineQueueMonitor.java
server/sonar-server/src/main/java/org/sonar/server/computation/monitoring/ComputeEngineQueueMonitorMBean.java
server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/monitoring/ComputeEngineQueueMonitorTest.java

index 30c0e595574583a147c9a1d276af58e65290d0d1..4820eb964a7fc6e4300fc4d083c0d54a83e0463f 100644 (file)
 package org.sonar.server.computation.monitoring;
 
 import java.util.LinkedHashMap;
+import org.sonar.server.computation.configuration.CeConfiguration;
 import org.sonar.server.computation.queue.CeQueue;
 import org.sonar.server.platform.monitoring.BaseMonitorMBean;
 
 public class ComputeEngineQueueMonitor extends BaseMonitorMBean implements ComputeEngineQueueMonitorMBean {
   private final CEQueueStatus queueStatus;
+  private final CeConfiguration ceConfiguration;
 
   public ComputeEngineQueueMonitor(CEQueueStatus queueStatus,
     // ReportQueue initializes CEQueueStatus and is therefor a dependency of
     // ComputeEngineQueueMonitor.
     // Do not remove this parameter, it ensures start order of components
-    CeQueue ceQueue) {
+    CeQueue ceQueue,
+    CeConfiguration ceConfiguration) {
     this.queueStatus = queueStatus;
+    this.ceConfiguration = ceConfiguration;
   }
 
   @Override
@@ -48,6 +52,7 @@ public class ComputeEngineQueueMonitor extends BaseMonitorMBean implements Compu
     attributes.put("Successfully processed", getSuccessCount());
     attributes.put("Processed with error", getErrorCount());
     attributes.put("Processing time", getProcessingTime());
+    attributes.put("Worker count", getWorkerCount());
     return attributes;
   }
 
@@ -80,4 +85,9 @@ public class ComputeEngineQueueMonitor extends BaseMonitorMBean implements Compu
   public long getProcessingTime() {
     return queueStatus.getProcessingTime();
   }
+
+  @Override
+  public int getWorkerCount() {
+    return ceConfiguration.getWorkerCount();
+  }
 }
index 9f2072614e19fbde76c389f1dcfc186e49187846..f1d694ded597f75cf357b1ed3e1c8de35e42050e 100644 (file)
@@ -50,4 +50,9 @@ public interface ComputeEngineQueueMonitorMBean {
    * Time spent processing reports since startup.
    */
   long getProcessingTime();
+
+  /**
+   * Configured number of Workers.
+   */
+  int getWorkerCount();
 }
index ca25e00da48661cf528784128b70ef822a0075b4..e26f54f69f7135b99ef4ce1d91de51b792d75540 100644 (file)
@@ -55,7 +55,6 @@ public class MeasureTest {
     INT_MEASURE, LONG_MEASURE, DOUBLE_MEASURE, STRING_MEASURE, TRUE_MEASURE, FALSE_MEASURE, NO_VALUE_MEASURE, LEVEL_MEASURE
     );
   private static final int SOME_RULE_ID = 95236;
-  private static final int SOME_CHARACTERISTIC_ID = 42;
   private static final Developer SOME_DEVELOPER = new DumbDeveloper("DEV1");
 
   @Rule
index 58739595d89cb7124a3be6863634ee8aadda1a6f..8ba7e634d3eb250388a81589d0fedcec8a210c1b 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.server.computation.monitoring;
 
 import org.junit.Test;
+import org.sonar.server.computation.configuration.CeConfiguration;
 import org.sonar.server.computation.queue.CeQueueImpl;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -33,8 +34,9 @@ public class ComputeEngineQueueMonitorTest {
   private static final long ERROR_COUNT = 10;
   private static final long SUCCESS_COUNT = 13;
   private static final long PROCESSING_TIME = 987;
+  private static final int WORKER_COUNT = 56;
 
-  private ComputeEngineQueueMonitor underTest = new ComputeEngineQueueMonitor(new DumbCEQueueStatus(), mock(CeQueueImpl.class));
+  private ComputeEngineQueueMonitor underTest = new ComputeEngineQueueMonitor(new DumbCEQueueStatus(), mock(CeQueueImpl.class), new DumbCeConfiguration());
 
   @Test
   public void name_is_ComputeEngine() {
@@ -49,7 +51,8 @@ public class ComputeEngineQueueMonitorTest {
       entry("In progress", IN_PROGRESS_COUNT),
       entry("Successfully processed", SUCCESS_COUNT),
       entry("Processed with error", ERROR_COUNT),
-      entry("Processing time", PROCESSING_TIME));
+      entry("Processing time", PROCESSING_TIME),
+      entry("Worker count", WORKER_COUNT));
   }
 
   @Test
@@ -62,6 +65,11 @@ public class ComputeEngineQueueMonitorTest {
     assertThat(underTest.getProcessingTime()).isEqualTo(PROCESSING_TIME);
   }
 
+  @Test
+  public void getWorkerCount_delegates_to_the_CEConfiguration_instance() {
+    assertThat(underTest.getWorkerCount()).isEqualTo(WORKER_COUNT);
+  }
+
   /**
    * Dumb implementation of CEQueueStatus which returns constant values for get methods and throws UnsupportedOperationException
    * for other methods.
@@ -132,4 +140,16 @@ public class ComputeEngineQueueMonitorTest {
       throw new UnsupportedOperationException("Not Implemented");
     }
   }
+
+  private static class DumbCeConfiguration implements CeConfiguration {
+    @Override
+    public int getWorkerCount() {
+      return WORKER_COUNT;
+    }
+
+    @Override
+    public long getQueuePollingDelay() {
+      throw new UnsupportedOperationException("getQueuePollingDelay is not implemented");
+    }
+  }
 }