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]

Reply via email to