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);