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 2020/09/30 16:56:38 UTC
[isis] branch master updated: ISIS-2033: regressiontesting:
improved transactional boundary tests
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 28bb0f2 ISIS-2033: regressiontesting: improved transactional boundary tests
28bb0f2 is described below
commit 28bb0f252d391a99f0714805a90fce1912310794
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 30 18:56:23 2020 +0200
ISIS-2033: regressiontesting: improved transactional boundary tests
---
.../managed/ActionInteractionHead.java | 26 ++++
.../transaction/ChangedObjectsService.java | 1 -
.../commons/InteractionBoundaryProbe.java | 113 +++++++++++++++
.../InteractionTestAbstract.java | 4 +-
.../entitychangemetrics/ChangedObjectsTest.java | 153 +++++++++++++++++++++
.../testdomain/interact/ActionInteractionTest.java | 1 +
.../testdomain/interact/NewParameterModelTest.java | 1 +
.../testdomain/interact/PropertyBindingTest.java | 1 +
.../interact/PropertyInteractionTest.java | 1 +
.../interact/ScalarParamNegotiationTest.java | 1 +
.../transactions/TransactionScopeListenerTest.java | 49 ++-----
11 files changed, 307 insertions(+), 44 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteractionHead.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteractionHead.java
index 01b0655..ba406ad 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteractionHead.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteractionHead.java
@@ -18,9 +18,14 @@
*/
package org.apache.isis.core.metamodel.interactions.managed;
+import java.util.List;
import java.util.Objects;
+import javax.annotation.Nullable;
+
import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.assertions._Assert;
+import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.core.metamodel.interactions.InteractionHead;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -66,6 +71,27 @@ implements HasMetaModel<ObjectAction> {
.collect(Can.toCan());
}
+ /**
+ * Immutable tuple of ManagedObjects, wrapping the passed in argument pojos.
+ * Nulls are allowed as arguments, but the list size must match the expected parameter count.
+ * <p>
+ * The size of the tuple corresponds to the number of parameters.
+ * @param pojoArgList - argument pojos
+ */
+ public Can<ManagedObject> getPopulatedParameterValues(@Nullable List<Object> pojoArgList) {
+
+ val params = getMetaModel().getParameters();
+
+ _Assert.assertEquals(params.size(), _NullSafe.size(pojoArgList));
+
+ if(params.isEmpty()) {
+ return Can.empty();
+ }
+
+ return params.zipMap(pojoArgList, (objectActionParameter, argPojo)->
+ ManagedObject.of(objectActionParameter.getSpecification(), argPojo));
+ }
+
public ParameterNegotiationModel model(
@NonNull Can<ManagedObject> paramValues) {
return ParameterNegotiationModel.of(this, paramValues);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java
index f401612..ee657bc 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/transaction/ChangedObjectsService.java
@@ -30,7 +30,6 @@ import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
-import org.apache.isis.applib.annotation.IsisInteractionScope;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.annotation.PublishingChangeKind;
import org.apache.isis.applib.services.HasUniqueId;
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionBoundaryProbe.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionBoundaryProbe.java
new file mode 100644
index 0000000..2d20f0e
--- /dev/null
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionBoundaryProbe.java
@@ -0,0 +1,113 @@
+/*
+ * 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.commons;
+
+import java.util.function.Supplier;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.Assertions;
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.annotation.IsisInteractionScope;
+import org.apache.isis.applib.services.TransactionScopeListener;
+import org.apache.isis.testdomain.util.kv.KVStoreForTesting;
+
+import lombok.val;
+
+@Component
+@IsisInteractionScope
+public class InteractionBoundaryProbe implements TransactionScopeListener {
+
+ @Inject private KVStoreForTesting kvStoreForTesting;
+
+ /** INTERACTION BEGIN BOUNDARY */
+ @PostConstruct
+ public void init() {
+ kvStoreForTesting.incrementCounter(InteractionBoundaryProbe.class, "iactnStarted");
+ }
+
+ /** INTERACTION END BOUNDARY */
+ @PreDestroy
+ public void destroy() {
+ kvStoreForTesting.incrementCounter(InteractionBoundaryProbe.class, "iactnEnded");
+ }
+
+ /** TRANSACTION BEGIN BOUNDARY */
+ @Override
+ public void onTransactionStarted() {
+ kvStoreForTesting.incrementCounter(InteractionBoundaryProbe.class, "txStarted");
+ }
+
+ /** TRANSACTION END BOUNDARY */
+ @Override
+ public void onTransactionEnded() {
+ kvStoreForTesting.incrementCounter(InteractionBoundaryProbe.class, "txEnded");
+ }
+
+ // -- ACCESS TO COUNTERS
+
+ public static long totalInteractionsStarted(KVStoreForTesting kvStoreForTesting) {
+ return kvStoreForTesting.getCounter(InteractionBoundaryProbe.class, "iactnStarted");
+ }
+
+ public static long totalInteractionsEnded(KVStoreForTesting kvStoreForTesting) {
+ return kvStoreForTesting.getCounter(InteractionBoundaryProbe.class, "iactnEnded");
+ }
+
+ public static long totalTransactionsStarted(KVStoreForTesting kvStoreForTesting) {
+ return kvStoreForTesting.getCounter(InteractionBoundaryProbe.class, "txStarted");
+ }
+
+ public static long totalTransactionsEnded(KVStoreForTesting kvStoreForTesting) {
+ return kvStoreForTesting.getCounter(InteractionBoundaryProbe.class, "txEnded");
+ }
+
+ // -- ASSERTIONS
+
+ public static void assertTransactional(KVStoreForTesting kvStoreForTesting, Runnable runnable) {
+
+ final long txStartCountBefore = totalTransactionsStarted(kvStoreForTesting);
+ final long txEndCountBefore = totalTransactionsEnded(kvStoreForTesting);
+ runnable.run();
+ final long txStartCountAfter = totalTransactionsStarted(kvStoreForTesting);
+ final long txEndCountAfter = totalTransactionsEnded(kvStoreForTesting);
+
+ Assertions.assertEquals(1, txStartCountAfter - txStartCountBefore);
+ Assertions.assertEquals(1, txEndCountAfter - txEndCountBefore);
+ }
+
+ public static <T> T assertTransactional(KVStoreForTesting kvStoreForTesting, Supplier<T> supplier) {
+
+ final long txStartCountBefore = totalTransactionsStarted(kvStoreForTesting);
+ final long txEndCountBefore = totalTransactionsEnded(kvStoreForTesting);
+ val result = supplier.get();
+ final long txStartCountAfter = totalTransactionsStarted(kvStoreForTesting);
+ final long txEndCountAfter = totalTransactionsEnded(kvStoreForTesting);
+
+ Assertions.assertEquals(1, txStartCountAfter - txStartCountBefore);
+ Assertions.assertEquals(1, txEndCountAfter - txEndCountBefore);
+
+ return result;
+ }
+
+
+}
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/InteractionTestAbstract.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionTestAbstract.java
similarity index 97%
rename from regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/InteractionTestAbstract.java
rename to regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionTestAbstract.java
index 53c2ee6..0b1ee9b 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/InteractionTestAbstract.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/commons/InteractionTestAbstract.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.testdomain.interact;
+package org.apache.isis.testdomain.commons;
import java.util.Collections;
import java.util.concurrent.atomic.LongAdder;
@@ -42,7 +42,7 @@ import org.apache.isis.testing.integtestsupport.applib.IsisIntegrationTestAbstra
import lombok.val;
-abstract class InteractionTestAbstract extends IsisIntegrationTestAbstract {
+public abstract class InteractionTestAbstract extends IsisIntegrationTestAbstract {
@Inject protected ObjectManager objectManager;
@Inject protected IsisInteractionFactory interactionFactory;
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/entitychangemetrics/ChangedObjectsTest.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/entitychangemetrics/ChangedObjectsTest.java
new file mode 100644
index 0000000..e0b91e5
--- /dev/null
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/entitychangemetrics/ChangedObjectsTest.java
@@ -0,0 +1,153 @@
+/*
+ * 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.entitychangemetrics;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.test.context.TestPropertySource;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.apache.isis.applib.annotation.Where;
+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.commons.internal.collections._Lists;
+import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.isis.testdomain.Smoketest;
+import org.apache.isis.testdomain.auditing.Configuration_usingAuditing;
+import org.apache.isis.testdomain.commons.InteractionBoundaryProbe;
+import org.apache.isis.testdomain.commons.InteractionTestAbstract;
+import org.apache.isis.testdomain.conf.Configuration_usingJdo;
+import org.apache.isis.testdomain.jdo.JdoInventoryManager;
+import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
+import org.apache.isis.testdomain.jdo.entities.JdoBook;
+import org.apache.isis.testdomain.jdo.entities.JdoProduct;
+import org.apache.isis.testdomain.util.kv.KVStoreForTesting;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+import static org.apache.isis.testdomain.commons.InteractionBoundaryProbe.assertTransactional;
+
+import lombok.val;
+
+@Smoketest
+@SpringBootTest(
+ classes = {
+ Configuration_usingJdo.class,
+ Configuration_usingAuditing.class,
+ InteractionBoundaryProbe.class
+ },
+ properties = {
+ "logging.level.org.apache.isis.testdomain.util.rest.KVStoreForTesting=DEBUG"
+ })
+@TestPropertySource({
+ IsisPresets.SilenceWicket
+ ,IsisPresets.UseLog4j2Test
+})
+class ChangedObjectsTest extends InteractionTestAbstract {
+
+ @Inject private RepositoryService repository;
+ @Inject private FixtureScripts fixtureScripts;
+ @Inject private WrapperFactory wrapper;
+ @Inject private FactoryService factoryService;
+ @Inject private KVStoreForTesting kvStoreForTesting;
+
+ @Configuration
+ public class Config {
+ // so that we get a new ApplicationContext.
+ }
+
+ @BeforeEach
+ void setUp() {
+
+ // cleanup
+ fixtureScripts.runPersona(JdoTestDomainPersona.PurgeAll);
+
+ // given
+ fixtureScripts.runPersona(JdoTestDomainPersona.InventoryWith1Book);
+
+ }
+
+ @Test
+ void wrapperInvocation_shouldSpawnSingleTransaction() {
+
+ // given
+ val inventoryManager = factoryService.create(JdoInventoryManager.class);
+
+ // spawns its own transactional boundary (check)
+ val book = assertTransactional(kvStoreForTesting, this::getBookSample);
+
+ // spawns its own transactional boundary (check)
+ val product = assertTransactional(kvStoreForTesting,
+ ()->wrapper.wrap(inventoryManager).updateProductPrice(book, 12.));
+
+ assertEquals(12., product.getPrice(), 1E-3);
+ }
+
+ @Test
+ void actionInteraction_shouldSpawnSingleTransaction() {
+
+ val managedAction = startActionInteractionOn(
+ JdoInventoryManager.class,
+ "updateProductPrice",
+ Where.OBJECT_FORMS)
+ .getManagedAction().get(); // should not throw
+
+ assertFalse(managedAction.checkVisibility().isPresent()); // is visible
+ assertFalse(managedAction.checkUsability().isPresent()); // can invoke
+
+ // spawns its own transactional boundary (check)
+ val book = assertTransactional(
+ kvStoreForTesting,
+ this::getBookSample);
+
+ val args = managedAction.getInteractionHead()
+ .getPopulatedParameterValues(_Lists.of(book, 12.));
+
+ // spawns its own transactional boundary (check)
+ val either = assertTransactional(kvStoreForTesting, ()->managedAction.invoke(args));
+
+ assertTrue(either.isLeft());
+
+ val product = (JdoProduct)either.leftIfAny().getPojo();
+
+ assertEquals(12., product.getPrice(), 1E-3);
+
+ }
+
+ // -- HELPER
+
+ private JdoBook getBookSample() {
+ val books = repository.allInstances(JdoBook.class);
+ assertEquals(1, books.size());
+ val book = books.listIterator().next();
+ return book;
+ }
+
+
+}
+
+
+
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java
index 4b5232f..b311eda 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.testdomain.Smoketest;
+import org.apache.isis.testdomain.commons.InteractionTestAbstract;
import org.apache.isis.testdomain.conf.Configuration_headless;
import org.apache.isis.testdomain.model.interaction.Configuration_usingInteractionDomain;
import org.apache.isis.testdomain.model.interaction.DemoEnum;
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/NewParameterModelTest.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/NewParameterModelTest.java
index 5e23827..d0767a5 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/NewParameterModelTest.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/NewParameterModelTest.java
@@ -35,6 +35,7 @@ import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.testdomain.Smoketest;
+import org.apache.isis.testdomain.commons.InteractionTestAbstract;
import org.apache.isis.testdomain.conf.Configuration_headless;
import org.apache.isis.testdomain.model.interaction.Configuration_usingInteractionDomain;
import org.apache.isis.testdomain.model.interaction.InteractionDemo_biArgEnabled;
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyBindingTest.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyBindingTest.java
index 7e9c13d..24a00cd 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyBindingTest.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyBindingTest.java
@@ -14,6 +14,7 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.core.metamodel.interactions.managed.PropertyNegotiationModel;
import org.apache.isis.testdomain.Smoketest;
+import org.apache.isis.testdomain.commons.InteractionTestAbstract;
import org.apache.isis.testdomain.conf.Configuration_headless;
import org.apache.isis.testdomain.model.interaction.Configuration_usingInteractionDomain;
import org.apache.isis.testdomain.model.interaction.InteractionDemo;
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyInteractionTest.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyInteractionTest.java
index 32fd7ac..0136070 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyInteractionTest.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/PropertyInteractionTest.java
@@ -32,6 +32,7 @@ import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
import org.apache.isis.testdomain.Smoketest;
+import org.apache.isis.testdomain.commons.InteractionTestAbstract;
import org.apache.isis.testdomain.conf.Configuration_headless;
import org.apache.isis.testdomain.model.interaction.Configuration_usingInteractionDomain;
import org.apache.isis.testdomain.model.interaction.InteractionDemo;
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ScalarParamNegotiationTest.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ScalarParamNegotiationTest.java
index bd9c5e1..bd5613b 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ScalarParamNegotiationTest.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/interact/ScalarParamNegotiationTest.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.core.metamodel.interactions.managed.ParameterNegotiationModel;
import org.apache.isis.testdomain.Smoketest;
+import org.apache.isis.testdomain.commons.InteractionTestAbstract;
import org.apache.isis.testdomain.conf.Configuration_headless;
import org.apache.isis.testdomain.model.interaction.Configuration_usingInteractionDomain;
import org.apache.isis.testdomain.model.interaction.InteractionDemo;
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/transactions/TransactionScopeListenerTest.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/transactions/TransactionScopeListenerTest.java
index 73eddb9..cf652a0 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/transactions/TransactionScopeListenerTest.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/transactions/TransactionScopeListenerTest.java
@@ -18,25 +18,21 @@
*/
package org.apache.isis.testdomain.transactions;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
import javax.inject.Inject;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.stereotype.Service;
import org.springframework.test.context.TestPropertySource;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import org.apache.isis.applib.annotation.IsisInteractionScope;
-import org.apache.isis.applib.services.TransactionScopeListener;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
import org.apache.isis.testdomain.Smoketest;
+import org.apache.isis.testdomain.commons.InteractionBoundaryProbe;
import org.apache.isis.testdomain.conf.Configuration_usingJdo;
import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
import org.apache.isis.testdomain.jdo.entities.JdoBook;
@@ -47,7 +43,7 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
@SpringBootTest(
classes = {
Configuration_usingJdo.class,
- TransactionScopeListenerTest.IsisInteractionScopedProbe.class
+ InteractionBoundaryProbe.class
})
@TestPropertySource(IsisPresets.UseLog4j2Test)
/**
@@ -62,37 +58,14 @@ class TransactionScopeListenerTest {
@Inject private KVStoreForTesting kvStoreForTesting;
/* Expectations:
- * 1. for each IsisInteractionScope there should be a new IsisInteractionScopedProbe instance
- * 2. for each Transaction the current IsisInteractionScopedProbe should get notified
+ * 1. for each IsisInteractionScope there should be a new InteractionBoundaryProbe instance
+ * 2. for each Transaction the current InteractionBoundaryProbe should get notified
*
* first we have 1 IsisInteractionScope with 1 expected Transaction during 'setUp'
* then we have 1 IsisInteractionScope with 3 expected Transactions within the test method
*
*/
- @Service
- @IsisInteractionScope
- public static class IsisInteractionScopedProbe implements TransactionScopeListener {
-
- @Inject private KVStoreForTesting kvStoreForTesting;
-
- @PostConstruct
- public void init() {
- kvStoreForTesting.incrementCounter(IsisInteractionScopedProbe.class, "init");
- }
-
- @PreDestroy
- public void destroy() {
- kvStoreForTesting.incrementCounter(IsisInteractionScopedProbe.class, "destroy");
- }
-
- @Override
- public void onTransactionEnded() {
- kvStoreForTesting.incrementCounter(IsisInteractionScopedProbe.class, "tx");
- }
-
- }
-
@BeforeEach
void setUp() {
@@ -104,7 +77,6 @@ class TransactionScopeListenerTest {
});
-
}
@Test
@@ -130,17 +102,12 @@ class TransactionScopeListenerTest {
});
- long totalTransactions = kvStoreForTesting.getCounter(IsisInteractionScopedProbe.class, "tx");
- long totalSessionScopesInitialized = kvStoreForTesting.getCounter(IsisInteractionScopedProbe.class, "init");
- long totalSessionScopesDestroyed = kvStoreForTesting.getCounter(IsisInteractionScopedProbe.class, "destroy");
-
- assertEquals(4, totalTransactions);
- assertEquals(2, totalSessionScopesInitialized);
- assertEquals(2, totalSessionScopesDestroyed);
+ assertEquals(2, InteractionBoundaryProbe.totalInteractionsStarted(kvStoreForTesting));
+ assertEquals(2, InteractionBoundaryProbe.totalInteractionsEnded(kvStoreForTesting));
+ assertEquals(4, InteractionBoundaryProbe.totalTransactionsStarted(kvStoreForTesting));
+ assertEquals(4, InteractionBoundaryProbe.totalTransactionsEnded(kvStoreForTesting));
}
-
-
}