You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by li...@apache.org on 2020/12/28 03:44:58 UTC

[dubbo-samples] branch master updated: fix-test-doc, improve scenario builder log (#189)

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

liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-samples.git


The following commit(s) were added to refs/heads/master by this push:
     new b9068ca  fix-test-doc, improve scenario builder log (#189)
b9068ca is described below

commit b9068cacc8c18c2d6b7d92311be146c431f011fb
Author: gongdewei <ky...@qq.com>
AuthorDate: Mon Dec 28 11:44:52 2020 +0800

    fix-test-doc, improve scenario builder log (#189)
---
 .../dubbo/scenario/builder/ConfigurationImpl.java  | 21 ++++++--
 .../scenario/builder/vo/CaseConfiguration.java     | 11 +++++
 .../dubbo/scenario/builder/vo/DockerService.java   | 18 +++++++
 .../dubbo/scenario/builder/vo/JavaDebugOption.java | 40 ---------------
 .../scenario/builder/vo/ServiceComponent.java      | 38 +++++++++++----
 .../src/main/resources/logback.xml                 | 51 +++++++++++++++++++
 test/quick-start_cn.md                             | 57 ++++++++++++++--------
 7 files changed, 161 insertions(+), 75 deletions(-)

diff --git a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/ConfigurationImpl.java b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/ConfigurationImpl.java
index e5620aa..34533a9 100644
--- a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/ConfigurationImpl.java
+++ b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/ConfigurationImpl.java
@@ -91,11 +91,13 @@ public class ConfigurationImpl implements IConfiguration {
         }
 
         String debugService = System.getProperty("debug.service");
-        String[] strs = debugService.split(",");
-        for (String str : strs) {
-            str = str.trim();
-            if (StringUtils.isNotBlank(str)) {
-                debugServices.add(str);
+        if (StringUtils.isNotBlank(debugService)) {
+            String[] strs = debugService.split(",");
+            for (String str : strs) {
+                str = str.trim();
+                if (StringUtils.isNotBlank(str)) {
+                    debugServices.add(str);
+                }
             }
         }
 
@@ -112,6 +114,15 @@ public class ConfigurationImpl implements IConfiguration {
         if (isDebug()) {
             scenarioTimeout = debugTimeout;
         }
+
+        logger.info("scenarioName:{}, timeout: {}, debugServices:{}, config: {}",
+                scenarioName, scenarioTimeout, debugServices, configuration);
+
+        for (String service : debugServices) {
+            if (!configuration.getServices().containsKey(service)) {
+                logger.warn("debug service not found: {}", service);
+            }
+        }
     }
 
     private boolean isDebug() {
diff --git a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/CaseConfiguration.java b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/CaseConfiguration.java
index 6401dec..c380fd9 100644
--- a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/CaseConfiguration.java
+++ b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/CaseConfiguration.java
@@ -67,4 +67,15 @@ public class CaseConfiguration {
     public void setTimeout(int timeout) {
         this.timeout = timeout;
     }
+
+    @Override
+    public String toString() {
+        return "CaseConfiguration{" +
+                "from='" + from + '\'' +
+                ", props=" + props +
+                ", systemProps=" + systemProps +
+                ", services=" + services +
+                ", timeout=" + timeout +
+                '}';
+    }
 }
diff --git a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/DockerService.java b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/DockerService.java
index 4737d19..124976d 100644
--- a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/DockerService.java
+++ b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/DockerService.java
@@ -128,4 +128,22 @@ public class DockerService {
     public void setPorts(List<String> ports) {
         this.ports = ports;
     }
+
+    @Override
+    public String toString() {
+        return "DockerService{" +
+                "name='" + name + '\'' +
+                ", imageName='" + imageName + '\'' +
+                ", hostname='" + hostname + '\'' +
+                ", removeOnExit=" + removeOnExit +
+                ", links=" + links +
+                ", expose=" + expose +
+                ", ports=" + ports +
+                ", entrypoint=" + entrypoint +
+                ", healthcheck=" + healthcheck +
+                ", depends_on=" + depends_on +
+                ", environment=" + environment +
+                ", volumes=" + volumes +
+                '}';
+    }
 }
diff --git a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/JavaDebugOption.java b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/JavaDebugOption.java
deleted file mode 100644
index 107aa92..0000000
--- a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/JavaDebugOption.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.dubbo.scenario.builder.vo;
-
-public class JavaDebugOption {
-
-    private int port;
-    private String suspend;
-
-    public int getPort() {
-        return port;
-    }
-
-    public void setPort(int port) {
-        this.port = port;
-    }
-
-    public String getSuspend() {
-        return suspend;
-    }
-
-    public void setSuspend(String suspend) {
-        this.suspend = suspend;
-    }
-}
diff --git a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/ServiceComponent.java b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/ServiceComponent.java
index c7fd2d6..8490618 100644
--- a/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/ServiceComponent.java
+++ b/test/dubbo-scenario-builder/src/main/java/org/apache/dubbo/scenario/builder/vo/ServiceComponent.java
@@ -46,7 +46,6 @@ public class ServiceComponent {
     private List<String> tests;
     private List<String> systemProps;
     private List<String> jvmFlags;
-    private JavaDebugOption javaDebug;
 
     public String getImage() {
         return image;
@@ -224,14 +223,6 @@ public class ServiceComponent {
         this.volumes_from = volumes_from;
     }
 
-    public JavaDebugOption getJavaDebug() {
-        return javaDebug;
-    }
-
-    public void setJavaDebug(JavaDebugOption javaDebug) {
-        this.javaDebug = javaDebug;
-    }
-
     public List<String> getPorts() {
         return ports;
     }
@@ -239,4 +230,33 @@ public class ServiceComponent {
     public void setPorts(List<String> ports) {
         this.ports = ports;
     }
+
+    @Override
+    public String toString() {
+        return "ServiceComponent{" +
+                "image='" + image + '\'' +
+                ", hostname='" + hostname + '\'' +
+                ", version='" + version + '\'' +
+                ", removeOnExit=" + removeOnExit +
+                ", links=" + links +
+                ", expose=" + expose +
+                ", ports=" + ports +
+                ", entrypoint=" + entrypoint +
+                ", environment=" + environment +
+                ", volumes=" + volumes +
+                ", volumes_from=" + volumes_from +
+                ", depends_on=" + depends_on +
+                ", healthcheck=" + healthcheck +
+                ", type='" + type + '\'' +
+                ", basedir='" + basedir + '\'' +
+                ", mainClass='" + mainClass + '\'' +
+                ", waitPortsBeforeRun=" + waitPortsBeforeRun +
+                ", checkPortsAfterRun=" + checkPortsAfterRun +
+                ", checkLog='" + checkLog + '\'' +
+                ", checkTimeout=" + checkTimeout +
+                ", tests=" + tests +
+                ", systemProps=" + systemProps +
+                ", jvmFlags=" + jvmFlags +
+                '}';
+    }
 }
diff --git a/test/dubbo-scenario-builder/src/main/resources/logback.xml b/test/dubbo-scenario-builder/src/main/resources/logback.xml
new file mode 100644
index 0000000..d0fd9aa
--- /dev/null
+++ b/test/dubbo-scenario-builder/src/main/resources/logback.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <File>test.log</File>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>test-%d{yyyy-MM-dd}.%i.log
+            </FileNamePattern>
+            <MaxHistory>10</MaxHistory>
+            <TimeBasedFileNamingAndTriggeringPolicy
+                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <MaxFileSize>5MB</MaxFileSize>
+            </TimeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
+            </pattern>
+        </layout>
+    </appender>
+
+    <root level="info">
+        <!-- <appender-ref ref="file" /> -->
+        <appender-ref ref="console"/>
+    </root>
+
+</configuration>
diff --git a/test/quick-start_cn.md b/test/quick-start_cn.md
index 16dfa9a..40cc05f 100644
--- a/test/quick-start_cn.md
+++ b/test/quick-start_cn.md
@@ -40,7 +40,11 @@ cd dubbo-samples/test
 
 ### 运行测试案例
 
-通过`run-tests.sh`运行单个测试案例、测试案例列表或者全部测试案例。
+`run-tests.sh` 运行单个测试案例、测试案例列表或者全部测试案例。  
+
+`kill-tests.sh` 强制停止所有测试用例,停止所有dubbo containers及全部run-tests.sh/scenario.sh进程。
+
+注意:`Ctrl+C`中断执行`run-tests.sh`后,需要执行`kill-tests.sh`脚本。
 
 #### 编译方式(BUILD)
 
@@ -106,20 +110,20 @@ cd dubbo-samples/test
     
   下面以`dubbo-samples-annotation`举例说明如何调试运行测试案例。
     
-  先用普通方式执行一次测试案例,查看生成的`docker-compose.yml`,可知AnnotationProviderBootstrap的服务名称为`dubbo-samples-annotation`,
+  先用普通方式执行一次测试案例:
+  
+  ```
+  ./run-tests.sh ../dubbo-samples-annotation
+  ```
+  
+  查看生成的`dubbo-samples-annotation/target/docker-compose.yml`,可知AnnotationProviderBootstrap的服务名称为`dubbo-samples-annotation`,
   test类的服务名为`dubbo-samples-annotation-test`。
   
   * 调试provider类:AnnotationProviderBootstrap
   
     执行启动命令,以suspend模式启动AnnotationProviderBootstrap:
     ```
-    DEBUG=dubbo-sampes-annotation ./run-tests.sh ../dubbo-samples-annotation
-    ```
-    
-    用命令查看日志:
-     
-    ```
-    tail -f dubbo-sampes-annotation/target/logs/dubbo-sampes-annotation.log
+    DEBUG=dubbo-samples-annotation ./run-tests.sh ../dubbo-samples-annotation
     ```
     
     直到可以看到下面的日志信息:
@@ -139,31 +143,42 @@ cd dubbo-samples/test
     
     执行启动命令,以suspend模式启动test:
     ```
-    DEBUG=dubbo-sampes-annotation-test ./run-tests.sh ../dubbo-samples-annotation
-    ```
-        
-    用命令查看日志:
-     
-    ```
-    tail -f dubbo-sampes-annotation/target/logs/dubbo-sampes-annotation-test.log
+    DEBUG=dubbo-samples-annotation-test ./run-tests.sh ../dubbo-samples-annotation
     ```
     
     直到可以看到下面的日志信息:
   
     ```
-    + java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=20661 -Dzookeeper.address=dubbo-samples-annotation -Dzookeeper.port=2181 -Ddubbo.address=dubbo-samples-annotation -Ddubbo.port=20880 -jar dubbo-test-runner.jar /usr/local/dubbo/app/test-classes /usr/local/dubbo/app/classes /usr/local/dubbo/app/dependency /usr/local/dubbo//app/test-reports '**/*IT.class'
-    Listening for transport dt_socket at address: 20661
+    + java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=20660 -Dzookeeper.address=dubbo-samples-annotation -Dzookeeper.port=2181 -Ddubbo.address=dubbo-samples-annotation -Ddubbo.port=20880 -jar dubbo-test-runner.jar /usr/local/dubbo/app/test-classes /usr/local/dubbo/app/classes /usr/local/dubbo/app/dependency /usr/local/dubbo//app/test-reports '**/*IT.class'
+    Listening for transport dt_socket at address: 20660
     ```
-    用上面的方法,先断点,然后再连接调试端口20661。
+    用上面的方法,先断点,然后再连接调试端口20660。
    
   * 同时调试provider和test类
   
     执行调试启动命令
     ```
-    DEBUG=dubbo-sampes-annotation,dubbo-sampes-annotation-test ./run-tests.sh ../dubbo-samples-annotation
+    DEBUG=dubbo-samples-annotation,dubbo-samples-annotation-test ./run-tests.sh ../dubbo-samples-annotation
     ```
     
-    如果同时调试多个suspend方式启动的app/test服务,需要按照依赖顺序连接调试端口,保证前置服务启动成功后,才能继续调试后一个服务。
+    同时调试多个suspend方式启动的app/test服务,需要按照依赖顺序连接调试端口,保证前置服务启动成功后,才能继续调试后一个服务。
+    
+    首先看到`AnnotationProviderBootstrap`的调试端口:
+    
+    ```
+    + java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=20660 -cp '/usr/local/dubbo/app/classes:/usr/local/dubbo/app/dependency/*' org.apache.dubbo.samples.annotation.AnnotationProviderBootstrap
+    Listening for transport dt_socket at address: 20660
+    ```
+    
+    使用IDEA/eclipse 连接远程调试端口`localhost:20660`,连接上后测试继续运行,然后看到test类的调试端口:
+    
+    ```
+    + java -Dzookeeper.address=dubbo-samples-annotation -Dzookeeper.port=2181 -Ddubbo.address=dubbo-samples-annotation -Ddubbo.port=20880 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=20661 -jar dubbo-test-runner.jar /usr/local/dubbo/app/test-classes /usr/local/dubbo/app/classes /usr/local/dubbo/app/dependency /usr/local/dubbo//app/test-reports '**/*IT.class'
+    Listening for transport dt_socket at address: 20661
+    ```
+    
+    再次连接调试端口`localhost:20661`,test类继续执行。
+    
 
 **注意:**
   


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org