This is an automated email from the ASF dual-hosted git repository.
yixia pushed a commit to branch 2.3.0
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git
The following commit(s) were added to refs/heads/2.3.0 by this push:
new 06b809eadb optimize: fix tm context conflict ut (#7083)
06b809eadb is described below
commit 06b809eadb260007de38073110ee16035ab6516a
Author: wt_better <[email protected]>
AuthorDate: Sat Dec 28 16:21:16 2024 +0800
optimize: fix tm context conflict ut (#7083)
---
.../rm/tcc/interceptor/ProxyUtilsTccTest.java | 142 +++++++-------
.../parser/TccActionInterceptorParserTest.java | 169 +++++++----------
.../parser/ProxyUtilsGlobalTransactionalTest.java | 35 ++--
.../rm/tcc/interceptor/ProxyUtilsTccTest.java | 147 +++++++--------
.../parser/TccActionInterceptorParserTest.java | 210 ++++++++-------------
.../parser/SagaActionInterceptorParserTest.java | 173 ++++++++---------
.../seata/tm/TransactionManagerHolderTest.java | 26 ++-
.../test/java/org/apache/seata/tm/api/APITest.java | 11 +-
.../seata/tm/api/DefaultGlobalTransactionTest.java | 26 ++-
.../seata/tm/api/GlobalTransactionContextTest.java | 17 +-
10 files changed, 450 insertions(+), 506 deletions(-)
diff --git
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
index 254f7b043e..02c7e7d910 100644
---
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
+++
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
@@ -19,6 +19,8 @@ package io.seata.rm.tcc.interceptor;
import io.seata.core.context.RootContext;
import io.seata.rm.tcc.NormalTccActionImpl;
import io.seata.rm.tcc.TccParam;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.BranchStatus;
import org.apache.seata.core.model.BranchType;
@@ -27,7 +29,9 @@ import org.apache.seata.core.model.Resource;
import org.apache.seata.core.model.ResourceManager;
import org.apache.seata.integration.tx.api.util.ProxyUtil;
import org.apache.seata.rm.DefaultResourceManager;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Collections;
@@ -37,113 +41,105 @@ import java.util.concurrent.atomic.AtomicReference;
public class ProxyUtilsTccTest {
- private final String DEFAULT_XID = "default_xid";
+ private ResourceManager backResourceManager;
- private final AtomicReference<String> branchReference = new
AtomicReference<String>();
+ private final AtomicReference<String> branchReference = new
AtomicReference<>();
+ @BeforeEach
+ public void beforeEach() {
+ RootContext.bind(XID.generateXID(UUIDGenerator.generateUUID()));
+ ResourceManager resourceManager = new ResourceManager() {
- private final ResourceManager resourceManager = new ResourceManager() {
+ @Override
+ public Long branchRegister(BranchType branchType, String
resourceId, String clientId, String xid, String applicationData, String
lockKeys) throws TransactionException {
+ branchReference.set(resourceId);
+ return System.currentTimeMillis();
+ }
- @Override
- public Long branchRegister(BranchType branchType, String resourceId,
String clientId, String xid, String applicationData, String lockKeys) throws
TransactionException {
- branchReference.set(resourceId);
- return System.currentTimeMillis();
- }
+ @Override
+ public void branchReport(BranchType branchType, String xid, long
branchId, BranchStatus status, String applicationData) throws
TransactionException {
- @Override
- public void branchReport(BranchType branchType, String xid, long
branchId, BranchStatus status, String applicationData) throws
TransactionException {
+ }
- }
+ @Override
+ public boolean lockQuery(BranchType branchType, String resourceId,
String xid, String lockKeys) throws TransactionException {
+ return false;
+ }
- @Override
- public boolean lockQuery(BranchType branchType, String resourceId,
String xid, String lockKeys) throws TransactionException {
- return false;
- }
+ @Override
+ public BranchStatus branchCommit(BranchType branchType, String
xid, long branchId, String resourceId, String applicationData) throws
TransactionException {
+ return null;
+ }
- @Override
- public BranchStatus branchCommit(BranchType branchType, String xid,
long branchId, String resourceId, String applicationData) throws
TransactionException {
- return null;
- }
+ @Override
+ public BranchStatus branchRollback(BranchType branchType, String
xid, long branchId, String resourceId, String applicationData) throws
TransactionException {
+ return null;
+ }
- @Override
- public BranchStatus branchRollback(BranchType branchType, String xid,
long branchId, String resourceId, String applicationData) throws
TransactionException {
- return null;
- }
+ @Override
+ public void registerResource(Resource resource) {
- @Override
- public void registerResource(Resource resource) {
+ }
- }
+ @Override
+ public void unregisterResource(Resource resource) {
- @Override
- public void unregisterResource(Resource resource) {
+ }
- }
+ @Override
+ public Map<String, Resource> getManagedResources() {
+ return null;
+ }
- @Override
- public Map<String, Resource> getManagedResources() {
- return null;
- }
+ @Override
+ public BranchType getBranchType() {
+ return null;
+ }
- @Override
- public BranchType getBranchType() {
- return null;
- }
+ @Override
+ public GlobalStatus getGlobalStatus(BranchType branchType, String
xid) {
+ return null;
+ }
- @Override
- public GlobalStatus getGlobalStatus(BranchType branchType, String xid)
{
- return null;
- }
+ };
+ backResourceManager =
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
+ }
- };
- private final NormalTccActionImpl tccActionProxy=
ProxyUtil.createProxy(new NormalTccActionImpl());
+ @AfterEach
+ public void afterEach() {
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
backResourceManager);
+ RootContext.unbind();
+ }
@Test
public void testTcc() {
- try {
- //given
- RootContext.bind(DEFAULT_XID);
-
- TccParam tccParam = new TccParam(1, "[email protected]");
- List<String> listB = Collections.singletonList("b");
+ TccParam tccParam = new TccParam(1, "[email protected]");
+ List<String> listB = Collections.singletonList("b");
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
+ NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new
NormalTccActionImpl());
+ String result = tccActionProxy.prepare(null, 0, listB, tccParam);
- String result = tccActionProxy.prepare(null, 0, listB, tccParam);
-
- //then
- Assertions.assertEquals("a", result);
- Assertions.assertNotNull(result);
- Assertions.assertEquals("tccActionForCompatibleTest",
branchReference.get());
- } finally {
- RootContext.unbind();
- }
+ Assertions.assertEquals("a", result);
+ Assertions.assertNotNull(result);
+ Assertions.assertEquals("tccActionForCompatibleTest",
branchReference.get());
}
@Test
public void testTccThrowRawException() {
- try {
- //given
- RootContext.bind(DEFAULT_XID);
-
- TccParam tccParam = new TccParam(1, "[email protected]");
- List<String> listB = Collections.singletonList("b");
-
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
+ TccParam tccParam = new TccParam(1, "[email protected]");
+ List<String> listB = Collections.singletonList("b");
- //when
- //then
- Assertions.assertThrows(IllegalArgumentException.class, () ->
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
- } finally {
- RootContext.unbind();
- }
+ NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new
NormalTccActionImpl());
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
}
@Test
public void testTccImplementOtherMethod() {
+ NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new
NormalTccActionImpl());
Assertions.assertTrue(tccActionProxy.otherMethod());
}
diff --git
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
index 2bfcdbe877..1c37267c3f 100644
---
a/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
+++
b/compatible/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
@@ -16,14 +16,6 @@
*/
package io.seata.rm.tcc.interceptor.parser;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-
-import io.seata.core.context.RootContext;
import io.seata.rm.tcc.BranchSessionMock;
import io.seata.rm.tcc.NestTccAction;
import io.seata.rm.tcc.NestTccActionImpl;
@@ -32,6 +24,8 @@ import io.seata.rm.tcc.TccAction;
import io.seata.rm.tcc.TccActionImpl;
import io.seata.tm.api.GlobalTransaction;
import io.seata.tm.api.GlobalTransactionContext;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.BranchType;
import org.apache.seata.core.model.GlobalStatus;
@@ -43,27 +37,30 @@ import org.apache.seata.integration.tx.api.util.ProxyUtil;
import org.apache.seata.rm.DefaultResourceManager;
import org.apache.seata.rm.tcc.TCCResourceManager;
import org.apache.seata.tm.TransactionManagerHolder;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
class TccActionInterceptorParserTest {
- private static ResourceManager resourceManager;
-
- @BeforeAll
- public static void init() throws IOException {
- System.setProperty("config.type", "file");
- System.setProperty("config.file.name", "file.conf");
- System.setProperty("txServiceGroup", "default_tx_group");
- System.setProperty("service.vgroupMapping.default_tx_group",
"default");
- }
+ private ResourceManager backResourceManager;
+ private TransactionManager backTransactionManager;
@BeforeEach
- public void before() {
- resourceManager = new TCCResourceManager() {
+ public void beforeEach() {
+ backResourceManager =
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+ backTransactionManager = TransactionManagerHolder.get();
+
+ Map<String, List<BranchSessionMock>> applicationDataMap = new
ConcurrentHashMap<>();
+
+ ResourceManager mockResourceManager = new TCCResourceManager() {
@Override
public Long branchRegister(BranchType branchType, String
resourceId, String clientId, String xid, String applicationData, String
lockKeys) throws TransactionException {
@@ -83,12 +80,53 @@ class TccActionInterceptorParserTest {
return branchId;
}
};
- RootContext.unbind();
- DefaultResourceManager.get();
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
- TransactionManagerHolder.set(transactionManager);
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
mockResourceManager);
+
+ TransactionManager mockTransactionManager = new TransactionManager() {
+ @Override
+ public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
+ return XID.generateXID(UUIDGenerator.generateUUID());
+ }
+
+ @Override
+ public GlobalStatus commit(String xid) throws TransactionException
{
+ List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+ for (BranchSessionMock branch : branches) {
+ mockResourceManager.branchCommit(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
+ }
+ return GlobalStatus.Committed;
+ }
+
+ @Override
+ public GlobalStatus rollback(String xid) throws
TransactionException {
+ List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+ for (BranchSessionMock branch : branches) {
+ mockResourceManager.branchRollback(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
+ }
+
+ return GlobalStatus.Rollbacked;
+ }
+
+ @Override
+ public GlobalStatus getStatus(String xid) throws
TransactionException {
+ return GlobalStatus.Begin;
+ }
+
+ @Override
+ public GlobalStatus globalReport(String xid, GlobalStatus
globalStatus) throws TransactionException {
+ return globalStatus;
+ }
+ };
+ TransactionManagerHolder.set(mockTransactionManager);
+ }
+
+ @AfterEach
+ public void afterEach() {
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
backResourceManager);
+ TransactionManagerHolder.set(backTransactionManager);
}
+
@Test
void parserInterfaceToProxy() {
@@ -139,11 +177,7 @@ class TccActionInterceptorParserTest {
Assertions.assertTrue(result);
- if (result) {
- tx.commit();
- } else {
- tx.rollback();
- }
+ tx.commit();
} catch (Exception exx) {
tx.rollback();
throw exx;
@@ -159,7 +193,7 @@ class TccActionInterceptorParserTest {
public void testNestTcc_should_rollback() throws Exception {
TccActionImpl tccAction = new TccActionImpl();
- TccAction tccActionProxy = ProxyUtil.createProxy(tccAction,
"oldtccAction");
+ TccAction tccActionProxy = ProxyUtil.createProxy(tccAction,
"oldtccAction");
Assertions.assertNotNull(tccActionProxy);
NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -188,11 +222,7 @@ class TccActionInterceptorParserTest {
Assertions.assertFalse(result);
- if (result) {
- tx.commit();
- } else {
- tx.rollback();
- }
+ tx.rollback();
} catch (Exception exx) {
tx.rollback();
throw exx;
@@ -208,7 +238,7 @@ class TccActionInterceptorParserTest {
public void testNestTcc_required_new_should_rollback_commit() throws
Exception {
TccActionImpl tccAction = new TccActionImpl();
- TccAction tccActionProxy = ProxyUtil.createProxy(tccAction,
"oldtccAction");
+ TccAction tccActionProxy = ProxyUtil.createProxy(tccAction,
"oldtccAction");
Assertions.assertNotNull(tccActionProxy);
NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -236,11 +266,7 @@ class TccActionInterceptorParserTest {
Assertions.assertFalse(result);
- if (result) {
- tx.commit();
- } else {
- tx.rollback();
- }
+ tx.rollback();
} catch (Exception exx) {
tx.rollback();
throw exx;
@@ -252,12 +278,11 @@ class TccActionInterceptorParserTest {
}
-
@Test
public void testNestTcc_required_new_should_both_commit() throws Exception
{
TccActionImpl tccAction = new TccActionImpl();
- TccAction tccActionProxy = ProxyUtil.createProxy(tccAction,
"oldtccAction");
+ TccAction tccActionProxy = ProxyUtil.createProxy(tccAction,
"oldtccAction");
Assertions.assertNotNull(tccActionProxy);
NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -285,11 +310,7 @@ class TccActionInterceptorParserTest {
Assertions.assertTrue(result);
- if (result) {
- tx.commit();
- } else {
- tx.rollback();
- }
+ tx.commit();
} catch (Exception exx) {
tx.rollback();
throw exx;
@@ -300,56 +321,4 @@ class TccActionInterceptorParserTest {
}
-
-
- private static Map<String, List<BranchSessionMock>> applicationDataMap =
new ConcurrentHashMap<>();
-
-
- private static TransactionManager transactionManager = new
TransactionManager() {
- @Override
- public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
- return UUID.randomUUID().toString();
- }
-
- @Override
- public GlobalStatus commit(String xid) throws TransactionException {
- commitAll(xid);
- return GlobalStatus.Committed;
- }
-
- @Override
- public GlobalStatus rollback(String xid) throws TransactionException {
-
- rollbackAll(xid);
-
- return GlobalStatus.Rollbacked;
- }
-
- @Override
- public GlobalStatus getStatus(String xid) throws TransactionException {
- return GlobalStatus.Begin;
- }
-
- @Override
- public GlobalStatus globalReport(String xid, GlobalStatus
globalStatus) throws TransactionException {
- return globalStatus;
- }
- };
-
-
- public static void commitAll(String xid) throws TransactionException {
-
- List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
- for (BranchSessionMock branch : branches) {
- resourceManager.branchCommit(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
- }
- }
-
- public static void rollbackAll(String xid) throws TransactionException {
-
- List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
- for (BranchSessionMock branch : branches) {
- resourceManager.branchRollback(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
- }
- }
}
diff --git
a/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
b/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
index 4d5c42dba9..2debd51010 100644
---
a/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
+++
b/integration-tx-api/src/test/java/org/apache/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java
@@ -16,31 +16,30 @@
*/
package org.apache.seata.integration.tx.api.interceptor.parser;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.GlobalStatus;
import org.apache.seata.core.model.TransactionManager;
import org.apache.seata.integration.tx.api.util.ProxyUtil;
import org.apache.seata.tm.TransactionManagerHolder;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class ProxyUtilsGlobalTransactionalTest {
- private final String DEFAULT_XID = "default_xid";
-
-
- @Test
- public void testTcc() {
- //given
- BusinessImpl business = new BusinessImpl();
-
- Business businessProxy = ProxyUtil.createProxy(business);
+ private static TransactionManager bakTransactionManager;
+ @BeforeAll
+ public static void beforeAll() {
+ bakTransactionManager = TransactionManagerHolder.get();
TransactionManager mockTransactionManager = new TransactionManager() {
@Override
public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
- return DEFAULT_XID;
+ return XID.generateXID(UUIDGenerator.generateUUID());
}
@Override
@@ -65,13 +64,23 @@ public class ProxyUtilsGlobalTransactionalTest {
};
TransactionManagerHolder.set(mockTransactionManager);
+ }
+
+ @AfterAll
+ public static void afterAll() {
+ TransactionManagerHolder.set(bakTransactionManager);
+ }
+
+
+ @Test
+ public void testTcc() {
+ BusinessImpl business = new BusinessImpl();
+
+ Business businessProxy = ProxyUtil.createProxy(business);
- //when
String result = businessProxy.doBiz("test");
- //then
Assertions.assertNotNull(result);
-
}
diff --git
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
index 277feb37cd..1826f3ebcb 100644
---
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
+++
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.seata.rm.tcc.interceptor;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
import org.apache.seata.core.context.RootContext;
import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.BranchStatus;
@@ -27,10 +29,12 @@ import org.apache.seata.integration.tx.api.util.ProxyUtil;
import org.apache.seata.rm.DefaultResourceManager;
import org.apache.seata.rm.tcc.NormalTccActionImpl;
import org.apache.seata.rm.tcc.TccParam;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
@@ -38,114 +42,105 @@ import java.util.concurrent.atomic.AtomicReference;
public class ProxyUtilsTccTest {
- private final String DEFAULT_XID = "default_xid";
+ private ResourceManager backResourceManager;
- AtomicReference<String> branchReference = new AtomicReference<>();
+ private final AtomicReference<String> branchReference = new
AtomicReference<>();
+ @BeforeEach
+ public void beforeEach() {
+ RootContext.bind(XID.generateXID(UUIDGenerator.generateUUID()));
+ ResourceManager resourceManager = new ResourceManager() {
- ResourceManager resourceManager = new ResourceManager() {
+ @Override
+ public Long branchRegister(BranchType branchType, String
resourceId, String clientId, String xid, String applicationData, String
lockKeys) throws TransactionException {
+ branchReference.set(resourceId);
+ return System.currentTimeMillis();
+ }
- @Override
- public Long branchRegister(BranchType branchType, String resourceId,
String clientId, String xid, String applicationData, String lockKeys) throws
TransactionException {
- branchReference.set(resourceId);
- return System.currentTimeMillis();
- }
+ @Override
+ public void branchReport(BranchType branchType, String xid, long
branchId, BranchStatus status, String applicationData) throws
TransactionException {
- @Override
- public void branchReport(BranchType branchType, String xid, long
branchId, BranchStatus status, String applicationData) throws
TransactionException {
+ }
- }
+ @Override
+ public boolean lockQuery(BranchType branchType, String resourceId,
String xid, String lockKeys) throws TransactionException {
+ return false;
+ }
- @Override
- public boolean lockQuery(BranchType branchType, String resourceId,
String xid, String lockKeys) throws TransactionException {
- return false;
- }
+ @Override
+ public BranchStatus branchCommit(BranchType branchType, String
xid, long branchId, String resourceId, String applicationData) throws
TransactionException {
+ return null;
+ }
- @Override
- public BranchStatus branchCommit(BranchType branchType, String xid,
long branchId, String resourceId, String applicationData) throws
TransactionException {
- return null;
- }
+ @Override
+ public BranchStatus branchRollback(BranchType branchType, String
xid, long branchId, String resourceId, String applicationData) throws
TransactionException {
+ return null;
+ }
- @Override
- public BranchStatus branchRollback(BranchType branchType, String xid,
long branchId, String resourceId, String applicationData) throws
TransactionException {
- return null;
- }
+ @Override
+ public void registerResource(Resource resource) {
- @Override
- public void registerResource(Resource resource) {
+ }
- }
+ @Override
+ public void unregisterResource(Resource resource) {
- @Override
- public void unregisterResource(Resource resource) {
+ }
- }
+ @Override
+ public Map<String, Resource> getManagedResources() {
+ return null;
+ }
- @Override
- public Map<String, Resource> getManagedResources() {
- return null;
- }
+ @Override
+ public BranchType getBranchType() {
+ return null;
+ }
- @Override
- public BranchType getBranchType() {
- return null;
- }
+ @Override
+ public GlobalStatus getGlobalStatus(BranchType branchType, String
xid) {
+ return null;
+ }
- @Override
- public GlobalStatus getGlobalStatus(BranchType branchType, String xid)
{
- return null;
- }
+ };
+ backResourceManager =
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
+ }
- };
- private final NormalTccActionImpl tccActionProxy=
ProxyUtil.createProxy(new NormalTccActionImpl());
+ @AfterEach
+ public void afterEach() {
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
backResourceManager);
+ RootContext.unbind();
+ }
@Test
public void testTcc() {
- try {
- //given
- RootContext.bind(DEFAULT_XID);
-
- TccParam tccParam = new TccParam(1, "[email protected]");
- List<String> listB = Arrays.asList("b");
+ TccParam tccParam = new TccParam(1, "[email protected]");
+ List<String> listB = Collections.singletonList("b");
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
+ NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new
NormalTccActionImpl());
+ String result = tccActionProxy.prepare(null, 0, listB, tccParam);
- //when
- String result = tccActionProxy.prepare(null, 0, listB, tccParam);
-
- //then
- Assertions.assertEquals("a", result);
- Assertions.assertNotNull(result);
- Assertions.assertEquals("normalTccActionForTest",
branchReference.get());
- } finally {
- RootContext.unbind();
- }
+ Assertions.assertEquals("a", result);
+ Assertions.assertNotNull(result);
+ Assertions.assertEquals("normalTccActionForTest",
branchReference.get());
}
@Test
public void testTccThrowRawException() {
- try {
- //given
- RootContext.bind(DEFAULT_XID);
-
- TccParam tccParam = new TccParam(1, "[email protected]");
- List<String> listB = Arrays.asList("b");
-
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
+ TccParam tccParam = new TccParam(1, "[email protected]");
+ List<String> listB = Collections.singletonList("b");
- //when
- //then
- Assertions.assertThrows(IllegalArgumentException.class, () ->
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
- } finally {
- RootContext.unbind();
- }
+ NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new
NormalTccActionImpl());
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
tccActionProxy.prepareWithException(null, 0, listB, tccParam));
}
@Test
- public void testTccImplementOtherMethod(){
+ public void testTccImplementOtherMethod() {
+ NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(new
NormalTccActionImpl());
Assertions.assertTrue(tccActionProxy.otherMethod());
}
diff --git
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
index 867b9c2de9..cc8a255e4a 100644
---
a/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
+++
b/tcc/src/test/java/org/apache/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java
@@ -16,14 +16,8 @@
*/
package org.apache.seata.rm.tcc.interceptor.parser;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.seata.core.context.RootContext;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.BranchType;
import org.apache.seata.core.model.GlobalStatus;
@@ -45,28 +39,95 @@ import org.apache.seata.tm.api.GlobalTransaction;
import org.apache.seata.tm.api.GlobalTransactionContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
class TccActionInterceptorParserTest {
- @BeforeAll
- public static void init() throws IOException {
- System.setProperty("config.type", "file");
- System.setProperty("config.file.name", "file.conf");
- System.setProperty("txServiceGroup", "default_tx_group");
- System.setProperty("service.vgroupMapping.default_tx_group",
"default");
+ private ResourceManager backResourceManager;
+ private TransactionManager backTransactionManager;
+
+ @BeforeEach
+ public void beforeEach() {
+ backResourceManager =
DefaultResourceManager.get().getResourceManager(BranchType.TCC);
+ backTransactionManager = TransactionManagerHolder.get();
+ Map<String, List<BranchSessionMock>> applicationDataMap = new
ConcurrentHashMap<>();
+
+ ResourceManager mockResourceManager = new TCCResourceManager() {
+
+ @Override
+ public Long branchRegister(BranchType branchType, String
resourceId, String clientId, String xid, String applicationData, String
lockKeys) throws TransactionException {
+
+ long branchId = System.currentTimeMillis();
+
+ List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+ BranchSessionMock branchSessionMock = new BranchSessionMock();
+ branchSessionMock.setXid(xid);
+ branchSessionMock.setBranchType(branchType);
+ branchSessionMock.setResourceId(resourceId);
+ branchSessionMock.setApplicationData(applicationData);
+ branchSessionMock.setBranchId(branchId);
+
+ branches.add(branchSessionMock);
+
+ return branchId;
+ }
+ };
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
mockResourceManager);
+
+ TransactionManager mockTransactionManager = new TransactionManager() {
+ @Override
+ public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
+ return XID.generateXID(UUIDGenerator.generateUUID());
+ }
+
+ @Override
+ public GlobalStatus commit(String xid) throws TransactionException
{
+ List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+ for (BranchSessionMock branch : branches) {
+ mockResourceManager.branchCommit(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
+ }
+ return GlobalStatus.Committed;
+ }
+
+ @Override
+ public GlobalStatus rollback(String xid) throws
TransactionException {
+ List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+ for (BranchSessionMock branch : branches) {
+ mockResourceManager.branchRollback(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
+ }
+
+ return GlobalStatus.Rollbacked;
+ }
+
+ @Override
+ public GlobalStatus getStatus(String xid) throws
TransactionException {
+ return GlobalStatus.Begin;
+ }
+
+ @Override
+ public GlobalStatus globalReport(String xid, GlobalStatus
globalStatus) throws TransactionException {
+ return globalStatus;
+ }
+ };
+ TransactionManagerHolder.set(mockTransactionManager);
}
@AfterEach
- public void clearTccResource(){
- resourceManager.getManagedResources().clear();
+ public void afterEach() {
+ DefaultResourceManager.mockResourceManager(BranchType.TCC,
backResourceManager);
+ TransactionManagerHolder.set(backTransactionManager);
}
+
@Test
void parserInterfaceToProxy() {
-
//given
TccActionInterceptorParser tccActionInterceptorParser = new
TccActionInterceptorParser();
NormalTccActionImpl tccAction = new NormalTccActionImpl();
@@ -76,21 +137,13 @@ class TccActionInterceptorParserTest {
//then
Assertions.assertNotNull(proxyInvocationHandler);
-
}
@Test
public void testNestTcc_should_commit() throws Exception {
- //given
- RootContext.unbind();
- DefaultResourceManager.get();
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
-
- TransactionManagerHolder.set(transactionManager);
-
TccActionImpl tccAction = new TccActionImpl();
- TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
+ TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
Assertions.assertNotNull(tccActionProxy);
NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -137,15 +190,8 @@ class TccActionInterceptorParserTest {
@Test
public void testNestTcc_should_rollback() throws Exception {
- //given
- RootContext.unbind();
- DefaultResourceManager.get();
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
-
- TransactionManagerHolder.set(transactionManager);
-
TccActionImpl tccAction = new TccActionImpl();
- TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
+ TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
Assertions.assertNotNull(tccActionProxy);
NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -186,21 +232,13 @@ class TccActionInterceptorParserTest {
Assertions.assertFalse(nestTccAction.isCommit());
Assertions.assertFalse(tccAction.isCommit());
-
}
@Test
public void testNestTcc_required_new_should_rollback_commit() throws
Exception {
- //given
- RootContext.unbind();
- DefaultResourceManager.get();
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
-
- TransactionManagerHolder.set(transactionManager);
-
TccActionImpl tccAction = new TccActionImpl();
- TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
+ TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
Assertions.assertNotNull(tccActionProxy);
NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -244,18 +282,10 @@ class TccActionInterceptorParserTest {
}
-
@Test
public void testNestTcc_required_new_should_both_commit() throws Exception
{
- //given
- RootContext.unbind();
- DefaultResourceManager.get();
- DefaultResourceManager.mockResourceManager(BranchType.TCC,
resourceManager);
-
- TransactionManagerHolder.set(transactionManager);
-
TccActionImpl tccAction = new TccActionImpl();
- TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
+ TccAction tccActionProxy = ProxyUtil.createProxy(tccAction);
Assertions.assertNotNull(tccActionProxy);
NestTccActionImpl nestTccAction = new NestTccActionImpl();
@@ -298,78 +328,4 @@ class TccActionInterceptorParserTest {
}
-
-
- private static Map<String, List<BranchSessionMock>> applicationDataMap =
new ConcurrentHashMap<>();
-
-
- private static TransactionManager transactionManager = new
TransactionManager() {
- @Override
- public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
- return UUID.randomUUID().toString();
- }
-
- @Override
- public GlobalStatus commit(String xid) throws TransactionException {
- commitAll(xid);
- return GlobalStatus.Committed;
- }
-
- @Override
- public GlobalStatus rollback(String xid) throws TransactionException {
-
- rollbackAll(xid);
-
- return GlobalStatus.Rollbacked;
- }
-
- @Override
- public GlobalStatus getStatus(String xid) throws TransactionException {
- return GlobalStatus.Begin;
- }
-
- @Override
- public GlobalStatus globalReport(String xid, GlobalStatus
globalStatus) throws TransactionException {
- return globalStatus;
- }
- };
-
-
- private static ResourceManager resourceManager = new TCCResourceManager() {
-
- @Override
- public Long branchRegister(BranchType branchType, String resourceId,
String clientId, String xid, String applicationData, String lockKeys) throws
TransactionException {
-
- long branchId = System.currentTimeMillis();
-
- List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
- BranchSessionMock branchSessionMock = new BranchSessionMock();
- branchSessionMock.setXid(xid);
- branchSessionMock.setBranchType(branchType);
- branchSessionMock.setResourceId(resourceId);
- branchSessionMock.setApplicationData(applicationData);
- branchSessionMock.setBranchId(branchId);
-
- branches.add(branchSessionMock);
-
- return branchId;
- }
- };
-
- public static void commitAll(String xid) throws TransactionException {
-
- List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
- for (BranchSessionMock branch : branches) {
- resourceManager.branchCommit(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
- }
- }
-
- public static void rollbackAll(String xid) throws TransactionException {
-
- List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
- for (BranchSessionMock branch : branches) {
- resourceManager.branchRollback(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
- }
- }
-
}
diff --git
a/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
b/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
index ca6f2317da..eb588670e3 100644
---
a/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
+++
b/test/src/test/java/org/apache/seata/saga/annotation/rm/interceptor/parser/SagaActionInterceptorParserTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.seata.saga.annotation.rm.interceptor.parser;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.BranchType;
import org.apache.seata.core.model.GlobalStatus;
@@ -34,34 +36,89 @@ import org.apache.seata.tm.api.GlobalTransaction;
import org.apache.seata.tm.api.GlobalTransactionContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
- *
+ * Saga Action InterceptorParser Test
*/
public class SagaActionInterceptorParserTest {
- public static String DEFAULT_XID = "default_xid";
+ private ResourceManager backResourceManager;
+ private TransactionManager backTransactionManager;
+
+ @BeforeEach
+ public void beforeEach() {
+ backTransactionManager = TransactionManagerHolder.get();
+ backResourceManager =
DefaultResourceManager.get().getResourceManager(BranchType.SAGA_ANNOTATION);
+
+ Map<String, List<BranchSessionMock>> applicationDataMap = new
ConcurrentHashMap<>();
+ ResourceManager mockResourceManager = new
SagaAnnotationResourceManager() {
+
+ @Override
+ public Long branchRegister(BranchType branchType, String
resourceId, String clientId, String xid, String applicationData, String
lockKeys) throws TransactionException {
+
+ long branchId = System.currentTimeMillis();
+
+ List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+ BranchSessionMock branchSessionMock = new BranchSessionMock();
+ branchSessionMock.setXid(xid);
+ branchSessionMock.setBranchType(branchType);
+ branchSessionMock.setResourceId(resourceId);
+ branchSessionMock.setApplicationData(applicationData);
+ branchSessionMock.setBranchId(branchId);
+
+ branches.add(branchSessionMock);
+
+ return branchId;
+ }
+ };
+ DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION,
mockResourceManager);
+
+ TransactionManager mockTransactionManager = new TransactionManager() {
+ @Override
+ public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
+ return XID.generateXID(UUIDGenerator.generateUUID());
+ }
+
+ @Override
+ public GlobalStatus commit(String xid) throws TransactionException
{
+ return GlobalStatus.Committed;
+ }
+
+ @Override
+ public GlobalStatus rollback(String xid) throws
TransactionException {
+ List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
+ for (BranchSessionMock branch : branches) {
+ mockResourceManager.branchRollback(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
+ }
- @BeforeAll
- public static void init() throws IOException {
- System.setProperty("config.type", "file");
- System.setProperty("config.file.name", "file.conf");
- System.setProperty("txServiceGroup", "default_tx_group");
- System.setProperty("service.vgroupMapping.default_tx_group",
"default");
+ return GlobalStatus.Rollbacked;
+ }
+
+ @Override
+ public GlobalStatus getStatus(String xid) throws
TransactionException {
+ return GlobalStatus.Begin;
+ }
+
+ @Override
+ public GlobalStatus globalReport(String xid, GlobalStatus
globalStatus) throws TransactionException {
+ return globalStatus;
+ }
+ };
+ TransactionManagerHolder.set(mockTransactionManager);
}
@AfterEach
- public void clearTccResource() {
-
DefaultResourceManager.get().getResourceManager(BranchType.SAGA_ANNOTATION).getManagedResources().clear();
+ public void afterEach() {
+ DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION,
backResourceManager);
+ TransactionManagerHolder.set(backTransactionManager);
}
@Test
@@ -77,15 +134,10 @@ public class SagaActionInterceptorParserTest {
@Test
public void testSagaAnnotation_should_commit() throws TransactionException
{
- DefaultResourceManager.get();
- DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION,
resourceManager);
-
- TransactionManagerHolder.set(transactionManager);
-
NormalSagaAnnotationActionImpl sagaActionProxy =
ProxyUtil.createProxy(new NormalSagaAnnotationActionImpl());
SagaParam sagaParam = new SagaParam(2, "[email protected]");
- List<String> listB = Arrays.asList("b");
+ List<String> listB = Collections.singletonList("b");
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
@@ -96,11 +148,7 @@ public class SagaActionInterceptorParserTest {
Assertions.assertTrue(result);
- if (result) {
- tx.commit();
- } else {
- tx.rollback();
- }
+ tx.commit();
} catch (Exception exx) {
tx.rollback();
throw exx;
@@ -111,15 +159,10 @@ public class SagaActionInterceptorParserTest {
@Test
public void testSagaAnnotation_should_rollback() throws
TransactionException {
- DefaultResourceManager.get();
- DefaultResourceManager.mockResourceManager(BranchType.SAGA_ANNOTATION,
resourceManager);
-
- TransactionManagerHolder.set(transactionManager);
-
NormalSagaAnnotationActionImpl sagaActionProxy =
ProxyUtil.createProxy(new NormalSagaAnnotationActionImpl());
SagaParam sagaParam = new SagaParam(1, "[email protected]");
- List<String> listB = Arrays.asList("b");
+ List<String> listB = Collections.singletonList("b");
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
@@ -129,12 +172,7 @@ public class SagaActionInterceptorParserTest {
boolean result = sagaActionProxy.commit(null, 1, listB, sagaParam);
Assertions.assertFalse(result);
-
- if (result) {
- tx.commit();
- } else {
- tx.rollback();
- }
+ tx.rollback();
} catch (Exception exx) {
tx.rollback();
throw exx;
@@ -143,68 +181,5 @@ public class SagaActionInterceptorParserTest {
Assertions.assertFalse(sagaActionProxy.isCommit());
}
- private static Map<String, List<BranchSessionMock>> applicationDataMap =
new ConcurrentHashMap<>();
-
-
- private static TransactionManager transactionManager = new
TransactionManager() {
- @Override
- public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
- return DEFAULT_XID;
- }
-
- @Override
- public GlobalStatus commit(String xid) throws TransactionException {
- return GlobalStatus.Committed;
- }
-
- @Override
- public GlobalStatus rollback(String xid) throws TransactionException {
-
- rollbackAll(xid);
-
- return GlobalStatus.Rollbacked;
- }
-
- @Override
- public GlobalStatus getStatus(String xid) throws TransactionException {
- return GlobalStatus.Begin;
- }
-
- @Override
- public GlobalStatus globalReport(String xid, GlobalStatus
globalStatus) throws TransactionException {
- return globalStatus;
- }
- };
-
-
- private static ResourceManager resourceManager = new
SagaAnnotationResourceManager() {
-
- @Override
- public Long branchRegister(BranchType branchType, String resourceId,
String clientId, String xid, String applicationData, String lockKeys) throws
TransactionException {
-
- long branchId = System.currentTimeMillis();
-
- List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
- BranchSessionMock branchSessionMock = new BranchSessionMock();
- branchSessionMock.setXid(xid);
- branchSessionMock.setBranchType(branchType);
- branchSessionMock.setResourceId(resourceId);
- branchSessionMock.setApplicationData(applicationData);
- branchSessionMock.setBranchId(branchId);
-
- branches.add(branchSessionMock);
-
- return branchId;
- }
- };
-
-
- public static void rollbackAll(String xid) throws TransactionException {
-
- List<BranchSessionMock> branches =
applicationDataMap.computeIfAbsent(xid, s -> new ArrayList<>());
- for (BranchSessionMock branch : branches) {
- resourceManager.branchRollback(branch.getBranchType(),
branch.getXid(), branch.getBranchId(), branch.getResourceId(),
branch.getApplicationData());
- }
- }
}
\ No newline at end of file
diff --git
a/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java
b/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java
index 9ee20b3073..ffd84b7c06 100644
--- a/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java
+++ b/tm/src/test/java/org/apache/seata/tm/TransactionManagerHolderTest.java
@@ -18,18 +18,38 @@ package org.apache.seata.tm;
import org.apache.seata.common.exception.ShouldNeverHappenException;
+import org.apache.seata.core.exception.TransactionException;
+import org.apache.seata.core.model.GlobalStatus;
import org.apache.seata.core.model.TransactionManager;
import org.apache.seata.tm.api.transaction.MockTransactionManager;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class TransactionManagerHolderTest {
+ private TransactionManager backTransactionManager;
+
+ @BeforeEach
+ public void beforeEach() {
+ backTransactionManager = TransactionManagerHolder.get();
+ }
+
+ @AfterEach
+ public void afterEach() {
+ TransactionManagerHolder.set(backTransactionManager);
+ }
+
@Test
void getTest() {
- Assertions.assertThrows(ShouldNeverHappenException.class, () -> {
TransactionManagerHolder.set(null);
- TransactionManagerHolder.get();});
+ Assertions.assertThrows(ShouldNeverHappenException.class, () -> {
+ TransactionManagerHolder.set(null);
+ TransactionManagerHolder.get();
+ });
}
@@ -38,7 +58,7 @@ class TransactionManagerHolderTest {
MockTransactionManager mockTransactionManager = new
MockTransactionManager();
TransactionManagerHolder.set(mockTransactionManager);
TransactionManager transactionManager = TransactionManagerHolder.get();
- Assertions.assertTrue(transactionManager instanceof
MockTransactionManager);
+ Assertions.assertInstanceOf(MockTransactionManager.class,
transactionManager);
}
}
diff --git a/tm/src/test/java/org/apache/seata/tm/api/APITest.java
b/tm/src/test/java/org/apache/seata/tm/api/APITest.java
index efd6f2960c..a291f899cd 100644
--- a/tm/src/test/java/org/apache/seata/tm/api/APITest.java
+++ b/tm/src/test/java/org/apache/seata/tm/api/APITest.java
@@ -22,6 +22,7 @@ import org.apache.seata.core.model.GlobalStatus;
import org.apache.seata.core.model.TransactionManager;
import org.apache.seata.tm.TransactionManagerHolder;
import org.apache.seata.tm.api.transaction.TransactionInfo;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
@@ -36,11 +37,14 @@ public class APITest {
private static final String TX_NAME = "test";
private static final int TIME_OUT = 30000;
+ private static TransactionManager backTransactionManager;
+
/**
* Init.
*/
@BeforeAll
public static void init() {
+ backTransactionManager = TransactionManagerHolder.get();
TransactionManagerHolder.set(new TransactionManager() {
@Override
public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout)
@@ -70,6 +74,11 @@ public class APITest {
});
}
+ @AfterAll
+ public static void afterAll() {
+ TransactionManagerHolder.set(backTransactionManager);
+ }
+
/**
* Clean root context.
*/
@@ -204,7 +213,7 @@ public class APITest {
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
tx.globalReport(tx.getStatus());
- Assertions.assertThrows(IllegalStateException.class, () ->
tx.globalReport(null));
+ Assertions.assertThrows(IllegalStateException.class, () ->
tx.globalReport(null));
Assertions.assertThrows(IllegalStateException.class, () -> {
RootContext.unbind();
GlobalTransaction tx2 =
GlobalTransactionContext.getCurrentOrCreate();
diff --git
a/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java
b/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java
index 35af8625f6..c77075ac6f 100644
--- a/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java
+++ b/tm/src/test/java/org/apache/seata/tm/api/DefaultGlobalTransactionTest.java
@@ -17,28 +17,34 @@
package org.apache.seata.tm.api;
+import org.apache.seata.common.XID;
+import org.apache.seata.common.util.UUIDGenerator;
import org.apache.seata.core.context.RootContext;
import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.GlobalStatus;
import org.apache.seata.core.model.TransactionManager;
import org.apache.seata.tm.TransactionManagerHolder;
import org.apache.seata.tm.api.transaction.MyRuntimeException;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class DefaultGlobalTransactionTest {
- private static final String DEFAULT_XID = "1234567890";
- @BeforeAll
- public static void init() {
+ private TransactionManager backTransactionManager;
+
+ @BeforeEach
+ public void init() {
+ backTransactionManager = TransactionManagerHolder.get();
TransactionManagerHolder.set(new TransactionManager() {
@Override
public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout)
throws TransactionException {
- return DEFAULT_XID;
+ return XID.generateXID(UUIDGenerator.generateUUID());
}
@Override
@@ -53,7 +59,7 @@ class DefaultGlobalTransactionTest {
@Override
public GlobalStatus getStatus(String xid) throws
TransactionException {
- throw new MyRuntimeException("");
+ throw new MyRuntimeException("");
}
@Override
@@ -61,12 +67,12 @@ class DefaultGlobalTransactionTest {
return globalStatus;
}
});
+ RootContext.unbind();
}
@Test
public void commitRetryExceptionTest() throws TransactionException {
- RootContext.unbind();
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
tx.begin();
Assertions.assertThrows(TransactionException.class, tx::commit);
@@ -74,7 +80,6 @@ class DefaultGlobalTransactionTest {
@Test
public void commitNoXIDExceptionTest() throws TransactionException {
- RootContext.unbind();
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
Assertions.assertThrows(IllegalStateException.class, tx::commit);
}
@@ -82,7 +87,6 @@ class DefaultGlobalTransactionTest {
@Test
public void rollBackRetryExceptionTest() throws TransactionException {
- RootContext.unbind();
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
tx.begin();
Assertions.assertThrows(TransactionException.class, tx::rollback);
@@ -90,10 +94,14 @@ class DefaultGlobalTransactionTest {
@Test
public void rollBackNoXIDExceptionTest() throws TransactionException {
- RootContext.unbind();
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
tx.begin();
Assertions.assertThrows(TransactionException.class, tx::rollback);
}
+ @AfterEach
+ public void afterEach() {
+ TransactionManagerHolder.set(backTransactionManager);
+ }
+
}
diff --git
a/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java
b/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java
index c5bef02966..3c10f6ecec 100644
--- a/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java
+++ b/tm/src/test/java/org/apache/seata/tm/api/GlobalTransactionContextTest.java
@@ -21,21 +21,24 @@ import org.apache.seata.core.exception.TransactionException;
import org.apache.seata.core.model.GlobalStatus;
import org.apache.seata.core.model.TransactionManager;
import org.apache.seata.tm.TransactionManagerHolder;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class GlobalTransactionContextTest {
private static final String DEFAULT_XID = "1234567890";
- @BeforeAll
- public static void init() {
+ private TransactionManager backTransactionManager;
+
+ @BeforeEach
+ public void init() {
+ backTransactionManager = TransactionManagerHolder.get();
TransactionManagerHolder.set(new TransactionManager() {
@Override
- public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout)
- throws TransactionException {
+ public String begin(String applicationId, String
transactionServiceGroup, String name, int timeout) throws TransactionException {
return DEFAULT_XID;
}
@@ -67,6 +70,10 @@ class GlobalTransactionContextTest {
tx = GlobalTransactionContext.reload(DEFAULT_XID);
GlobalTransaction finalTx = tx;
Assertions.assertThrows(IllegalStateException.class, finalTx::begin);
+ }
+ @AfterEach
+ public void afterEach() {
+ TransactionManagerHolder.set(backTransactionManager);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]