diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java index 40eff4c49..7555e2245 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java @@ -23,7 +23,7 @@ import com.yomahub.liteflow.exception.*; import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.lifecycle.PostProcessChainExecuteLifeCycle; -import com.yomahub.liteflow.lifecycle.impl.RuleCacheLifeCycle; +import com.yomahub.liteflow.lifecycle.impl.ChainCacheLifeCycle; import com.yomahub.liteflow.flow.element.Chain; import com.yomahub.liteflow.flow.element.Node; import com.yomahub.liteflow.flow.element.Rollbackable; @@ -106,9 +106,9 @@ public class FlowExecutor { } // 规则缓存 - if (isStart && liteflowConfig.getRuleCacheEnabled()) { + if (isStart && liteflowConfig.getChainCacheEnabled()) { // 放到解析节点后,是因为要根据节点数量判断缓存大小设置是否合理 - initRuleCache(); + initChainCache(); } String ruleSource = liteflowConfig.getRuleSource(); @@ -239,8 +239,8 @@ public class FlowExecutor { } // 初始化或reload时,评估规则缓存容量大小 - if (liteflowConfig.getRuleCacheEnabled()) { - evaluateRuleCacheCapacity(); + if (liteflowConfig.getChainCacheEnabled()) { + evaluateChainCacheCapacity(); } } @@ -678,40 +678,42 @@ public class FlowExecutor { return resultSlotList; } - private void initRuleCache() { + private void initChainCache() { + // 启动chain缓存必须使用 PARSE_ONE_ON_FIRST_EXEC 模式 + if (!ParseModeEnum.PARSE_ONE_ON_FIRST_EXEC.equals(liteflowConfig.getParseMode())) { + LOG.warn("The parse mode is not PARSE_ONE_ON_FIRST_EXE, so the chain cache cannot be enabled."); + return; + } // 容量不能小于等于0 - Integer capacity = liteflowConfig.getRuleCacheCapacity(); + Integer capacity = liteflowConfig.getChainCacheCapacity(); if (ObjectUtil.isNull(capacity) || capacity <= 0) { - throw new ConfigErrorException("The rule cache capacity must be greater than 0"); + throw new ConfigErrorException("The chain cache capacity must be greater than 0"); } // 添加规则缓存生命周期 List lifeCycleList = LifeCycleHolder.getPostProcessChainExecuteLifeCycleList(); boolean exist = lifeCycleList.stream() - .anyMatch(lifeCycle -> lifeCycle instanceof RuleCacheLifeCycle); + .anyMatch(lifeCycle -> lifeCycle instanceof ChainCacheLifeCycle); if (!exist) { - boolean success = RuleCacheLifeCycle.initIfAbsent(capacity); + boolean success = ChainCacheLifeCycle.initIfAbsent(capacity); if (!success) { - throw new FlowExecutorNotInitException("Initialization of RuleCacheLifeCycle failed"); + throw new FlowExecutorNotInitException("Initialization of ChainCacheLifeCycle failed"); } - LifeCycleHolder.addLifeCycle(RuleCacheLifeCycle.getLifeCycle()); - } - - // 执行时才解析chain - if (!ParseModeEnum.PARSE_ONE_ON_FIRST_EXEC.equals(liteflowConfig.getParseMode())) { - liteflowConfig.setParseMode(ParseModeEnum.PARSE_ONE_ON_FIRST_EXEC); - LOG.warn("The rule cache is enabled, so the parse mode is forcibly set to PARSE_ONE_ON_FIRST_EXE."); + LifeCycleHolder.addLifeCycle(ChainCacheLifeCycle.getLifeCycle()); } } // 评估规则缓存容量 - private void evaluateRuleCacheCapacity() { - Integer capacity = liteflowConfig.getRuleCacheCapacity(); + private void evaluateChainCacheCapacity() { + if (!ParseModeEnum.PARSE_ONE_ON_FIRST_EXEC.equals(liteflowConfig.getParseMode())) { + return; + } + Integer capacity = liteflowConfig.getChainCacheCapacity(); // 容量不足chain总数的30%给予警告 int chainNum = FlowBus.getChainMap().size(); double threshold = chainNum * 0.3; if (capacity < threshold) { - LOG.warn("The rule cache capacity {} is too small, the current total number of chains is {}, " + LOG.warn("The chain cache capacity {} is too small, the current total number of chains is {}, " +"it is recommended to be greater than 30% of the number of chains", capacity, chainNum); } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/impl/RuleCacheLifeCycle.java b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/impl/ChainCacheLifeCycle.java similarity index 93% rename from liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/impl/RuleCacheLifeCycle.java rename to liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/impl/ChainCacheLifeCycle.java index 4255b984e..5bc68e3a0 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/impl/RuleCacheLifeCycle.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/impl/ChainCacheLifeCycle.java @@ -17,11 +17,11 @@ import org.checkerframework.checker.nullness.qual.Nullable; import java.util.List; /** - * Chain 缓存处理 + * Chain 缓存生命周期 * @author DaleLee * @since 2.13.3 */ -public class RuleCacheLifeCycle implements PostProcessChainExecuteLifeCycle { +public class ChainCacheLifeCycle implements PostProcessChainExecuteLifeCycle { /** * 缓存 */ @@ -30,9 +30,9 @@ public class RuleCacheLifeCycle implements PostProcessChainExecuteLifeCycle { /** * 实例 */ - private static RuleCacheLifeCycle INSTANCE; + private static ChainCacheLifeCycle INSTANCE; - private RuleCacheLifeCycle(int capacity) { + private ChainCacheLifeCycle(int capacity) { this.cache = Caffeine.newBuilder() .maximumSize(capacity) .evictionListener(new ChainRemovalListener()) @@ -149,7 +149,7 @@ public class RuleCacheLifeCycle implements PostProcessChainExecuteLifeCycle { */ public synchronized static boolean initIfAbsent(int capacity) { if (ObjectUtil.isNull(INSTANCE)) { - INSTANCE = new RuleCacheLifeCycle(capacity); + INSTANCE = new ChainCacheLifeCycle(capacity); return true; } return false; @@ -159,7 +159,7 @@ public class RuleCacheLifeCycle implements PostProcessChainExecuteLifeCycle { * 获取生命周期实例 * @return lifeCycle */ - public static RuleCacheLifeCycle getLifeCycle() { + public static ChainCacheLifeCycle getLifeCycle() { return INSTANCE; } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/property/LiteflowConfig.java b/liteflow-core/src/main/java/com/yomahub/liteflow/property/LiteflowConfig.java index 25d8abedf..859b6b1ef 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/property/LiteflowConfig.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/property/LiteflowConfig.java @@ -116,11 +116,11 @@ public class LiteflowConfig { // instance id 生成器 private String instanceIdGeneratorClass; - // 是否启用规则缓存 - private Boolean ruleCacheEnabled; + // 是否启用chain缓存 + private Boolean chainCacheEnabled; - // 规则缓存容量 - private Integer ruleCacheCapacity; + // chain缓存容量 + private Integer chainCacheCapacity; public Boolean getEnableMonitorFile() { return enableMonitorFile; @@ -502,22 +502,25 @@ public class LiteflowConfig { this.instanceIdGeneratorClass = instanceIdGeneratorClass; } - public Boolean getRuleCacheEnabled() { - if (ObjectUtil.isNull(ruleCacheEnabled)) { + public Boolean getChainCacheEnabled() { + if (ObjectUtil.isNull(chainCacheEnabled)) { return Boolean.FALSE; } - return ruleCacheEnabled; + return chainCacheEnabled; } - public void setRuleCacheEnabled(Boolean ruleCacheEnabled) { - this.ruleCacheEnabled = ruleCacheEnabled; + public void setChainCacheEnabled(Boolean chainCacheEnabled) { + this.chainCacheEnabled = chainCacheEnabled; } - public Integer getRuleCacheCapacity() { - return ruleCacheCapacity; + public Integer getChainCacheCapacity() { + if (ObjectUtil.isNull(chainCacheCapacity)) { + return 10000; + } + return chainCacheCapacity; } - public void setRuleCacheCapacity(Integer ruleCacheCapacity) { - this.ruleCacheCapacity = ruleCacheCapacity; + public void setChainCacheCapacity(Integer chainCacheCapacity) { + this.chainCacheCapacity = chainCacheCapacity; } } diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowAutoConfiguration.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowAutoConfiguration.java index 932a403c0..36c5cbae7 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowAutoConfiguration.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowAutoConfiguration.java @@ -51,8 +51,8 @@ public class LiteflowAutoConfiguration { liteflowConfig.setGlobalThreadPoolQueueSize(property.getGlobalThreadPoolQueueSize()); liteflowConfig.setWhenThreadPoolIsolate(property.getWhenThreadPoolIsolate()); liteflowConfig.setEnableNodeInstanceId(property.isEnableNodeInstanceId()); - liteflowConfig.setRuleCacheEnabled(property.getRuleCache().isEnabled()); - liteflowConfig.setRuleCacheCapacity(property.getRuleCache().getCapacity()); + liteflowConfig.setChainCacheEnabled(property.getChainCache().isEnabled()); + liteflowConfig.setChainCacheCapacity(property.getChainCache().getCapacity()); return liteflowConfig; } diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowProperty.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowProperty.java index fc65cac33..f6aa0e50c 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowProperty.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowProperty.java @@ -102,9 +102,9 @@ public class LiteflowProperty { private boolean enableNodeInstanceId; // 规则缓存配置 - private RuleCacheProperty ruleCache; + private ChainCacheProperty chainCache; - public static class RuleCacheProperty { + public static class ChainCacheProperty { // 是否启用规则缓存 private Boolean enabled; @@ -369,11 +369,11 @@ public class LiteflowProperty { this.enableNodeInstanceId = enableNodeInstanceId; } - public RuleCacheProperty getRuleCache() { - return ruleCache; + public ChainCacheProperty getChainCache() { + return chainCache; } - public void setRuleCache(RuleCacheProperty ruleCache) { - this.ruleCache = ruleCache; + public void setChainCache(ChainCacheProperty chainCache) { + this.chainCache = chainCache; } } diff --git a/liteflow-solon-plugin/src/main/resources/META-INF/liteflow-default.properties b/liteflow-solon-plugin/src/main/resources/META-INF/liteflow-default.properties index 8bc5b482e..820d04aba 100644 --- a/liteflow-solon-plugin/src/main/resources/META-INF/liteflow-default.properties +++ b/liteflow-solon-plugin/src/main/resources/META-INF/liteflow-default.properties @@ -19,4 +19,5 @@ liteflow.global-thread-pool-size=16 liteflow.global-thread-pool-queue-size=512 liteflow.global-thread-pool-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultGlobalExecutorBuilder liteflow.enable-node-instance-id=false -liteflow.rule-cache.enabled=false +liteflow.chain-cache.enabled=false +liteflow.chain-cache.capacity=10000 diff --git a/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowProperty.java b/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowProperty.java index 6c08c5a4d..eff05a112 100644 --- a/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowProperty.java +++ b/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowProperty.java @@ -102,13 +102,13 @@ public class LiteflowProperty { // 规则缓存配置 @NestedConfigurationProperty - private RuleCacheProperty ruleCache; + private ChainCacheProperty chainCache; - public static class RuleCacheProperty { + public static class ChainCacheProperty { // 是否启用规则缓存 private Boolean enabled; - // 规则缓存容量 + // chain缓存容量 private Integer capacity; public Boolean isEnabled() { @@ -360,11 +360,11 @@ public class LiteflowProperty { this.enableNodeInstanceId = enableNodeInstanceId; } - public RuleCacheProperty getRuleCache() { - return ruleCache; + public ChainCacheProperty getChainCache() { + return chainCache; } - public void setRuleCache(RuleCacheProperty ruleCache) { - this.ruleCache = ruleCache; + public void setChainCache(ChainCacheProperty chainCache) { + this.chainCache = chainCache; } } diff --git a/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/config/LiteflowPropertyAutoConfiguration.java b/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/config/LiteflowPropertyAutoConfiguration.java index 71a6756d2..26a28059a 100644 --- a/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/config/LiteflowPropertyAutoConfiguration.java +++ b/liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/config/LiteflowPropertyAutoConfiguration.java @@ -53,8 +53,8 @@ public class LiteflowPropertyAutoConfiguration { liteflowConfig.setGlobalThreadPoolQueueSize(property.getGlobalThreadPoolQueueSize()); liteflowConfig.setGlobalThreadPoolSize(property.getGlobalThreadPoolSize()); liteflowConfig.setEnableNodeInstanceId(property.isEnableNodeInstanceId()); - liteflowConfig.setRuleCacheEnabled(property.getRuleCache().isEnabled()); - liteflowConfig.setRuleCacheCapacity(property.getRuleCache().getCapacity()); + liteflowConfig.setChainCacheEnabled(property.getChainCache().isEnabled()); + liteflowConfig.setChainCacheCapacity(property.getChainCache().getCapacity()); return liteflowConfig; } diff --git a/liteflow-spring-boot-starter/src/main/resources/META-INF/liteflow-default.properties b/liteflow-spring-boot-starter/src/main/resources/META-INF/liteflow-default.properties index 8b0eed331..ca67a1d37 100644 --- a/liteflow-spring-boot-starter/src/main/resources/META-INF/liteflow-default.properties +++ b/liteflow-spring-boot-starter/src/main/resources/META-INF/liteflow-default.properties @@ -24,5 +24,7 @@ liteflow.global-thread-pool-size=64 liteflow.global-thread-pool-queue-size=512 liteflow.global-thread-pool-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultGlobalExecutorBuilder liteflow.enable-node-instance-id=false -liteflow.rule-cache.enabled=false +liteflow.chain-cache.enabled=false +liteflow.chain-cache.capacity=10000 + diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheTest.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheTest.java similarity index 89% rename from liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheTest.java rename to liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheTest.java index fa5e2ff96..6355deaec 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheTest.java @@ -1,16 +1,17 @@ -package com.yomahub.liteflow.test.ruleCache; +package com.yomahub.liteflow.test.chainCache; import cn.hutool.core.collection.CollUtil; import com.github.benmanes.caffeine.cache.Cache; import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.core.FlowExecutorHolder; +import com.yomahub.liteflow.enums.ParseModeEnum; import com.yomahub.liteflow.exception.ChainNotFoundException; import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.flow.element.Chain; import com.yomahub.liteflow.flow.element.Condition; -import com.yomahub.liteflow.lifecycle.impl.RuleCacheLifeCycle; +import com.yomahub.liteflow.lifecycle.impl.ChainCacheLifeCycle; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.test.BaseTest; import org.checkerframework.checker.nullness.qual.NonNull; @@ -27,19 +28,20 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; /** - * 非Spring环境下的规则缓存测试 + * 非Spring环境下的chain缓存测试 * @author DaleLee */ -public class RuleCacheTest extends BaseTest { +public class ChainCacheTest extends BaseTest { private static FlowExecutor flowExecutor; @BeforeAll public static void init() { LiteflowConfig config = new LiteflowConfig(); - config.setRuleSource("ruleCache/flow.el.xml"); - config.setRuleCacheEnabled(true); - config.setRuleCacheCapacity(5); + config.setRuleSource("chainCache/flow.el.xml"); + config.setChainCacheEnabled(true); + config.setChainCacheCapacity(5); + config.setParseMode(ParseModeEnum.PARSE_ONE_ON_FIRST_EXEC); flowExecutor = FlowExecutorHolder.loadInstance(config); } @@ -47,14 +49,14 @@ public class RuleCacheTest extends BaseTest { public void reload() { flowExecutor.reloadRule(); // 清空缓存 - Cache cache = getCache(); + Cache cache = getCache(); cache.invalidateAll(); cache.cleanUp(); } // 测试chain被淘汰 @Test - public void testRuleCache1() { + public void testChainCache1() { // 加满缓存 loadCache(); // 缓存快照 @@ -72,7 +74,7 @@ public class RuleCacheTest extends BaseTest { // 测试缓存数量上限(串行) @Test - public void testRuleCache2() { + public void testChainCache2() { // 确保至少执行过5个不同的chain loadCache(); // 随机执行chain @@ -100,7 +102,7 @@ public class RuleCacheTest extends BaseTest { // 测试缓存数量上限(并行) @Test - public void testRuleCache3() { + public void testChainCache3() { loadCache(); Random random = new Random(); List> futureList = CollUtil.newArrayList(); @@ -137,7 +139,7 @@ public class RuleCacheTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain可以正常被更新 @Test - public void testRuleCache4() { + public void testChainCache4() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -163,7 +165,7 @@ public class RuleCacheTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain被移除后无法执行 @Test - public void testRuleCache5() { + public void testChainCache5() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -184,7 +186,7 @@ public class RuleCacheTest extends BaseTest { // 测试并发下,正在执行的chain的condition被清理但仍能执行 @Test - public void testRuleCache6() throws InterruptedException { + public void testChainCache6() throws InterruptedException { // 模拟清空编译好的chain Thread thread = new Thread(()-> { Chain chain1 = FlowBus.getChain("chain1"); @@ -218,14 +220,14 @@ public class RuleCacheTest extends BaseTest { Assertions.assertNull(chain.getConditionList()); } - public Cache getCache() { - return RuleCacheLifeCycle.getLifeCycle().getCache(); + public Cache getCache() { + return ChainCacheLifeCycle.getLifeCycle().getCache(); } // 获得淘汰的chain,传入淘汰前的chain集合 // 确保只有一个被淘汰时使用 String getEvictedChain(Set set) { - Cache cache = getCache(); + Cache cache = getCache(); cache.cleanUp(); Set<@NonNull String> strings = cache.asMap().keySet(); set.removeAll(strings); diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java similarity index 86% rename from liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java rename to liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java index 1681cc291..8d6b10e39 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java similarity index 86% rename from liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java index af5a966ab..7e7cc3913 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java similarity index 86% rename from liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java index b64d73f1b..4c828a4b9 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java similarity index 80% rename from liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java index 61e48503d..d4c343a9b 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java @@ -1,4 +1,4 @@ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeBooleanComponent; diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/ruleCache/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/chainCache/flow.el.xml similarity index 69% rename from liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/ruleCache/flow.el.xml rename to liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/chainCache/flow.el.xml index 5bfd951f8..7f247d576 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/ruleCache/flow.el.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/chainCache/flow.el.xml @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSolonTest.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSolonTest.java similarity index 90% rename from liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSolonTest.java rename to liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSolonTest.java index 4e93b998e..f64c5fc4e 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSolonTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSolonTest.java @@ -1,4 +1,4 @@ -package com.yomahub.liteflow.test.ruleCache; +package com.yomahub.liteflow.test.chainCache; import cn.hutool.core.collection.CollUtil; import com.github.benmanes.caffeine.cache.Cache; @@ -9,7 +9,7 @@ import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.flow.element.Chain; import com.yomahub.liteflow.flow.element.Condition; -import com.yomahub.liteflow.lifecycle.impl.RuleCacheLifeCycle; +import com.yomahub.liteflow.lifecycle.impl.ChainCacheLifeCycle; import com.yomahub.liteflow.test.BaseTest; import org.checkerframework.checker.nullness.qual.NonNull; import org.junit.jupiter.api.Assertions; @@ -27,12 +27,12 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; /** - * Solon环境下规则缓存测试 + * Solon环境下chain缓存测试 * @author DaleLee */ @SolonTest -@Import(profiles="classpath:/ruleCache/application.properties") -public class RuleCacheSolonTest extends BaseTest { +@Import(profiles="classpath:/chainCache/application.properties") +public class ChainCacheSolonTest extends BaseTest { @Inject private FlowExecutor flowExecutor; @@ -41,14 +41,14 @@ public class RuleCacheSolonTest extends BaseTest { public void reload() { flowExecutor.reloadRule(); // 清空缓存 - Cache cache = getCache(); + Cache cache = getCache(); cache.invalidateAll(); cache.cleanUp(); } // 测试chain被淘汰 @Test - public void testRuleCache1() { + public void testChainCache1() { // 加满缓存 loadCache(); // 缓存快照 @@ -66,7 +66,7 @@ public class RuleCacheSolonTest extends BaseTest { // 测试缓存数量上限(串行) @Test - public void testRuleCache2() { + public void testChainCache2() { // 确保至少执行过5个不同的chain loadCache(); // 随机执行chain @@ -94,7 +94,7 @@ public class RuleCacheSolonTest extends BaseTest { // 测试缓存数量上限(并行) @Test - public void testRuleCache3() { + public void testChainCache3() { loadCache(); Random random = new Random(); List> futureList = CollUtil.newArrayList(); @@ -131,7 +131,7 @@ public class RuleCacheSolonTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain可以正常被更新 @Test - public void testRuleCache4() { + public void testChainCache4() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -157,7 +157,7 @@ public class RuleCacheSolonTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain被移除后无法执行 @Test - public void testRuleCache5() { + public void testChainCache5() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -178,7 +178,7 @@ public class RuleCacheSolonTest extends BaseTest { // 测试并发下,正在执行的chain的condition被清理但仍能执行 @Test - public void testRuleCache6() throws InterruptedException { + public void testChainCache6() throws InterruptedException { // 模拟清空编译好的chain Thread thread = new Thread(()-> { Chain chain1 = FlowBus.getChain("chain1"); @@ -212,14 +212,14 @@ public class RuleCacheSolonTest extends BaseTest { Assertions.assertNull(chain.getConditionList()); } - public Cache getCache() { - return RuleCacheLifeCycle.getLifeCycle().getCache(); + public Cache getCache() { + return ChainCacheLifeCycle.getLifeCycle().getCache(); } // 获得淘汰的chain,传入淘汰前的chain集合 // 确保只有一个被淘汰时使用 String getEvictedChain(Set set) { - Cache cache = getCache(); + Cache cache = getCache(); cache.cleanUp(); Set<@NonNull String> strings = cache.asMap().keySet(); set.removeAll(strings); diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java rename to liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java index da4be1512..b45ae448d 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.noear.solon.annotation.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java index 7f957f293..73c4d630d 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.noear.solon.annotation.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java index c49a987e9..033821755 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.noear.solon.annotation.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java similarity index 84% rename from liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java index 73b375e01..fddd1a000 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java @@ -1,4 +1,4 @@ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeBooleanComponent; import org.noear.solon.annotation.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/chainCache/application.properties b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/chainCache/application.properties new file mode 100644 index 000000000..2f9c44ccc --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/chainCache/application.properties @@ -0,0 +1,4 @@ +liteflow.rule-source=chainCache/flow.el.xml +liteflow.chain-cache.enabled=true +liteflow.chain-cache.capacity=5 +liteflow.parse-mode=PARSE_ONE_ON_FIRST_EXEC \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/ruleCache/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/chainCache/flow.el.xml similarity index 100% rename from liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/ruleCache/flow.el.xml rename to liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/chainCache/flow.el.xml diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/ruleCache/application.properties b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/ruleCache/application.properties deleted file mode 100644 index cb4066d3c..000000000 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/resources/ruleCache/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -liteflow.rule-source=ruleCache/flow.el.xml -liteflow.rule-cache.enabled=true -liteflow.rule-cache.capacity=5 \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSpringbootTest.java similarity index 89% rename from liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSpringbootTest.java rename to liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSpringbootTest.java index 3d9b89e21..31e6e5139 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSpringbootTest.java @@ -1,4 +1,4 @@ -package com.yomahub.liteflow.test.ruleCache; +package com.yomahub.liteflow.test.chainCache; import cn.hutool.core.collection.CollUtil; import com.github.benmanes.caffeine.cache.Cache; @@ -9,7 +9,7 @@ import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.flow.element.Chain; import com.yomahub.liteflow.flow.element.Condition; -import com.yomahub.liteflow.lifecycle.impl.RuleCacheLifeCycle; +import com.yomahub.liteflow.lifecycle.impl.ChainCacheLifeCycle; import com.yomahub.liteflow.test.BaseTest; import org.checkerframework.checker.nullness.qual.NonNull; import org.junit.jupiter.api.Assertions; @@ -29,14 +29,14 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; /** - * Springboot环境下规则缓存测试 + * Springboot环境下chain缓存测试 * @author DaleLee */ -@TestPropertySource(value = "classpath:/ruleCache/application.properties") -@SpringBootTest(classes = RuleCacheSpringbootTest.class) +@TestPropertySource(value = "classpath:/chainCache/application.properties") +@SpringBootTest(classes = ChainCacheSpringbootTest.class) @EnableAutoConfiguration -@ComponentScan({ "com.yomahub.liteflow.test.ruleCache.cmp" }) -public class RuleCacheSpringbootTest extends BaseTest { +@ComponentScan({"com.yomahub.liteflow.test.chainCache.cmp"}) +public class ChainCacheSpringbootTest extends BaseTest { @Resource private FlowExecutor flowExecutor; @@ -44,14 +44,14 @@ public class RuleCacheSpringbootTest extends BaseTest { public void reload() { flowExecutor.reloadRule(); // 清空缓存 - Cache cache = getCache(); + Cache cache = getCache(); cache.invalidateAll(); cache.cleanUp(); } // 测试chain被淘汰 @Test - public void testRuleCache1() { + public void testChainCache1() { // 加满缓存 loadCache(); // 缓存快照 @@ -69,7 +69,7 @@ public class RuleCacheSpringbootTest extends BaseTest { // 测试缓存数量上限(串行) @Test - public void testRuleCache2() { + public void testChainCache2() { // 确保至少执行过5个不同的chain loadCache(); // 随机执行chain @@ -97,7 +97,7 @@ public class RuleCacheSpringbootTest extends BaseTest { // 测试缓存数量上限(并行) @Test - public void testRuleCache3() { + public void testChainCache3() { loadCache(); Random random = new Random(); List> futureList = CollUtil.newArrayList(); @@ -134,7 +134,7 @@ public class RuleCacheSpringbootTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain可以正常被更新 @Test - public void testRuleCache4() { + public void testChainCache4() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -160,7 +160,7 @@ public class RuleCacheSpringbootTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain被移除后无法执行 @Test - public void testRuleCache5() { + public void testChainCache5() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -181,7 +181,7 @@ public class RuleCacheSpringbootTest extends BaseTest { // 测试并发下,正在执行的chain的condition被清理但仍能执行 @Test - public void testRuleCache6() throws InterruptedException { + public void testChainCache6() throws InterruptedException { // 模拟清空编译好的chain Thread thread = new Thread(()-> { Chain chain1 = FlowBus.getChain("chain1"); @@ -215,14 +215,14 @@ public class RuleCacheSpringbootTest extends BaseTest { Assertions.assertNull(chain.getConditionList()); } - public Cache getCache() { - return RuleCacheLifeCycle.getLifeCycle().getCache(); + public Cache getCache() { + return ChainCacheLifeCycle.getLifeCycle().getCache(); } // 获得淘汰的chain,传入淘汰前的chain集合 // 确保只有一个被淘汰时使用 String getEvictedChain(Set set) { - Cache cache = getCache(); + Cache cache = getCache(); cache.cleanUp(); Set<@NonNull String> strings = cache.asMap().keySet(); set.removeAll(strings); diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java index e5999686e..d943cb205 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java index c79f55d47..356750126 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java index a5ba32f37..84dedc927 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java similarity index 84% rename from liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java index 1c71b836c..1f671e9e4 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java @@ -1,4 +1,4 @@ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeBooleanComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/chainCache/application.properties b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/chainCache/application.properties new file mode 100644 index 000000000..2f9c44ccc --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/chainCache/application.properties @@ -0,0 +1,4 @@ +liteflow.rule-source=chainCache/flow.el.xml +liteflow.chain-cache.enabled=true +liteflow.chain-cache.capacity=5 +liteflow.parse-mode=PARSE_ONE_ON_FIRST_EXEC \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/ruleCache/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/chainCache/flow.el.xml similarity index 100% rename from liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/ruleCache/flow.el.xml rename to liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/chainCache/flow.el.xml diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/ruleCache/application.properties b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/ruleCache/application.properties deleted file mode 100644 index cb4066d3c..000000000 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/ruleCache/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -liteflow.rule-source=ruleCache/flow.el.xml -liteflow.rule-cache.enabled=true -liteflow.rule-cache.capacity=5 \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSpringTest.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSpringTest.java similarity index 91% rename from liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSpringTest.java rename to liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSpringTest.java index 2f4b81eca..984a3e46a 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/RuleCacheSpringTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/ChainCacheSpringTest.java @@ -1,4 +1,4 @@ -package com.yomahub.liteflow.test.ruleCache; +package com.yomahub.liteflow.test.chainCache; import cn.hutool.core.collection.CollUtil; import com.github.benmanes.caffeine.cache.Cache; @@ -9,7 +9,7 @@ import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.flow.element.Chain; import com.yomahub.liteflow.flow.element.Condition; -import com.yomahub.liteflow.lifecycle.impl.RuleCacheLifeCycle; +import com.yomahub.liteflow.lifecycle.impl.ChainCacheLifeCycle; import com.yomahub.liteflow.test.BaseTest; import org.checkerframework.checker.nullness.qual.NonNull; import org.junit.jupiter.api.Assertions; @@ -28,12 +28,12 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; /** - * Spring环境下规则缓存测试 + * Spring环境下chain缓存测试 * @author DaleLee */ @ExtendWith(SpringExtension.class) -@ContextConfiguration("classpath:/ruleCache/application.xml") -public class RuleCacheSpringTest extends BaseTest { +@ContextConfiguration("classpath:/chainCache/application.xml") +public class ChainCacheSpringTest extends BaseTest { @Resource private FlowExecutor flowExecutor; @@ -41,14 +41,14 @@ public class RuleCacheSpringTest extends BaseTest { public void reload() { flowExecutor.reloadRule(); // 清空缓存 - Cache cache = getCache(); + Cache cache = getCache(); cache.invalidateAll(); cache.cleanUp(); } // 测试chain被淘汰 @Test - public void testRuleCache1() { + public void testChainCache1() { // 加满缓存 loadCache(); // 缓存快照 @@ -66,7 +66,7 @@ public class RuleCacheSpringTest extends BaseTest { // 测试缓存数量上限(串行) @Test - public void testRuleCache2() { + public void testChainCache2() { // 确保至少执行过5个不同的chain loadCache(); // 随机执行chain @@ -94,7 +94,7 @@ public class RuleCacheSpringTest extends BaseTest { // 测试缓存数量上限(并行) @Test - public void testRuleCache3() { + public void testChainCache3() { loadCache(); Random random = new Random(); List> futureList = CollUtil.newArrayList(); @@ -131,7 +131,7 @@ public class RuleCacheSpringTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain可以正常被更新 @Test - public void testRuleCache4() { + public void testChainCache4() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -157,7 +157,7 @@ public class RuleCacheSpringTest extends BaseTest { // 测试开启规则缓存后,进入缓存的chain被移除后无法执行 @Test - public void testRuleCache5() { + public void testChainCache5() { loadCache(); // 缓存快照 HashSet<@NonNull String> strings = CollUtil.newHashSet(getCache().asMap().keySet()); @@ -178,7 +178,7 @@ public class RuleCacheSpringTest extends BaseTest { // 测试并发下,正在执行的chain的condition被清理但仍能执行 @Test - public void testRuleCache6() throws InterruptedException { + public void testChainCache6() throws InterruptedException { // 模拟清空编译好的chain Thread thread = new Thread(()-> { Chain chain1 = FlowBus.getChain("chain1"); @@ -212,14 +212,14 @@ public class RuleCacheSpringTest extends BaseTest { Assertions.assertNull(chain.getConditionList()); } - public Cache getCache() { - return RuleCacheLifeCycle.getLifeCycle().getCache(); + public Cache getCache() { + return ChainCacheLifeCycle.getLifeCycle().getCache(); } // 获得淘汰的chain,传入淘汰前的chain集合 // 确保只有一个被淘汰时使用 String getEvictedChain(Set set) { - Cache cache = getCache(); + Cache cache = getCache(); cache.cleanUp(); Set<@NonNull String> strings = cache.asMap().keySet(); set.removeAll(strings); diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java index e5999686e..d943cb205 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/ACmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/ACmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java index c79f55d47..356750126 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/BCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/BCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java similarity index 88% rename from liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java index a5ba32f37..84dedc927 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/CCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/CCmp.java @@ -5,7 +5,7 @@ * @email weenyc31@163.com * @Date 2020/4/1 */ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java similarity index 84% rename from liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java rename to liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java index 1c71b836c..1f671e9e4 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/ruleCache/cmp/XCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/chainCache/cmp/XCmp.java @@ -1,4 +1,4 @@ -package com.yomahub.liteflow.test.ruleCache.cmp; +package com.yomahub.liteflow.test.chainCache.cmp; import com.yomahub.liteflow.core.NodeBooleanComponent; import org.springframework.stereotype.Component; diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/ruleCache/application.xml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/chainCache/application.xml similarity index 78% rename from liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/ruleCache/application.xml rename to liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/chainCache/application.xml index 16170f76d..27640330e 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/ruleCache/application.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/chainCache/application.xml @@ -7,16 +7,17 @@ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> - + - - - + + + + diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/ruleCache/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/chainCache/flow.el.xml similarity index 100% rename from liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/ruleCache/flow.el.xml rename to liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/chainCache/flow.el.xml