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

robbie pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 54c1ae630c ARTEMIS-4509: fail if LibaioContext check fouls before 
class, nicer in CI than just logging and failing after anyway
54c1ae630c is described below

commit 54c1ae630cffea20cfcce42d9d7e5b7834ffa6f0
Author: Robbie Gemmell <[email protected]>
AuthorDate: Thu Nov 16 10:43:07 2023 +0000

    ARTEMIS-4509: fail if LibaioContext check fouls before class, nicer in CI 
than just logging and failing after anyway
---
 .../artemis/tests/util/ActiveMQTestBase.java       | 39 ++++++++++++++--------
 1 file changed, 25 insertions(+), 14 deletions(-)

diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
index 2e13383dc5..f3816afde7 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
@@ -220,7 +220,7 @@ public abstract class ActiveMQTestBase extends Assert {
    protected static final long WAIT_TIMEOUT = 30000;
 
    private static String testClassName = "not-yet-set";
-   private static String failingTotalMaxIoMessage;
+   private static String previouslyFailedTotalMaxIoMessage;
 
    // There is a verification about thread leakages. We only fail a single 
thread when this happens
    private static Set<Thread> alreadyFailedThread = new HashSet<>();
@@ -315,7 +315,6 @@ public abstract class ActiveMQTestBase extends Assert {
    public TestRule watcher = new TestWatcher() {
       @Override
       protected void starting(Description description) {
-         testClassName = description.getClassName();
          logger.info("**** start #test {}() ***", description.getMethodName());
       }
 
@@ -325,6 +324,14 @@ public abstract class ActiveMQTestBase extends Assert {
       }
    };
 
+   @ClassRule
+   public static TestRule classWatcher = new TestWatcher() {
+      @Override
+      protected void starting(Description description) {
+         testClassName = description.getClassName();
+      }
+   };
+
    // Static variable used by dropDerby
    private static final String EXPECTED_DERBY_DROP_STATE = "08006";
 
@@ -2225,20 +2232,20 @@ public abstract class ActiveMQTestBase extends Assert {
 
    @BeforeClass
    public static void checkLibaioBeforeClass() throws Throwable {
-      if (failingTotalMaxIoMessage != null) {
+      if (previouslyFailedTotalMaxIoMessage != null) {
          // Fail immediately if this is already set.
-         fail(failingTotalMaxIoMessage);
+         fail(previouslyFailedTotalMaxIoMessage);
       }
 
       long totalMaxIO = LibaioContext.getTotalMaxIO();
       if (totalMaxIO != 0) {
-         logger.error("LibaioContext TotalMaxIO > 0 before beginning test 
class. Issue presumably arose in a preceding class (not possible to be sure of 
which here). TotalMaxIO = {}", totalMaxIO);
+         failDueToLibaioContextCheck("LibaioContext TotalMaxIO > 0 leak 
detected BEFORE class %s, TotalMaxIO=%s. Check prior test classes for issue 
(not possible to be sure of which here).", totalMaxIO);
       }
    }
 
    @AfterClass
-   public static void checkLibaio() throws Throwable {
-      if (failingTotalMaxIoMessage != null) {
+   public static void checkLibaioAfterClass() throws Throwable {
+      if (previouslyFailedTotalMaxIoMessage != null) {
          // Test class was already failed if this is set, nothing to do here.
          return;
       }
@@ -2246,16 +2253,20 @@ public abstract class ActiveMQTestBase extends Assert {
       if (!Wait.waitFor(() -> LibaioContext.getTotalMaxIO() == 0)) {
          long totalMaxIO = LibaioContext.getTotalMaxIO();
 
-         // Set messsage to fail subsequent runs with
-         failingTotalMaxIoMessage = String.format("Aborting, LibaioContext 
TotalMaxIO > 0 issue previously detected by test class %s(), see its output.", 
testClassName);
-
-         // Now fail this run
-         String message = String.format("LibaioContext TotalMaxIO > 0 leak 
detected after class %s(), TotalMaxIO=%s(). Check output to determine if 
occurred before/during.", testClassName, totalMaxIO);
-         logger.error(message);
-         Assert.fail(message);
+         failDueToLibaioContextCheck("LibaioContext TotalMaxIO > 0 leak 
detected AFTER class %s, TotalMaxIO=%s.", totalMaxIO);
       }
    }
 
+   private static void failDueToLibaioContextCheck(String 
currentFailureMessageFormat, long totalMaxIO) {
+      // Set message to immediately-fail subsequent tests with
+      previouslyFailedTotalMaxIoMessage = String.format("Aborting, 
LibaioContext TotalMaxIO > 0 issue previously detected by test class %s, see 
its output.", testClassName);
+
+      // Now fail this run
+      String message = String.format(currentFailureMessageFormat, 
testClassName, totalMaxIO);
+      logger.error(message);
+      Assert.fail(message);
+   }
+
    private void checkFilesUsage() throws Exception {
       int invmSize = InVMRegistry.instance.size();
       if (invmSize > 0) {

Reply via email to