Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SuppressWarnings("resource")
Expand All @@ -33,14 +34,31 @@ public abstract class AbstractIntegrationTest {
.withExposedPorts(6379);

static {
POSTGRES.start();
KAFKA.start();
REDIS.start();
try {
POSTGRES.start();
KAFKA.start();
REDIS.start();
} catch (RuntimeException ex) {
safeStop(REDIS);
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
REDIS.stop();
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(REDIS);
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
}

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SuppressWarnings("resource")
Expand All @@ -28,12 +29,28 @@ public abstract class AbstractIntegrationTest {
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.0"));

static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
}
Comment on lines +46 to 54

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider minimal diagnostic signal for suppressed stop failures.

safeStop currently swallows all exceptions silently. Add a low-noise debug/warn log (without sensitive payloads) to aid flaky CI triage.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@blockchain-custody/blockchain-custody/src/integration-test/java/com/stablecoin/payments/custody/AbstractIntegrationTest.java`
around lines 46 - 54, safeStop currently swallows all exceptions; add a
low-noise diagnostic log so CI flakes can be triaged: introduce or reuse an
SLF4J Logger on AbstractIntegrationTest and change the catch to catch (Exception
e) { logger.debug("Container.stop() failed (best-effort cleanup): {}",
e.getMessage()); } (or logger.warn with the message only for higher visibility)
to avoid logging sensitive payloads but preserve the exception message/context
for Startable container stop failures.


@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SuppressWarnings("resource")
Expand All @@ -28,12 +29,28 @@ public abstract class AbstractIntegrationTest {
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.0"));

static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}
Comment on lines 31 to +44

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Register the shutdown hook before startup to guarantee last-resort cleanup.

At Line 38, rethrow exits the static block, so Lines 40-43 never execute. If a stop attempt in the catch path fails, there is no shutdown hook fallback and containers can leak for the JVM lifetime.

Proposed fix
 static {
+    Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+        safeStop(KAFKA);
+        safeStop(POSTGRES);
+    }, "testcontainers-shutdown"));
+
     try {
         POSTGRES.start();
         KAFKA.start();
     } catch (RuntimeException ex) {
         safeStop(KAFKA);
         safeStop(POSTGRES);
         throw ex;
     }
-    Runtime.getRuntime().addShutdownHook(new Thread(() -> {
-        safeStop(KAFKA);
-        safeStop(POSTGRES);
-    }, "testcontainers-shutdown"));
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}
static {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@compliance-travel-rule/compliance-travel-rule/src/integration-test/java/com/stablecoin/payments/compliance/AbstractIntegrationTest.java`
around lines 31 - 44, Register the shutdown hook before starting containers so
it always exists as a last-resort cleanup: move the
Runtime.getRuntime().addShutdownHook(...) call to before the
POSTGRES.start()/KAFKA.start() calls in the static initializer, then attempt to
start POSTGRES and KAFKA inside the try block; keep the catch that calls
safeStop(KAFKA) and safeStop(POSTGRES) and rethrows the exception, but the
shutdown hook (using the existing safeStop method) will now always be registered
even if startup throws. Ensure you reference the same symbols: the static
initializer, Runtime.getRuntime().addShutdownHook, POSTGRES, KAFKA, and
safeStop.


private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
Comment on lines +46 to +53

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Avoid fully silent stop failures; emit minimal infra diagnostics.

Suppressing cleanup exceptions is fine, but fully silent failures make container lifecycle flakiness hard to diagnose. Log container type + exception class/message (no payload/PII).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@compliance-travel-rule/compliance-travel-rule/src/integration-test/java/com/stablecoin/payments/compliance/AbstractIntegrationTest.java`
around lines 46 - 53, The safeStop(Startable container) method currently
swallows all exceptions; update the catch to log minimal infra diagnostics
(container type and exception class/message) while still treating it as
best-effort cleanup: catch Exception e and emit a single-line diagnostic using
your project's logger (or System.err if no logger available) that includes
container.getClass().getSimpleName(), e.getClass().getSimpleName(), and a
trimmed e.getMessage() (avoid stack traces or payload/PII), then continue
without rethrowing; keep the existing null check and best-effort semantics
around container.stop().

}

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SuppressWarnings("resource")
Expand All @@ -28,12 +29,28 @@ public abstract class AbstractIntegrationTest {
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.0"));

static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
Comment on lines +46 to +53

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Do not fully suppress stop failures in safeStop.

Line 51 currently discards cleanup exceptions entirely; when container teardown fails in CI, this hides the root cause and makes resource-leak triage difficult. Log at least a WARN with container type and exception.

Suggested patch
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testcontainers.lifecycle.Startable;
@@
 public abstract class AbstractIntegrationTest {
+    private static final Logger log = LoggerFactory.getLogger(AbstractIntegrationTest.class);
@@
     private static void safeStop(Startable container) {
         try {
             if (container != null) {
                 container.stop();
             }
-        } catch (Exception ignored) {
-            // best-effort cleanup
+        } catch (Exception ex) {
+            log.warn("Best-effort Testcontainers cleanup failed for {}", 
+                    container != null ? container.getClass().getSimpleName() : "unknown", ex);
         }
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@fiat-off-ramp/fiat-off-ramp/src/integration-test/java/com/stablecoin/payments/offramp/AbstractIntegrationTest.java`
around lines 46 - 53, The safeStop method currently swallows all exceptions;
update it to log a WARN instead of discarding so teardown failures are visible:
add an SLF4J Logger (e.g., private static final Logger log =
LoggerFactory.getLogger(AbstractIntegrationTest.class)) and in the catch block
call log.warn("Failed to stop container of type {}", container != null ?
container.getClass().getName() : "null", e) (or similar), ensuring you reference
the Startable container and container.stop() invocation so the logged message
includes the container type and the caught exception stack trace for CI triage.

}

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SuppressWarnings("resource")
Expand All @@ -28,12 +29,28 @@ public abstract class AbstractIntegrationTest {
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.0"));

static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
}
Comment on lines +46 to 54

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider logging suppressed exceptions.

Silently swallowing exceptions in safeStop makes container teardown failures invisible. A WARN or DEBUG log would aid troubleshooting without breaking the best-effort semantics.

♻️ Proposed improvement
+    private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(AbstractIntegrationTest.class);
+
     private static void safeStop(Startable container) {
         try {
             if (container != null) {
                 container.stop();
             }
-        } catch (Exception ignored) {
-            // best-effort cleanup
+        } catch (Exception ex) {
+            LOG.warn("Best-effort container stop failed: {}", ex.getMessage());
         }
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
}
private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(AbstractIntegrationTest.class);
private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ex) {
LOG.warn("Best-effort container stop failed: {}", ex.getMessage());
}
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@fiat-on-ramp/fiat-on-ramp/src/integration-test/java/com/stablecoin/payments/onramp/AbstractIntegrationTest.java`
around lines 46 - 54, safeStop currently swallows exceptions silently; update it
to log the caught Exception (at WARN or DEBUG) while preserving best-effort
semantics: in the catch block of safeStop(Startable container) call your
test-class logger (e.g., a private static Logger or SLF4J Logger named logger in
AbstractIntegrationTest) and log a concise message including the exception
(e.g., "Failed to stop container" with the exception) instead of ignoring it, so
container.stop() failures are visible without changing the no-throw behavior.


@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SuppressWarnings("resource")
Expand All @@ -30,12 +31,28 @@ public abstract class AbstractIntegrationTest {
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.0"));

static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
}
Comment on lines +48 to 56

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider logging swallowed exceptions for debuggability.

Silently swallowing exceptions is acceptable for best-effort cleanup, but a WARN-level log would aid post-mortem analysis without breaking the teardown chain.

♻️ Optional: add logging for suppressed exceptions
+    private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(AbstractIntegrationTest.class);
+
     private static void safeStop(Startable container) {
         try {
             if (container != null) {
                 container.stop();
             }
-        } catch (Exception ignored) {
-            // best-effort cleanup
+        } catch (Exception ex) {
+            LOG.warn("Best-effort container stop failed", ex);
         }
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@fx-liquidity-engine/fx-liquidity-engine/src/integration-test/java/com/stablecoin/payments/fx/AbstractIntegrationTest.java`
around lines 48 - 56, The safeStop method currently swallows exceptions; update
safeStop(Startable container) to log any caught Exception at WARN level instead
of completely ignoring it: obtain or add a logger (e.g., a private static final
org.slf4j.Logger LOGGER =
LoggerFactory.getLogger(AbstractIntegrationTest.class)) and inside the catch
block call LOGGER.warn("Failed to stop container during test teardown", e) (or
similar) so container.stop() failures are recorded for post-mortem while
retaining best-effort cleanup semantics.


@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SuppressWarnings("resource")
Expand All @@ -28,12 +29,28 @@ public abstract class AbstractIntegrationTest {
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.0"));

static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
}
Comment on lines +46 to 54

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Keep teardown failures visible.

Line 51 suppresses the stop exception completely. If Docker/Testcontainers cleanup fails, leftover containers become much harder to diagnose in CI because the failure never surfaces. Keep the best-effort semantics, but emit a warning with a fixed container label before continuing. The same helper was copied into the sibling AbstractIntegrationTest classes in this PR.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@ledger-accounting/ledger-accounting/src/integration-test/java/com/stablecoin/payments/ledger/AbstractIntegrationTest.java`
around lines 46 - 54, The safeStop helper currently swallows exceptions; change
it to keep best-effort cleanup but emit a warning when stop() fails: in
AbstractIntegrationTest.safeStop(Startable container) catch Exception e and call
the test logger (or a static logger in the class) to warn including a fixed
container label (e.g. "testcontainers") and the exception details before
returning (do not rethrow), so teardown failures are visible in CI; apply the
same change to the other copied AbstractIntegrationTest helpers.


@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

import java.util.UUID;
Expand Down Expand Up @@ -46,16 +47,34 @@ public abstract class AbstractIntegrationTest {
.withExposedPorts(6379);

static {
POSTGRES.start();
KAFKA.start();
MAILPIT.start();
REDIS.start();
try {
POSTGRES.start();
KAFKA.start();
MAILPIT.start();
REDIS.start();
} catch (RuntimeException ex) {
safeStop(REDIS);
safeStop(MAILPIT);
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
REDIS.stop();
MAILPIT.stop();
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(REDIS);
safeStop(MAILPIT);
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
}

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.KafkaContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.lifecycle.Startable;
import org.testcontainers.utility.DockerImageName;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
Expand All @@ -28,12 +29,28 @@ public abstract class AbstractIntegrationTest {
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.0"));

static {
POSTGRES.start();
KAFKA.start();
try {
POSTGRES.start();
KAFKA.start();
} catch (RuntimeException ex) {
safeStop(KAFKA);
safeStop(POSTGRES);
throw ex;
}
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
KAFKA.stop();
POSTGRES.stop();
}));
safeStop(KAFKA);
safeStop(POSTGRES);
}, "testcontainers-shutdown"));
}

private static void safeStop(Startable container) {
try {
if (container != null) {
container.stop();
}
} catch (Exception ignored) {
// best-effort cleanup
}
Comment on lines +46 to +53

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Avoid fully silent stop failures in safeStop.

Suppressing exceptions without any trace makes flaky container teardown harder to triage. Keep best-effort semantics, but emit a low-level log with container type.

Proposed diff
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.boot.test.context.SpringBootTest;
@@
 public abstract class AbstractIntegrationTest {
+    private static final Logger log = LoggerFactory.getLogger(AbstractIntegrationTest.class);
@@
     private static void safeStop(Startable container) {
         try {
             if (container != null) {
                 container.stop();
             }
-        } catch (Exception ignored) {
-            // best-effort cleanup
+        } catch (Exception ex) {
+            log.debug("Best-effort Testcontainers stop failed for {}", 
+                    container == null ? "unknown" : container.getClass().getSimpleName(), ex);
         }
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@merchant-onboarding/merchant-onboarding/src/integration-test/java/com/stablecoin/payments/merchant/onboarding/AbstractIntegrationTest.java`
around lines 46 - 53, The safeStop method currently swallows all exceptions;
update it to keep best-effort semantics but log failures at a low level: catch
Exception e and call a logger (e.g., LOGGER.warn or LOGGER.debug) with the
container's type (container.getClass().getName()) and the exception so teardown
failures are visible; if no logger exists in AbstractIntegrationTest, add a
private static final Logger (e.g.,
LoggerFactory.getLogger(AbstractIntegrationTest.class)) and use it in safeStop
to emit the message while still not rethrowing the exception.

}

@DynamicPropertySource
Expand Down
Loading
Loading