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

ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 9429a3c618 IGNITE-20420 Fix missing metrics in ClientMetricSource 
(#2610)
9429a3c618 is described below

commit 9429a3c61860f82cbbe23e0cc433b34d6c42508e
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Thu Sep 21 11:08:35 2023 +0300

    IGNITE-20420 Fix missing metrics in ClientMetricSource (#2610)
    
    * Add a test to ensure all metrics are registered
    * Fix missing metrics
---
 .../ignite/internal/client/ClientMetricSource.java |  6 ++++-
 .../apache/ignite/client/ClientMetricsTest.java    | 29 ++++++++++++++++++++++
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/ClientMetricSource.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/ClientMetricSource.java
index e54ab2c415..dd3c873e86 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/ClientMetricSource.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/ClientMetricSource.java
@@ -517,7 +517,11 @@ public class ClientMetricSource extends 
AbstractMetricSource<ClientMetricSource.
                 requestsRetried,
                 requestsFailed,
                 bytesSent,
-                bytesReceived
+                bytesReceived,
+                streamerBatchesSent,
+                streamerItemsSent,
+                streamerBatchesActive,
+                streamerItemsQueued
         );
 
         void register(MetricSetBuilder bldr) {
diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java 
b/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java
index 8b83a66c3f..8dfb28aaa2 100644
--- 
a/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java
+++ 
b/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java
@@ -19,9 +19,11 @@ package org.apache.ignite.client;
 
 import static org.apache.ignite.client.fakes.FakeIgniteTables.TABLE_ONE_COLUMN;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.lang.reflect.Constructor;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.SubmissionPublisher;
@@ -34,6 +36,8 @@ import org.apache.ignite.client.fakes.FakeIgniteTables;
 import org.apache.ignite.client.fakes.FakeSession;
 import org.apache.ignite.internal.client.ClientMetricSource;
 import org.apache.ignite.internal.client.TcpIgniteClient;
+import org.apache.ignite.internal.metrics.AbstractMetricSource;
+import org.apache.ignite.internal.metrics.MetricSet;
 import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
 import org.apache.ignite.internal.testframework.IgniteTestUtils;
 import org.apache.ignite.internal.util.IgniteUtils;
@@ -254,6 +258,31 @@ public class ClientMetricsTest extends 
BaseIgniteAbstractTest {
         assertEquals(0, metrics().streamerItemsQueued());
     }
 
+    @SuppressWarnings("ConfusingArgumentToVarargsMethod")
+    @Test
+    public void testAllMetricsAreRegistered() throws Exception {
+        Constructor<ClientMetricSource> ctor = 
ClientMetricSource.class.getDeclaredConstructor(null);
+        ctor.setAccessible(true);
+
+        ClientMetricSource source = ctor.newInstance();
+        MetricSet metricSet = source.enable();
+        assertNotNull(metricSet);
+
+        var holder = IgniteTestUtils.getFieldValue(source, 
AbstractMetricSource.class, "holder");
+
+        // Check that all fields from holder are registered in MetricSet.
+        for (var field : holder.getClass().getDeclaredFields()) {
+            if ("metrics".equals(field.getName())) {
+                continue;
+            }
+
+            var metricName = field.getName().substring(0, 1).toUpperCase() + 
field.getName().substring(1);
+            var metric = metricSet.get(metricName);
+
+            assertNotNull(metric, "Metric is not registered: " + metricName);
+        }
+    }
+
     private Table oneColumnTable() {
         if (server.ignite().tables().table(TABLE_ONE_COLUMN) == null) {
             ((FakeIgniteTables) 
server.ignite().tables()).createTable(TABLE_ONE_COLUMN);

Reply via email to