You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/06/28 15:13:18 UTC

[pulsar] 13/29: [Flakey-test] fix flaky-test RackAwareTest.testRackUpdate (#16071)

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

penghui pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 028a42ca3891686a5d2cb30e278c6d56abf092c4
Author: Aloys <lo...@gmail.com>
AuthorDate: Thu Jun 16 16:01:28 2022 +0800

    [Flakey-test] fix flaky-test RackAwareTest.testRackUpdate (#16071)
    
    (cherry picked from commit 8914b84115bacaf38fe892d66533c1b70431acbf)
---
 .../org/apache/pulsar/broker/service/RackAwareTest.java    | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/RackAwareTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/RackAwareTest.java
index 949cc11c6cb..618ae28e6b6 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/RackAwareTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/RackAwareTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 import com.google.gson.Gson;
 import java.io.File;
+import java.lang.reflect.Field;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.List;
@@ -34,10 +35,12 @@ import org.apache.bookkeeper.client.BKException;
 import org.apache.bookkeeper.client.BookKeeper;
 import org.apache.bookkeeper.client.BookKeeper.DigestType;
 import org.apache.bookkeeper.client.LedgerHandle;
+import org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy;
 import org.apache.bookkeeper.conf.ServerConfiguration;
 import org.apache.bookkeeper.net.BookieId;
 import org.apache.bookkeeper.proto.BookieServer;
 import org.apache.bookkeeper.stats.NullStatsLogger;
+import org.apache.bookkeeper.net.NetworkTopologyImpl;
 import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.common.policies.data.BookieInfo;
 import org.apache.pulsar.bookie.rackawareness.BookieRackAffinityMapping;
@@ -241,6 +244,13 @@ public class RackAwareTest extends BkEnsemblesTestBase {
         });
 
         BookKeeper bkc = this.pulsar.getBookKeeperClient();
+        Field field = bkc.getClass().getDeclaredField("placementPolicy");
+        field.setAccessible(true);
+        RackawareEnsemblePlacementPolicy ensemblePlacementPolicy = (RackawareEnsemblePlacementPolicy) field.get(bkc);
+        Field topoField =
+                ensemblePlacementPolicy.getClass().getSuperclass().getSuperclass().getDeclaredField("topology");
+        topoField.setAccessible(true);
+        NetworkTopologyImpl networkTopology = (NetworkTopologyImpl) topoField.get(ensemblePlacementPolicy);
 
         // 3. test create ledger
         try {
@@ -279,6 +289,10 @@ public class RackAwareTest extends BkEnsemblesTestBase {
             assertTrue(racks.containsAll(Lists.newArrayList("rack-0", "rack-1")));
         });
 
+        Awaitility.await().untilAsserted(() -> {
+            assertEquals(networkTopology.getNumOfRacks(), 2);
+        });
+
         // 5. create ledger required for 2 racks
         for (int i = 0; i < 2; i++) {
             LedgerHandle lh = bkc.createLedger(2, 2, DigestType.DUMMY, new byte[0]);