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 <[email protected]> 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]);
