You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by te...@apache.org on 2023/03/20 02:17:06 UTC
[pulsar] branch master updated: [fix][test] Fix flaky MetadataStoreStatsTest (#19829)
This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 3c8ab7bc1fe [fix][test] Fix flaky MetadataStoreStatsTest (#19829)
3c8ab7bc1fe is described below
commit 3c8ab7bc1fe1851ca24b0f12063cf2442276f656
Author: ran <ga...@126.com>
AuthorDate: Mon Mar 20 10:16:59 2023 +0800
[fix][test] Fix flaky MetadataStoreStatsTest (#19829)
---
.../service/ManagedLedgerCompressionTest.java | 2 +-
.../broker/stats/MetadataStoreStatsTest.java | 81 +++++++++++++++-------
2 files changed, 58 insertions(+), 25 deletions(-)
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ManagedLedgerCompressionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ManagedLedgerCompressionTest.java
index 4991d0a7536..c13c8bd9fdc 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ManagedLedgerCompressionTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ManagedLedgerCompressionTest.java
@@ -50,7 +50,7 @@ public class ManagedLedgerCompressionTest extends BrokerTestBase {
super.internalCleanup();
}
- @Test(timeOut = 1000 * 20)
+ @Test(timeOut = 1000 * 30)
public void testRestartBrokerEnableManagedLedgerInfoCompression() throws Exception {
String topic = newTopicName();
@Cleanup
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/MetadataStoreStatsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/MetadataStoreStatsTest.java
index f4deddf0cec..8ae0242c623 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/MetadataStoreStatsTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/MetadataStoreStatsTest.java
@@ -21,9 +21,13 @@ package org.apache.pulsar.broker.stats;
import com.google.common.collect.Multimap;
import java.io.ByteArrayOutputStream;
import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
import lombok.Cleanup;
+import org.apache.commons.lang3.StringUtils;
import org.apache.pulsar.broker.ServiceConfiguration;
import org.apache.pulsar.broker.authentication.AuthenticationProviderToken;
import org.apache.pulsar.broker.service.BrokerTestBase;
@@ -107,13 +111,17 @@ public class MetadataStoreStatsTest extends BrokerTestBase {
Assert.assertTrue(opsLatency.size() > 1, metricsDebugMessage);
Assert.assertTrue(putBytes.size() > 1, metricsDebugMessage);
+ Set<String> expectedMetadataStoreName = new HashSet<>();
+ expectedMetadataStoreName.add(MetadataStoreConfig.METADATA_STORE);
+ expectedMetadataStoreName.add(MetadataStoreConfig.CONFIGURATION_METADATA_STORE);
+
+ AtomicInteger matchCount = new AtomicInteger(0);
for (PrometheusMetricsTest.Metric m : opsLatency) {
Assert.assertEquals(m.tags.get("cluster"), "test", metricsDebugMessage);
String metadataStoreName = m.tags.get("name");
- Assert.assertNotNull(metadataStoreName, metricsDebugMessage);
- Assert.assertTrue(metadataStoreName.equals(MetadataStoreConfig.METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.CONFIGURATION_METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.STATE_METADATA_STORE), metricsDebugMessage);
+ if (!isExpectedLabel(metadataStoreName, expectedMetadataStoreName, matchCount)) {
+ continue;
+ }
Assert.assertNotNull(m.tags.get("status"), metricsDebugMessage);
if (m.tags.get("status").equals("success")) {
@@ -138,15 +146,19 @@ public class MetadataStoreStatsTest extends BrokerTestBase {
}
}
}
+ // Because the combination quantity between status(success, fail) and type(get, del, put) is 6.
+ Assert.assertEquals(matchCount.get(), expectedMetadataStoreName.size() * 6);
+
+ matchCount = new AtomicInteger(0);
for (PrometheusMetricsTest.Metric m : putBytes) {
Assert.assertEquals(m.tags.get("cluster"), "test", metricsDebugMessage);
String metadataStoreName = m.tags.get("name");
- Assert.assertNotNull(metadataStoreName, metricsDebugMessage);
- Assert.assertTrue(metadataStoreName.equals(MetadataStoreConfig.METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.CONFIGURATION_METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.STATE_METADATA_STORE), metricsDebugMessage);
+ if (!isExpectedLabel(metadataStoreName, expectedMetadataStoreName, matchCount)) {
+ continue;
+ }
Assert.assertTrue(m.value >= 0, metricsDebugMessage);
}
+ Assert.assertEquals(matchCount.get(), expectedMetadataStoreName.size());
}
@Test
@@ -193,43 +205,64 @@ public class MetadataStoreStatsTest extends BrokerTestBase {
Assert.assertTrue(batchExecuteTime.size() > 0, metricsDebugMessage);
Assert.assertTrue(opsPerBatch.size() > 0, metricsDebugMessage);
+ Set<String> expectedMetadataStoreName = new HashSet<>();
+ expectedMetadataStoreName.add(MetadataStoreConfig.METADATA_STORE);
+ expectedMetadataStoreName.add(MetadataStoreConfig.CONFIGURATION_METADATA_STORE);
+
+ AtomicInteger matchCount = new AtomicInteger(0);
for (PrometheusMetricsTest.Metric m : executorQueueSize) {
Assert.assertEquals(m.tags.get("cluster"), "test", metricsDebugMessage);
String metadataStoreName = m.tags.get("name");
- Assert.assertNotNull(metadataStoreName, metricsDebugMessage);
- Assert.assertTrue(metadataStoreName.equals(MetadataStoreConfig.METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.CONFIGURATION_METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.STATE_METADATA_STORE), metricsDebugMessage);
+ if (isExpectedLabel(metadataStoreName, expectedMetadataStoreName, matchCount)) {
+ continue;
+ }
Assert.assertTrue(m.value >= 0, metricsDebugMessage);
}
+ Assert.assertEquals(matchCount.get(), expectedMetadataStoreName.size());
+
+ matchCount = new AtomicInteger(0);
for (PrometheusMetricsTest.Metric m : opsWaiting) {
Assert.assertEquals(m.tags.get("cluster"), "test", metricsDebugMessage);
String metadataStoreName = m.tags.get("name");
- Assert.assertNotNull(metadataStoreName, metricsDebugMessage);
- Assert.assertTrue(metadataStoreName.equals(MetadataStoreConfig.METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.CONFIGURATION_METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.STATE_METADATA_STORE), metricsDebugMessage);
+ if (isExpectedLabel(metadataStoreName, expectedMetadataStoreName, matchCount)) {
+ continue;
+ }
Assert.assertTrue(m.value >= 0, metricsDebugMessage);
}
+ Assert.assertEquals(matchCount.get(), expectedMetadataStoreName.size());
+ matchCount = new AtomicInteger(0);
for (PrometheusMetricsTest.Metric m : batchExecuteTime) {
Assert.assertEquals(m.tags.get("cluster"), "test", metricsDebugMessage);
String metadataStoreName = m.tags.get("name");
- Assert.assertNotNull(metadataStoreName, metricsDebugMessage);
- Assert.assertTrue(metadataStoreName.equals(MetadataStoreConfig.METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.CONFIGURATION_METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.STATE_METADATA_STORE), metricsDebugMessage);
+ if (isExpectedLabel(metadataStoreName, expectedMetadataStoreName, matchCount)) {
+ continue;
+ }
Assert.assertTrue(m.value >= 0, metricsDebugMessage);
}
+ Assert.assertEquals(matchCount.get(), expectedMetadataStoreName.size());
+ matchCount = new AtomicInteger(0);
for (PrometheusMetricsTest.Metric m : opsPerBatch) {
Assert.assertEquals(m.tags.get("cluster"), "test", metricsDebugMessage);
String metadataStoreName = m.tags.get("name");
- Assert.assertNotNull(metadataStoreName, metricsDebugMessage);
- Assert.assertTrue(metadataStoreName.equals(MetadataStoreConfig.METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.CONFIGURATION_METADATA_STORE)
- || metadataStoreName.equals(MetadataStoreConfig.STATE_METADATA_STORE), metricsDebugMessage);
+ if (isExpectedLabel(metadataStoreName, expectedMetadataStoreName, matchCount)) {
+ continue;
+ }
Assert.assertTrue(m.value >= 0, metricsDebugMessage);
}
+ Assert.assertEquals(matchCount.get(), expectedMetadataStoreName.size());
}
+
+ private boolean isExpectedLabel(String metadataStoreName, Set<String> expectedLabel,
+ AtomicInteger expectedLabelCount) {
+ if (StringUtils.isEmpty(metadataStoreName)
+ || !expectedLabel.contains(metadataStoreName)) {
+ return false;
+ } else {
+ expectedLabelCount.incrementAndGet();
+ return true;
+ }
+ }
+
}