This is an automated email from the ASF dual-hosted git repository.

sodonnell 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 850bc96c63 HDDS-9298. Speed up TestStorageContainerManagerHA (#5307)
850bc96c63 is described below

commit 850bc96c630c837d45958553ebaa12e45e68a4ca
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Thu Sep 21 17:45:05 2023 +0200

    HDDS-9298. Speed up TestStorageContainerManagerHA (#5307)
---
 .../hadoop/hdds/scm/ha/TestSCMHAConfiguration.java | 106 ++++++++++++++-------
 .../ozone/scm/TestStorageContainerManagerHA.java   |  71 +++-----------
 2 files changed, 84 insertions(+), 93 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAConfiguration.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAConfiguration.java
index 4c5522275f..31a83fbd3c 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAConfiguration.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMHAConfiguration.java
@@ -22,20 +22,23 @@ import org.apache.hadoop.hdds.conf.DefaultConfigManager;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.scm.ScmConfigKeys;
 import org.apache.hadoop.hdds.scm.server.SCMStorageConfig;
+import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
 import org.apache.hadoop.hdds.utils.HddsServerUtil;
 import org.apache.hadoop.net.NetUtils;
 import org.apache.hadoop.ozone.common.Storage;
 import org.apache.hadoop.ozone.ha.ConfUtils;
 import org.junit.Assert;
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.mockito.Mockito;
 
+import java.io.File;
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.util.UUID;
 
 import static org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_ADDRESS_KEY;
 import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_BLOCK_CLIENT_ADDRESS_KEY;
@@ -55,16 +58,21 @@ import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_RATIS_PORT_KEY;
 import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_SECURITY_SERVICE_ADDRESS_KEY;
 import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_SECURITY_SERVICE_BIND_HOST_KEY;
 import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_SECURITY_SERVICE_PORT_KEY;
+import static org.apache.hadoop.ozone.OzoneConfigKeys.OZONE_METADATA_DIRS;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
  * Test for SCM HA-related configuration.
  */
-public class TestSCMHAConfiguration {
+class TestSCMHAConfiguration {
   private OzoneConfiguration conf;
 
   @BeforeEach
-  public void setup() {
+  void setup(@TempDir File tempDir) {
     conf = new OzoneConfiguration();
+    conf.set(OZONE_METADATA_DIRS, tempDir.getAbsolutePath());
+    DefaultConfigManager.clearDefaultConfigs();
   }
 
   @Test
@@ -132,64 +140,64 @@ public class TestSCMHAConfiguration {
     port = 9880;
 
     // Validate configs.
-    Assertions.assertEquals("localhost:" + port++,
+    assertEquals("localhost:" + port++,
         conf.get(ConfUtils.addKeySuffixes(OZONE_SCM_BLOCK_CLIENT_ADDRESS_KEY,
         scmServiceId, "scm1")));
-    Assertions.assertEquals(port,
+    assertEquals(port,
         conf.getInt(ConfUtils.addKeySuffixes(OZONE_SCM_BLOCK_CLIENT_PORT_KEY,
         scmServiceId, "scm1"), 9999));
-    Assertions.assertEquals("172.28.9.1",
+    assertEquals("172.28.9.1",
         conf.get(ConfUtils.addKeySuffixes(OZONE_SCM_BLOCK_CLIENT_BIND_HOST_KEY,
             scmServiceId, "scm1")));
 
 
-    Assertions.assertEquals("localhost:" + port++,
+    assertEquals("localhost:" + port++,
         conf.get(ConfUtils.addKeySuffixes(
             OZONE_SCM_SECURITY_SERVICE_ADDRESS_KEY, scmServiceId, "scm1")));
-    Assertions.assertEquals(port, conf.getInt(ConfUtils.addKeySuffixes(
+    assertEquals(port, conf.getInt(ConfUtils.addKeySuffixes(
         OZONE_SCM_SECURITY_SERVICE_PORT_KEY, scmServiceId, "scm1"), 9999));
-    Assertions.assertEquals("172.28.9.1",
+    assertEquals("172.28.9.1",
         conf.get(ConfUtils.addKeySuffixes(
             OZONE_SCM_SECURITY_SERVICE_BIND_HOST_KEY, scmServiceId, "scm1")));
 
 
-    Assertions.assertEquals("localhost:" + port++,
+    assertEquals("localhost:" + port++,
         conf.get(ConfUtils.addKeySuffixes(OZONE_SCM_CLIENT_ADDRESS_KEY,
             scmServiceId, "scm1")));
-    Assertions.assertEquals(port,
+    assertEquals(port,
         conf.getInt(ConfUtils.addKeySuffixes(OZONE_SCM_CLIENT_PORT_KEY,
             scmServiceId, "scm1"), 9999));
-    Assertions.assertEquals("172.28.9.1", conf.get(
+    assertEquals("172.28.9.1", conf.get(
         ConfUtils.addKeySuffixes(OZONE_SCM_CLIENT_BIND_HOST_KEY, scmServiceId,
         "scm1")));
 
-    Assertions.assertEquals("localhost:" + port++,
+    assertEquals("localhost:" + port++,
         conf.get(ConfUtils.addKeySuffixes(OZONE_SCM_DATANODE_ADDRESS_KEY,
             scmServiceId, "scm1")));
-    Assertions.assertEquals(port,
+    assertEquals(port,
         conf.getInt(ConfUtils.addKeySuffixes(OZONE_SCM_DATANODE_PORT_KEY,
             scmServiceId, "scm1"), 9999));
-    Assertions.assertEquals("172.28.9.1", conf.get(
+    assertEquals("172.28.9.1", conf.get(
         ConfUtils.addKeySuffixes(OZONE_SCM_DATANODE_BIND_HOST_KEY, 
scmServiceId,
         "scm1")));
 
 
-    Assertions.assertEquals("localhost:" + port++,
+    assertEquals("localhost:" + port++,
         conf.get(ConfUtils.addKeySuffixes(OZONE_SCM_HTTP_ADDRESS_KEY,
         scmServiceId, "scm1")));
-    Assertions.assertEquals("172.28.9.1",
+    assertEquals("172.28.9.1",
         conf.get(ConfUtils.addKeySuffixes(OZONE_SCM_HTTP_BIND_HOST_KEY,
         scmServiceId, "scm1")));
 
-    Assertions.assertEquals("localhost", conf.get(ConfUtils.addKeySuffixes(
+    assertEquals("localhost", conf.get(ConfUtils.addKeySuffixes(
         OZONE_SCM_ADDRESS_KEY, scmServiceId,
         "scm1")));
 
-    Assertions.assertEquals("/var/scm-metadata1",
+    assertEquals("/var/scm-metadata1",
         conf.get(ConfUtils.addKeySuffixes(OZONE_SCM_DB_DIRS, scmServiceId,
         "scm1")));
 
-    Assertions.assertEquals(port++,
+    assertEquals(port++,
         conf.getInt(ConfUtils.addKeySuffixes(OZONE_SCM_RATIS_PORT_KEY,
         scmServiceId, "scm1"), 9999));
 
@@ -226,8 +234,8 @@ public class TestSCMHAConfiguration {
     SCMHANodeDetails scmhaNodeDetails =
         SCMHANodeDetails.loadSCMHAConfig(conf, scmStorageConfig);
 
-    Assertions.assertEquals("10000", conf.get(OZONE_SCM_RATIS_PORT_KEY));
-    Assertions.assertEquals("10001", conf.get(OZONE_SCM_GRPC_PORT_KEY));
+    assertEquals("10000", conf.get(OZONE_SCM_RATIS_PORT_KEY));
+    assertEquals("10001", conf.get(OZONE_SCM_GRPC_PORT_KEY));
 
 
     InetSocketAddress clientAddress =
@@ -237,37 +245,37 @@ public class TestSCMHAConfiguration {
         NetUtils.createSocketAddr("0.0.0.0", 9896);
     InetSocketAddress datanodeAddress =
         NetUtils.createSocketAddr("0.0.0.0", 9898);
-    Assertions.assertEquals(clientAddress,
+    assertEquals(clientAddress,
         scmhaNodeDetails.getLocalNodeDetails()
             .getClientProtocolServerAddress());
-    Assertions.assertEquals(blockAddress, 
scmhaNodeDetails.getLocalNodeDetails()
+    assertEquals(blockAddress, scmhaNodeDetails.getLocalNodeDetails()
         .getBlockProtocolServerAddress());
-    Assertions.assertEquals(datanodeAddress,
+    assertEquals(datanodeAddress,
         scmhaNodeDetails.getLocalNodeDetails()
             .getDatanodeProtocolServerAddress());
 
-    Assertions.assertEquals(10000,
+    assertEquals(10000,
         scmhaNodeDetails.getLocalNodeDetails().getRatisPort());
-    Assertions.assertEquals(10001,
+    assertEquals(10001,
         scmhaNodeDetails.getLocalNodeDetails().getGrpcPort());
 
     for (SCMNodeDetails peer : scmhaNodeDetails.getPeerNodeDetails()) {
-      Assertions.assertEquals(clientAddress,
+      assertEquals(clientAddress,
           peer.getClientProtocolServerAddress());
-      Assertions.assertEquals(blockAddress,
+      assertEquals(blockAddress,
           peer.getBlockProtocolServerAddress());
-      Assertions.assertEquals(datanodeAddress,
+      assertEquals(datanodeAddress,
           peer.getDatanodeProtocolServerAddress());
 
-      Assertions.assertEquals(10000, peer.getRatisPort());
-      Assertions.assertEquals(10001,
+      assertEquals(10000, peer.getRatisPort());
+      assertEquals(10001,
           peer.getGrpcPort());
     }
 
 
     // Security protocol address is not set in SCMHANode Details.
     // Check conf is properly set with expected port.
-    Assertions.assertEquals(
+    assertEquals(
         NetUtils.createSocketAddr("0.0.0.0", 9899),
         HddsServerUtil.getScmSecurityInetAddress(conf));
 
@@ -318,7 +326,37 @@ public class TestSCMHAConfiguration {
         .thenReturn(Storage.StorageState.INITIALIZED);
     Mockito.when(scmStorageConfig.isSCMHAEnabled()).thenReturn(isRatisEnabled);
     conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, !isRatisEnabled);
-    Assertions.assertThrows(ConfigurationException.class,
+    assertThrows(ConfigurationException.class,
             () -> SCMHANodeDetails.loadSCMHAConfig(conf, scmStorageConfig));
   }
+
+  @ParameterizedTest
+  @ValueSource(booleans = {true, false})
+  void testHAConfig(boolean ratisEnabled) throws IOException {
+    conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, ratisEnabled);
+    SCMStorageConfig scmStorageConfig = newStorageConfig(ratisEnabled);
+    StorageContainerManager.scmInit(conf, scmStorageConfig.getClusterID());
+    assertEquals(ratisEnabled, DefaultConfigManager.getValue(
+        ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, !ratisEnabled));
+  }
+
+  @ParameterizedTest
+  @ValueSource(booleans = {true, false})
+  void testInvalidHAConfig(boolean ratisEnabled) throws IOException {
+    conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, ratisEnabled);
+    SCMStorageConfig scmStorageConfig = newStorageConfig(!ratisEnabled);
+    String clusterID = scmStorageConfig.getClusterID();
+    assertThrows(ConfigurationException.class,
+        () -> StorageContainerManager.scmInit(conf, clusterID));
+  }
+
+  private SCMStorageConfig newStorageConfig(
+      boolean ratisEnabled) throws IOException {
+    final SCMStorageConfig scmStorageConfig = new SCMStorageConfig(conf);
+    scmStorageConfig.setClusterId(UUID.randomUUID().toString());
+    scmStorageConfig.setSCMHAFlag(ratisEnabled);
+    scmStorageConfig.initialize();
+    return scmStorageConfig;
+  }
+
 }
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
index ff2d9dae69..573b9fd68c 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
@@ -19,7 +19,6 @@
 package org.apache.hadoop.ozone.scm;
 
 import org.apache.hadoop.hdds.client.RatisReplicationConfig;
-import org.apache.hadoop.hdds.conf.ConfigurationException;
 import org.apache.hadoop.hdds.conf.DefaultConfigManager;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
@@ -49,8 +48,6 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
 
 import java.io.IOException;
 import java.time.Instant;
@@ -107,6 +104,7 @@ public class TestStorageContainerManagerHA {
         .setNumOfOzoneManagers(numOfOMs)
         .build();
     cluster.waitForClusterToBeReady();
+    waitForLeaderToBeReady();
   }
 
   /**
@@ -121,7 +119,7 @@ public class TestStorageContainerManagerHA {
   }
 
   @Test
-  public void testAllSCMAreRunning() throws Exception {
+  void testAllSCMAreRunning() throws Exception {
     int count = 0;
     List<StorageContainerManager> scms = cluster.getStorageContainerManagers();
     Assertions.assertEquals(numOfSCMs, scms.size());
@@ -136,6 +134,13 @@ public class TestStorageContainerManagerHA {
       Assertions.assertEquals(peerSize, numOfSCMs);
     }
     Assertions.assertEquals(1, count);
+    Assertions.assertNotNull(leaderScm);
+
+    assertRatisRoles();
+
+    String leaderSCMId = leaderScm.getScmId();
+    checkSCMHAMetricsForAllSCMs(scms, leaderSCMId);
+
     count = 0;
     List<OzoneManager> oms = cluster.getOzoneManagersList();
     Assertions.assertEquals(numOfOMs, oms.size());
@@ -149,7 +154,7 @@ public class TestStorageContainerManagerHA {
     // verify timer based transaction buffer flush is working
     SnapshotInfo latestSnapshot = leaderScm.getScmHAManager()
         .asSCMHADBTransactionBuffer().getLatestSnapshot();
-    testPutKey();
+    doPutKey();
     final StorageContainerManager leaderScmTmp = leaderScm;
     GenericTestUtils.waitFor(() -> {
       if (leaderScmTmp.getScmHAManager().asSCMHADBTransactionBuffer()
@@ -163,8 +168,7 @@ public class TestStorageContainerManagerHA {
     }, 2000, 30000);
   }
 
-  @Test
-  public void testPutKey() throws Exception {
+  private void doPutKey() throws Exception {
     String volumeName = UUID.randomUUID().toString();
     String bucketName = UUID.randomUUID().toString();
     Instant testStartTime = Instant.now();
@@ -261,44 +265,6 @@ public class TestStorageContainerManagerHA {
         StorageContainerManager.scmInit(conf2, scm2.getClusterId()));
   }
 
-  @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  public void testHAConfig(boolean isRatisEnabled) throws Exception {
-    StorageContainerManager scm0 = cluster.getStorageContainerManager(0);
-    scm0.stop();
-    boolean isDeleted = scm0.getScmStorageConfig().getVersionFile().delete();
-    Assertions.assertTrue(isDeleted);
-    conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, isRatisEnabled);
-    final SCMStorageConfig scmStorageConfig = new SCMStorageConfig(conf);
-    scmStorageConfig.setClusterId(UUID.randomUUID().toString());
-    scmStorageConfig.getCurrentDir().delete();
-    scmStorageConfig.setSCMHAFlag(isRatisEnabled);
-    DefaultConfigManager.clearDefaultConfigs();
-    scmStorageConfig.initialize();
-    StorageContainerManager.scmInit(conf, clusterId);
-    Assertions.assertEquals(DefaultConfigManager.getValue(
-        ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, !isRatisEnabled),
-        isRatisEnabled);
-  }
-
-  @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  public void testInvalidHAConfig(boolean isRatisEnabled) throws Exception {
-    StorageContainerManager scm0 = cluster.getStorageContainerManager(0);
-    scm0.stop();
-    boolean isDeleted = scm0.getScmStorageConfig().getVersionFile().delete();
-    Assertions.assertTrue(isDeleted);
-    conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, isRatisEnabled);
-    final SCMStorageConfig scmStorageConfig = new SCMStorageConfig(conf);
-    scmStorageConfig.setClusterId(UUID.randomUUID().toString());
-    scmStorageConfig.getCurrentDir().delete();
-    scmStorageConfig.setSCMHAFlag(!isRatisEnabled);
-    DefaultConfigManager.clearDefaultConfigs();
-    scmStorageConfig.initialize();
-    Assertions.assertThrows(ConfigurationException.class,
-        () -> StorageContainerManager.scmInit(conf, clusterId));
-  }
-
   @Test
   public void testBootStrapSCM() throws Exception {
     StorageContainerManager scm2 = 
cluster.getStorageContainerManagers().get(1);
@@ -318,8 +284,7 @@ public class TestStorageContainerManagerHA {
     Assertions.assertTrue(StorageContainerManager.scmBootstrap(conf2));
   }
 
-  @Test
-  public void testGetRatisRolesDetail() {
+  private void assertRatisRoles() {
     Set<String> resultSet = new HashSet<>();
     for (StorageContainerManager scm: cluster.getStorageContainerManagers()) {
       resultSet.addAll(scm.getScmHAManager().getRatisServer().getRatisRoles());
@@ -330,18 +295,6 @@ public class TestStorageContainerManagerHA {
         resultSet.stream().filter(x -> x.contains("LEADER")).count());
   }
 
-  @Test
-  public void testSCMHAMetrics() throws InterruptedException, TimeoutException 
{
-    waitForLeaderToBeReady();
-
-    StorageContainerManager leaderSCM = cluster.getActiveSCM();
-    String leaderSCMId = leaderSCM.getScmId();
-    List<StorageContainerManager> scms =
-        cluster.getStorageContainerManagersList();
-
-    checkSCMHAMetricsForAllSCMs(scms, leaderSCMId);
-  }
-
   private void checkSCMHAMetricsForAllSCMs(List<StorageContainerManager> scms,
       String leaderSCMId) {
     for (StorageContainerManager scm : scms) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to