diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/CmpDataELSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/CmpDataELSpringbootTest.java index ef3e9c965..2b3231927 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/CmpDataELSpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/CmpDataELSpringbootTest.java @@ -1,6 +1,8 @@ package com.yomahub.liteflow.test.cmpData; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.slot.DefaultContext; @@ -16,6 +18,8 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; /** * springboot环境EL常规的例子测试 @@ -33,7 +37,7 @@ public class CmpDataELSpringbootTest extends BaseTest { //最简单的情况 @Test - public void testCmpData() throws Exception{ + public void testCmpData1() throws Exception{ LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg"); Assert.assertTrue(response.isSuccess()); DefaultContext context = response.getFirstContextBean(); @@ -42,4 +46,14 @@ public class CmpDataELSpringbootTest extends BaseTest { Assert.assertEquals("jack", user.getName()); Assert.assertEquals(0, user.getBirth().compareTo(DateUtil.parseDate("1995-10-01").toJdkDate())); } + + @Test + public void testCmpData2() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain2", "arg", TestContext.class); + Assert.assertTrue(response.isSuccess()); + TestContext context = response.getFirstContextBean(); + Assert.assertEquals(8, context.getSet().size()); + String result = context.getSet().stream().sorted().collect(Collectors.joining()); + Assert.assertEquals("12345678", result); + } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/TestContext.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/TestContext.java new file mode 100644 index 000000000..2e4ecdfcc --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/TestContext.java @@ -0,0 +1,18 @@ +package com.yomahub.liteflow.test.cmpData; + +import cn.hutool.core.collection.ConcurrentHashSet; + +import java.util.Set; + +public class TestContext { + + private Set set = new ConcurrentHashSet<>(); + + public void add2Set(String str){ + set.add(str); + } + + public Set getSet(){ + return set; + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/cmp/CCmp.java index 72b022fea..bf1f41d31 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/cmp/CCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/cmpData/cmp/CCmp.java @@ -8,6 +8,7 @@ package com.yomahub.liteflow.test.cmpData.cmp; import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.test.cmpData.TestContext; import org.springframework.stereotype.Component; @Component("c") @@ -15,6 +16,9 @@ public class CCmp extends NodeComponent { @Override public void process() { + String data = this.getCmpData(String.class); + TestContext context = this.getFirstContextBean(); + context.add2Set(data); System.out.println("CCmp executed!"); } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/slotOffer/SlotOfferELSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/slotOffer/SlotOfferELSpringbootTest.java new file mode 100644 index 000000000..bfc98bca1 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/slotOffer/SlotOfferELSpringbootTest.java @@ -0,0 +1,79 @@ +package com.yomahub.liteflow.test.slotOffer; + +import cn.hutool.core.collection.ConcurrentHashSet; +import cn.hutool.core.collection.ListUtil; +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.flow.parallel.ParallelSupplier; +import com.yomahub.liteflow.slot.DataBus; +import com.yomahub.liteflow.slot.DefaultContext; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; + +/** + * springboot环境EL常规的例子测试 + * @author Bryan.Zhang + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = SlotOfferELSpringbootTest.class) +@EnableAutoConfiguration +public class SlotOfferELSpringbootTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + //最简单的情况 + @Test + public void testSlotOffer() throws Exception{ + Set set = new ConcurrentHashSet<>(); + Set> futureSet = new ConcurrentHashSet<>(); + Set error = new ConcurrentHashSet<>(); + for (int i = 0; i < 200; i++) { + futureSet.add(CompletableFuture.supplyAsync(() -> { + for (int j = 0; j < 300; j++) { + int index=0; + try{ + index = DataBus.offerSlotByClass(ListUtil.toList(DefaultContext.class)); + boolean flag = set.add(index); + if (!flag){ + error.add(Integer.toString(index)); + } + }catch (Exception e) { + error.add(e.getMessage()); + }finally { + DataBus.releaseSlot(index); + boolean flag = set.remove(index); + if(!flag){ + error.add(Integer.toString(index)); + } + } + + } + return Boolean.TRUE; + })); + } + CompletableFuture resultFuture = CompletableFuture.allOf(futureSet.toArray(new CompletableFuture[]{})); + + resultFuture.get(); + + Assert.assertEquals(0, set.size()); + Assert.assertEquals(0, error.size()); + Assert.assertEquals(0, DataBus.OCCUPY_COUNT.get()); + } + + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/cmpData/flow.xml b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/cmpData/flow.xml index e5328cddc..9ab7b4b7a 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/cmpData/flow.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/cmpData/flow.xml @@ -11,4 +11,17 @@ c ); + + + WHEN( + c.data("1"), + c.data("2"), + c.data("3"), + c.data("4"), + c.data("5"), + c.data("6"), + c.data("7"), + c.data("8") + ); + \ No newline at end of file