From 94ee83ad05425408ee3839463e70bc06c36a4f88 Mon Sep 17 00:00:00 2001 From: fengyubiao Date: Wed, 10 Aug 2022 22:46:40 +0800 Subject: [PATCH 1/2] [fix][flaky-test]ManagedCursorMetricsTest.testCursorReadWriteMetrics --- .../stats/ManagedCursorMetricsTest.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java index fe63942fd133b..6f04440636bb4 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import lombok.Cleanup; import org.apache.bookkeeper.client.LedgerHandle; @@ -197,9 +198,19 @@ public void testManagedCursorMetrics() throws Exception { admin.topics().delete(topicName, true); } - @Test + private ManagedCursorMXBean getManagedCursorMXBean(String topicName, String subscriptionName) + throws ExecutionException, InterruptedException { + final PersistentSubscription persistentSubscription = + (PersistentSubscription) pulsar.getBrokerService() + .getTopic(topicName, false).get().get().getSubscription(subscriptionName); + final ManagedCursorImpl managedCursor = (ManagedCursorImpl) persistentSubscription.getCursor(); + return managedCursor.getStats(); + } + + @Test(timeOut = 2 * 1000) public void testCursorReadWriteMetrics() throws Exception { - final String subName = "read-write"; + final String subName1 = "read-write-sub-1"; + final String subName2 = "read-write-sub-2"; final String topicName = "persistent://my-namespace/use/my-ns/read-write"; final int messageSize = 10; @@ -216,7 +227,7 @@ public void testCursorReadWriteMetrics() throws Exception { .topic(topicName) .subscriptionType(SubscriptionType.Shared) .ackTimeout(1, TimeUnit.SECONDS) - .subscriptionName(subName) + .subscriptionName(subName1) .subscribe(); @Cleanup @@ -224,7 +235,7 @@ public void testCursorReadWriteMetrics() throws Exception { .topic(topicName) .subscriptionType(SubscriptionType.Shared) .ackTimeout(1, TimeUnit.SECONDS) - .subscriptionName(subName + "-2") + .subscriptionName(subName2) .subscribe(); @Cleanup @@ -241,6 +252,13 @@ public void testCursorReadWriteMetrics() throws Exception { consumer2.acknowledge(consumer.receive().getMessageId()); } } + + // Wait for persistent cursor meta. + ManagedCursorMXBean cursorMXBean1 = getManagedCursorMXBean(topicName, subName1); + ManagedCursorMXBean cursorMXBean2 = getManagedCursorMXBean(topicName, subName2); + Awaitility.await().until(() -> cursorMXBean1.getWriteCursorLedgerLogicalSize() > 0); + Awaitility.await().until(() -> cursorMXBean2.getWriteCursorLedgerLogicalSize() > 0); + metricsList = metrics.generate(); Assert.assertEquals(metricsList.size(), 2); Assert.assertNotEquals(metricsList.get(0).getMetrics().get("brk_ml_cursor_writeLedgerSize"), 0L); From 22d6a05568d95f41e0e40f83115acd25344e1fd3 Mon Sep 17 00:00:00 2001 From: fengyubiao Date: Thu, 11 Aug 2022 14:26:29 +0800 Subject: [PATCH 2/2] use default timeout --- .../apache/pulsar/broker/stats/ManagedCursorMetricsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java index 6f04440636bb4..72435aa265e54 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedCursorMetricsTest.java @@ -207,7 +207,7 @@ private ManagedCursorMXBean getManagedCursorMXBean(String topicName, String subs return managedCursor.getStats(); } - @Test(timeOut = 2 * 1000) + @Test public void testCursorReadWriteMetrics() throws Exception { final String subName1 = "read-write-sub-1"; final String subName2 = "read-write-sub-2";