use of io.seata.saga.statelang.domain.StateMachineInstance in project seata by seata.
the class StateMachineTests method testCompensationAndSubStateMachineWithLayout.
@Test
public void testCompensationAndSubStateMachineWithLayout() {
long start = System.currentTimeMillis();
Map<String, Object> paramMap = new HashMap<>(1);
paramMap.put("a", 2);
paramMap.put("barThrowException", "true");
String stateMachineName = "simpleStateMachineWithCompensationAndSubMachine_layout";
StateMachineInstance inst = stateMachineEngine.start(stateMachineName, null, paramMap);
long cost = System.currentTimeMillis() - start;
System.out.println("====== cost :" + cost);
Assertions.assertTrue(ExecutionStatus.UN.equals(inst.getStatus()));
}
use of io.seata.saga.statelang.domain.StateMachineInstance in project seata by seata.
the class StateMachineDBTests method testStatusMatchingStateMachine.
@Test
public void testStatusMatchingStateMachine() throws Exception {
long start = System.currentTimeMillis();
Map<String, Object> paramMap = new HashMap<>(1);
paramMap.put("a", 1);
paramMap.put("barThrowException", "true");
String stateMachineName = "simpleStatusMatchingStateMachine";
StateMachineInstance inst = stateMachineEngine.start(stateMachineName, null, paramMap);
long cost = System.currentTimeMillis() - start;
System.out.println("====== cost :" + cost);
Assertions.assertNotNull(inst.getException());
Assertions.assertTrue(ExecutionStatus.UN.equals(inst.getStatus()));
GlobalTransaction globalTransaction = getGlobalTransaction(inst);
Assertions.assertNotNull(globalTransaction);
System.out.println(globalTransaction.getStatus());
Assertions.assertTrue(GlobalStatus.CommitRetrying.equals(globalTransaction.getStatus()));
}
use of io.seata.saga.statelang.domain.StateMachineInstance in project seata by seata.
the class StateMachineDBTests method testCompensationStateMachineForRecovery.
@Test
public void testCompensationStateMachineForRecovery() throws Exception {
long start = System.currentTimeMillis();
Map<String, Object> paramMap = new HashMap<>(1);
paramMap.put("a", 1);
paramMap.put("fooThrowExceptionRandomly", "true");
paramMap.put("barThrowExceptionRandomly", "true");
paramMap.put("compensateFooThrowExceptionRandomly", "true");
paramMap.put("compensateBarThrowExceptionRandomly", "true");
String stateMachineName = "simpleCompensationStateMachineForRecovery";
StateMachineInstance inst = stateMachineEngine.start(stateMachineName, null, paramMap);
long cost = System.currentTimeMillis() - start;
System.out.println("====== cost :" + cost);
GlobalTransaction globalTransaction = getGlobalTransaction(inst);
Assertions.assertNotNull(globalTransaction);
System.out.println("====== GlobalStatus: " + globalTransaction.getStatus());
// waiting for global transaction recover
while (!(ExecutionStatus.SU.equals(inst.getStatus()) || ExecutionStatus.SU.equals(inst.getCompensationStatus()))) {
System.out.println("====== GlobalStatus: " + globalTransaction.getStatus());
Thread.sleep(2000);
inst = stateMachineEngine.getStateMachineConfig().getStateLogStore().getStateMachineInstance(inst.getId());
}
}
use of io.seata.saga.statelang.domain.StateMachineInstance in project seata by seata.
the class StateMachineDBTests method testSimpleStateMachineWithLoopForward.
@Test
public void testSimpleStateMachineWithLoopForward() throws InterruptedException {
long start = System.currentTimeMillis();
List<Integer> loopList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
loopList.add(i);
}
Map<String, Object> paramMap = new HashMap<>(2);
paramMap.put("a", 1);
paramMap.put("collection", loopList);
paramMap.put("fooThrowException", "true");
String stateMachineName = "simpleLoopTestStateMachine";
StateMachineInstance inst = stateMachineEngine.start(stateMachineName, null, paramMap);
long cost = System.currentTimeMillis() - start;
System.out.println("====== cost :" + cost);
Assertions.assertEquals(inst.getStatus(), ExecutionStatus.UN);
Thread.sleep(sleepTime);
inst = stateMachineEngine.getStateMachineConfig().getStateLogStore().getStateMachineInstance(inst.getId());
Assertions.assertEquals(inst.getStatus(), ExecutionStatus.UN);
}
use of io.seata.saga.statelang.domain.StateMachineInstance in project seata by seata.
the class StateMachineDBTests method testSimpleCompensateStateAsUpdateMode.
@Test
public void testSimpleCompensateStateAsUpdateMode() throws Exception {
long start = System.currentTimeMillis();
Map<String, Object> paramMap = new HashMap<>(1);
paramMap.put("a", 2);
paramMap.put("barThrowException", "true");
paramMap.put("compensateBarThrowException", "true");
String stateMachineName = "simpleUpdateStateMachine";
StateMachineInstance inst = stateMachineEngine.start(stateMachineName, null, paramMap);
long cost = System.currentTimeMillis() - start;
System.out.println("====== cost :" + cost);
Assertions.assertNotNull(inst.getException());
Assertions.assertEquals(inst.getStatus(), ExecutionStatus.UN);
Thread.sleep(sleepTime);
inst = stateMachineEngine.getStateMachineConfig().getStateLogStore().getStateMachineInstance(inst.getId());
Assertions.assertEquals(inst.getStateList().size(), 3);
}
Aggregations