This is an automated email from the ASF dual-hosted git repository.
nanda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 1e6e6d1b46 HDDS-10225. Speed up TestSCMHAManagerImpl. (#6109)
1e6e6d1b46 is described below
commit 1e6e6d1b46961db6ebb017cd37e10a880e7b9c88
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Tue Jan 30 11:51:38 2024 +0100
HDDS-10225. Speed up TestSCMHAManagerImpl. (#6109)
---
.../hadoop/hdds/scm/ha/TestSCMHAManagerImpl.java | 110 ++++++++++-----------
1 file changed, 53 insertions(+), 57 deletions(-)
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAManagerImpl.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAManagerImpl.java
index eb0f18ae01..f33eedf969 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAManagerImpl.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAManagerImpl.java
@@ -45,9 +45,13 @@ import org.apache.hadoop.hdds.utils.db.Table;
import
org.apache.hadoop.security.authentication.client.AuthenticationException;
import org.apache.ozone.test.GenericTestUtils;
import org.apache.ratis.server.DivisionInfo;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.io.TempDir;
import java.io.IOException;
@@ -55,6 +59,7 @@ import java.util.UUID;
import java.util.concurrent.TimeoutException;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assumptions.assumeThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
@@ -64,27 +69,34 @@ import static org.mockito.Mockito.when;
/**
* Test cases to verify {@link org.apache.hadoop.hdds.scm.ha.SCMHAManagerImpl}.
*/
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class TestSCMHAManagerImpl {
- @TempDir
+ private static final String FOLLOWER_SCM_ID = "follower";
+
private Path storageBaseDir;
private String clusterID;
private SCMHAManager primarySCMHAManager;
+ private SCMRatisServer follower;
- @BeforeEach
- void setup() throws IOException, InterruptedException,
+ @BeforeAll
+ void setup(@TempDir Path tempDir) throws IOException, InterruptedException,
TimeoutException {
+ storageBaseDir = tempDir;
clusterID = UUID.randomUUID().toString();
OzoneConfiguration conf = getConfig("scm1", 9894);
final StorageContainerManager scm = getMockStorageContainerManager(conf);
SCMRatisServerImpl.initialize(clusterID, scm.getScmId(),
scm.getScmNodeDetails(), conf);
- scm.getScmHAManager().start();
primarySCMHAManager = scm.getScmHAManager();
+ primarySCMHAManager.start();
final DivisionInfo ratisDivision = primarySCMHAManager.getRatisServer()
.getDivision().getInfo();
// Wait for Ratis Server to be ready
waitForSCMToBeReady(ratisDivision);
+ follower = getMockStorageContainerManager(getConfig(FOLLOWER_SCM_ID, 9898))
+ .getScmHAManager().getRatisServer();
}
private OzoneConfiguration getConfig(String scmId, int ratisPort) {
@@ -97,42 +109,55 @@ class TestSCMHAManagerImpl {
return conf;
}
- public void waitForSCMToBeReady(DivisionInfo ratisDivision)
+ private void waitForSCMToBeReady(DivisionInfo ratisDivision)
throws TimeoutException,
InterruptedException {
GenericTestUtils.waitFor(ratisDivision::isLeaderReady,
1000, 10000);
}
- @AfterEach
- public void cleanup() throws IOException {
+ @AfterAll
+ void cleanup() throws IOException {
+ follower.stop();
primarySCMHAManager.stop();
}
@Test
- public void testAddSCM() throws IOException, InterruptedException {
- assertEquals(1, primarySCMHAManager.getRatisServer()
- .getDivision().getGroup().getPeers().size());
+ @Order(1)
+ void testAddSCM() throws IOException {
+ assertEquals(1, getPeerCount());
+
+ follower.start();
+ final AddSCMRequest request = new AddSCMRequest(
+ clusterID, FOLLOWER_SCM_ID, getFollowerAddress());
+ primarySCMHAManager.addSCM(request);
+ assertEquals(2, getPeerCount());
+ }
- final StorageContainerManager scm2 = getMockStorageContainerManager(
- getConfig("scm2", 9898));
- try {
- scm2.getScmHAManager().getRatisServer().start();
- final AddSCMRequest request = new AddSCMRequest(
- clusterID, scm2.getScmId(),
- "localhost:" + scm2.getScmHAManager().getRatisServer()
- .getDivision().getRaftServer().getServerRpc()
- .getInetSocketAddress().getPort());
- primarySCMHAManager.addSCM(request);
- assertEquals(2, primarySCMHAManager.getRatisServer()
- .getDivision().getGroup().getPeers().size());
- } finally {
- scm2.getScmHAManager().getRatisServer().stop();
- }
+ @Test
+ @Order(2) // requires testAddSCM
+ void testRemoveSCM() throws IOException {
+ assumeThat(getPeerCount()).isEqualTo(2);
+
+ final RemoveSCMRequest removeSCMRequest = new RemoveSCMRequest(
+ clusterID, FOLLOWER_SCM_ID, getFollowerAddress());
+ primarySCMHAManager.removeSCM(removeSCMRequest);
+ assertEquals(1, getPeerCount());
+ }
+
+ private int getPeerCount() {
+ return primarySCMHAManager.getRatisServer()
+ .getDivision().getGroup().getPeers().size();
+ }
+
+ private String getFollowerAddress() {
+ return "localhost:" +
+ follower.getDivision()
+ .getRaftServer().getServerRpc().getInetSocketAddress().getPort();
}
@Test
- public void testHARingRemovalErrors() throws IOException,
+ void testHARingRemovalErrors() throws IOException,
AuthenticationException {
OzoneConfiguration config = new OzoneConfiguration();
config.set(ScmConfigKeys.OZONE_SCM_PRIMORDIAL_NODE_ID_KEY, "scm1");
@@ -160,35 +185,6 @@ class TestSCMHAManagerImpl {
scm2.getScmHAManager().getRatisServer().stop();
}
}
- @Test
- public void testRemoveSCM() throws IOException, InterruptedException {
- assertEquals(1, primarySCMHAManager.getRatisServer()
- .getDivision().getGroup().getPeers().size());
-
- final StorageContainerManager scm2 = getMockStorageContainerManager(
- getConfig("scm2", 9898));
- try {
- scm2.getScmHAManager().getRatisServer().start();
- final AddSCMRequest addSCMRequest = new AddSCMRequest(
- clusterID, scm2.getScmId(),
- "localhost:" + scm2.getScmHAManager().getRatisServer()
- .getDivision().getRaftServer().getServerRpc()
- .getInetSocketAddress().getPort());
- primarySCMHAManager.addSCM(addSCMRequest);
- assertEquals(2, primarySCMHAManager.getRatisServer()
- .getDivision().getGroup().getPeers().size());
-
- final RemoveSCMRequest removeSCMRequest = new RemoveSCMRequest(
- clusterID, scm2.getScmId(), "localhost:" +
- scm2.getScmHAManager().getRatisServer().getDivision()
-
.getRaftServer().getServerRpc().getInetSocketAddress().getPort());
- primarySCMHAManager.removeSCM(removeSCMRequest);
- assertEquals(1, primarySCMHAManager.getRatisServer()
- .getDivision().getGroup().getPeers().size());
- } finally {
- scm2.getScmHAManager().getRatisServer().stop();
- }
- }
private StorageContainerManager getMockStorageContainerManager(
OzoneConfiguration conf) throws IOException {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]