You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/11/19 12:38:01 UTC

(causeway) branch 3647-concurrent.testing created (now 02bc831824)

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

ahuber pushed a change to branch 3647-concurrent.testing
in repository https://gitbox.apache.org/repos/asf/causeway.git


      at 02bc831824 CAUSEWAY-3647: experimental commit

This branch includes the following new commits:

     new 02bc831824 CAUSEWAY-3647: experimental commit

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(causeway) 01/01: CAUSEWAY-3647: experimental commit

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch 3647-concurrent.testing
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 02bc83182421d072b1b557e01467a52a99cbf850
Author: andi-huber <ah...@apache.org>
AuthorDate: Sun Nov 19 13:37:55 2023 +0100

    CAUSEWAY-3647: experimental commit
---
 .../_testing/MetaModelContext_forTesting.java      |  2 +-
 .../core/metamodel/context/MetaModelContext.java   | 67 ++++++++++++++++++++--
 .../metamodel/context/MetaModelContextFactory.java | 43 +++++++++++++-
 .../context/MetaModelContext_usingSpring.java      |  2 +-
 .../testdomain/interact/ActionInteractionTest.java |  4 --
 ...InteractionTest_notUsingAllowSafeSemantics.java |  4 --
 ...ionInteractionTest_usingAllowSafeSemantics.java |  4 --
 .../interact/CollectionInteractionTest.java        |  4 --
 .../testdomain/interact/CommandArgumentTest.java   |  4 --
 .../testdomain/interact/NewParameterModelTest.java |  4 --
 .../testdomain/interact/PropertyBindingTest.java   |  4 --
 .../interact/PropertyInteractionTest.java          |  4 --
 .../interact/ScalarParamNegotiationTest.java       |  4 --
 .../interact/WrapperInteractionTest.java           |  4 --
 .../interact/WrapperInteractionTest2.java          |  4 --
 .../interact/WrapperInteractionTest3.java          |  4 --
 .../interact/WrapperInteractionTest4.java          |  4 --
 .../applib/CausewayInteractionHandler.java         |  6 ++
 18 files changed, 110 insertions(+), 62 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java
index 32af2755b3..bb47c58a5d 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -119,7 +119,7 @@ extends MetaModelContext {
             @Override
             public MetaModelContext_forTesting build() {
                 var mmc = super.build();
-                MetaModelContext.INSTANCE_HOLDER.set(mmc);
+                MetaModelContext.replace(mmc);
                 return mmc;
             }
         };
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext.java
index 5e070ace91..bd954638a2 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext.java
@@ -20,11 +20,15 @@ package org.apache.causeway.core.metamodel.context;
 
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Supplier;
 
 import org.springframework.lang.Nullable;
 
+import org.apache.causeway.commons.internal.assertions._Assert;
 import org.apache.causeway.commons.internal.exceptions._Exceptions;
 
+import lombok.RequiredArgsConstructor;
+
 /**
  * @since 2.0
  */
@@ -37,15 +41,14 @@ public abstract class MetaModelContext implements HasMetaModelContext {
 
     // -- INSTANCE (SINGLETON)
 
-    public static final AtomicReference<MetaModelContext> INSTANCE_HOLDER = new AtomicReference<>();
+    public static Optional<MetaModelContext> instance() {
+        return Optional.ofNullable(INSTANCE_HOLDER_REF.get())
+                .map(Supplier::get);
+    }
 
     @Nullable
     public static MetaModelContext instanceNullable() {
-        return INSTANCE_HOLDER.get();
-    }
-
-    public static Optional<MetaModelContext> instance() {
-        return Optional.ofNullable(instanceNullable());
+        return instance().orElse(null);
     }
 
     public static MetaModelContext instanceElseFail() {
@@ -53,4 +56,56 @@ public abstract class MetaModelContext implements HasMetaModelContext {
                 .orElseThrow(()->_Exceptions.noSuchElement("MetaModelContext not yet or no longer available."));
     }
 
+    // -- HELPER
+
+    protected static interface Holder extends Supplier<MetaModelContext> { }
+
+    @RequiredArgsConstructor
+    private static class SimpleHolder implements Holder {
+        private final MetaModelContext mmc;
+        @Override public MetaModelContext get() { return mmc; }
+    }
+
+    //TODO flesh out
+    @RequiredArgsConstructor
+    private static class CachedHolder implements Holder {
+        private final MetaModelContext mmc;
+        @Override public MetaModelContext get() { return mmc; }
+    }
+
+    protected static final AtomicReference<Holder> INSTANCE_HOLDER_REF = new AtomicReference<>();
+
+    /**
+     * Internal: clears the singleton instance reference
+     */
+    protected static void clear() {
+        INSTANCE_HOLDER_REF.set(null);
+    }
+
+    /**
+     * Internal: don't use when testing with Spring's ContextCache!
+     * <p>
+     * Override not allowed.
+     */
+    protected static void set(final MetaModelContext mmc) {
+        _Assert.assertNull(MetaModelContext.INSTANCE_HOLDER_REF.get(),
+                ()->"MetaModelContext singelton is already instantiated, override is not allowed!");
+        replace(mmc);
+    }
+
+    /**
+     * Internal: don't use when testing with Spring's ContextCache!
+     * <p>
+     * Override allowed.
+     */
+    protected static void replace(final MetaModelContext mmc) {
+        MetaModelContext.INSTANCE_HOLDER_REF.set(new SimpleHolder(mmc));
+    }
+
+    protected static void setIfAbsent(final MetaModelContext mmc) {
+        if(MetaModelContext.INSTANCE_HOLDER_REF.get()==null) {
+            MetaModelContext.INSTANCE_HOLDER_REF.set(new SimpleHolder(mmc));
+        }
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContextFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContextFactory.java
index 80cc19efb2..057230a879 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContextFactory.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContextFactory.java
@@ -27,6 +27,8 @@ import org.springframework.context.annotation.Primary;
 import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
 import org.apache.causeway.core.metamodel.CausewayModuleCoreMetamodel;
 
+import lombok.SneakyThrows;
+
 /**
  *
  * @since 2.0
@@ -39,9 +41,46 @@ public class MetaModelContextFactory {
     @Primary
     @Bean(destroyMethod = "onDestroy")
     public MetaModelContext metaModelContext(final CausewaySystemEnvironment systemEnvironment) {
-        var mmc = new MetaModelContext_usingSpring(systemEnvironment.getIocContainer());
-        MetaModelContext.INSTANCE_HOLDER.set(mmc);
+
+        var ioc = systemEnvironment.getIocContainer();
+        var mmc = new MetaModelContext_usingSpring(ioc);
+
+        if(isIntegrationTesting()) {
+
+            var t = Thread.currentThread();
+
+            System.err.printf("[%s] isIntegrationTesting %s%n", t.getName(), "-> true");
+            //ioc.getSingletonElseFail(ContextCache.class);
+
+            //MetaModelContext.Holder holder = ()->ioc.getSingletonElseFail(MetaModelContext.class);
+            //MetaModelContext.INSTANCE_HOLDER_REF.set(holder);
+
+            MetaModelContext.replace(mmc);
+
+            return mmc;
+        }
+
+        MetaModelContext.set(mmc);
         return mmc;
     }
 
+    // -- HELPER
+
+    /**
+     * Whether we find Spring's ContextCache on the class path.
+     */
+    private static boolean isIntegrationTesting() {
+        try {
+            contextCacheClass();
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    @SneakyThrows
+    private static Class<?> contextCacheClass() {
+        return Class.forName("org.springframework.test.context.cache.ContextCache");
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java
index c2bcc9db9f..71d45e0d49 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java
@@ -68,7 +68,7 @@ class MetaModelContext_usingSpring extends MetaModelContext {
      * {@link MetaModelContextFactory#metaModelContext(CausewaySystemEnvironment)}.
      */
     void onDestroy() {
-        MetaModelContext.INSTANCE_HOLDER.set(null);
+        MetaModelContext.clear();
     }
 
     @Getter(lazy=true)
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest.java
index c801d70126..99f2c35972 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest.java
@@ -23,9 +23,6 @@ import java.util.function.UnaryOperator;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -68,7 +65,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class ActionInteractionTest extends InteractionTestAbstract {
 
     @Test
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java
index 9475c50f25..23ab2f7923 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java
@@ -24,9 +24,6 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.stereotype.Service;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -61,7 +58,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class ActionInteractionTest_notUsingAllowSafeSemantics extends InteractionTestAbstract {
 
     @Service
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java
index b9b2cfac5e..8a092a8fe3 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java
@@ -24,9 +24,6 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.stereotype.Service;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -62,7 +59,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class ActionInteractionTest_usingAllowSafeSemantics extends InteractionTestAbstract {
 
     @Service
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CollectionInteractionTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CollectionInteractionTest.java
index 29494223f6..fe45b12a1d 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CollectionInteractionTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CollectionInteractionTest.java
@@ -23,9 +23,6 @@ import java.util.stream.Collectors;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -58,7 +55,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class CollectionInteractionTest extends InteractionTestAbstract {
 
     @Test
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CommandArgumentTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CommandArgumentTest.java
index 46ebd887f1..b81b0f34da 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CommandArgumentTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/CommandArgumentTest.java
@@ -32,9 +32,6 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -67,7 +64,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class CommandArgumentTest extends InteractionTestAbstract {
 
     @XmlRootElement(name = "root")
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/NewParameterModelTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/NewParameterModelTest.java
index cbeaa7730b..949c5aad98 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/NewParameterModelTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/NewParameterModelTest.java
@@ -24,9 +24,6 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -65,7 +62,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class NewParameterModelTest extends InteractionTestAbstract {
 
     //InteractionNpmDemo_biArgDisabled#validateAct()
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyBindingTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyBindingTest.java
index 0a02c48e6a..6633a31e79 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyBindingTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyBindingTest.java
@@ -21,9 +21,6 @@ package org.apache.causeway.testdomain.interact;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -55,7 +52,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class PropertyBindingTest extends InteractionTestAbstract {
 
     PropertyNegotiationModel proposalA;
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyInteractionTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyInteractionTest.java
index 22793c3f79..b0c88e0b63 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyInteractionTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/PropertyInteractionTest.java
@@ -20,9 +20,6 @@ package org.apache.causeway.testdomain.interact;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -56,7 +53,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class PropertyInteractionTest extends InteractionTestAbstract {
 
     @Test
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ScalarParamNegotiationTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ScalarParamNegotiationTest.java
index 645aa2d0de..68787c3749 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ScalarParamNegotiationTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/ScalarParamNegotiationTest.java
@@ -21,9 +21,6 @@ package org.apache.causeway.testdomain.interact;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -55,7 +52,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class ScalarParamNegotiationTest extends InteractionTestAbstract {
 
     private static enum NegotiationParams {
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest.java
index e65bd28d48..ef9e60fb96 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest.java
@@ -22,9 +22,6 @@ import javax.inject.Inject;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -64,7 +61,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class WrapperInteractionTest
 extends InteractionTestAbstract {
 
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest2.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest2.java
index 83a34920e0..95083dd2b9 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest2.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest2.java
@@ -22,9 +22,6 @@ import javax.inject.Inject;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -61,7 +58,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class WrapperInteractionTest2
 extends InteractionTestAbstract {
 
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest3.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest3.java
index 41daaf08b3..ae7331385e 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest3.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest3.java
@@ -27,9 +27,6 @@ import javax.inject.Inject;
 import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -68,7 +65,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class WrapperInteractionTest3
 extends InteractionTestAbstract {
 
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest4.java b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest4.java
index 5dbf1ab64e..3cd4646d27 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest4.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/causeway/testdomain/interact/WrapperInteractionTest4.java
@@ -27,9 +27,6 @@ import javax.inject.Inject;
 import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.annotation.DirtiesContext.MethodMode;
 import org.springframework.test.context.TestPropertySource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -67,7 +64,6 @@ import lombok.val;
     CausewayPresets.SilenceMetaModel,
     CausewayPresets.SilenceProgrammingModel
 })
-@DirtiesContext(methodMode = MethodMode.BEFORE_METHOD, classMode = ClassMode.BEFORE_CLASS)
 class WrapperInteractionTest4
 extends InteractionTestAbstract {
 
diff --git a/testing/integtestsupport/applib/src/main/java/org/apache/causeway/testing/integtestsupport/applib/CausewayInteractionHandler.java b/testing/integtestsupport/applib/src/main/java/org/apache/causeway/testing/integtestsupport/applib/CausewayInteractionHandler.java
index d0aefbc1b4..5533677998 100644
--- a/testing/integtestsupport/applib/src/main/java/org/apache/causeway/testing/integtestsupport/applib/CausewayInteractionHandler.java
+++ b/testing/integtestsupport/applib/src/main/java/org/apache/causeway/testing/integtestsupport/applib/CausewayInteractionHandler.java
@@ -31,6 +31,9 @@ public class CausewayInteractionHandler implements BeforeEachCallback, AfterEach
 
     @Override
     public void beforeEach(final ExtensionContext extensionContext) throws Exception {
+
+        System.err.printf("CausewayInteractionHandler %s%n", "beforeEach");
+
         _Helper.getInteractionFactory(extensionContext)
         .ifPresent(interactionService->
             _Helper
@@ -42,6 +45,9 @@ public class CausewayInteractionHandler implements BeforeEachCallback, AfterEach
 
     @Override
     public void afterEach(final ExtensionContext extensionContext) throws Exception {
+
+        System.err.printf("CausewayInteractionHandler %s%n", ".afterEach");
+
         _Helper.getInteractionFactory(extensionContext)
         .ifPresent(InteractionService::closeInteractionLayers);
     }