You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/09/26 12:40:44 UTC

[isis] branch v2 updated: ISIS-2158: introduces annotations @Incubating + @Smoketest

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

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/v2 by this push:
     new 7a431c1  ISIS-2158: introduces annotations @Incubating + @Smoketest
7a431c1 is described below

commit 7a431c1865ae5fa2deb6c726b12c16ee3aa0d5a2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 26 14:40:34 2019 +0200

    ISIS-2158: introduces annotations @Incubating + @Smoketest
    
    - annotations only visible to tests within the 'smoketests' module
    - @Smoketest .. used on every smoketest class (allows meta annotations)
    - @Incubating .. disables test-classes with surefire, but not in IDE
    
    fixes the 'smoketests' maven build (when surefire is enabled)
---
 .../org/apache/isis/testdomain/Incubating.java     | 39 ++++++++++++++++++++++
 .../java/org/apache/isis/testdomain/Smoketest.java | 39 ++++++++++++++++++++++
 .../testdomain/auditing/AuditerServiceTest.java    |  2 ++
 .../bootstrapping/JdoBootstrappingTest.java        |  2 ++
 .../JdoBootstrappingTest_usingFixtures.java        |  2 ++
 .../SpringServiceProvisioningTest.java             |  2 ++
 .../commandexecution/BackgroundExecutionTest.java  |  2 ++
 .../testdomain/commandexecution/WrapperTest.java   |  2 ++
 .../DomainModelTest_usingBadDomain.java            | 12 +++++++
 .../DomainModelTest_usingGoodDomain.java           |  2 ++
 .../isis/testdomain/ldap/LdapEmbeddedServer.java   |  4 +--
 .../testdomain/ldap/LdapEmbeddedServerTest.java    |  3 ++
 .../isis/testdomain/ldap/LdapServerService.java    | 13 +++++++-
 .../publishing/PublisherServiceTest.java           |  5 ++-
 .../isis/testdomain/shiro/ShiroLdapTest.java       |  2 ++
 .../isis/testdomain/shiro/ShiroSecmanLdapTest.java | 20 ++++++-----
 .../shiro/ShiroSecmanLdap_restfulStressTest.java   | 35 +++++++++++++------
 .../isis/testdomain/shiro/ShiroSecmanTest.java     |  3 ++
 .../isis/testdomain/shiro/ShiroSimpleTest.java     |  3 ++
 .../testdomain/timestamping/TimestampingTest.java  |  2 ++
 .../transactions/TransactionRollbackTest.java      |  2 ++
 .../TransactionRollbackTest_withTransactional.java | 22 ++++++------
 22 files changed, 183 insertions(+), 35 deletions(-)

diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/Incubating.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/Incubating.java
new file mode 100644
index 0000000..4b6fec7
--- /dev/null
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/Incubating.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.testdomain;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
+
+/**
+ * To be used on test classes, that are not considered to produce stable results (incubating).
+ * @deprecated not deprecated, but a trick to signal test classes that need attention
+ */
+@Target({ ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@DisabledIfSystemProperty(named = "surefire.real.class.path", matches = ".*surefire.*")
+@Documented
+public @interface Incubating {
+
+}
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/Smoketest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/Smoketest.java
new file mode 100644
index 0000000..66a969b
--- /dev/null
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/Smoketest.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.testdomain;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.DirtiesContext.ClassMode;
+
+/**
+ * To be used on test classes, that are not considered to produce stable results (incubating).
+ */
+@Target({ ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
+@Documented
+public @interface Smoketest {
+
+}
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
index af1cdad..a478f24 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
@@ -36,6 +36,7 @@ import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.config.IsisPresets;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
 import org.apache.isis.runtime.system.context.IsisContext;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.Book;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
@@ -45,6 +46,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class, 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest.java
index 40076c0..2b241e7 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest.java
@@ -39,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.config.IsisPresets;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.Book;
 import org.apache.isis.testdomain.jdo.Inventory;
@@ -46,6 +47,7 @@ import org.apache.isis.testdomain.jdo.Product;
 
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class,
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest_usingFixtures.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest_usingFixtures.java
index 6cd2507..bbb5451 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest_usingFixtures.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/JdoBootstrappingTest_usingFixtures.java
@@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.config.IsisPresets;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.Inventory;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
@@ -37,6 +38,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class, 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
index 534a25f..49c1019 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
@@ -36,10 +36,12 @@ import org.apache.isis.commons.internal.ioc.BeanAdapter;
 import org.apache.isis.commons.internal.resources._Json;
 import org.apache.isis.commons.internal.resources._Resources;
 import org.apache.isis.runtime.system.context.IsisContext;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class, 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/BackgroundExecutionTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/BackgroundExecutionTest.java
index f05d946..5df3860 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/BackgroundExecutionTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/BackgroundExecutionTest.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.InventoryManager;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
@@ -48,6 +49,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import lombok.Getter;
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class,
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/WrapperTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/WrapperTest.java
index 6b148d1..4fcac16 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/WrapperTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/commandexecution/WrapperTest.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.InventoryManager;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
@@ -48,6 +49,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import lombok.Getter;
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class,
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
index b302e63..7ad62c8 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
@@ -20,11 +20,16 @@ package org.apache.isis.testdomain.domainmodel;
 
 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.context.TestPropertySource;
 
 import org.apache.isis.config.IsisPresets;
 import org.apache.isis.integtestsupport.validate.ValidateDomainModel;
 import org.apache.isis.metamodel.spec.DomainModelException;
+import org.apache.isis.metamodel.specloader.IntrospectionMode;
+import org.apache.isis.testdomain.Incubating;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_headless;
 import org.apache.isis.testdomain.model.bad.AmbiguousTitle;
 import org.apache.isis.testdomain.model.bad.Configuration_usingInvalidDomain;
@@ -37,6 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_headless.class,
@@ -50,9 +56,15 @@ import lombok.val;
     IsisPresets.DebugProgrammingModel,
     
 })
+@Incubating
 class DomainModelTest_usingBadDomain {
     
     @Test
+    void fullIntrospection_shouldBeEnabledByThisTestClass() {
+        assertTrue(IntrospectionMode.isFullIntrospect());
+    }
+    
+    @Test
     void ambiguousTitle_shouldFail() {
            
         val validateDomainModel = new ValidateDomainModel();
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
index 0278d03..7370815 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
@@ -24,11 +24,13 @@ import org.springframework.test.context.TestPropertySource;
 
 import org.apache.isis.config.IsisPresets;
 import org.apache.isis.integtestsupport.validate.ValidateDomainModel;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_headless;
 import org.apache.isis.testdomain.model.good.Configuration_usingValidDomain;
 
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_headless.class,
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServer.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServer.java
index ac0e5e0..0045508 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServer.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServer.java
@@ -51,8 +51,8 @@ public class LdapEmbeddedServer extends AbstractLdapTestUnit {
     }
 
     /**
-     * Launches an LDAP server, that waits for the returned latch to count down by the caller, 
-     * before it shuts down.
+     * Launches an LDAP server. Blocks until its fully launched. Then waits for the returned latch to be 
+     * count down (by the caller), before it shuts the LDAP Server down.
      * @return a {@link CountDownLatch} for the caller to count down, once the server is no longer needed.
      * @throws InitializationError
      * @throws InterruptedException
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServerTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServerTest.java
index 95de528..7c5ea12 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServerTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapEmbeddedServerTest.java
@@ -32,8 +32,11 @@ import org.junit.jupiter.api.Test;
 import org.junit.runners.model.InitializationError;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import org.apache.isis.testdomain.Smoketest;
+
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = {LdapServerService.class},
         properties = {
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapServerService.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapServerService.java
index 8877f2f..d50f76a 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapServerService.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/ldap/LdapServerService.java
@@ -32,15 +32,26 @@ import lombok.extern.log4j.Log4j2;
 public class LdapServerService {
 
     private CountDownLatch serverLatch;
-
+    private CountDownLatch startInProgress;
+    
     @PostConstruct
     public void start() throws InitializationError, InterruptedException {
+        startInProgress = new CountDownLatch(1);
         serverLatch = LdapEmbeddedServer.run();
+        startInProgress.countDown();
         log.info("Embedded LDAP Server started at port {}.", LdapConstants.PORT);
     }
 
     @PreDestroy
     public void stop() {
+        if(startInProgress!=null) {
+            try {
+                startInProgress.await();
+            } catch (InterruptedException e) {
+                // can't do anything about that
+            }    
+        }
+        
         if(serverLatch!=null) {
             serverLatch.countDown();
             serverLatch = null;
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/publishing/PublisherServiceTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/publishing/PublisherServiceTest.java
index ebe7048..6f13596 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/publishing/PublisherServiceTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/publishing/PublisherServiceTest.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.services.publish.PublisherService;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
 import org.apache.isis.runtime.system.context.IsisContext;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.Book;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
@@ -43,9 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import lombok.val;
 
-/**
- * Depends on {@link DomainModelTest_usingGoodDomain} to succeed.
- */
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class, 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroLdapTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroLdapTest.java
index 6e9c66d..dcc0448 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroLdapTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroLdapTest.java
@@ -36,6 +36,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.Import;
 
 import org.apache.isis.config.IsisPresets;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdoAndShiro;
 import org.apache.isis.testdomain.ldap.LdapConstants;
 import org.apache.isis.testdomain.ldap.LdapServerService;
@@ -43,6 +44,7 @@ import org.apache.isis.testdomain.ldap.LdapServerService;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdoAndShiro.class, 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdapTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdapTest.java
index da7535a..53ad876 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdapTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdapTest.java
@@ -18,15 +18,8 @@
  */
 package org.apache.isis.testdomain.shiro;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
 import javax.inject.Inject;
 
-import org.apache.isis.extensions.fixtures.api.PersonaWithBuilderScript;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authc.AuthenticationToken;
 import org.apache.shiro.authc.CredentialsException;
@@ -48,13 +41,23 @@ import org.apache.isis.extensions.secman.encryption.jbcrypt.IsisBootSecmanEncryp
 import org.apache.isis.extensions.secman.jdo.IsisBootSecmanPersistenceJdo;
 import org.apache.isis.extensions.secman.model.IsisBootSecmanModel;
 import org.apache.isis.extensions.secman.shiro.IsisBootSecmanRealmShiro;
+import org.apache.isis.security.shiro.WebModuleShiro;
+import org.apache.isis.testdomain.Incubating;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdoAndShiro;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
 import org.apache.isis.testdomain.ldap.LdapConstants;
 import org.apache.isis.testdomain.ldap.LdapServerService;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 import lombok.val;
 
+@Smoketest @Incubating
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdoAndShiro.class, 
@@ -90,6 +93,7 @@ class ShiroSecmanLdapTest extends AbstractShiroTest {
         //    This typically only needs to be done once per class if your shiro.ini doesn't change,
         //    otherwise, you'll need to do this logic in each test that is different
         setSecurityManager("classpath:shiro-secman-ldap.ini");
+        WebModuleShiro.setShiroIniResource("classpath:shiro-secman-ldap.ini");
     }
 
     @AfterAll
@@ -100,7 +104,7 @@ class ShiroSecmanLdapTest extends AbstractShiroTest {
     @BeforeEach
     void setupSvenInDb() {
         // given
-        fixtureScripts.runPersona((PersonaWithBuilderScript)JdoTestDomainPersona.SvenApplicationUser);
+        fixtureScripts.runPersona(JdoTestDomainPersona.SvenApplicationUser);
     }
 
 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java
index 8c926d9..2604b9f 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java
@@ -18,15 +18,8 @@
  */
 package org.apache.isis.testdomain.shiro;
 
-import static java.time.Duration.ofMillis;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTimeout;
-import static org.junit.jupiter.api.Assertions.fail;
-
 import javax.inject.Inject;
 
-import org.apache.isis.extensions.fixtures.api.PersonaWithBuilderScript;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
@@ -44,14 +37,23 @@ import org.apache.isis.extensions.secman.jdo.IsisBootSecmanPersistenceJdo;
 import org.apache.isis.extensions.secman.model.IsisBootSecmanModel;
 import org.apache.isis.extensions.secman.shiro.IsisBootSecmanRealmShiro;
 import org.apache.isis.security.shiro.WebModuleShiro;
+import org.apache.isis.testdomain.Incubating;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdoAndShiro;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
 import org.apache.isis.testdomain.ldap.LdapServerService;
 import org.apache.isis.testdomain.rest.RestService;
 import org.apache.isis.viewer.restfulobjects.IsisBootWebRestfulObjects;
 
+import static java.time.Duration.ofMillis;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTimeout;
+import static org.junit.jupiter.api.Assertions.fail;
+
 import lombok.val;
 
+@Smoketest @Incubating
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdoAndShiro.class
@@ -90,8 +92,11 @@ class ShiroSecmanLdap_restfulStressTest extends AbstractShiroTest {
     
     @BeforeAll
     static void beforeClass() {
-        //WebModuleShiro.setShiroIniResource("classpath:shiro-secman-ldap-cached.ini");
-        WebModuleShiro.setShiroIniResource("classpath:shiro-secman-ldap.ini");
+        //    Build and set the SecurityManager used to build Subject instances used in your tests
+        //    This typically only needs to be done once per class if your shiro.ini doesn't change,
+        //    otherwise, you'll need to do this logic in each test that is different
+        setSecurityManager("classpath:shiro-secman-ldap.ini");
+        //setSecurityManager("classpath:shiro-secman-ldap-cached.ini");
     }
 
     @AfterAll
@@ -102,10 +107,18 @@ class ShiroSecmanLdap_restfulStressTest extends AbstractShiroTest {
     @BeforeEach
     void setupSvenInDb() {
         // given
-        fixtureScripts.runPersona((PersonaWithBuilderScript)JdoTestDomainPersona.SvenApplicationUser);
+        fixtureScripts.runPersona(JdoTestDomainPersona.SvenApplicationUser);
+        
+        WebModuleShiro.setShiroIniResource("classpath:shiro-secman-ldap.ini");
     }
+    
+//    @AfterEach
+//    void afterEach() {
+//        tearDownShiro();
+//    }
+    
 
-    @Test
+    @Test 
     void stressTheRestEndpoint() {
 
         val useRequestDebugLogging = false;
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanTest.java
index e58cabd..b08bc96 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanTest.java
@@ -40,10 +40,13 @@ import org.apache.isis.extensions.secman.encryption.jbcrypt.IsisBootSecmanEncryp
 import org.apache.isis.extensions.secman.jdo.IsisBootSecmanPersistenceJdo;
 import org.apache.isis.extensions.secman.model.IsisBootSecmanModel;
 import org.apache.isis.extensions.secman.shiro.IsisBootSecmanRealmShiro;
+import org.apache.isis.testdomain.Incubating;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdoAndShiro;
 
 import lombok.val;
 
+@Smoketest @Incubating
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdoAndShiro.class, 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSimpleTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSimpleTest.java
index baaf21f..d9748a7 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSimpleTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/shiro/ShiroSimpleTest.java
@@ -32,8 +32,11 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import org.apache.isis.testdomain.Smoketest;
+
 import lombok.val;
 
+@Smoketest
 class ShiroSimpleTest extends AbstractShiroTest {
 
     @BeforeAll
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/timestamping/TimestampingTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/timestamping/TimestampingTest.java
index 9cf9f45..bb7adfb 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/timestamping/TimestampingTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/timestamping/TimestampingTest.java
@@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
 import org.apache.isis.testdomain.jdo.Product;
@@ -36,6 +37,7 @@ import static org.junit.Assert.assertNotNull;
 
 import lombok.val;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest.java
index 0f59654..6d06abb 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.config.IsisPresets;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.Book;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
@@ -36,6 +37,7 @@ import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class,
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest_withTransactional.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest_withTransactional.java
index c3173ce..2145dd5 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest_withTransactional.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/transactions/TransactionRollbackTest_withTransactional.java
@@ -25,12 +25,13 @@ import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestMethodOrder;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.Commit;
 import org.springframework.transaction.annotation.Transactional;
 
 import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.config.IsisPresets;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.Book;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
@@ -42,6 +43,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
  * <p> 
  * We test whether JUnit Tests are automatically rolled back by Spring. 
  */
+@Smoketest
 @SpringBootTest(
         classes = { 
                 Configuration_usingJdo.class,
@@ -54,15 +56,17 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
 class TransactionRollbackTest_withTransactional {
     
-    @Inject FixtureScripts fixtureScripts;
-    @Inject TransactionService transactionService;
-    @Inject RepositoryService repository;
+    @Inject private FixtureScripts fixtureScripts;
+    @Inject private RepositoryService repository;
     
-    @Test @Order(1)
-    void happyCaseTx_shouldCommit() {
-        
+    @Test @Order(1) @Commit
+    void cleanup_justInCase() {
         // cleanup just in case
         fixtureScripts.runPersona(JdoTestDomainPersona.PurgeAll);
+    }
+    
+    @Test @Order(2)
+    void happyCaseTx_shouldCommit() {
         
         // expected pre condition
         assertEquals(0, repository.allInstances(Book.class).size());
@@ -74,11 +78,9 @@ class TransactionRollbackTest_withTransactional {
         
     }
     
-    @Test @Order(2)
+    @Test @Order(3)
     void previousTest_shouldHaveBeenRolledBack() {
         
-        
-        
         // expected condition
         assertEquals(0, repository.allInstances(Book.class).size());
     }