Explorar el Código

优化etcd和nacos的测试用例

everywhere.z hace 2 años
padre
commit
322a3f71e9

+ 7 - 4
liteflow-testcase-el/liteflow-testcase-el-etcd-springboot/src/test/java/com/yomahub/liteflow/test/etcd/EtcdWithXmlELSpringbootTest.java

@@ -2,6 +2,7 @@ package com.yomahub.liteflow.test.etcd;
 
 
 import cn.hutool.core.util.ReflectUtil;
 import cn.hutool.core.util.ReflectUtil;
 import com.yomahub.liteflow.core.FlowExecutor;
 import com.yomahub.liteflow.core.FlowExecutor;
+import com.yomahub.liteflow.enums.FlowParserTypeEnum;
 import com.yomahub.liteflow.flow.FlowBus;
 import com.yomahub.liteflow.flow.FlowBus;
 import com.yomahub.liteflow.flow.LiteflowResponse;
 import com.yomahub.liteflow.flow.LiteflowResponse;
 import com.yomahub.liteflow.parser.etcd.EtcdClient;
 import com.yomahub.liteflow.parser.etcd.EtcdClient;
@@ -12,11 +13,14 @@ import com.yomahub.liteflow.test.BaseTest;
 import org.junit.*;
 import org.junit.*;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Answers;
+import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.mockito.MockitoAnnotations;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.test.context.TestExecutionListeners;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
@@ -44,7 +48,6 @@ public class EtcdWithXmlELSpringbootTest extends BaseTest {
 
 
     @Before
     @Before
     public void setUp(){
     public void setUp(){
-        //其实只有@Mock才需要initMocks方法,@MockBean不需要initMocks的
         MockitoAnnotations.initMocks(this);
         MockitoAnnotations.initMocks(this);
     }
     }
 
 
@@ -56,7 +59,7 @@ public class EtcdWithXmlELSpringbootTest extends BaseTest {
     @Test
     @Test
     public void testEtcdNodeWithXml1() throws Exception {
     public void testEtcdNodeWithXml1() throws Exception {
         String flowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, b, c);</chain></flow>";
         String flowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, b, c);</chain></flow>";
-        when(etcdClient.get(any())).thenReturn(flowXml);
+        when(etcdClient.get(anyString())).thenReturn(flowXml);
 
 
         LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
         LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
         Assert.assertTrue(response.isSuccess());
         Assert.assertTrue(response.isSuccess());
@@ -67,14 +70,14 @@ public class EtcdWithXmlELSpringbootTest extends BaseTest {
     public void testEtcdNodeWithXml2() throws Exception {
     public void testEtcdNodeWithXml2() throws Exception {
         String flowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, b, c);</chain></flow>";
         String flowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, b, c);</chain></flow>";
         String changedFlowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, c);</chain></flow>";
         String changedFlowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, c);</chain></flow>";
-        when(etcdClient.get(any())).thenReturn(flowXml).thenReturn(changedFlowXml);
+        when(etcdClient.get(anyString())).thenReturn(flowXml).thenReturn(changedFlowXml);
 
 
         LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
         LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
         Assert.assertTrue(response.isSuccess());
         Assert.assertTrue(response.isSuccess());
         Assert.assertEquals("a==>b==>c", response.getExecuteStepStr());
         Assert.assertEquals("a==>b==>c", response.getExecuteStepStr());
 
 
         // 手动触发一次 模拟节点数据变更
         // 手动触发一次 模拟节点数据变更
-        flowExecutor.reloadRule();
+        FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_EL_XML,changedFlowXml);
 
 
         LiteflowResponse response2 = flowExecutor.execute2Resp("chain1", "arg");
         LiteflowResponse response2 = flowExecutor.execute2Resp("chain1", "arg");
         Assert.assertTrue(response2.isSuccess());
         Assert.assertTrue(response2.isSuccess());

+ 23 - 22
liteflow-testcase-el/liteflow-testcase-el-nacos-springboot/src/test/java/com/yomahub/liteflow/test/nacos/NacosWithXmlELSpringbootTest.java

@@ -1,5 +1,6 @@
 package com.yomahub.liteflow.test.nacos;
 package com.yomahub.liteflow.test.nacos;
 
 
+import com.alibaba.nacos.client.config.NacosConfigService;
 import com.alibaba.nacos.client.config.impl.LocalConfigInfoProcessor;
 import com.alibaba.nacos.client.config.impl.LocalConfigInfoProcessor;
 import com.yomahub.liteflow.core.FlowExecutor;
 import com.yomahub.liteflow.core.FlowExecutor;
 import com.yomahub.liteflow.enums.FlowParserTypeEnum;
 import com.yomahub.liteflow.enums.FlowParserTypeEnum;
@@ -14,12 +15,16 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 
 
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.when;
+
 /**
 /**
  * springboot环境下的nacos配置源功能测试
  * springboot环境下的nacos配置源功能测试
  * nacos存储数据的格式为xml文件
  * nacos存储数据的格式为xml文件
@@ -36,38 +41,34 @@ public class NacosWithXmlELSpringbootTest extends BaseTest {
     @Resource
     @Resource
     private FlowExecutor flowExecutor;
     private FlowExecutor flowExecutor;
 
 
-    private NacosParserHelper helper;
-
-    // 写到本地.
-    final String flowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, b, c);</chain></flow>";
-
-    // 2次写入本地
-    final String changedFlowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, c);</chain></flow>";
+    @MockBean
+    private NacosConfigService nacosConfigService;
 
 
-    private static NacosParserVO nacosParserVO = new NacosParserVO();
-
-    static {
-        // 这里的信息必须 = application-xml.properties liteflow.rule-source-ext-data
-        nacosParserVO.setServerAddr("127.0.0.1:8848");
-        nacosParserVO.setDataId("LiteFlow");
-        nacosParserVO.setGroup("LITE_FLOW_GROUP");
-        nacosParserVO.setNamespace("");
+    @After
+    public void after(){
+        FlowBus.cleanCache();
     }
     }
 
 
-    @After
-    public void clean() {
-        LocalConfigInfoProcessor.cleanAllSnapshot();
+    @Test
+    public void testNacosWithXml1() throws Exception {
+        String flowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, b, c);</chain></flow>";
+        when(nacosConfigService.getConfig(anyString(), anyString(), anyLong())).thenReturn(flowXml);
+
+        LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
+        Assert.assertEquals("a==>b==>c", response.getExecuteStepStrWithoutTime());
     }
     }
 
 
     @Test
     @Test
-    public void testNacosWithXml() throws Exception {
-        // envName 把数据写到本地,作为快照数据.始终会取到
-        String envName = "fixed-127.0.0.1_8848";
-        LocalConfigInfoProcessor.saveSnapshot(envName,nacosParserVO.getDataId(),nacosParserVO.getGroup(),nacosParserVO.getNamespace(),flowXml);
+    public void testNacosWithXml2() throws Exception {
+        String flowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, b, c);</chain></flow>";
+        String changedFlowXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow><chain name=\"chain1\">THEN(a, c);</chain></flow>";
+        when(nacosConfigService.getConfig(anyString(), anyString(), anyLong())).thenReturn(flowXml).thenReturn(changedFlowXml);
+
         LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
         LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
         Assert.assertEquals("a==>b==>c", response.getExecuteStepStrWithoutTime());
         Assert.assertEquals("a==>b==>c", response.getExecuteStepStrWithoutTime());
 
 
         FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_EL_XML,changedFlowXml);
         FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_EL_XML,changedFlowXml);
+
         response = flowExecutor.execute2Resp("chain1", "arg");
         response = flowExecutor.execute2Resp("chain1", "arg");
         Assert.assertEquals("a==>c", response.getExecuteStepStrWithoutTime());
         Assert.assertEquals("a==>c", response.getExecuteStepStrWithoutTime());
     }
     }

+ 1 - 3
liteflow-testcase-el/liteflow-testcase-el-nacos-springboot/src/test/resources/nacos/application-xml.properties

@@ -1,4 +1,2 @@
-liteflow.rule-source-ext-data={"serverAddr":"127.0.0.1:8848"}
-#liteflow.rule-source-ext-data={"serverAddr":"127.0.0.1:8848","dataId":"LiteFlow","group":"LITE_FLOW_GROUP"}
-#liteflow.rule-source-ext-data={"serverAddr":"192.168.10.147:8848","dataId":"LiteFlow","group":"LITE_FLOW_GROUP","namespace":"","username":"","password":""}
+liteflow.rule-source-ext-data={"serverAddr":"192.168.10.147:8848","dataId":"LiteFlow","group":"LITE_FLOW_GROUP","namespace":"","username":"","password":""}
 liteflow.parse-on-start=false
 liteflow.parse-on-start=false