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

kfaraz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 656b6cdf62 Add MetricsVerifier to simplify verification of metric 
values in tests (#13442)
656b6cdf62 is described below

commit 656b6cdf62a66aac6ff8fb7b7823d6f056b37d13
Author: Kashif Faraz <[email protected]>
AuthorDate: Mon Nov 28 19:32:37 2022 +0530

    Add MetricsVerifier to simplify verification of metric values in tests 
(#13442)
---
 .../druid/java/util/metrics/MetricsVerifier.java   | 98 ++++++++++++++++++++++
 .../java/util/metrics/StubServiceEmitter.java      | 38 +++++++--
 .../query/groupby/GroupByQueryRunnerTest.java      |  3 +-
 .../druid/query/scan/ScanQueryRunnerTest.java      |  3 +-
 .../timeseries/TimeseriesQueryRunnerTest.java      |  6 +-
 .../simulate/BalancingStrategiesTest.java          | 12 +--
 .../simulate/CoordinatorSimulation.java            |  7 +-
 .../simulate/CoordinatorSimulationBaseTest.java    | 88 ++++---------------
 .../simulate/CoordinatorSimulationBuilder.java     |  6 +-
 .../coordinator/simulate/SegmentLoadingTest.java   |  4 +-
 .../server/metrics/TaskCountStatsMonitorTest.java  | 15 ++--
 .../metrics/TaskSlotCountStatsMonitorTest.java     | 15 ++--
 .../metrics/WorkerTaskCountStatsMonitorTest.java   | 59 +++++++------
 .../org/apache/druid/sql/http/SqlResourceTest.java | 12 +--
 14 files changed, 205 insertions(+), 161 deletions(-)

diff --git 
a/core/src/test/java/org/apache/druid/java/util/metrics/MetricsVerifier.java 
b/core/src/test/java/org/apache/druid/java/util/metrics/MetricsVerifier.java
new file mode 100644
index 0000000000..c0f2eaeaf1
--- /dev/null
+++ b/core/src/test/java/org/apache/druid/java/util/metrics/MetricsVerifier.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.druid.java.util.metrics;
+
+import org.junit.Assert;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Test utility to extract and verify metric values.
+ */
+public interface MetricsVerifier
+{
+  /**
+   * Verifies that no event has been emitted for the given metric.
+   */
+  default void verifyNotEmitted(String metricName)
+  {
+    verifyEmitted(metricName, 0);
+  }
+
+  /**
+   * Verifies that the metric was emitted the expected number of times.
+   */
+  default void verifyEmitted(String metricName, int times)
+  {
+    verifyEmitted(metricName, null, times);
+  }
+
+  /**
+   * Verifies that the metric was emitted for the given dimension filters the
+   * expected number of times.
+   */
+  default void verifyEmitted(String metricName, Map<String, Object> 
dimensionFilters, int times)
+  {
+    Assert.assertEquals(
+        "Metric was emitted unexpected number of times.",
+        times,
+        getMetricValues(metricName, dimensionFilters).size()
+    );
+  }
+
+  /**
+   * Verifies the value of the specified metric emitted in the previous run.
+   */
+  default void verifyValue(String metricName, Number expectedValue)
+  {
+    verifyValue(metricName, null, expectedValue);
+  }
+
+  /**
+   * Verifies the value of the event corresponding to the specified metric and
+   * dimensionFilters emitted in the previous run.
+   */
+  default void verifyValue(String metricName, Map<String, Object> 
dimensionFilters, Number expectedValue)
+  {
+    Assert.assertEquals(expectedValue, getValue(metricName, dimensionFilters));
+  }
+
+  /**
+   * Gets the value of the event corresponding to the specified metric and
+   * dimensionFilters.
+   */
+  default Number getValue(String metricName, Map<String, Object> 
dimensionFilters)
+  {
+    List<Number> values = getMetricValues(metricName, dimensionFilters);
+    Assert.assertEquals(
+        "Metric must have been emitted exactly once for the given dimensions.",
+        1,
+        values.size()
+    );
+    return values.get(0);
+  }
+
+  /**
+   * Gets the metric values for the specified dimension filters.
+   */
+  List<Number> getMetricValues(String metricName, Map<String, Object> 
dimensionFilters);
+
+}
diff --git 
a/core/src/test/java/org/apache/druid/java/util/metrics/StubServiceEmitter.java 
b/core/src/test/java/org/apache/druid/java/util/metrics/StubServiceEmitter.java
index 653dc8a08a..3952458157 100644
--- 
a/core/src/test/java/org/apache/druid/java/util/metrics/StubServiceEmitter.java
+++ 
b/core/src/test/java/org/apache/druid/java/util/metrics/StubServiceEmitter.java
@@ -24,12 +24,15 @@ import 
org.apache.druid.java.util.emitter.service.ServiceEmitter;
 import org.apache.druid.java.util.emitter.service.ServiceMetricEvent;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
-public class StubServiceEmitter extends ServiceEmitter
+public class StubServiceEmitter extends ServiceEmitter implements 
MetricsVerifier
 {
   private final List<Event> events = new ArrayList<>();
-  private final List<ServiceMetricEvent> metricEvents = new ArrayList<>();
+  private final Map<String, List<ServiceMetricEvent>> metricEvents = new 
HashMap<>();
 
   public StubServiceEmitter(String service, String host)
   {
@@ -40,7 +43,9 @@ public class StubServiceEmitter extends ServiceEmitter
   public void emit(Event event)
   {
     if (event instanceof ServiceMetricEvent) {
-      metricEvents.add((ServiceMetricEvent) event);
+      ServiceMetricEvent metricEvent = (ServiceMetricEvent) event;
+      metricEvents.computeIfAbsent(metricEvent.getMetric(), name -> new 
ArrayList<>())
+                  .add(metricEvent);
     }
     events.add(event);
   }
@@ -53,12 +58,29 @@ public class StubServiceEmitter extends ServiceEmitter
     return events;
   }
 
-  /**
-   * Gets all the metric events emitted since the previous {@link #flush()}.
-   */
-  public List<ServiceMetricEvent> getMetricEvents()
+  @Override
+  public List<Number> getMetricValues(
+      String metricName,
+      Map<String, Object> dimensionFilters
+  )
   {
-    return metricEvents;
+    final List<Number> values = new ArrayList<>();
+    final List<ServiceMetricEvent> events =
+        metricEvents.getOrDefault(metricName, Collections.emptyList());
+    final Map<String, Object> filters =
+        dimensionFilters == null ? Collections.emptyMap() : dimensionFilters;
+    for (ServiceMetricEvent event : events) {
+      final Map<String, Object> userDims = event.getUserDims();
+      boolean match = filters.keySet().stream()
+                             .map(d -> filters.get(d).equals(userDims.get(d)))
+                             .reduce((a, b) -> a && b)
+                             .orElse(true);
+      if (match) {
+        values.add(event.getValue());
+      }
+    }
+
+    return values;
   }
 
   @Override
diff --git 
a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java
 
b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java
index f9060db4c9..47be50997f 100644
--- 
a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java
+++ 
b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java
@@ -757,8 +757,7 @@ public class GroupByQueryRunnerTest extends 
InitializedNullHandlingTest
         query,
         serviceEmitter
     );
-    Assert.assertEquals(1, serviceEmitter.getEvents().size());
-    Assert.assertEquals(vectorize, 
serviceEmitter.getEvents().get(0).toMap().getOrDefault("vectorized", null));
+    serviceEmitter.verifyEmitted("query/wait/time", 
ImmutableMap.of("vectorized", vectorize), 1);
     TestHelper.assertExpectedObjects(expectedResults, results, "groupBy");
   }
 
diff --git 
a/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java 
b/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java
index 31a7a454f3..4840a1ccfd 100644
--- 
a/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java
+++ 
b/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java
@@ -230,8 +230,7 @@ public class ScanQueryRunnerTest extends 
InitializedNullHandlingTest
         0,
         3
     );
-    Assert.assertEquals(1, stubServiceEmitter.getEvents().size());
-    Assert.assertEquals(false, 
stubServiceEmitter.getEvents().get(0).toMap().getOrDefault("vectorized", null));
+    stubServiceEmitter.verifyEmitted("query/wait/time", 
ImmutableMap.of("vectorized", false), 1);
     verify(expectedResults, 
populateNullColumnAtLastForQueryableIndexCase(results, "null_column"));
   }
 
diff --git 
a/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java
 
b/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java
index 74155ce51c..d9d73e67ef 100644
--- 
a/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java
+++ 
b/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java
@@ -317,11 +317,7 @@ public class TimeseriesQueryRunnerTest extends 
InitializedNullHandlingTest
       ++count;
     }
 
-    Assert.assertEquals(1, stubServiceEmitter.getEvents().size());
-    Assert.assertEquals(
-        vectorize,
-        
stubServiceEmitter.getEvents().get(0).toMap().getOrDefault("vectorized", null)
-    );
+    stubServiceEmitter.verifyEmitted("query/wait/time", 
ImmutableMap.of("vectorized", vectorize), 1);
     Assert.assertEquals(lastResult.toString(), expectedLast, 
lastResult.getTimestamp());
   }
 
diff --git 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/BalancingStrategiesTest.java
 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/BalancingStrategiesTest.java
index fd1c6c4d0f..f135280825 100644
--- 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/BalancingStrategiesTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/BalancingStrategiesTest.java
@@ -76,8 +76,8 @@ public class BalancingStrategiesTest extends 
CoordinatorSimulationBaseTest
     runCoordinatorCycle();
     loadQueuedSegments();
     verifyValue(Metric.ASSIGNED_COUNT, 1000L);
-    verifyNoEvent(Metric.MOVED_COUNT);
-    verifyNoEvent(Metric.UNMOVED_COUNT);
+    verifyNotEmitted(Metric.MOVED_COUNT);
+    verifyNotEmitted(Metric.UNMOVED_COUNT);
 
     for (DruidServer historical : historicals) {
       Assert.assertEquals(200, historical.getTotalSegments());
@@ -113,8 +113,8 @@ public class BalancingStrategiesTest extends 
CoordinatorSimulationBaseTest
     runCoordinatorCycle();
     loadQueuedSegments();
     verifyValue(Metric.ASSIGNED_COUNT, 1000L);
-    verifyNoEvent(Metric.MOVED_COUNT);
-    verifyNoEvent(Metric.UNMOVED_COUNT);
+    verifyNotEmitted(Metric.MOVED_COUNT);
+    verifyNotEmitted(Metric.UNMOVED_COUNT);
 
     // Verify that each server is equally loaded
     for (DruidServer historical : historicals) {
@@ -161,8 +161,8 @@ public class BalancingStrategiesTest extends 
CoordinatorSimulationBaseTest
     runCoordinatorCycle();
     loadQueuedSegments();
     verifyValue(Metric.ASSIGNED_COUNT, 1000L);
-    verifyNoEvent(Metric.MOVED_COUNT);
-    verifyNoEvent(Metric.UNMOVED_COUNT);
+    verifyNotEmitted(Metric.MOVED_COUNT);
+    verifyNotEmitted(Metric.UNMOVED_COUNT);
 
     // Verify that each server is equally loaded
     for (DruidServer historical : historicals) {
diff --git 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulation.java
 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulation.java
index f79a9bf480..c0565c19ba 100644
--- 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulation.java
+++ 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulation.java
@@ -20,7 +20,7 @@
 package org.apache.druid.server.coordinator.simulate;
 
 import org.apache.druid.client.DruidServer;
-import org.apache.druid.java.util.emitter.service.ServiceMetricEvent;
+import org.apache.druid.java.util.metrics.MetricsVerifier;
 import org.apache.druid.server.coordinator.CoordinatorDynamicConfig;
 import org.apache.druid.timeline.DataSegment;
 
@@ -81,9 +81,10 @@ public interface CoordinatorSimulation
     DruidServer getInventoryView(String serverName);
 
     /**
-     * Returns the metric events emitted in the previous coordinator run.
+     * Returns a MetricsVerifier which can be used to extract and verify the
+     * metric values emitted in the previous coordinator run.
      */
-    List<ServiceMetricEvent> getMetricEvents();
+    MetricsVerifier getMetricsVerifier();
 
     /**
      * Gets the load percentage of the specified datasource as seen by the 
coordinator.
diff --git 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBaseTest.java
 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBaseTest.java
index d4e8b7760d..84c6886d9d 100644
--- 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBaseTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBaseTest.java
@@ -21,7 +21,7 @@ package org.apache.druid.server.coordinator.simulate;
 
 import org.apache.druid.client.DruidServer;
 import org.apache.druid.java.util.common.granularity.Granularities;
-import org.apache.druid.java.util.emitter.service.ServiceMetricEvent;
+import org.apache.druid.java.util.metrics.MetricsVerifier;
 import org.apache.druid.server.coordination.ServerType;
 import org.apache.druid.server.coordinator.CoordinatorDynamicConfig;
 import org.apache.druid.server.coordinator.CreateDataSegments;
@@ -32,8 +32,6 @@ import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -51,13 +49,15 @@ import java.util.Map;
  * leading to flakiness in the tests. The simulation sets this field to true by
  * default.
  */
-public abstract class CoordinatorSimulationBaseTest
-    implements CoordinatorSimulation.CoordinatorState, 
CoordinatorSimulation.ClusterState
+public abstract class CoordinatorSimulationBaseTest implements
+    CoordinatorSimulation.CoordinatorState,
+    CoordinatorSimulation.ClusterState,
+    MetricsVerifier
 {
   static final double DOUBLE_DELTA = 10e-9;
 
   private CoordinatorSimulation sim;
-  private final Map<String, List<ServiceMetricEvent>> latestMetricEvents = new 
HashMap<>();
+  private MetricsVerifier metricsVerifier;
 
   @Before
   public abstract void setUp();
@@ -78,25 +78,19 @@ public abstract class CoordinatorSimulationBaseTest
   {
     this.sim = simulation;
     simulation.start();
+    this.metricsVerifier = this.sim.coordinator().getMetricsVerifier();
   }
 
   @Override
   public void runCoordinatorCycle()
   {
-    latestMetricEvents.clear();
     sim.coordinator().runCoordinatorCycle();
-
-    // Extract the metric values of this run
-    for (ServiceMetricEvent event : sim.coordinator().getMetricEvents()) {
-      latestMetricEvents.computeIfAbsent(event.getMetric(), m -> new 
ArrayList<>())
-                        .add(event);
-    }
   }
 
   @Override
-  public List<ServiceMetricEvent> getMetricEvents()
+  public MetricsVerifier getMetricsVerifier()
   {
-    return sim.coordinator().getMetricEvents();
+    return null;
   }
 
   @Override
@@ -153,61 +147,13 @@ public abstract class CoordinatorSimulationBaseTest
     Assert.assertEquals(100.0, getLoadPercentage(datasource), DOUBLE_DELTA);
   }
 
-  void verifyNoEvent(String metricName)
-  {
-    Assert.assertTrue(getMetricValues(metricName, null).isEmpty());
-  }
-
-  /**
-   * Verifies the value of the specified metric emitted in the previous run.
-   */
-  void verifyValue(String metricName, Number expectedValue)
-  {
-    verifyValue(metricName, null, expectedValue);
-  }
-
-  /**
-   * Verifies the value of the event corresponding to the specified metric and
-   * dimensionFilters emitted in the previous run.
-   */
-  void verifyValue(String metricName, Map<String, String> dimensionFilters, 
Number expectedValue)
-  {
-    Assert.assertEquals(expectedValue, getValue(metricName, dimensionFilters));
-  }
-
-  /**
-   * Gets the value of the event corresponding to the specified metric and
-   * dimensionFilters emitted in the previous run.
-   */
-  Number getValue(String metricName, Map<String, String> dimensionFilters)
-  {
-    List<Number> values = getMetricValues(metricName, dimensionFilters);
-    Assert.assertEquals(
-        "Metric must have been emitted exactly once for the given dimensions.",
-        1,
-        values.size()
-    );
-    return values.get(0);
-  }
-
-  private List<Number> getMetricValues(String metricName, Map<String, String> 
dimensionFilters)
+  @Override
+  public List<Number> getMetricValues(
+      String metricName,
+      Map<String, Object> dimensionFilters
+  )
   {
-    final List<Number> values = new ArrayList<>();
-    final List<ServiceMetricEvent> events = 
latestMetricEvents.getOrDefault(metricName, Collections.emptyList());
-    final Map<String, String> filters = dimensionFilters == null
-                                        ? Collections.emptyMap() : 
dimensionFilters;
-    for (ServiceMetricEvent event : events) {
-      final Map<String, Object> userDims = event.getUserDims();
-      boolean match = filters.keySet().stream()
-                             .map(d -> filters.get(d).equals(userDims.get(d)))
-                             .reduce((a, b) -> a && b)
-                             .orElse(true);
-      if (match) {
-        values.add(event.getValue());
-      }
-    }
-
-    return values;
+    return metricsVerifier.getMetricValues(metricName, dimensionFilters);
   }
 
   // Utility methods
@@ -237,13 +183,13 @@ public abstract class CoordinatorSimulationBaseTest
   /**
    * Creates a map containing dimension key-values to filter out metric events.
    */
-  static Map<String, String> filter(String... dimensionValues)
+  static Map<String, Object> filter(String... dimensionValues)
   {
     if (dimensionValues.length < 2 || dimensionValues.length % 2 == 1) {
       throw new IllegalArgumentException("Dimension key-values must be 
specified in pairs.");
     }
 
-    final Map<String, String> filters = new HashMap<>();
+    final Map<String, Object> filters = new HashMap<>();
     for (int i = 0; i < dimensionValues.length; ) {
       filters.put(dimensionValues[i], dimensionValues[i + 1]);
       i += 2;
diff --git 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBuilder.java
 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBuilder.java
index 01308d82e7..7066183c3a 100644
--- 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBuilder.java
+++ 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/CoordinatorSimulationBuilder.java
@@ -32,8 +32,8 @@ import 
org.apache.druid.java.util.common.concurrent.DirectExecutorService;
 import org.apache.druid.java.util.common.concurrent.ScheduledExecutorFactory;
 import org.apache.druid.java.util.common.lifecycle.Lifecycle;
 import org.apache.druid.java.util.emitter.EmittingLogger;
-import org.apache.druid.java.util.emitter.service.ServiceMetricEvent;
 import org.apache.druid.java.util.http.client.HttpClient;
+import org.apache.druid.java.util.metrics.MetricsVerifier;
 import org.apache.druid.java.util.metrics.StubServiceEmitter;
 import org.apache.druid.server.coordinator.BalancerStrategyFactory;
 import org.apache.druid.server.coordinator.CachingCostBalancerStrategyConfig;
@@ -392,9 +392,9 @@ public class CoordinatorSimulationBuilder
     }
 
     @Override
-    public List<ServiceMetricEvent> getMetricEvents()
+    public MetricsVerifier getMetricsVerifier()
     {
-      return new ArrayList<>(env.serviceEmitter.getMetricEvents());
+      return env.serviceEmitter;
     }
   }
 
diff --git 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/SegmentLoadingTest.java
 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/SegmentLoadingTest.java
index 1edeab8a37..e04ebe532d 100644
--- 
a/server/src/test/java/org/apache/druid/server/coordinator/simulate/SegmentLoadingTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/coordinator/simulate/SegmentLoadingTest.java
@@ -148,7 +148,7 @@ public class SegmentLoadingTest extends 
CoordinatorSimulationBaseTest
     startSimulation(sim);
     runCoordinatorCycle();
 
-    verifyNoEvent(Metric.DROPPED_COUNT);
+    verifyNotEmitted(Metric.DROPPED_COUNT);
     int totalAssignedInRun1
         = getValue(Metric.ASSIGNED_COUNT, filter(DruidMetrics.TIER, 
Tier.T2)).intValue()
           + getValue(Metric.ASSIGNED_COUNT, filter(DruidMetrics.TIER, 
Tier.T3)).intValue();
@@ -158,7 +158,7 @@ public class SegmentLoadingTest extends 
CoordinatorSimulationBaseTest
     runCoordinatorCycle();
     loadQueuedSegments();
 
-    verifyNoEvent(Metric.DROPPED_COUNT);
+    verifyNotEmitted(Metric.DROPPED_COUNT);
     int totalLoadedAfterRun2
         = historicalT21.getTotalSegments() + historicalT22.getTotalSegments()
           + historicalT31.getTotalSegments() + 
historicalT32.getTotalSegments();
diff --git 
a/server/src/test/java/org/apache/druid/server/metrics/TaskCountStatsMonitorTest.java
 
b/server/src/test/java/org/apache/druid/server/metrics/TaskCountStatsMonitorTest.java
index 24d89ab957..c6a47d56c4 100644
--- 
a/server/src/test/java/org/apache/druid/server/metrics/TaskCountStatsMonitorTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/metrics/TaskCountStatsMonitorTest.java
@@ -75,15 +75,10 @@ public class TaskCountStatsMonitorTest
     final StubServiceEmitter emitter = new StubServiceEmitter("service", 
"host");
     monitor.doMonitor(emitter);
     Assert.assertEquals(5, emitter.getEvents().size());
-    Assert.assertEquals("task/success/count", 
emitter.getEvents().get(0).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(0).toMap().get("value"));
-    Assert.assertEquals("task/failed/count", 
emitter.getEvents().get(1).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(1).toMap().get("value"));
-    Assert.assertEquals("task/running/count", 
emitter.getEvents().get(2).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(2).toMap().get("value"));
-    Assert.assertEquals("task/pending/count", 
emitter.getEvents().get(3).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(3).toMap().get("value"));
-    Assert.assertEquals("task/waiting/count", 
emitter.getEvents().get(4).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(4).toMap().get("value"));
+    emitter.verifyValue("task/success/count", 1L);
+    emitter.verifyValue("task/failed/count", 1L);
+    emitter.verifyValue("task/running/count", 1L);
+    emitter.verifyValue("task/pending/count", 1L);
+    emitter.verifyValue("task/waiting/count", 1L);
   }
 }
diff --git 
a/server/src/test/java/org/apache/druid/server/metrics/TaskSlotCountStatsMonitorTest.java
 
b/server/src/test/java/org/apache/druid/server/metrics/TaskSlotCountStatsMonitorTest.java
index be33a4c98b..0fed1c9b6b 100644
--- 
a/server/src/test/java/org/apache/druid/server/metrics/TaskSlotCountStatsMonitorTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/metrics/TaskSlotCountStatsMonitorTest.java
@@ -75,15 +75,10 @@ public class TaskSlotCountStatsMonitorTest
     final StubServiceEmitter emitter = new StubServiceEmitter("service", 
"host");
     monitor.doMonitor(emitter);
     Assert.assertEquals(5, emitter.getEvents().size());
-    Assert.assertEquals("taskSlot/total/count", 
emitter.getEvents().get(0).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(0).toMap().get("value"));
-    Assert.assertEquals("taskSlot/idle/count", 
emitter.getEvents().get(1).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(1).toMap().get("value"));
-    Assert.assertEquals("taskSlot/used/count", 
emitter.getEvents().get(2).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(2).toMap().get("value"));
-    Assert.assertEquals("taskSlot/lazy/count", 
emitter.getEvents().get(3).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(3).toMap().get("value"));
-    Assert.assertEquals("taskSlot/blacklisted/count", 
emitter.getEvents().get(4).toMap().get("metric"));
-    Assert.assertEquals(1L, emitter.getEvents().get(4).toMap().get("value"));
+    emitter.verifyValue("taskSlot/total/count", 1L);
+    emitter.verifyValue("taskSlot/idle/count", 1L);
+    emitter.verifyValue("taskSlot/used/count", 1L);
+    emitter.verifyValue("taskSlot/lazy/count", 1L);
+    emitter.verifyValue("taskSlot/blacklisted/count", 1L);
   }
 }
diff --git 
a/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
 
b/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
index 01a97b7a9a..fadb2f9882 100644
--- 
a/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
@@ -20,10 +20,10 @@
 package org.apache.druid.server.metrics;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.Module;
 import org.apache.druid.discovery.NodeRole;
 import org.apache.druid.java.util.metrics.StubServiceEmitter;
 import org.junit.Assert;
@@ -143,24 +143,18 @@ public class WorkerTaskCountStatsMonitorTest
 
     injectorForMiddleManager = Guice.createInjector(
         ImmutableList.of(
-            (Module) binder -> {
-              
binder.bind(WorkerTaskCountStatsProvider.class).toInstance(statsProvider);
-            }
+            binder -> 
binder.bind(WorkerTaskCountStatsProvider.class).toInstance(statsProvider)
         )
     );
 
     injectorForMiddleManagerNullStats = Guice.createInjector(
         ImmutableList.of(
-            (Module) binder -> {
-              
binder.bind(WorkerTaskCountStatsProvider.class).toInstance(nullStatsProvider);
-            }
+            binder -> 
binder.bind(WorkerTaskCountStatsProvider.class).toInstance(nullStatsProvider)
         )
     );
 
     injectorForPeon = Guice.createInjector(
-        ImmutableList.of(
-            (Module) binder -> {}
-        )
+        ImmutableList.of(binder -> {})
     );
   }
 
@@ -172,26 +166,31 @@ public class WorkerTaskCountStatsMonitorTest
     final StubServiceEmitter emitter = new StubServiceEmitter("service", 
"host");
     monitor.doMonitor(emitter);
     Assert.assertEquals(5, emitter.getEvents().size());
-    Assert.assertEquals("worker/task/failed/count", 
emitter.getEvents().get(0).toMap().get("metric"));
-    Assert.assertEquals("workerCategory", 
emitter.getEvents().get(0).toMap().get("category"));
-    Assert.assertEquals("workerVersion", 
emitter.getEvents().get(0).toMap().get("workerVersion"));
-    Assert.assertEquals(4L, emitter.getEvents().get(0).toMap().get("value"));
-    Assert.assertEquals("worker/task/success/count", 
emitter.getEvents().get(1).toMap().get("metric"));
-    Assert.assertEquals("workerCategory", 
emitter.getEvents().get(1).toMap().get("category"));
-    Assert.assertEquals("workerVersion", 
emitter.getEvents().get(1).toMap().get("workerVersion"));
-    Assert.assertEquals(2L, emitter.getEvents().get(1).toMap().get("value"));
-    Assert.assertEquals("worker/taskSlot/idle/count", 
emitter.getEvents().get(2).toMap().get("metric"));
-    Assert.assertEquals("workerCategory", 
emitter.getEvents().get(2).toMap().get("category"));
-    Assert.assertEquals("workerVersion", 
emitter.getEvents().get(2).toMap().get("workerVersion"));
-    Assert.assertEquals(3L, emitter.getEvents().get(2).toMap().get("value"));
-    Assert.assertEquals("worker/taskSlot/total/count", 
emitter.getEvents().get(3).toMap().get("metric"));
-    Assert.assertEquals("workerCategory", 
emitter.getEvents().get(3).toMap().get("category"));
-    Assert.assertEquals("workerVersion", 
emitter.getEvents().get(3).toMap().get("workerVersion"));
-    Assert.assertEquals(5L, emitter.getEvents().get(3).toMap().get("value"));
-    Assert.assertEquals("worker/taskSlot/used/count", 
emitter.getEvents().get(4).toMap().get("metric"));
-    Assert.assertEquals("workerCategory", 
emitter.getEvents().get(4).toMap().get("category"));
-    Assert.assertEquals("workerVersion", 
emitter.getEvents().get(4).toMap().get("workerVersion"));
-    Assert.assertEquals(1L, emitter.getEvents().get(4).toMap().get("value"));
+    emitter.verifyValue(
+        "worker/task/failed/count",
+        ImmutableMap.of("category", "workerCategory", "workerVersion", 
"workerVersion"),
+        4L
+    );
+    emitter.verifyValue(
+        "worker/task/success/count",
+        ImmutableMap.of("category", "workerCategory", "workerVersion", 
"workerVersion"),
+        2L
+    );
+    emitter.verifyValue(
+        "worker/taskSlot/idle/count",
+        ImmutableMap.of("category", "workerCategory", "workerVersion", 
"workerVersion"),
+        3L
+    );
+    emitter.verifyValue(
+        "worker/taskSlot/total/count",
+        ImmutableMap.of("category", "workerCategory", "workerVersion", 
"workerVersion"),
+        5L
+    );
+    emitter.verifyValue(
+        "worker/taskSlot/used/count",
+        ImmutableMap.of("category", "workerCategory", "workerVersion", 
"workerVersion"),
+        1L
+    );
   }
 
   @Test
diff --git a/sql/src/test/java/org/apache/druid/sql/http/SqlResourceTest.java 
b/sql/src/test/java/org/apache/druid/sql/http/SqlResourceTest.java
index d3287530c5..42fa66cbaa 100644
--- a/sql/src/test/java/org/apache/druid/sql/http/SqlResourceTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/http/SqlResourceTest.java
@@ -425,15 +425,9 @@ public class SqlResourceTest extends CalciteTestBase
     );
     checkSqlRequestLog(true);
     Assert.assertTrue(lifecycleManager.getAll("id").isEmpty());
-    Set<String> metricNames = ImmutableSet.of("sqlQuery/time", 
"sqlQuery/bytes", "sqlQuery/planningTimeMs");
-    Assert.assertEquals(3, stubServiceEmitter.getEvents().size());
-    for (String metricName : metricNames) {
-      Assert.assertTrue(
-          stubServiceEmitter.getEvents()
-                            .stream()
-                            .anyMatch(event -> 
event.toMap().containsValue(metricName))
-      );
-    }
+    stubServiceEmitter.verifyEmitted("sqlQuery/time", 1);
+    stubServiceEmitter.verifyValue("sqlQuery/bytes", 27L);
+    stubServiceEmitter.verifyEmitted("sqlQuery/planningTimeMs", 1);
   }
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to