You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ma...@apache.org on 2022/08/30 04:04:49 UTC

[pulsar] branch master updated: [fix][test] Fix `PersistentDispatcherFailoverConsumerTest#testAddRemoveConsumer` wrong logic. (#17216)

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

mattisonchao 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 e06b0ac602d [fix][test] Fix `PersistentDispatcherFailoverConsumerTest#testAddRemoveConsumer` wrong logic. (#17216)
e06b0ac602d is described below

commit e06b0ac602d7864e7f70d3845c0aea90fa161107
Author: Qiang Zhao <ma...@apache.org>
AuthorDate: Tue Aug 30 12:04:38 2022 +0800

    [fix][test] Fix `PersistentDispatcherFailoverConsumerTest#testAddRemoveConsumer` wrong logic. (#17216)
---
 .../PersistentDispatcherFailoverConsumerTest.java  | 29 ++++++++++++----------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java
index 0d2e5a9ee02..f0c61a1fc02 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java
@@ -420,30 +420,33 @@ public class PersistentDispatcherFailoverConsumerTest {
         verify(consumer2, times(1)).notifyActiveConsumerChange(same(consumer1));
         verify(consumer2, times(1)).notifyActiveConsumerChange(same(consumer0));
 
-        // 7. Remove last consumer
+        // 7. Remove last consumer to make active consumer change.
         pdfc.removeConsumer(consumer2);
         consumers = pdfc.getConsumers();
         assertSame(pdfc.getActiveConsumer().consumerName(), consumer1.consumerName());
         assertEquals(3, consumers.size());
-        // not consumer group changes
-        assertNull(consumerChanges.poll());
+
+        change = consumerChanges.poll(10, TimeUnit.SECONDS);
+        assertNotNull(change);
+        verifyActiveConsumerChange(change, 0, false);
+        change = consumerChanges.poll(10, TimeUnit.SECONDS);
+        assertNotNull(change);
+        verifyActiveConsumerChange(change, 1, true);
+        change = consumerChanges.poll(10, TimeUnit.SECONDS);
+        assertNotNull(change);
+        verifyActiveConsumerChange(change, 1, true);
 
         // 8. Verify if we cannot unsubscribe when more than one consumer is connected
         assertFalse(pdfc.canUnsubscribe(consumer0));
 
-        // 9. Remove active consumer
+        // 9. Remove inactive consumer
         pdfc.removeConsumer(consumer0);
         consumers = pdfc.getConsumers();
         assertSame(pdfc.getActiveConsumer().consumerName(), consumer1.consumerName());
         assertEquals(2, consumers.size());
 
-        // the remaining consumers will receive notifications
-        change = consumerChanges.poll(10, TimeUnit.SECONDS);
-        assertNotNull(change);
-        verifyActiveConsumerChange(change, 1, true);
-        change = consumerChanges.poll(10, TimeUnit.SECONDS);
-        assertNotNull(change);
-        verifyActiveConsumerChange(change, 1, true);
+        // not consumer group changes
+        assertNull(consumerChanges.poll(10, TimeUnit.SECONDS));
 
         // 10. Attempt to remove already removed consumer
         String cause = "";
@@ -454,13 +457,13 @@ public class PersistentDispatcherFailoverConsumerTest {
         }
         assertEquals(cause, "Consumer was not connected");
 
-        // 11. Remove active consumer
+        // 11. Remove same consumer
         pdfc.removeConsumer(consumer1);
         consumers = pdfc.getConsumers();
         assertSame(pdfc.getActiveConsumer().consumerName(), consumer1.consumerName());
         assertEquals(1, consumers.size());
         // not consumer group changes
-        assertNull(consumerChanges.poll());
+        assertNull(consumerChanges.poll(10, TimeUnit.SECONDS));
 
         // 11. With only one consumer, unsubscribe is allowed
         assertTrue(pdfc.canUnsubscribe(consumer1));