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 0781cbede3 HDDS-12694. Disable TestMiniChaosOzoneCluster after fixing 
init and shutdown (#8159)
0781cbede3 is described below

commit 0781cbede3786cb0f552d563f98561381a67e06e
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Wed Mar 26 13:36:53 2025 +0100

    HDDS-12694. Disable TestMiniChaosOzoneCluster after fixing init and 
shutdown (#8159)
---
 .../apache/hadoop/ozone/MiniOzoneChaosCluster.java |  8 +--
 .../hadoop/ozone/TestAllMiniChaosOzoneCluster.java | 23 +++----
 .../ozone/TestDatanodeMiniChaosOzoneCluster.java   | 12 +++-
 .../hadoop/ozone/TestMiniChaosOzoneCluster.java    | 77 +++++++++++-----------
 .../TestOzoneManagerMiniChaosOzoneCluster.java     | 11 +++-
 ...orageContainerManagerMiniChaosOzoneCluster.java | 11 +++-
 6 files changed, 81 insertions(+), 61 deletions(-)

diff --git 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/MiniOzoneChaosCluster.java
 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/MiniOzoneChaosCluster.java
index 6db7b4b016..5871e9b388 100644
--- 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/MiniOzoneChaosCluster.java
+++ 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/MiniOzoneChaosCluster.java
@@ -132,12 +132,12 @@ void startChaos(long initialDelay, long period, TimeUnit 
timeUnit) {
   public void shutdown() {
     try {
       failureManager.stop();
-      //this should be called after stopChaos to be sure that the
-      //datanode collection is not modified during the shutdown
-      super.shutdown();
     } catch (Exception e) {
-      LOG.error("failed to shutdown MiniOzoneChaosCluster", e);
+      LOG.error("failed to stop FailureManager", e);
     }
+    //this should be called after failureManager.stop to be sure that the
+    //datanode collection is not modified during the shutdown
+    super.shutdown();
   }
 
   /**
diff --git 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestAllMiniChaosOzoneCluster.java
 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestAllMiniChaosOzoneCluster.java
index 086a621d2b..4275beed02 100644
--- 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestAllMiniChaosOzoneCluster.java
+++ 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestAllMiniChaosOzoneCluster.java
@@ -21,33 +21,34 @@
 import org.apache.hadoop.hdds.cli.HddsVersionProvider;
 import org.apache.hadoop.ozone.failure.Failures;
 import org.apache.hadoop.ozone.loadgenerators.LoadGenerator;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
 import picocli.CommandLine;
 
 /**
- * Command line utility to parse and dump a datanode ratis segment file.
+ * Test all kinds of chaos.
  */
 @CommandLine.Command(
     name = "all",
     description = "run chaos cluster across all daemons",
     mixinStandardHelpOptions = true,
     versionProvider = HddsVersionProvider.class)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class TestAllMiniChaosOzoneCluster extends TestMiniChaosOzoneCluster
     implements Callable<Void> {
 
-  @CommandLine.ParentCommand
-  private OzoneChaosCluster chaosCluster;
-
-  @Override
-  public Void call() throws Exception {
+  @BeforeAll
+  void setup() {
     setNumManagers(3, 3, true);
 
-    LoadGenerator.getClassList().forEach(
-        TestMiniChaosOzoneCluster::addLoadClasses);
-    Failures.getClassList().forEach(
-        TestMiniChaosOzoneCluster::addFailureClasses);
+    LoadGenerator.getClassList().forEach(this::addLoadClasses);
+    Failures.getClassList().forEach(this::addFailureClasses);
+  }
 
+  @Override
+  public Void call() throws Exception {
+    setup();
     startChaosCluster();
-
     return null;
   }
 
diff --git 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestDatanodeMiniChaosOzoneCluster.java
 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestDatanodeMiniChaosOzoneCluster.java
index 8a803c2f78..828d57e3db 100644
--- 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestDatanodeMiniChaosOzoneCluster.java
+++ 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestDatanodeMiniChaosOzoneCluster.java
@@ -22,6 +22,8 @@
 import org.apache.hadoop.ozone.failure.Failures;
 import org.apache.hadoop.ozone.loadgenerators.AgedLoadGenerator;
 import org.apache.hadoop.ozone.loadgenerators.RandomLoadGenerator;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
 import picocli.CommandLine;
 
 /**
@@ -32,19 +34,23 @@
     description = "run chaos cluster across Ozone Datanodes",
     mixinStandardHelpOptions = true,
     versionProvider = HddsVersionProvider.class)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class TestDatanodeMiniChaosOzoneCluster extends
     TestMiniChaosOzoneCluster implements Callable<Void> {
 
-  @Override
-  public Void call() throws Exception {
+  @BeforeAll
+  void setup() {
     addLoadClasses(RandomLoadGenerator.class);
     addLoadClasses(AgedLoadGenerator.class);
 
     addFailureClasses(Failures.DatanodeStartStopFailure.class);
     addFailureClasses(Failures.DatanodeRestartFailure.class);
+  }
 
+  @Override
+  public Void call() throws Exception {
+    setup();
     startChaosCluster();
-
     return null;
   }
 
diff --git 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestMiniChaosOzoneCluster.java
 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestMiniChaosOzoneCluster.java
index 53e5b5e042..f06e543353 100644
--- 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestMiniChaosOzoneCluster.java
+++ 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestMiniChaosOzoneCluster.java
@@ -33,9 +33,9 @@
 import org.apache.hadoop.ozone.freon.FreonReplicationOptions;
 import org.apache.hadoop.ozone.loadgenerators.LoadGenerator;
 import org.apache.hadoop.ozone.om.helpers.BucketLayout;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
+import org.apache.ozone.test.tag.Unhealthy;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
 import picocli.CommandLine;
 import picocli.CommandLine.Command;
 import picocli.CommandLine.Option;
@@ -45,12 +45,14 @@
  */
 @Command(description = "Starts IO with MiniOzoneChaosCluster",
     name = "chaos", mixinStandardHelpOptions = true)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@Unhealthy("HDDS-3131")
 public class TestMiniChaosOzoneCluster extends GenericCli {
 
-  private static List<Class<? extends Failures>> failureClasses
+  private final List<Class<? extends Failures>> failureClasses
       = new ArrayList<>();
 
-  private static List<Class<? extends LoadGenerator>> loadClasses
+  private final List<Class<? extends LoadGenerator>> loadClasses
       = new ArrayList<>();
 
   enum AllowedBucketLayouts { FILE_SYSTEM_OPTIMIZED, OBJECT_STORE }
@@ -58,66 +60,69 @@ enum AllowedBucketLayouts { FILE_SYSTEM_OPTIMIZED, 
OBJECT_STORE }
   @Option(names = {"-d", "--num-datanodes", "--numDatanodes"},
       description = "num of datanodes. Full name --numDatanodes will be" +
           " removed in later versions.")
-  private static int numDatanodes = 20;
+  private int numDatanodes = 20;
 
   @Option(names = {"-o", "--num-ozone-manager", "--numOzoneManager"},
       description = "num of ozoneManagers. Full name --numOzoneManager will" +
           " be removed in later versions.")
-  private static int numOzoneManagers = 1;
+  private int numOzoneManagers = 1;
 
   @Option(names = {"-s", "--num-storage-container-manager",
       "--numStorageContainerManagers"},
       description = "num of storageContainerManagers." +
           "Full name --numStorageContainerManagers will" +
           " be removed in later versions.")
-  private static int numStorageContainerManagerss = 1;
+  private int numStorageContainerManagerss = 1;
 
   @Option(names = {"-t", "--num-threads", "--numThreads"},
       description = "num of IO threads. Full name --numThreads will be" +
           " removed in later versions.")
-  private static int numThreads = 5;
+  private int numThreads = 5;
 
   @Option(names = {"-b", "--num-buffers", "--numBuffers"},
       description = "num of IO buffers. Full name --numBuffers will be" +
           " removed in later versions.")
-  private static int numBuffers = 16;
+  private int numBuffers = 16;
 
   @Option(names = {"-m", "--num-minutes", "--numMinutes"},
       description = "total run time. Full name --numMinutes will be " +
           "removed in later versions.")
-  private static int numMinutes = 1440; // 1 day by default
+  private int numMinutes = 1440; // 1 day by default
 
   @Option(names = {"-v", "--num-data-volume", "--numDataVolume"},
       description = "number of datanode volumes to create. Full name " +
           "--numDataVolume will be removed in later versions.")
-  private static int numDataVolumes = 3;
+  private int numDataVolumes = 3;
+
+  @Option(names = {"--initial-delay"},
+      description = "time (in seconds) before first failure event")
+  private int initialDelay = 300; // seconds
 
   @Option(names = {"-i", "--failure-interval", "--failureInterval"},
       description = "time between failure events in seconds. Full name " +
           "--failureInterval will be removed in later versions.")
-  private static int failureInterval = 300; // 5 minute period between 
failures.
+  private int failureInterval = 300; // 5 minute period between failures.
 
   @CommandLine.Mixin
-  private static FreonReplicationOptions freonReplication =
+  private FreonReplicationOptions freonReplication =
           new FreonReplicationOptions();
 
   @Option(names = {"-l", "--layout"},
       description = "Allowed Bucket Layouts: ${COMPLETION-CANDIDATES}")
-  private static AllowedBucketLayouts allowedBucketLayout =
+  private AllowedBucketLayouts allowedBucketLayout =
       AllowedBucketLayouts.FILE_SYSTEM_OPTIMIZED;
 
-  private static MiniOzoneChaosCluster cluster;
-  private static OzoneClient client;
-  private static MiniOzoneLoadGenerator loadGenerator;
+  private MiniOzoneChaosCluster cluster;
+  private OzoneClient client;
+  private MiniOzoneLoadGenerator loadGenerator;
 
-  private static String omServiceId = null;
-  private static String scmServiceId = null;
+  private String omServiceId;
+  private String scmServiceId;
 
   private static final String OM_SERVICE_ID = "ozoneChaosTest";
   private static final String SCM_SERVICE_ID = "scmChaosTest";
 
-  @BeforeAll
-  public static void init() throws Exception {
+  private void init() throws Exception {
     OzoneConfiguration configuration = new OzoneConfiguration();
 
     MiniOzoneChaosCluster.Builder chaosBuilder =
@@ -164,19 +169,19 @@ public static void init() throws Exception {
     loadGenerator = loadBuilder.build();
   }
 
-  static void addFailureClasses(Class<? extends Failures> clz) {
+  void addFailureClasses(Class<? extends Failures> clz) {
     failureClasses.add(clz);
   }
 
-  static void addLoadClasses(Class<? extends LoadGenerator> clz) {
+  void addLoadClasses(Class<? extends LoadGenerator> clz) {
     loadClasses.add(clz);
   }
 
-  static void setNumDatanodes(int nDns) {
+  void setNumDatanodes(int nDns) {
     numDatanodes = nDns;
   }
 
-  static void setNumManagers(int nOms, int numScms, boolean enableHA) {
+  void setNumManagers(int nOms, int numScms, boolean enableHA) {
 
     if (nOms > 1 || enableHA) {
       omServiceId = OM_SERVICE_ID;
@@ -189,26 +194,18 @@ static void setNumManagers(int nOms, int numScms, boolean 
enableHA) {
     numStorageContainerManagerss = numScms;
   }
 
-  /**
-   * Shutdown MiniDFSCluster.
-   */
-  @AfterAll
-  public static void shutdown() {
+  private void shutdown() {
     if (loadGenerator != null) {
       loadGenerator.shutdownLoadGenerator();
     }
 
-    IOUtils.closeQuietly(client);
-
-    if (cluster != null) {
-      cluster.shutdown();
-    }
+    IOUtils.closeQuietly(client, cluster);
   }
 
   public void startChaosCluster() throws Exception {
     try {
       init();
-      cluster.startChaos(failureInterval, failureInterval, TimeUnit.SECONDS);
+      cluster.startChaos(initialDelay, failureInterval, TimeUnit.SECONDS);
       loadGenerator.startIO(numMinutes, TimeUnit.MINUTES);
     } finally {
       shutdown();
@@ -216,8 +213,10 @@ public void startChaosCluster() throws Exception {
   }
 
   @Test
-  public void testReadWriteWithChaosCluster() throws Exception {
-    cluster.startChaos(5, 10, TimeUnit.SECONDS);
-    loadGenerator.startIO(120, TimeUnit.SECONDS);
+  void test() throws Exception {
+    initialDelay = 5; // seconds
+    failureInterval = 10; // seconds
+    numMinutes = 2;
+    startChaosCluster();
   }
 }
diff --git 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestOzoneManagerMiniChaosOzoneCluster.java
 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestOzoneManagerMiniChaosOzoneCluster.java
index e7e024d49a..662e3f4b7c 100644
--- 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestOzoneManagerMiniChaosOzoneCluster.java
+++ 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestOzoneManagerMiniChaosOzoneCluster.java
@@ -23,6 +23,8 @@
 import org.apache.hadoop.ozone.loadgenerators.AgedDirLoadGenerator;
 import org.apache.hadoop.ozone.loadgenerators.NestedDirLoadGenerator;
 import org.apache.hadoop.ozone.loadgenerators.RandomDirLoadGenerator;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
 import picocli.CommandLine;
 
 /**
@@ -33,11 +35,12 @@
     description = "run chaos cluster across Ozone Managers",
     mixinStandardHelpOptions = true,
     versionProvider = HddsVersionProvider.class)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class TestOzoneManagerMiniChaosOzoneCluster extends
     TestMiniChaosOzoneCluster implements Callable<Void> {
 
-  @Override
-  public Void call() throws Exception {
+  @BeforeAll
+  void setup() {
     setNumManagers(3, 1, true);
     setNumDatanodes(3);
 
@@ -47,7 +50,11 @@ public Void call() throws Exception {
 
     addFailureClasses(Failures.OzoneManagerRestartFailure.class);
     addFailureClasses(Failures.OzoneManagerStartStopFailure.class);
+  }
 
+  @Override
+  public Void call() throws Exception {
+    setup();
     startChaosCluster();
     return null;
   }
diff --git 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerMiniChaosOzoneCluster.java
 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerMiniChaosOzoneCluster.java
index bbaa00130c..bf0ea95663 100644
--- 
a/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerMiniChaosOzoneCluster.java
+++ 
b/hadoop-ozone/fault-injection-test/mini-chaos-tests/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerMiniChaosOzoneCluster.java
@@ -23,6 +23,8 @@
 import org.apache.hadoop.ozone.loadgenerators.AgedDirLoadGenerator;
 import org.apache.hadoop.ozone.loadgenerators.NestedDirLoadGenerator;
 import org.apache.hadoop.ozone.loadgenerators.RandomDirLoadGenerator;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
 import picocli.CommandLine;
 
 /**
@@ -33,11 +35,12 @@
     description = "run chaos cluster across Storage Container Managers",
     mixinStandardHelpOptions = true,
     versionProvider = HddsVersionProvider.class)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class TestStorageContainerManagerMiniChaosOzoneCluster extends
     TestMiniChaosOzoneCluster implements Callable<Void> {
 
-  @Override
-  public Void call() throws Exception {
+  @BeforeAll
+  void setup() {
     setNumManagers(3, 3, true);
     setNumDatanodes(3);
 
@@ -47,7 +50,11 @@ public Void call() throws Exception {
 
     addFailureClasses(Failures.StorageContainerManagerRestartFailure.class);
     addFailureClasses(Failures.StorageContainerManagerStartStopFailure.class);
+  }
 
+  @Override
+  public Void call() throws Exception {
+    setup();
     startChaosCluster();
     return null;
   }


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

Reply via email to