horizonzy commented on code in PR #4324:
URL: https://github.com/apache/bookkeeper/pull/4324#discussion_r1591867045
##########
bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRackawareEnsemblePlacementPolicy.java:
##########
@@ -790,6 +791,55 @@ public void testNewEnsembleWithSingleRack() throws
Exception {
}
}
+ @Test(timeout = 30_000)
+ public void testNewEnsembleWithExcludeBookies() throws Exception {
+ repp.uninitalize();
+ updateMyRack(NetworkTopology.DEFAULT_REGION_AND_RACK);
+
+ repp = new RackawareEnsemblePlacementPolicy();
+ conf.setDiskWeightBasedPlacementEnabled(true);
+ repp.initialize(conf, Optional.<DNSToSwitchMapping>empty(), timer,
+ DISABLE_ALL, NullStatsLogger.INSTANCE,
BookieSocketAddress.LEGACY_BOOKIEID_RESOLVER);
+ repp.withDefaultRack(NetworkTopology.DEFAULT_REGION_AND_RACK);
+
+ BookieSocketAddress addr1 = new BookieSocketAddress("127.0.0.2", 3181);
+ BookieSocketAddress addr2 = new BookieSocketAddress("127.0.0.3", 3181);
+ BookieSocketAddress addr3 = new BookieSocketAddress("127.0.0.4", 3181);
+
+ BookieNode addr1Node = new BookieNode(addr1.toBookieId(),
repp.resolveNetworkLocation(addr1.toBookieId()));
+ BookieNode addr2Node = new BookieNode(addr2.toBookieId(),
repp.resolveNetworkLocation(addr2.toBookieId()));
+ BookieNode addr3Node = new BookieNode(addr3.toBookieId(),
repp.resolveNetworkLocation(addr3.toBookieId()));
+ // update dns mapping
+ StaticDNSResolver.addNodeToRack(addr1.getHostName(),
"/default-region/r1");
+ StaticDNSResolver.addNodeToRack(addr2.getHostName(),
"/default-region/r2");
+ StaticDNSResolver.addNodeToRack(addr3.getHostName(),
"/default-region/r1");
+ // Update cluster
+ Set<BookieId> addrs = new HashSet<BookieId>();
+ addrs.add(addr1.toBookieId());
+ addrs.add(addr2.toBookieId());
+ addrs.add(addr3.toBookieId());
+ repp.onClusterChanged(addrs, new HashSet<BookieId>());
+
+ Set<Node> excludeBookies = new HashSet<>();
+ excludeBookies.add(addr2Node);
+ excludeBookies.add(addr3Node);
+
+ TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble
ensemble =
+ new
TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble(
+ 2, 2, 2,
+ RACKNAME_DISTANCE_FROM_LEAVES,
+ null, null, 1);
+ ensemble.addNode(new BookieNode(addr1.toBookieId(),
repp.resolveNetworkLocation(addr1.toBookieId())));
+ try {
+ repp.selectRandomInternal(null, 1, excludeBookies, null, ensemble);
+ fail("Should fail with not enough bookies exception");
+ } catch (BKNotEnoughBookiesException ex) {
+ //
+ }
+
+ conf.setDiskWeightBasedPlacementEnabled(false);
Review Comment:
We would better reset StaticDNSResolver at the test end.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]