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