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

adoroszlai 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 182d106c40 HDDS-12132. Parameterize testUpdateTransactionInfoTable for 
SCM (#7768)
182d106c40 is described below

commit 182d106c401051a517d8a8027b3e40c5ee6fe96f
Author: Sarveksha Yeshavantha Raju 
<[email protected]>
AuthorDate: Fri Jan 31 13:06:12 2025 +0530

    HDDS-12132. Parameterize testUpdateTransactionInfoTable for SCM (#7768)
---
 .../hadoop/ozone/shell/TestOzoneRepairShell.java   | 42 ++++++++++++++++------
 .../org/apache/hadoop/ozone/repair/RepairTool.java |  2 +-
 .../hadoop/ozone/repair/TransactionInfoRepair.java |  5 ++-
 3 files changed, 34 insertions(+), 15 deletions(-)

diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
index 7446bd0afa..aa2ff69735 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
@@ -18,18 +18,23 @@
 package org.apache.hadoop.ozone.shell;
 
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.hdds.server.ServerUtils;
 import org.apache.hadoop.hdds.utils.IOUtils;
 import org.apache.hadoop.ozone.MiniOzoneCluster;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.debug.OzoneDebug;
 import org.apache.hadoop.ozone.om.OMStorage;
 import org.apache.hadoop.ozone.repair.OzoneRepair;
+import org.apache.hadoop.ozone.repair.RepairTool.Component;
+import org.apache.hadoop.ozone.repair.TransactionInfoRepair;
 import org.apache.ozone.test.GenericTestUtils;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
 import picocli.CommandLine;
 
 import java.io.File;
@@ -37,6 +42,7 @@
 import java.util.regex.Pattern;
 
 import static org.apache.hadoop.ozone.OzoneConsts.OM_DB_NAME;
+import static org.apache.hadoop.ozone.OzoneConsts.SCM_DB_NAME;
 import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_ADDRESS_KEY;
 import static org.apache.ozone.test.IntLambda.withTextFromSystemIn;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -52,7 +58,6 @@ public class TestOzoneRepairShell {
   private static MiniOzoneCluster cluster = null;
   private static OzoneConfiguration conf = null;
   private static String om;
-
   private static final String TRANSACTION_INFO_TABLE_TERM_INDEX_PATTERN = 
"([0-9]+#[0-9]+)";
 
   @BeforeAll
@@ -80,20 +85,23 @@ static void cleanup() {
     IOUtils.closeQuietly(cluster);
   }
 
-  @Test
-  public void testUpdateTransactionInfoTable() throws Exception {
+  @ParameterizedTest
+  @EnumSource(value = Component.class, names = {"OM", "SCM"})
+  public void testUpdateTransactionInfoTable(Component component) throws 
Exception {
     CommandLine cmd = new OzoneRepair().getCmd();
-    String dbPath = new File(OMStorage.getOmDbDir(conf) + "/" + 
OM_DB_NAME).getPath();
+    String dbPath = getDbPath(component);
+    String componentLowerCase = component.name().toLowerCase();
 
     cluster.getOzoneManager().stop();
+    cluster.getStorageContainerManager().stop();
 
-    String cmdOut = scanTransactionInfoTable(dbPath);
+    String cmdOut = scanTransactionInfoTable(dbPath, component);
     String[] originalHighestTermIndex = parseScanOutput(cmdOut);
 
     String testTerm = "1111";
     String testIndex = "1111";
     int exitCode = withTextFromSystemIn("y")
-        .execute(() -> cmd.execute("om", "update-transaction",
+        .execute(() -> cmd.execute(componentLowerCase, "update-transaction",
             "--db", dbPath,
             "--term", testTerm,
             "--index", testIndex));
@@ -105,23 +113,35 @@ public void testUpdateTransactionInfoTable() throws 
Exception {
             String.format("The highest transaction info has been updated to: 
(t:%s, i:%s)", testTerm, testIndex)
         );
 
-    String cmdOut2 = scanTransactionInfoTable(dbPath);
+    String cmdOut2 = scanTransactionInfoTable(dbPath, component);
     assertThat(cmdOut2).contains(testTerm + "#" + testIndex);
 
     withTextFromSystemIn("y")
-        .execute(() -> cmd.execute("om", "update-transaction",
+        .execute(() -> cmd.execute(componentLowerCase, "update-transaction",
             "--db", dbPath,
             "--term", originalHighestTermIndex[0],
             "--index", originalHighestTermIndex[1]));
     cluster.getOzoneManager().restart();
     try (OzoneClient ozoneClient = cluster.newClient()) {
-      ozoneClient.getObjectStore().createVolume("vol1");
+      ozoneClient.getObjectStore().createVolume("vol-" + componentLowerCase);
+    }
+  }
+
+  private String getDbPath(Component component) {
+    switch (component) {
+    case OM:
+      return new File(OMStorage.getOmDbDir(conf) + "/" + OM_DB_NAME).getPath();
+    case SCM:
+      return new File(ServerUtils.getScmDbDir(conf) + "/" + 
SCM_DB_NAME).getPath();
+    default:
+      throw new IllegalStateException("Unknown component: " + component);
     }
   }
 
-  private String scanTransactionInfoTable(String dbPath) {
+  private String scanTransactionInfoTable(String dbPath, Component component) {
     CommandLine debugCmd = new OzoneDebug().getCmd();
-    debugCmd.execute("ldb", "--db", dbPath, "scan", "--column_family", 
"transactionInfoTable");
+    debugCmd.execute("ldb", "--db", dbPath, "scan", "--column_family",
+        TransactionInfoRepair.getColumnFamily(component).getName());
     return out.get();
   }
 
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
index 3fa1033fb2..aac0680a10 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
@@ -142,7 +142,7 @@ private String getConsoleReadLineWithFormat(String 
currentUser) {
   }
 
   /** Ozone component for offline tools. */
-  protected enum Component {
+  public enum Component {
     DATANODE,
     OM,
     SCM,
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
index 8b44c30877..07ee93c0b7 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
@@ -73,7 +73,7 @@ public void execute() throws Exception {
     List<ColumnFamilyHandle> cfHandleList = new ArrayList<>();
     List<ColumnFamilyDescriptor> cfDescList = 
RocksDBUtils.getColumnFamilyDescriptors(
         dbPath);
-    String columnFamilyName = getColumnFamily().getName();
+    String columnFamilyName = getColumnFamily(serviceToBeOffline()).getName();
 
     try (ManagedRocksDB db = ManagedRocksDB.open(dbPath, cfDescList, 
cfHandleList)) {
       ColumnFamilyHandle transactionInfoCfh = 
RocksDBUtils.getColumnFamilyHandle(columnFamilyName, cfHandleList);
@@ -122,8 +122,7 @@ protected Component serviceToBeOffline() {
     }
   }
 
-  private DBColumnFamilyDefinition<String, TransactionInfo> getColumnFamily() {
-    Component component = serviceToBeOffline();
+  public static DBColumnFamilyDefinition<String, TransactionInfo> 
getColumnFamily(Component component) {
     switch (component) {
     case OM:
       return OMDBDefinition.TRANSACTION_INFO_TABLE;


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

Reply via email to