This is an automated email from the ASF dual-hosted git repository.

shenlin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git

commit 5426245f2652e7c4ea2c274bea5b4f92eccb783e
Author: wangkai <wang...@zhongan.com>
AuthorDate: Sat Oct 21 11:21:33 2023 +0800

    [e2eTest] add e2eTest model
---
 .../{maven-publish.yml => maven-package.yml}       |  6 ++-
 {start => dist}/pom.xml                            | 57 ++++++++++++++------
 dist/src/main/assembly/assembly.xml                | 35 ++++++++++++
 {bin => dist/src/main/bin}/eventbridge.sh          |  0
 {bin => dist/src/main/bin}/runserver.sh            |  3 +-
 dist/src/main/resources/application.properties     | 41 ++++++++++++++
 dist/src/main/resources/logback.xml                | 63 ++++++++++++++++++++++
 pom.xml                                            |  1 +
 start/pom.xml                                      | 26 ++++-----
 test/rocketmq-eventbridge-e2etest/pom.xml          |  2 +-
 .../controller/ApplicationTagControllerTest.java   | 38 ++++++++++---
 .../rocketmq/eventbridge/e2etest/util/Utils.java   | 43 ++++++---------
 12 files changed, 243 insertions(+), 72 deletions(-)

diff --git a/.github/workflows/maven-publish.yml 
b/.github/workflows/maven-package.yml
similarity index 95%
rename from .github/workflows/maven-publish.yml
rename to .github/workflows/maven-package.yml
index fd183e2..37eb4dc 100644
--- a/.github/workflows/maven-publish.yml
+++ b/.github/workflows/maven-package.yml
@@ -1,7 +1,11 @@
 # This workflow will build a package using Maven and then publish it to GitHub 
packages when a release is created
 # For more information see: 
https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path
 name: Redis runner example
-on: push
+on:
+  pull_request:
+    types: [ opened, reopened, synchronize ]
+    release:
+      types: [ created ]
 
 jobs:
   # Label of the runner job
diff --git a/start/pom.xml b/dist/pom.xml
similarity index 74%
copy from start/pom.xml
copy to dist/pom.xml
index a7e115d..8990d41 100644
--- a/start/pom.xml
+++ b/dist/pom.xml
@@ -1,15 +1,6 @@
-<!-- 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. -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <parent>
         <artifactId>rocketmq-eventbridge</artifactId>
@@ -18,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>rocketmq-eventbridge-start</artifactId>
+    <artifactId>rocketmq-eventbridge-dist</artifactId>
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
@@ -56,7 +47,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.rocketmq</groupId>
-            <artifactId>rocketmq-test-demo</artifactId>
+            <artifactId>rocketmq-eventbridge-start</artifactId>
         </dependency>
         <!-- Framework -->
         <dependency>
@@ -91,8 +82,7 @@
         </dependency>
     </dependencies>
 
-   <!-- <build>
-        <finalName>rocketmq-eventbridge</finalName>
+    <build>
         <resources>
             <resource>
                 <directory>src/main/resources</directory>
@@ -131,5 +121,38 @@
                 </executions>
             </plugin>
         </plugins>
-    </build>-->
+    </build>
+
+    <profiles>
+        <profile>
+            <id>local</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <configuration>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <descriptors>
+                                
<descriptor>src/main/assembly/assembly.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>assembly</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+
+    </profiles>
 </project>
\ No newline at end of file
diff --git a/dist/src/main/assembly/assembly.xml 
b/dist/src/main/assembly/assembly.xml
new file mode 100644
index 0000000..26b0cc6
--- /dev/null
+++ b/dist/src/main/assembly/assembly.xml
@@ -0,0 +1,35 @@
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0";
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 
http://maven.apache.org/xsd/assembly-2.0.0.xsd";>
+    <id>assembly</id>
+    <formats>
+        <format>dir</format>
+    </formats>
+
+    <includeBaseDirectory>true</includeBaseDirectory>
+    <baseDirectory>rocketmq-eventbridge</baseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                
<include>org.apache.rocketmq:rocketmq-eventbridge-dist:jar</include>
+            </includes>
+            
<outputFileNameMapping>rocketmq-eventbridge.jar</outputFileNameMapping>
+        </dependencySet>
+    </dependencySets>
+
+    <fileSets>
+        <fileSet>
+            <directory>src/main/bin</directory>
+            <outputDirectory>bin/</outputDirectory>
+            <fileMode>0755</fileMode>
+            <lineEnding>unix</lineEnding>
+            <filtered>true</filtered>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/resources</directory>
+            <outputDirectory>config/</outputDirectory>
+            <fileMode>0755</fileMode>
+        </fileSet>
+    </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/bin/eventbridge.sh b/dist/src/main/bin/eventbridge.sh
similarity index 100%
rename from bin/eventbridge.sh
rename to dist/src/main/bin/eventbridge.sh
diff --git a/bin/runserver.sh b/dist/src/main/bin/runserver.sh
similarity index 97%
rename from bin/runserver.sh
rename to dist/src/main/bin/runserver.sh
index de9541c..dfa7221 100755
--- a/bin/runserver.sh
+++ b/dist/src/main/bin/runserver.sh
@@ -87,7 +87,6 @@ JAVA_OPT="${JAVA_OPT} 
-Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib:$
 #JAVA_OPT="${JAVA_OPT} -Xdebug 
-Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
 JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
 JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
-
-JAVA_OPT="${JAVA_OPT} -Dlogback.configurationFile=${BASE_DIR}/conf/logback.xml"
+JAVA_OPT="${JAVA_OPT} 
-Dlogback.configurationFile=${BASE_DIR}/config/logback.xml 
-Dspring.config.location=${BASE_DIR}/config/application.properties"
 
 $JAVA ${JAVA_OPT} $@
\ No newline at end of file
diff --git a/dist/src/main/resources/application.properties 
b/dist/src/main/resources/application.properties
new file mode 100644
index 0000000..5911b30
--- /dev/null
+++ b/dist/src/main/resources/application.properties
@@ -0,0 +1,41 @@
+# 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.
+
+server.port=7001
+management.server.port=7002
+management.endpoints.web.base-path=/
+spring.profiles.active=local
+## database
+#spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/eventBridge?useUnicode=true&characterEncoding=utf8&useSSL=false
+#spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.hikari.username=xxxxx
+#spring.datasource.hikari.password=xxxxx
+mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+## flyway
+## rocketmq
+rocketmq.namesrvAddr=localhost:9876
+
+rocketmq.cluster.name=DefaultCluster
+## runtime
+runtime.config.mode=DB
+runtime.storage.mode=ROCKETMQ
+rumtime.name=eventbridge-runtimer
+runtime.pluginpath=~/eventbridge/plugin
+
+
+## log
+app.name=rocketmqeventbridge
+log.level=INFO
+log.path=~/logs
\ No newline at end of file
diff --git a/dist/src/main/resources/logback.xml 
b/dist/src/main/resources/logback.xml
new file mode 100644
index 0000000..c86f339
--- /dev/null
+++ b/dist/src/main/resources/logback.xml
@@ -0,0 +1,63 @@
+<!-- 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. -->
+
+<configuration>
+    <jmxConfigurator/>
+
+    <springProperty scope="context" name="app.name" source="app.name"/>
+    <springProperty scope="context" name="log.path" source="log.path"/>
+    <springProperty scope="context" name="log.level" source="log.level"/>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <target>System.out</target>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd
+                
HH:mm:ss.SSS}@@%X{traceId:-}@@%X{parentId:-}@@%X{spanId:-}@@[%thread]@@%level@@%logger{36}[%line]@@%msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <appender name="PROJECT" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/${app.name}/${app.name}.log</file>
+        <rollingPolicy 
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            
<fileNamePattern>${log.path}/${app.name}/${app.name}.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd
+                
HH:mm:ss.SSS}@@%X{traceId:-}@@%X{parentId:-}@@%X{spanId:-}@@[%thread]@@%level@@%logger{36}[%line]@@%msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <appender name="ACCESS" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/${app.name}/access.log</file>
+        <rollingPolicy 
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            
<fileNamePattern>${log.path}/${app.name}/access.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd 
HH:mm:ss.SSS}@@%X{traceId:-}@@%X{parentId:-}@@%X{spanId:-}@@[%thread]@@%level@@%logger{36}[%line]@@%msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <logger name="accessLog" level="${log.level}" additivity="false">
+        <appender-ref ref="ACCESS"/>
+        <appender-ref ref="STDOUT"/>
+    </logger>
+
+    <root level="${log.level}">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="PROJECT"/>
+    </root>
+</configuration>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index dd83d24..b60d031 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,7 @@
         <module>common</module>
         <module>infrastructure</module>
         <module>test</module>
+        <module>dist</module>
     </modules>
 
     <dependencyManagement>
diff --git a/start/pom.xml b/start/pom.xml
index a7e115d..b07569a 100644
--- a/start/pom.xml
+++ b/start/pom.xml
@@ -91,8 +91,7 @@
         </dependency>
     </dependencies>
 
-   <!-- <build>
-        <finalName>rocketmq-eventbridge</finalName>
+    <build>
         <resources>
             <resource>
                 <directory>src/main/resources</directory>
@@ -114,22 +113,15 @@
             </resource>
         </resources>
         <plugins>
+            <!-- java编译插件 -->
             <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.2.10.RELEASE</version>
-                <executions>
-                    <execution>
-                        <id>repackage</id>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                        <configuration>
-                            
<mainClass>org.apache.rocketmq.eventbridge.StartMain</mainClass>
-                        </configuration>
-                    </execution>
-                </executions>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>3.3.0</version>
+                <configuration>
+                    <finalName>rocketmq-eventbridge-start-1.0.0</finalName>
+                </configuration>
             </plugin>
         </plugins>
-    </build>-->
+    </build>
 </project>
\ No newline at end of file
diff --git a/test/rocketmq-eventbridge-e2etest/pom.xml 
b/test/rocketmq-eventbridge-e2etest/pom.xml
index 8ded330..ac82308 100644
--- a/test/rocketmq-eventbridge-e2etest/pom.xml
+++ b/test/rocketmq-eventbridge-e2etest/pom.xml
@@ -27,6 +27,7 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.13.2</version>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
@@ -36,7 +37,6 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
             <exclusions>
                 <exclusion>
                     <groupId>org.ow2.asm</groupId>
diff --git 
a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java
 
b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java
index 0f5446e..bac500b 100644
--- 
a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java
+++ 
b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java
@@ -1,5 +1,7 @@
 package org.apache.rocketmq.eventbridge.e2etest.controller;
 
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.apache.rocketmq.eventbridge.Main;
 import org.apache.rocketmq.eventbridge.e2etest.BaseTest;
 import org.apache.rocketmq.eventbridge.e2etest.util.Utils;
@@ -11,21 +13,45 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
+@Slf4j
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
classes = Main.class)
 public class ApplicationTagControllerTest extends BaseTest {
 
     @Test
-    public void testGetAllApplicationTags() {
-        String url = String.format("%s/bus/createEventBus", baseUrl);
-        Map<String, String> maps = new HashMap<>();
-        maps.put("eventBusName", "demo-bus");
-        maps.put("description", "a demo bus.");
-        ResponseEntity<Void> response = Utils.request(template, url, 
HttpMethod.POST, maps, Void.class);
+    public void testGetAllApplicationTags() throws Exception {
+
+        String url = String.format("%s/putEvents", baseUrl);
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json; charset=UTF-8");
+        headers.put("ce-specversion","1.0");
+        headers.put("ce-type", "com.github.pull_request.opened");
+        headers.put("ce-source", "https://github.com/cloudevents/spec/pull";);
+        headers.put("ce-subject", "demo");
+        headers.put("ce-id", "1234-1234-1234");
+        headers.put("ce-datacontenttype", "application/json");
+        headers.put("ce-time","2018-04-05T17:31:00Z");
+        headers.put("ce-eventbusname", "demo-bus");
+
+        ResponseEntity<Void> response = Utils.request(template, url, 
HttpMethod.POST, "A test recrod.", Void.class, headers);
         Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
+
+        File file = new File(System.getProperty("user.home") + "/demo");
+        String data = null;
+        long current = System.currentTimeMillis();
+        while((System.currentTimeMillis() - current)/1000 <300 ) {
+            data = FileUtils.readFileToString(file, "UTF-8");
+            if (data != null) {
+                break;
+            }
+            Thread.sleep(1000);
+        }
+
+        Assert.assertEquals("A test recrod.\n", data);
     }
 
 
diff --git 
a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java
 
b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java
index cc29fe7..6627ffe 100644
--- 
a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java
+++ 
b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java
@@ -15,10 +15,9 @@ import java.util.Map;
 
 public class Utils {
 
-       public static <T> ResponseEntity<T> request(TestRestTemplate template, 
String url, HttpMethod method, Object body, Class<T> clazz) {
-               HttpHeaders headers = devHeaders();
-
-               HttpEntity entity = new HttpEntity(body, headers);
+       public static <T> ResponseEntity<T> request(TestRestTemplate template, 
String url, HttpMethod method, Object body, Class<T> clazz, Map<String, String> 
headers) {
+               HttpHeaders httpHeaders = devHeaders(headers);
+               HttpEntity entity = new HttpEntity(body, httpHeaders);
                return template.exchange(url, method, entity, clazz);
        }
 
@@ -26,37 +25,25 @@ public class Utils {
                return template.getForEntity(url, clazz ,args);
        }
 
-       public static <T> ResponseEntity<T> requestAsAdmin(TestRestTemplate 
template, String url, HttpMethod method, Object body, Class<T> clazz) {
-               HttpHeaders headers = new HttpHeaders();
-               headers.add("X-AI-USER", "admin");
-
-               HttpEntity entity = new HttpEntity(body, headers);
-               return template.exchange(url, method, entity, clazz);
-       }
-
-       public static <T> ResponseEntity<T> request(TestRestTemplate template, 
String url, String fileKey, String file, Class<T> clazz, Object... 
urlVariables) throws IOException {
-               HttpHeaders headers = devHeaders();
-               headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+       public static <T> ResponseEntity<T> requestByPost(TestRestTemplate 
template, String url, String fileKey, String file, Class<T> clazz, Map<String, 
String> headers, Object... urlVariables) throws IOException {
+               HttpHeaders httpHeaders = devHeaders(headers);
+               httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
 
                MultiValueMap<String, Object> multipartRequest = new 
LinkedMultiValueMap<>();
                multipartRequest.add(fileKey, new ClassPathResource(file));
-               HttpEntity<MultiValueMap<String, Object>> entity = new 
HttpEntity<>(multipartRequest, headers);
+               HttpEntity<MultiValueMap<String, Object>> entity = new 
HttpEntity<>(multipartRequest, httpHeaders);
 
                return template.exchange(url, HttpMethod.POST, entity, clazz, 
urlVariables);
        }
 
-       private static HttpHeaders devHeaders() {
-               HttpHeaders headers = new HttpHeaders();
-               headers.add("X-AI-USER", "developer");
-
-               return headers;
+       private static HttpHeaders devHeaders(Map<String, String> headers) {
+               HttpHeaders httpHeaders = new HttpHeaders();
+               if (headers != null && !headers.isEmpty()) {
+                       for (Map.Entry<String, String> entry : 
headers.entrySet()) {
+                               httpHeaders.add(entry.getKey(), 
entry.getValue());
+                       }
+               }
+               return httpHeaders;
        }
 
-       public static <T> ResponseEntity<T> requestAsWanyaWu(TestRestTemplate 
template, String url, HttpMethod method, Object body, Class<T> clazz) {
-               HttpHeaders headers = new HttpHeaders();
-               headers.add("X-AI-USER", "vanya.wu");
-
-               HttpEntity entity = new HttpEntity(body, headers);
-               return template.exchange(url, method, entity, clazz);
-       }
 }

Reply via email to