This is an automated email from the ASF dual-hosted git repository.
jianbin pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git
The following commit(s) were added to refs/heads/2.x by this push:
new b2d15dacb7 test: add some UT for saga compatible (#7442)
b2d15dacb7 is described below
commit b2d15dacb7923690c6eda0e27a03fceca05faa6e
Author: jimin <[email protected]>
AuthorDate: Mon Jun 16 13:51:50 2025 +0800
test: add some UT for saga compatible (#7442)
---
changes/en-us/2.x.md | 1 +
changes/zh-cn/2.x.md | 1 +
.../saga/engine/config/DbStateMachineConfig.java | 41 ++--
.../engine/impl/DefaultStateMachineConfig.java | 54 ++++-
.../engine/config/DbStateMachineConfigTest.java | 57 +++++
.../engine/impl/DefaultStateMachineConfigTest.java | 240 +++++++++++++++++++++
.../engine/config/AbstractStateMachineConfig.java | 4 +-
7 files changed, 378 insertions(+), 20 deletions(-)
diff --git a/changes/en-us/2.x.md b/changes/en-us/2.x.md
index f32621d09f..f820edd1c8 100644
--- a/changes/en-us/2.x.md
+++ b/changes/en-us/2.x.md
@@ -93,6 +93,7 @@ Add changes here for all PR submitted to the 2.x branch.
- [[#7433](https://github.com/apache/incubator-seata/pull/7433)] add UT for
GlobalTransactionScanner class
- [[#7436](https://github.com/apache/incubator-seata/pull/7436)] fix
namingserver ut error
- [[#7435](https://github.com/apache/incubator-seata/pull/7435)] Add common
test config for dynamic server port assignment in tests
+- [[#7442](https://github.com/apache/incubator-seata/pull/7442)] add some UT
for saga compatible
### refactor:
diff --git a/changes/zh-cn/2.x.md b/changes/zh-cn/2.x.md
index 0e5350ad4d..1136e75d42 100644
--- a/changes/zh-cn/2.x.md
+++ b/changes/zh-cn/2.x.md
@@ -94,6 +94,7 @@
- [[#7436](https://github.com/apache/incubator-seata/pull/7436)]
修复namingserver 单测错误
- [[#7435](https://github.com/apache/incubator-seata/pull/7435)]
为测试中的动态服务器端口分配添加通用测试配置
- [[#7432](https://github.com/apache/incubator-seata/pull/7432)] 使用Maven
Profile按条件引入Test模块
+- [[#7442](https://github.com/apache/incubator-seata/pull/7442)] 增加 saga
compatible 模块单测
### refactor:
diff --git
a/compatible/src/main/java/io/seata/saga/engine/config/DbStateMachineConfig.java
b/compatible/src/main/java/io/seata/saga/engine/config/DbStateMachineConfig.java
index 9c2480733a..284382792a 100644
---
a/compatible/src/main/java/io/seata/saga/engine/config/DbStateMachineConfig.java
+++
b/compatible/src/main/java/io/seata/saga/engine/config/DbStateMachineConfig.java
@@ -70,16 +70,21 @@ public class DbStateMachineConfig extends
DefaultStateMachineConfig implements D
try {
Configuration configuration = ConfigurationFactory.getInstance();
if (configuration != null) {
- this.rmReportSuccessEnable =
configuration.getBoolean(ConfigurationKeys.CLIENT_REPORT_SUCCESS_ENABLE,
DEFAULT_CLIENT_REPORT_SUCCESS_ENABLE);
- this.sagaBranchRegisterEnable =
configuration.getBoolean(ConfigurationKeys.CLIENT_SAGA_BRANCH_REGISTER_ENABLE,
DEFAULT_CLIENT_SAGA_BRANCH_REGISTER_ENABLE);
-
setSagaJsonParser(configuration.getConfig(ConfigurationKeys.CLIENT_SAGA_JSON_PARSER,
DEFAULT_SAGA_JSON_PARSER));
+ this.rmReportSuccessEnable =
configuration.getBoolean(ConfigurationKeys.CLIENT_REPORT_SUCCESS_ENABLE,
+ DEFAULT_CLIENT_REPORT_SUCCESS_ENABLE);
+ this.sagaBranchRegisterEnable = configuration.getBoolean(
+ ConfigurationKeys.CLIENT_SAGA_BRANCH_REGISTER_ENABLE,
DEFAULT_CLIENT_SAGA_BRANCH_REGISTER_ENABLE);
+ setSagaJsonParser(
+
configuration.getConfig(ConfigurationKeys.CLIENT_SAGA_JSON_PARSER,
DEFAULT_SAGA_JSON_PARSER));
this.applicationId =
configuration.getConfig(ConfigurationKeys.APPLICATION_ID);
this.txServiceGroup =
configuration.getConfig(ConfigurationKeys.TX_SERVICE_GROUP);
this.accessKey =
configuration.getConfig(ConfigurationKeys.ACCESS_KEY, null);
this.secretKey =
configuration.getConfig(ConfigurationKeys.SECRET_KEY, null);
-
setSagaRetryPersistModeUpdate(configuration.getBoolean(ConfigurationKeys.CLIENT_SAGA_RETRY_PERSIST_MODE_UPDATE,
+ setSagaRetryPersistModeUpdate(
+
configuration.getBoolean(ConfigurationKeys.CLIENT_SAGA_RETRY_PERSIST_MODE_UPDATE,
DEFAULT_CLIENT_SAGA_RETRY_PERSIST_MODE_UPDATE));
-
setSagaCompensatePersistModeUpdate(configuration.getBoolean(ConfigurationKeys.CLIENT_SAGA_COMPENSATE_PERSIST_MODE_UPDATE,
+ setSagaCompensatePersistModeUpdate(
+
configuration.getBoolean(ConfigurationKeys.CLIENT_SAGA_COMPENSATE_PERSIST_MODE_UPDATE,
DEFAULT_CLIENT_SAGA_COMPENSATE_PERSIST_MODE_UPDATE));
}
} catch (Exception e) {
@@ -123,14 +128,7 @@ public class DbStateMachineConfig extends
DefaultStateMachineConfig implements D
}
if (sagaTransactionalTemplate == null) {
- DefaultSagaTransactionalTemplate
defaultSagaTransactionalTemplate = new DefaultSagaTransactionalTemplate();
-
defaultSagaTransactionalTemplate.setApplicationContext(getApplicationContext());
-
defaultSagaTransactionalTemplate.setApplicationId(applicationId);
-
defaultSagaTransactionalTemplate.setTxServiceGroup(txServiceGroup);
- defaultSagaTransactionalTemplate.setAccessKey(accessKey);
- defaultSagaTransactionalTemplate.setSecretKey(secretKey);
- defaultSagaTransactionalTemplate.afterPropertiesSet();
- sagaTransactionalTemplate = defaultSagaTransactionalTemplate;
+ sagaTransactionalTemplate =
buildDefaultSagaTransactionalTemplate();
}
dbStateLogStore.setSagaTransactionalTemplate(sagaTransactionalTemplate);
@@ -151,10 +149,25 @@ public class DbStateMachineConfig extends
DefaultStateMachineConfig implements D
super.afterPropertiesSet();
}
+ public SagaTransactionalTemplate buildDefaultSagaTransactionalTemplate() {
+ DefaultSagaTransactionalTemplate defaultSagaTransactionalTemplate =
new DefaultSagaTransactionalTemplate();
+
defaultSagaTransactionalTemplate.setApplicationContext(getApplicationContext());
+ defaultSagaTransactionalTemplate.setApplicationId(applicationId);
+ defaultSagaTransactionalTemplate.setTxServiceGroup(txServiceGroup);
+ defaultSagaTransactionalTemplate.setAccessKey(accessKey);
+ defaultSagaTransactionalTemplate.setSecretKey(secretKey);
+ try {
+ defaultSagaTransactionalTemplate.afterPropertiesSet();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return defaultSagaTransactionalTemplate;
+ }
+
@Override
public void destroy() throws Exception {
if ((sagaTransactionalTemplate != null) && (sagaTransactionalTemplate
instanceof DisposableBean)) {
- ((DisposableBean) sagaTransactionalTemplate).destroy();
+ ((DisposableBean)sagaTransactionalTemplate).destroy();
}
}
diff --git
a/compatible/src/main/java/io/seata/saga/engine/impl/DefaultStateMachineConfig.java
b/compatible/src/main/java/io/seata/saga/engine/impl/DefaultStateMachineConfig.java
index 6ae50b303d..8a0f18ae30 100644
---
a/compatible/src/main/java/io/seata/saga/engine/impl/DefaultStateMachineConfig.java
+++
b/compatible/src/main/java/io/seata/saga/engine/impl/DefaultStateMachineConfig.java
@@ -98,6 +98,11 @@ public class DefaultStateMachineConfig implements
StateMachineConfig, Applicatio
actual.setStateLangStore(stateLangStore);
}
+ /**
+ * this method will return a {@link ExpressionFactoryManager} which is
wrapped from {@link
org.apache.seata.saga.engine.expression.ExpressionFactoryManager}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public ExpressionFactoryManager getExpressionFactoryManager() {
if (expressionFactoryManager == null) {
@@ -111,15 +116,30 @@ public class DefaultStateMachineConfig implements
StateMachineConfig, Applicatio
this.expressionResolver.setExpressionFactoryManager(expressionFactoryManager.unwrap());
}
+ /**
+ * fix setExpressionFactoryManager NPE issue
+ * @param expressionResolver
+ */
+ public void setExpressionResolver(ExpressionResolver expressionResolver) {
+ this.expressionResolver = expressionResolver;
+ this.actual.setExpressionResolver(expressionResolver);
+ }
+
+ /**
+ * this method will return a {@link ExpressionResolver} which is wrapped
from {@link org.apache.seata.saga.engine.expression.ExpressionResolver}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public ExpressionResolver getExpressionResolver() {
return actual.getExpressionResolver();
}
- public void setExpressionResolver(ExpressionResolver expressionResolver) {
- actual.setExpressionResolver(expressionResolver);
- }
-
+ /**
+ * this method will return a {@link ServiceInvokerManager} which is
wrapped from {@link org.apache.seata.saga.engine.invoker.ServiceInvokerManager}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public String getCharset() {
return actual.getCharset();
@@ -129,6 +149,11 @@ public class DefaultStateMachineConfig implements
StateMachineConfig, Applicatio
actual.setCharset(charset);
}
+ /**
+ * this method will return a {@link StateMachineRepository} which is
wrapped from {@link org.apache.seata.saga.engine.repo.StateMachineRepository}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public StateMachineRepository getStateMachineRepository() {
org.apache.seata.saga.engine.repo.StateMachineRepository repository =
actual.getStateMachineRepository();
@@ -173,6 +198,11 @@ public class DefaultStateMachineConfig implements
StateMachineConfig, Applicatio
actual.setStateMachineRepository(stateMachineRepository);
}
+ /**
+ * this method will return a {@link StatusDecisionStrategy} which is
wrapped from {@link
org.apache.seata.saga.engine.strategy.StatusDecisionStrategy}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public StatusDecisionStrategy getStatusDecisionStrategy() {
return actual.getStatusDecisionStrategy();
@@ -192,11 +222,21 @@ public class DefaultStateMachineConfig implements
StateMachineConfig, Applicatio
actual.setSeqGenerator(seqGenerator);
}
+ /**
+ * this method will return a {@link ProcessCtrlEventPublisher} which is
wrapped from {@link
org.apache.seata.saga.proctrl.eventing.impl.ProcessCtrlEventPublisher}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public ProcessCtrlEventPublisher getProcessCtrlEventPublisher() {
return actual.getProcessCtrlEventPublisher();
}
+ /**
+ * this method will return a {@link ProcessCtrlEventPublisher} which is
wrapped from {@link
org.apache.seata.saga.proctrl.eventing.impl.ProcessCtrlEventPublisher}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public ProcessCtrlEventPublisher getAsyncProcessCtrlEventPublisher() {
return actual.getAsyncProcessCtrlEventPublisher();
@@ -224,6 +264,7 @@ public class DefaultStateMachineConfig implements
StateMachineConfig, Applicatio
actual.setThreadPoolExecutor(threadPoolExecutor);
}
+
@Override
public boolean isEnableAsync() {
return actual.isEnableAsync();
@@ -233,6 +274,11 @@ public class DefaultStateMachineConfig implements
StateMachineConfig, Applicatio
actual.setEnableAsync(enableAsync);
}
+ /**
+ * this method will return a {@link StateLogRepository} which is wrapped
from {@link org.apache.seata.saga.engine.repo.StateLogRepository}
+ * notice: This method cannot be referenced in the normal process of saga.
The method here is only for
+ * compatibility interfaces {@link
io.seata.saga.engine.StateMachineConfig} public methods.
+ */
@Override
public StateLogRepository getStateLogRepository() {
org.apache.seata.saga.engine.repo.StateLogRepository repository =
actual.getStateLogRepository();
diff --git
a/compatible/src/test/java/io/seata/saga/engine/config/DbStateMachineConfigTest.java
b/compatible/src/test/java/io/seata/saga/engine/config/DbStateMachineConfigTest.java
new file mode 100644
index 0000000000..c608a730e8
--- /dev/null
+++
b/compatible/src/test/java/io/seata/saga/engine/config/DbStateMachineConfigTest.java
@@ -0,0 +1,57 @@
+/*
+ * 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 io.seata.saga.engine.config;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class DbStateMachineConfigTest {
+
+ private static final String APPLICATION_ID = "test";
+ private static final String TX_SERVICE_GROUP = "testTxServiceGroup";
+ private static final String ACCESS_KEY = "fakeAccessKey";
+ private static final String SECRET_KEY = "fakeSecretKey";
+ private static final String DB_TYPE = "mysql";
+ private static final boolean RM_REPORT_SUCCESS_ENABLE = true;
+ private static final boolean SAGA_BRANCH_REGISTER_ENABLE = true;
+ private static final String TABLE_PREFIX = "test_";
+
+ @Test
+ public void testBuildDefaultSagaTransactionalTemplateThrowsException() {
+ DbStateMachineConfig config = new DbStateMachineConfig();
+ config.setApplicationId(APPLICATION_ID);
+ config.setTxServiceGroup(TX_SERVICE_GROUP);
+ config.setAccessKey(ACCESS_KEY);
+ config.setSecretKey(SECRET_KEY);
+ config.setDbType(DB_TYPE);
+ config.setRmReportSuccessEnable(RM_REPORT_SUCCESS_ENABLE);
+ config.setSagaBranchRegisterEnable(SAGA_BRANCH_REGISTER_ENABLE);
+ config.setTablePrefix(TABLE_PREFIX);
+
+ Assertions.assertEquals(APPLICATION_ID, config.getApplicationId());
+ Assertions.assertEquals(TX_SERVICE_GROUP, config.getTxServiceGroup());
+ Assertions.assertEquals(ACCESS_KEY, config.getAccessKey());
+ Assertions.assertEquals(SECRET_KEY, config.getSecretKey());
+ Assertions.assertEquals(DB_TYPE, config.getDbType());
+ Assertions.assertTrue(config.isRmReportSuccessEnable());
+ Assertions.assertTrue(config.isSagaBranchRegisterEnable());
+
+ //can not find seata-server address, so it should throw an exception
+ Assertions.assertThrows(RuntimeException.class, () ->
config.buildDefaultSagaTransactionalTemplate());
+ }
+}
diff --git
a/compatible/src/test/java/io/seata/saga/engine/impl/DefaultStateMachineConfigTest.java
b/compatible/src/test/java/io/seata/saga/engine/impl/DefaultStateMachineConfigTest.java
new file mode 100644
index 0000000000..aad1357c40
--- /dev/null
+++
b/compatible/src/test/java/io/seata/saga/engine/impl/DefaultStateMachineConfigTest.java
@@ -0,0 +1,240 @@
+/*
+ * 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 io.seata.saga.engine.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.script.ScriptEngineManager;
+
+import io.seata.saga.engine.expression.ExpressionFactory;
+import io.seata.saga.engine.expression.ExpressionFactoryManager;
+import io.seata.saga.engine.repo.StateLogRepository;
+import io.seata.saga.engine.repo.StateMachineRepository;
+import org.apache.seata.saga.engine.expression.Expression;
+import org.apache.seata.saga.engine.expression.ExpressionResolver;
+import org.apache.seata.saga.engine.strategy.StatusDecisionStrategy;
+import org.apache.seata.saga.proctrl.eventing.impl.ProcessCtrlEventPublisher;
+import org.apache.seata.saga.statelang.domain.StateInstance;
+import org.apache.seata.saga.statelang.domain.StateMachine;
+import org.apache.seata.saga.statelang.domain.StateMachineInstance;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static
org.apache.seata.saga.engine.config.AbstractStateMachineConfig.DEFAULT_SERVICE_INVOKE_TIMEOUT;
+import static
org.apache.seata.saga.engine.config.AbstractStateMachineConfig.DEFAULT_TRANS_OPERATION_TIMEOUT;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class DefaultStateMachineConfigTest {
+ private DefaultStateMachineConfig defaultStateMachineConfig;
+
+ @BeforeEach
+ public void setUp() {
+ defaultStateMachineConfig = new DefaultStateMachineConfig();
+ }
+
+ @Test
+ public void testGetExpressionFactoryManager() {
+ defaultStateMachineConfig.getExpressionFactoryManager();
+ assertNotNull(defaultStateMachineConfig.getExpressionFactoryManager());
+
+ ExpressionFactoryManager expressionFactoryManager = new
ExpressionFactoryManager();
+ ExpressionFactory factory = new ExpressionFactory() {
+ @Override
+ public Expression createExpression(String expression) {
+ return new io.seata.saga.engine.expression.Expression() {
+ @Override
+ public Object getValue(Object elContext) {
+ return expression;
+ }
+
+ @Override
+ public void setValue(Object value, Object elContext) {
+
+ }
+
+ @Override
+ public String getExpressionString() {
+ return expression;
+ }
+ };
+ }
+ };
+ Map<String, ExpressionFactory> expressionFactoryMap = new HashMap<>();
+ expressionFactoryMap.put("type", factory);
+ defaultStateMachineConfig.setExpressionResolver(new
ExpressionResolver() {
+ @Override
+ public Expression getExpression(String expressionStr) {
+ return null;
+ }
+
+ @Override
+ public
org.apache.seata.saga.engine.expression.ExpressionFactoryManager
getExpressionFactoryManager() {
+ return null;
+ }
+
+ @Override
+ public void setExpressionFactoryManager(
+
org.apache.seata.saga.engine.expression.ExpressionFactoryManager
expressionFactoryManager) {
+
+ }
+ });
+
Assertions.assertNotNull(defaultStateMachineConfig.getExpressionResolver());
+ expressionFactoryManager.setExpressionFactoryMap(expressionFactoryMap);
+
defaultStateMachineConfig.setExpressionFactoryManager(expressionFactoryManager);
+ ExpressionFactory retrievedFactory =
defaultStateMachineConfig.getExpressionFactoryManager()
+ .getExpressionFactory("type");
+ String mockValue = "mock";
+ Assertions.assertEquals(mockValue,
retrievedFactory.createExpression(mockValue).getExpressionString());
+
+ }
+
+ @Test
+ void testGetStateMachineRepository() {
+ defaultStateMachineConfig.setStateMachineRepository(null);
+ StateMachineRepository repository =
defaultStateMachineConfig.getStateMachineRepository();
+ Assertions.assertNotNull(repository);
+
+ String mockStateMachineName = "mockStateMachine";
+ StateMachine mockStateMachine = mock(StateMachine.class);
+ when(mockStateMachine.getName()).thenReturn(mockStateMachineName);
+ org.apache.seata.saga.engine.repo.StateMachineRepository
sateMachineRepository = mock(
+ org.apache.seata.saga.engine.repo.StateMachineRepository.class);
+ when(sateMachineRepository.getStateMachine(mockStateMachineName, "",
"")).thenReturn(mockStateMachine);
+ when(sateMachineRepository.getStateMachine(mockStateMachineName,
"")).thenReturn(mockStateMachine);
+
when(sateMachineRepository.getStateMachineById(mockStateMachineName)).thenReturn(mockStateMachine);
+
defaultStateMachineConfig.setStateMachineRepository(sateMachineRepository);
+ StateMachineRepository getRepository =
defaultStateMachineConfig.getStateMachineRepository();
+ Assertions.assertNotNull(getRepository);
+ Assertions.assertEquals(mockStateMachineName,
+ getRepository.getStateMachineById(mockStateMachineName).getName());
+ Assertions.assertEquals(mockStateMachineName,
+ getRepository.getStateMachine(mockStateMachineName, "").getName());
+ Assertions.assertEquals(mockStateMachineName,
+ getRepository.getStateMachine(mockStateMachineName, "",
"").getName());
+ }
+
+ @Test
+ public void testStateLogRepository() {
+ defaultStateMachineConfig.setStateLogRepository(null);
+ assertNotNull(defaultStateMachineConfig.getStateLogRepository());
+
+ org.apache.seata.saga.engine.repo.StateLogRepository
mockStateLogRepository = mock(
+ org.apache.seata.saga.engine.repo.StateLogRepository.class);
+
defaultStateMachineConfig.setStateLogRepository(mockStateLogRepository);
+ StateInstance mockStateInstance = mock(StateInstance.class);
+ StateMachineInstance mockStateMachineInstance =
mock(StateMachineInstance.class);
+ String mockStateInstanceName = "mockStateInstance";
+ String mockMachineId = "mockMachineId";
+
when(mockStateMachineInstance.getMachineId()).thenReturn(mockMachineId);
+ when(mockStateMachineInstance.getBusinessKey()).thenReturn("key");
+ String mockStateMachineInstanceName = "mockStateMachineInstanceId";
+ when(mockStateInstance.getName()).thenReturn(mockStateInstanceName);
+
when(mockStateLogRepository.getStateInstance(mockStateMachineInstanceName,
"")).thenReturn(mockStateInstance);
+
when(mockStateLogRepository.getStateMachineInstance(mockStateMachineInstanceName)).thenReturn(
+ mockStateMachineInstance);
+
when(mockStateLogRepository.getStateMachineInstanceByBusinessKey("key",
"")).thenReturn(
+ mockStateMachineInstance);
+ StateLogRepository getStateLogRepository =
defaultStateMachineConfig.getStateLogRepository();
+ Assertions.assertNotNull(getStateLogRepository);
+ Assertions.assertEquals(mockStateInstanceName,
+
getStateLogRepository.getStateInstance(mockStateMachineInstanceName,
"").getName());
+ Assertions.assertEquals(mockMachineId,
+
getStateLogRepository.getStateMachineInstance(mockStateMachineInstanceName).getMachineId());
+ Assertions.assertEquals("key",
+ getStateLogRepository.getStateMachineInstanceByBusinessKey("key",
"").getBusinessKey());
+ }
+
+ @Test
+ public void testCharset() {
+ String charset = defaultStateMachineConfig.getCharset();
+ Assertions.assertEquals("UTF-8", charset);
+
+ String newCharset = "ISO-8859-1";
+ defaultStateMachineConfig.setCharset(newCharset);
+ Assertions.assertEquals(newCharset,
defaultStateMachineConfig.getCharset());
+ }
+
+ @Test
+ public void testAsyncProcessCtrlEventPublisher() {
+ ProcessCtrlEventPublisher asyncProcessCtrlEventPublisher
+ = defaultStateMachineConfig.getAsyncProcessCtrlEventPublisher();
+ Assertions.assertNull(asyncProcessCtrlEventPublisher);
+
+ defaultStateMachineConfig.setAsyncProcessCtrlEventPublisher(new
ProcessCtrlEventPublisher());
+
Assertions.assertNotNull(defaultStateMachineConfig.getAsyncProcessCtrlEventPublisher());
+ }
+
+ @Test
+ public void testGetExpressionResolver() {
+
Assertions.assertNull(defaultStateMachineConfig.getExpressionResolver());
+
+ ExpressionResolver expressionResolver = mock(ExpressionResolver.class);
+ defaultStateMachineConfig.setExpressionResolver(expressionResolver);
+ Assertions.assertEquals(expressionResolver,
defaultStateMachineConfig.getExpressionResolver());
+ }
+
+ @Test
+ public void testStatusDecisionStrategy() {
+
Assertions.assertNull(defaultStateMachineConfig.getStatusDecisionStrategy());
+
+ StatusDecisionStrategy statusDecisionStrategy =
mock(StatusDecisionStrategy.class);
+
defaultStateMachineConfig.setStatusDecisionStrategy(statusDecisionStrategy);
+ Assertions.assertEquals(statusDecisionStrategy,
defaultStateMachineConfig.getStatusDecisionStrategy());
+ }
+
+ @Test
+ public void testServiceInvokerManager() {
+
Assertions.assertNull(defaultStateMachineConfig.getServiceInvokerManager());
+
+ org.apache.seata.saga.engine.invoker.ServiceInvokerManager
serviceInvokerManager = mock(
+ org.apache.seata.saga.engine.invoker.ServiceInvokerManager.class);
+
defaultStateMachineConfig.setServiceInvokerManager(serviceInvokerManager);
+ Assertions.assertEquals(serviceInvokerManager,
defaultStateMachineConfig.getServiceInvokerManager());
+ }
+
+ @Test
+ public void testTransOperationTimeout() {
+ Assertions.assertEquals(DEFAULT_TRANS_OPERATION_TIMEOUT,
defaultStateMachineConfig.getTransOperationTimeout());
+
+ int timeout = 1000;
+ defaultStateMachineConfig.setTransOperationTimeout(timeout);
+ Assertions.assertEquals(timeout,
defaultStateMachineConfig.getTransOperationTimeout());
+ }
+
+ @Test
+ public void testServiceInvokeTimeout() {
+ Assertions.assertEquals(DEFAULT_SERVICE_INVOKE_TIMEOUT,
defaultStateMachineConfig.getServiceInvokeTimeout());
+
+ int timeout = 2000;
+ defaultStateMachineConfig.setServiceInvokeTimeout(timeout);
+ Assertions.assertEquals(timeout,
defaultStateMachineConfig.getServiceInvokeTimeout());
+ }
+
+ @Test
+ public void testScriptEngineManager() {
+
Assertions.assertNull(defaultStateMachineConfig.getScriptEngineManager());
+
+ ScriptEngineManager scriptEngineManager =
mock(ScriptEngineManager.class);
+ defaultStateMachineConfig.setScriptEngineManager(scriptEngineManager);
+ Assertions.assertEquals(scriptEngineManager,
defaultStateMachineConfig.getScriptEngineManager());
+ }
+}
\ No newline at end of file
diff --git
a/saga/seata-saga-engine/src/main/java/org/apache/seata/saga/engine/config/AbstractStateMachineConfig.java
b/saga/seata-saga-engine/src/main/java/org/apache/seata/saga/engine/config/AbstractStateMachineConfig.java
index 9644659477..0bedf7b986 100644
---
a/saga/seata-saga-engine/src/main/java/org/apache/seata/saga/engine/config/AbstractStateMachineConfig.java
+++
b/saga/seata-saga-engine/src/main/java/org/apache/seata/saga/engine/config/AbstractStateMachineConfig.java
@@ -74,8 +74,8 @@ import static
org.apache.seata.common.DefaultValues.DEFAULT_SAGA_JSON_PARSER;
*/
public abstract class AbstractStateMachineConfig implements StateMachineConfig
{
- private static final int DEFAULT_TRANS_OPERATION_TIMEOUT = 60000 * 30;
- private static final int DEFAULT_SERVICE_INVOKE_TIMEOUT = 60000 * 5;
+ public static final int DEFAULT_TRANS_OPERATION_TIMEOUT = 60000 * 30;
+ public static final int DEFAULT_SERVICE_INVOKE_TIMEOUT = 60000 * 5;
private ExpressionFactoryManager expressionFactoryManager;
private ExpressionResolver expressionResolver;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]