This is an automated email from the ASF dual-hosted git repository.
shoothzj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new b38b1717a7 build: disable testNewEnsembleBookieWithOneEmptyRegion
method in TestRegionAwareEnsemblePlacementPolicy beyond jdk11 (#4323)
b38b1717a7 is described below
commit b38b1717a7431d35f30439d2f47e4751be342357
Author: ZhangJian He <[email protected]>
AuthorDate: Mon May 6 07:27:06 2024 +0800
build: disable testNewEnsembleBookieWithOneEmptyRegion method in
TestRegionAwareEnsemblePlacementPolicy beyond jdk11 (#4323)
### Motivation
In JDK21, it's is no way to change private static final variable currently,
before figure out how to replace, disable it first
```
Field logField = repp.getClass().getDeclaredField("LOG");
Logger mockLogger = mock(Logger.class);
Field modifiers = Field.class.getDeclaredField("modifiers");
modifiers.setAccessible(true);
modifiers.setInt(logField, logField.getModifiers() &
~Modifier.FINAL);
```
See also https://issues.apache.org/jira/browse/CASSANDRA-18181
### Changes
1. Added junit5 annotation `@EnabledForJreRange(max = JRE.JAVA_17)`(It's
modern and better than junit4) to tests that use `suspend` and `resume`,
effectively disabling these tests on JDK versions higher than 17 where these
methods are not supported.
2. BookieZKExpireTest should be annotated as junit5 test.
3. Make `BookKeeperClusterTestCase` compatible to junit5.
Signed-off-by: ZhangJian He <[email protected]>
---
.../TestRegionAwareEnsemblePlacementPolicy.java | 50 ++++++++++++----------
.../bookkeeper/test/BookKeeperClusterTestCase.java | 21 ++++++++-
.../apache/bookkeeper/test/BookieZKExpireTest.java | 6 +--
3 files changed, 50 insertions(+), 27 deletions(-)
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRegionAwareEnsemblePlacementPolicy.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRegionAwareEnsemblePlacementPolicy.java
index e6ee04501e..3f076262e7 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRegionAwareEnsemblePlacementPolicy.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestRegionAwareEnsemblePlacementPolicy.java
@@ -27,6 +27,10 @@ import static
org.apache.bookkeeper.client.RegionAwareEnsemblePlacementPolicy.RE
import static
org.apache.bookkeeper.client.RegionAwareEnsemblePlacementPolicy.REPP_REGIONS_TO_WRITE;
import static
org.apache.bookkeeper.client.RoundRobinDistributionSchedule.writeSetFromValues;
import static
org.apache.bookkeeper.feature.SettableFeatureProvider.DISABLE_ALL;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -45,7 +49,6 @@ import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
-import junit.framework.TestCase;
import org.apache.bookkeeper.client.BKException.BKNotEnoughBookiesException;
import org.apache.bookkeeper.conf.ClientConfiguration;
import org.apache.bookkeeper.feature.FeatureProvider;
@@ -58,14 +61,18 @@ import org.apache.bookkeeper.net.NetworkTopology;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.util.BookKeeperConstants;
import org.apache.bookkeeper.util.StaticDNSResolver;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Test a region-aware ensemble placement policy.
*/
-public class TestRegionAwareEnsemblePlacementPolicy extends TestCase {
+public class TestRegionAwareEnsemblePlacementPolicy {
static final Logger LOG =
LoggerFactory.getLogger(TestRegionAwareEnsemblePlacementPolicy.class);
@@ -89,9 +96,8 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
StaticDNSResolver.addNodeToRack("localhost", rack);
}
- @Override
+ @BeforeEach
protected void setUp() throws Exception {
- super.setUp();
StaticDNSResolver.reset();
updateMyRack(NetworkTopology.DEFAULT_REGION_AND_RACK);
LOG.info("Set up static DNS Resolver.");
@@ -123,10 +129,9 @@ public class TestRegionAwareEnsemblePlacementPolicy
extends TestCase {
NullStatsLogger.INSTANCE,
BookieSocketAddress.LEGACY_BOOKIEID_RESOLVER);
}
- @Override
+ @AfterEach
protected void tearDown() throws Exception {
repp.uninitalize();
- super.tearDown();
}
static BookiesHealthInfo getBookiesHealthInfo() {
@@ -190,7 +195,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
LOG.info("reorder set : {}", reorderSet);
LOG.info("expected set : {}", expectedSet);
LOG.info("reorder equals {}", reorderSet.equals(writeSet));
- assertFalse(reorderSet.equals(writeSet));
+ assertNotEquals(reorderSet, writeSet);
assertEquals(expectedSet, reorderSet);
}
@@ -234,7 +239,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
ensemble, getBookiesHealthInfo(), writeSet);
DistributionSchedule.WriteSet expectedSet = writeSetFromValues(3, 1,
2, 0);
LOG.info("reorder set : {}", reorderSet);
- assertFalse(reorderSet.equals(origWriteSet));
+ assertNotEquals(reorderSet, origWriteSet);
assertEquals(expectedSet, reorderSet);
}
@@ -264,7 +269,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
ensemble, getBookiesHealthInfo(), writeSet);
DistributionSchedule.WriteSet expectedSet = writeSetFromValues(3, 1,
2, 0);
LOG.info("reorder set : {}", reorderSet);
- assertFalse(reorderSet.equals(origWriteSet));
+ assertNotEquals(reorderSet, origWriteSet);
assertEquals(expectedSet, reorderSet);
}
@@ -294,7 +299,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
ensemble, getBookiesHealthInfo(new HashMap<>(), bookiePendingMap),
writeSet);
DistributionSchedule.WriteSet expectedSet = writeSetFromValues(3, 1,
2, 0);
LOG.info("reorder set : {}", reorderSet);
- assertFalse(reorderSet.equals(origWriteSet));
+ assertNotEquals(reorderSet, origWriteSet);
assertEquals(expectedSet, reorderSet);
}
@@ -326,7 +331,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
ensemble, getBookiesHealthInfo(new HashMap<>(), bookiePendingMap),
writeSet);
DistributionSchedule.WriteSet expectedSet = writeSetFromValues(3, 2,
0, 1);
LOG.info("reorder set : {}", reorderSet);
- assertFalse(reorderSet.equals(origWriteSet));
+ assertNotEquals(reorderSet, origWriteSet);
assertEquals(expectedSet, reorderSet);
}
@@ -355,7 +360,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
ensemble, getBookiesHealthInfo(), writeSet);
DistributionSchedule.WriteSet expectedSet = writeSetFromValues(3, 2,
0, 1);
LOG.info("reorder set : {}", reorderSet);
- assertFalse(reorderSet.equals(origWriteSet));
+ assertNotEquals(reorderSet, origWriteSet);
assertEquals(expectedSet, reorderSet);
}
@@ -386,7 +391,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
ensemble, getBookiesHealthInfo(new HashMap<>(), bookiePendingMap),
writeSet);
DistributionSchedule.WriteSet expectedSet = writeSetFromValues(3, 2,
0, 1);
LOG.info("reorder set : {}", reorderSet);
- assertFalse(reorderSet.equals(origWriteSet));
+ assertNotEquals(reorderSet, origWriteSet);
assertEquals(expectedSet, reorderSet);
}
@@ -420,7 +425,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
ensemble, getBookiesHealthInfo(new HashMap<>(), bookiePendingMap),
writeSet);
DistributionSchedule.WriteSet expectedSet = writeSetFromValues(3, 1,
2, 0);
LOG.info("reorder set : {}", reorderSet);
- assertFalse(reorderSet.equals(origWriteSet));
+ assertNotEquals(reorderSet, origWriteSet);
assertEquals(expectedSet, reorderSet);
}
@@ -472,7 +477,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
BookieId replacedBookie = repp.replaceBookie(1, 1, 1, null,
new ArrayList<BookieId>(), addr2.toBookieId(),
excludedAddrs).getResult();
- assertFalse(addr1.toBookieId().equals(replacedBookie));
+ assertNotEquals(addr1.toBookieId(), replacedBookie);
assertTrue(addr3.toBookieId().equals(replacedBookie)
|| addr4.toBookieId().equals(replacedBookie));
}
@@ -506,6 +511,7 @@ public class TestRegionAwareEnsemblePlacementPolicy extends
TestCase {
}
@Test
+ @EnabledForJreRange(max = JRE.JAVA_11)
public void testNewEnsembleBookieWithOneEmptyRegion() throws Exception {
BookieSocketAddress addr1 = new BookieSocketAddress("127.0.0.2", 3181);
BookieSocketAddress addr2 = new BookieSocketAddress("127.0.0.3", 3181);
@@ -1422,8 +1428,8 @@ public class TestRegionAwareEnsemblePlacementPolicy
extends TestCase {
.resolve(address).getHostName()));
}
BookieId remoteAddress = ensemble.get(readSet.get(k));
-
assertFalse(myRegion.equals(StaticDNSResolver.getRegion(repp.bookieAddressResolver
-
.resolve(remoteAddress).getHostName())));
+ assertNotEquals(myRegion,
StaticDNSResolver.getRegion(repp.bookieAddressResolver
+ .resolve(remoteAddress).getHostName()));
k++;
BookieId localAddress = ensemble.get(readSet.get(k));
assertEquals(myRegion,
StaticDNSResolver.getRegion(repp.bookieAddressResolver
@@ -1431,8 +1437,8 @@ public class TestRegionAwareEnsemblePlacementPolicy
extends TestCase {
k++;
for (; k < ensembleSize; k++) {
BookieId address = ensemble.get(readSet.get(k));
-
assertFalse(myRegion.equals(StaticDNSResolver.getRegion(repp.bookieAddressResolver
-
.resolve(address).getHostName())));
+ assertNotEquals(myRegion,
StaticDNSResolver.getRegion(repp.bookieAddressResolver
+ .resolve(address).getHostName()));
}
}
}
@@ -1734,12 +1740,12 @@ public class TestRegionAwareEnsemblePlacementPolicy
extends TestCase {
List<BookieId> ensemble2 = repp.newEnsemble(3, 3, 2,
null, new HashSet<>()).getResult();
ensemble1.retainAll(ensemble2);
- assert(ensemble1.size() >= 1);
+ assert(!ensemble1.isEmpty());
List<BookieId> ensemble3 = repp.newEnsemble(3, 3, 2,
null, new HashSet<>()).getResult();
ensemble2.removeAll(ensemble3);
- assert(ensemble2.size() >= 1);
+ assert(!ensemble2.isEmpty());
} catch (BKNotEnoughBookiesException bnebe) {
fail("Should not get not enough bookies exception even there is
only one rack.");
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
index 76b21ecea2..35c1ea2aeb 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
@@ -83,6 +83,9 @@ import org.apache.zookeeper.ZooKeeper;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
import org.junit.rules.TestName;
import org.junit.rules.Timeout;
import org.slf4j.Logger;
@@ -101,6 +104,8 @@ public abstract class BookKeeperClusterTestCase {
@Rule
public final Timeout globalTimeout;
+ protected String testName;
+
// Metadata service related variables
protected final ZooKeeperCluster zkUtil;
protected ZooKeeper zkc;
@@ -158,10 +163,21 @@ public abstract class BookKeeperClusterTestCase {
}
@Before
+ @BeforeEach
public void setUp() throws Exception {
setUp("/ledgers");
}
+ @Before
+ public void setTestNameJunit4() {
+ testName = runtime.getMethodName();
+ }
+
+ @BeforeEach
+ void setTestNameJunit5(TestInfo testInfo) {
+ testName = testInfo.getDisplayName();
+ }
+
protected void setUp(String ledgersRootPath) throws Exception {
LOG.info("Setting up test {}", getClass());
InMemoryMetaStore.reset();
@@ -176,7 +192,7 @@ public abstract class BookKeeperClusterTestCase {
this.metadataServiceUri = getMetadataServiceUri(ledgersRootPath);
startBKCluster(metadataServiceUri);
LOG.info("Setup testcase {} @ metadata service {} in {} ms.",
- runtime.getMethodName(), metadataServiceUri,
sw.elapsed(TimeUnit.MILLISECONDS));
+ testName, metadataServiceUri,
sw.elapsed(TimeUnit.MILLISECONDS));
} catch (Exception e) {
LOG.error("Error setting up", e);
throw e;
@@ -188,6 +204,7 @@ public abstract class BookKeeperClusterTestCase {
}
@After
+ @AfterEach
public void tearDown() throws Exception {
boolean failed = false;
for (Throwable e : asyncExceptions) {
@@ -219,7 +236,7 @@ public abstract class BookKeeperClusterTestCase {
LOG.error("Got Exception while trying to cleanupTempDirs", e);
tearDownException = e;
}
- LOG.info("Tearing down test {} in {} ms.", runtime.getMethodName(),
sw.elapsed(TimeUnit.MILLISECONDS));
+ LOG.info("Tearing down test {} in {} ms.", testName,
sw.elapsed(TimeUnit.MILLISECONDS));
if (tearDownException != null) {
throw tearDownException;
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieZKExpireTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieZKExpireTest.java
index e64ff8c218..fbe6c921eb 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieZKExpireTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieZKExpireTest.java
@@ -37,7 +37,7 @@ import org.apache.bookkeeper.conf.ServerConfiguration;
import org.apache.bookkeeper.proto.BookieServer;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.util.PortManager;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledForJreRange;
import org.junit.jupiter.api.condition.JRE;
@@ -71,7 +71,7 @@ public class BookieZKExpireTest extends
BookKeeperClusterTestCase {
Thread[] threads = new Thread[threadCount * 2];
threadCount = Thread.enumerate(threads);
for (int i = 0; i < threadCount; i++) {
- if (threads[i].getName().indexOf("SendThread") != -1) {
+ if (threads[i].getName().contains("SendThread")) {
threadset.add(threads[i]);
}
}
@@ -95,7 +95,7 @@ public class BookieZKExpireTest extends
BookKeeperClusterTestCase {
threads = new Thread[threadCount * 2];
threadCount = Thread.enumerate(threads);
for (int i = 0; i < threadCount; i++) {
- if (threads[i].getName().indexOf("SendThread") != -1
+ if (threads[i].getName().contains("SendThread")
&& !threadset.contains(threads[i])) {
sendthread = threads[i];
break;