[test/plugin] merge undertow scenario (#3797)
* merge undertow scenario * update elapsed time
This commit is contained in:
parent
2c481f9dc7
commit
62060749f7
|
|
@ -67,7 +67,7 @@ pipeline {
|
|||
sh './mvnw -f test/plugin/pom.xml clean package -DskipTests docker:build'
|
||||
}
|
||||
}
|
||||
stage('Test Cases Report (135)') {
|
||||
stage('Test Cases Report (119)') {
|
||||
steps {
|
||||
echo "Test Cases Report"
|
||||
}
|
||||
|
|
@ -110,12 +110,6 @@ pipeline {
|
|||
}
|
||||
}
|
||||
|
||||
stage('kafka 0.11.0.0-2.3.0 (16)') {
|
||||
steps {
|
||||
sh 'bash test/plugin/run.sh kafka-scenario'
|
||||
}
|
||||
}
|
||||
|
||||
stage('mongodb 3.4.0-3.11.1 (17)') {
|
||||
steps {
|
||||
sh 'bash test/plugin/run.sh mongodb-3.x-scenario'
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ pipeline {
|
|||
}
|
||||
}
|
||||
|
||||
stage('Test Cases Report (142)') {
|
||||
stage('Test Cases Report (135)') {
|
||||
steps {
|
||||
echo "Test Cases Report"
|
||||
}
|
||||
|
|
@ -84,9 +84,9 @@ pipeline {
|
|||
parallel {
|
||||
stage('Group1') {
|
||||
stages {
|
||||
stage('undertow-routing 1.3.0-2.0.27 (23)') {
|
||||
stage('kafka 0.11.0.0-2.3.0 (16)') {
|
||||
steps {
|
||||
sh 'bash test/plugin/run.sh undertow-routing-scenario'
|
||||
sh 'bash test/plugin/run.sh kafka-scenario'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -642,21 +642,19 @@ postgresql 9.2.x-9.4.x | 36 | 1243.03
|
|||
sofarpc 5.4.0-5.6.2 | 23 | 817.77
|
||||
spring 3.0.x | 8 | 231.11
|
||||
|
||||
#### Group 2 (3138.093s)
|
||||
#### Group 2 (2433.33s)
|
||||
scenario name | versions | elapsed time (sec)
|
||||
---|---|---
|
||||
spring async 4.3.x-5.1.x | 35 | 967.70
|
||||
kafka 0.11.0.0-2.3.0 | 16 | 704.75
|
||||
mongodb 3.4.0-3.11.1 | 17 | 1465.63
|
||||
|
||||
|
||||
### Workload 4
|
||||
#### Group 1 (1688.243s)
|
||||
#### Group 1 (1778.45s)
|
||||
scenario name | versions | elapsed time (sec)
|
||||
---|---|---
|
||||
undertow-routing 1.3.0-2.0.27 | 23 | 643.31
|
||||
kafka 0.11.0.0-2.3.0 | 16 | 704.75
|
||||
ehcache 2.8.x-2.10.x | 19 | 440.71
|
||||
undertow 1.3.0-2.0.27 | 23 | 604.20
|
||||
undertow 1.3.0-2.0.27 | 23 | 633.00
|
||||
|
||||
#### Group 2 (2148.155s)
|
||||
scenario name | versions | elapsed time (sec)
|
||||
|
|
@ -665,4 +663,4 @@ spring-webflux 2.x | 18 | 705.60
|
|||
spring 4.1.x-4.2.x | 20 | 574.75
|
||||
solrj 7.x | 12 | 367.05
|
||||
httpclient 4.3.x-4.5.x | 14 | 300.61
|
||||
httpasyncclient 4.0-4.1.3 | 7 | 200.11
|
||||
httpasyncclient 4.0-4.1.3 | 7 | 200.11
|
||||
|
|
|
|||
|
|
@ -143,9 +143,9 @@ test -z "$scenario_name" && exitWithMessage "Missing value for the scenario argu
|
|||
|
||||
if [[ ! -d ${agent_home} ]]; then
|
||||
echo "[WARN] SkyWalking Agent not exists"
|
||||
${mvnw} -f ${home}/../../pom.xml -Pagent -DskipTests -DBUILD_NO=${BUILD_NO:=local} clean package
|
||||
${mvnw} -f ${home}/../../pom.xml -Pagent -DskipTests clean package
|
||||
fi
|
||||
[[ "$force_build" == "on" ]] && ${mvnw} -f ${home}/pom.xml clean package -DskipTests docker:build
|
||||
[[ "$force_build" == "on" ]] && ${mvnw} -f ${home}/pom.xml clean package -DskipTests -DBUILD_NO=${BUILD_NO:=local} docker:build
|
||||
|
||||
workspace="${home}/workspace/${scenario_name}"
|
||||
task_state_house="${workspace}/.states"
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# 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.
|
||||
|
||||
home="$(cd "$(dirname $0)"; pwd)"
|
||||
|
||||
java -jar ${agent_opts} ${home}/../libs/undertow-routing-scenario.jar &
|
||||
|
|
@ -1,106 +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.
|
||||
|
||||
registryItems:
|
||||
applications:
|
||||
- {undertow-routing-scenario: 2}
|
||||
instances:
|
||||
- {undertow-routing-scenario: 1}
|
||||
operationNames:
|
||||
- undertow-routing-scenario: [/undertow-routing-scenario/case/undertow1, '/undertow-routing-scenario/case/{context}']
|
||||
heartbeat: []
|
||||
segmentItems:
|
||||
- applicationCode: undertow-routing-scenario
|
||||
segmentSize: gt 3
|
||||
segments:
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /undertow-routing-scenario/case/{context}
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: 49
|
||||
componentName: ''
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
peerId: 0
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/undertow-routing-scenario/case/undertow'}
|
||||
- {key: http.method, value: GET}
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /undertow-routing-scenario/case/{context}
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: 49
|
||||
componentName: ''
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
peerId: 0
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/undertow-routing-scenario/case/undertow1'}
|
||||
- {key: http.method, value: GET}
|
||||
refs:
|
||||
- {parentEndpointId: 0, parentEndpoint: UndertowDispatch, networkAddressId: 0,
|
||||
entryEndpointId: 0, refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null,
|
||||
parentServiceInstanceId: 1, networkAddress: 'localhost:8080', entryEndpoint: '/undertow-routing-scenario/case/{context}',
|
||||
entryServiceInstanceId: 1}
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /undertow-routing-scenario/case/undertow1
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 1
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: 2
|
||||
componentName: ''
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
peerId: 0
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/undertow-routing-scenario/case/undertow1?send=httpHandler'}
|
||||
- {key: http.method, value: GET}
|
||||
- operationName: UndertowDispatch
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Unknown
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: 49
|
||||
componentName: ''
|
||||
isError: false
|
||||
spanType: Local
|
||||
peer: ''
|
||||
peerId: 0
|
||||
refs:
|
||||
- {parentEndpointId: 0, parentEndpoint: '/undertow-routing-scenario/case/{context}',
|
||||
networkAddressId: 0, entryEndpointId: 0, refType: CrossThread, parentSpanId: 0,
|
||||
parentTraceSegmentId: not null, parentServiceInstanceId: 1,
|
||||
networkAddress: '', entryEndpoint: '/undertow-routing-scenario/case/{context}',
|
||||
entryServiceInstanceId: 1}
|
||||
|
|
@ -1,21 +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.
|
||||
|
||||
type: jvm
|
||||
entryService: http://localhost:8080/undertow-routing-scenario/case/undertow
|
||||
healthCheck: http://localhost:8080/undertow-routing-scenario/case/healthCheck
|
||||
startScript: ./bin/startup.sh
|
||||
framework: undertow
|
||||
|
|
@ -1,114 +0,0 @@
|
|||
<?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.
|
||||
~
|
||||
-->
|
||||
<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">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<artifactId>undertow-routing-scenario</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>5.0.0</version>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<compiler.version>1.8</compiler.version>
|
||||
<start-class>org.apache.skywalking.amp.testcase.undertow.Application</start-class>
|
||||
|
||||
<test.framework>undertow</test.framework>
|
||||
<test.framework.version>1.3.0.Final</test.framework.version>
|
||||
</properties>
|
||||
|
||||
<name>skywalking-undertow-routing-scenario</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.undertow</groupId>
|
||||
<artifactId>undertow-core</artifactId>
|
||||
<version>${test.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>undertow-routing-scenario</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>${compiler.version}</source>
|
||||
<target>${compiler.version}</target>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>assemble</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>src/main/assembly/assembly.xml</descriptor>
|
||||
</descriptors>
|
||||
<outputDirectory>./target/</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>spring-snapshots</id>
|
||||
<url>http://repo.spring.io/snapshot</url>
|
||||
</pluginRepository>
|
||||
<pluginRepository>
|
||||
<id>spring-milestones</id>
|
||||
<url>http://repo.spring.io/milestone</url>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
</project>
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
<?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.
|
||||
~
|
||||
-->
|
||||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>./bin</directory>
|
||||
<fileMode>0775</fileMode>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
<files>
|
||||
<file>
|
||||
<source>${project.build.directory}/undertow-routing-scenario.jar</source>
|
||||
<outputDirectory>./libs</outputDirectory>
|
||||
<fileMode>0775</fileMode>
|
||||
</file>
|
||||
</files>
|
||||
</assembly>
|
||||
|
|
@ -1,72 +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.skywalking.amp.testcase.undertow;
|
||||
|
||||
import io.undertow.Undertow;
|
||||
import io.undertow.server.HttpHandler;
|
||||
import io.undertow.server.RoutingHandler;
|
||||
import io.undertow.util.Headers;
|
||||
import io.undertow.util.Methods;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.client.ResponseHandler;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class Application {
|
||||
|
||||
private static final String TEMPLATE = "/undertow-routing-scenario/case/{context}";
|
||||
|
||||
private static final String CASE_URL = "/undertow-routing-scenario/case/undertow";
|
||||
|
||||
public static void main(String[] args) {
|
||||
HttpHandler httpHandler = exchange -> {
|
||||
if (CASE_URL.equals(exchange.getRequestPath())) {
|
||||
exchange.dispatch(httpServerExchange -> visit("http://localhost:8080/undertow-routing-scenario/case/undertow1?send=httpHandler"));
|
||||
}
|
||||
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
|
||||
exchange.getResponseSender().send("Success");
|
||||
};
|
||||
RoutingHandler handler = new RoutingHandler();
|
||||
handler.add(Methods.GET, TEMPLATE, httpHandler);
|
||||
handler.add(Methods.HEAD, TEMPLATE, httpHandler);
|
||||
Undertow server = Undertow.builder()
|
||||
.addHttpListener(8080, "0.0.0.0")
|
||||
.setHandler(handler).build();
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(server::stop));
|
||||
server.start();
|
||||
}
|
||||
|
||||
private static void visit(String url) throws IOException {
|
||||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||
try {
|
||||
HttpGet httpget = new HttpGet(url);
|
||||
ResponseHandler<String> responseHandler = response -> {
|
||||
HttpEntity entity = response.getEntity();
|
||||
return entity != null ? EntityUtils.toString(entity) : null;
|
||||
};
|
||||
httpclient.execute(httpget, responseHandler);
|
||||
} finally {
|
||||
httpclient.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +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
|
||||
# "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.
|
||||
|
||||
# undertow has a total of 90 versions from 1.3.0 to 2.0.27, in order to reduce the workload of agent-plugin-test,
|
||||
# so, some test cases are excluded according to the following rules.
|
||||
# 1.3.x 1.4.x: select the first, middle, and last version
|
||||
# 2.0.x: when there are many releases in the same month, choose the last one
|
||||
|
||||
1.3.0.Final
|
||||
1.3.17.Final
|
||||
1.3.33.Final
|
||||
1.4.0.Final
|
||||
1.4.12.Final
|
||||
1.4.27.Final
|
||||
2.0.0.Final
|
||||
2.0.3.Final
|
||||
2.0.4.Final
|
||||
2.0.8.Final
|
||||
2.0.9.Final
|
||||
2.0.11.Final
|
||||
2.0.13.Final
|
||||
2.0.15.Final
|
||||
2.0.16.Final
|
||||
2.0.17.Final
|
||||
2.0.19.Final
|
||||
2.0.20.Final
|
||||
2.0.21.Final
|
||||
2.0.22.Final
|
||||
2.0.23.Final
|
||||
2.0.26.Final
|
||||
2.0.27.Final
|
||||
|
|
@ -20,11 +20,12 @@ registryItems:
|
|||
instances:
|
||||
- {undertow-scenario: 1}
|
||||
operationNames:
|
||||
- undertow-scenario: [/undertow-scenario/case/undertow1, /undertow-scenario/case/undertow]
|
||||
- undertow-scenario: [/undertow-scenario/case/undertow1, /undertow-scenario/case/undertow, /undertow-routing-scenario/case/undertow,
|
||||
'/undertow-routing-scenario/case/{context}']
|
||||
heartbeat: []
|
||||
segmentItems:
|
||||
- applicationCode: undertow-scenario
|
||||
segmentSize: gt 3
|
||||
segmentSize: gt 5
|
||||
segments:
|
||||
- segmentId: not null
|
||||
spans:
|
||||
|
|
@ -44,6 +45,29 @@ segmentItems:
|
|||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/undertow-scenario/case/undertow'}
|
||||
- {key: http.method, value: GET}
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /undertow-routing-scenario/case/{context}
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: 49
|
||||
componentName: ''
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
peerId: 0
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8081/undertow-routing-scenario/case/undertow'}
|
||||
- {key: http.method, value: GET}
|
||||
refs:
|
||||
- {parentEndpointId: 0, parentEndpoint: UndertowDispatch, networkAddressId: 0,
|
||||
entryEndpointId: 0, refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null,
|
||||
parentServiceInstanceId: 1, networkAddress: 'localhost:8081', entryEndpoint: /undertow-scenario/case/undertow,
|
||||
entryServiceInstanceId: 1}
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /undertow-scenario/case/undertow1
|
||||
|
|
@ -67,6 +91,42 @@ segmentItems:
|
|||
entryEndpointId: 0, refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null,
|
||||
parentServiceInstanceId: 1, networkAddress: 'localhost:8080', entryEndpoint: /undertow-scenario/case/undertow,
|
||||
entryServiceInstanceId: 1}
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /undertow-routing-scenario/case/undertow
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 1
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: 2
|
||||
componentName: ''
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8081
|
||||
peerId: 0
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8081/undertow-routing-scenario/case/undertow?send=httpHandler'}
|
||||
- {key: http.method, value: GET}
|
||||
- operationName: UndertowDispatch
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Unknown
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: 49
|
||||
componentName: ''
|
||||
isError: false
|
||||
spanType: Local
|
||||
peer: ''
|
||||
peerId: 0
|
||||
refs:
|
||||
- {parentEndpointId: 0, parentEndpoint: /undertow-scenario/case/undertow, networkAddressId: 0,
|
||||
entryEndpointId: 0, refType: CrossThread, parentSpanId: 0, parentTraceSegmentId: not null,
|
||||
parentServiceInstanceId: 1, networkAddress: '', entryEndpoint: /undertow-scenario/case/undertow,
|
||||
entryServiceInstanceId: 1}
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /undertow-scenario/case/undertow1
|
||||
|
|
@ -99,7 +159,7 @@ segmentItems:
|
|||
peer: ''
|
||||
peerId: 0
|
||||
refs:
|
||||
- {parentEndpointId: 0, parentEndpoint: /undertow-scenario/case/undertow, networkAddressId: 0,
|
||||
entryEndpointId: 0, refType: CrossThread, parentSpanId: 0, parentTraceSegmentId: not null,
|
||||
parentServiceInstanceId: 1, networkAddress: '', entryEndpoint: /undertow-scenario/case/undertow,
|
||||
entryServiceInstanceId: 1}
|
||||
- {parentEndpointId: 0, parentEndpoint: '/undertow-routing-scenario/case/{context}',
|
||||
networkAddressId: 0, entryEndpointId: 0, refType: CrossThread, parentSpanId: 0,
|
||||
parentTraceSegmentId: not null, parentServiceInstanceId: 1,
|
||||
networkAddress: '', entryEndpoint: /undertow-scenario/case/undertow, entryServiceInstanceId: 1}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,10 @@
|
|||
package org.apache.skywalking.amp.testcase.undertow;
|
||||
|
||||
import io.undertow.Undertow;
|
||||
import io.undertow.server.HttpHandler;
|
||||
import io.undertow.server.RoutingHandler;
|
||||
import io.undertow.util.Headers;
|
||||
import io.undertow.util.Methods;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.client.ResponseHandler;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
|
|
@ -33,14 +36,23 @@ public class Application {
|
|||
|
||||
private static final String CASE_URL = "/undertow-scenario/case/undertow";
|
||||
|
||||
private static final String TEMPLATE = "/undertow-routing-scenario/case/{context}";
|
||||
|
||||
private static final String ROUTING_CASE_URL = "/undertow-routing-scenario/case/undertow";
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
new Thread(Application::undertowRouting).start();
|
||||
undertow();
|
||||
}
|
||||
|
||||
private static void undertow() {
|
||||
Undertow server = Undertow.builder()
|
||||
.addHttpListener(8080, "0.0.0.0")
|
||||
.setHandler(exchange -> {
|
||||
if (CASE_URL.equals(exchange.getRequestPath())) {
|
||||
exchange.dispatch(() -> {
|
||||
try {
|
||||
visit("http://localhost:8080/undertow-scenario/case/undertow1?send=runnable");
|
||||
visit("http://localhost:8081/undertow-routing-scenario/case/undertow?send=httpHandler");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
@ -53,17 +65,35 @@ public class Application {
|
|||
server.start();
|
||||
}
|
||||
|
||||
private static void undertowRouting() {
|
||||
HttpHandler httpHandler = exchange -> {
|
||||
if (ROUTING_CASE_URL.equals(exchange.getRequestPath())) {
|
||||
exchange.dispatch(httpServerExchange -> visit("http://localhost:8080/undertow-scenario/case/undertow1?send=runnable"));
|
||||
}
|
||||
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
|
||||
exchange.getResponseSender().send("Success");
|
||||
};
|
||||
RoutingHandler handler = new RoutingHandler();
|
||||
handler.add(Methods.GET, TEMPLATE, httpHandler);
|
||||
handler.add(Methods.HEAD, TEMPLATE, httpHandler);
|
||||
Undertow server = Undertow.builder()
|
||||
.addHttpListener(8081, "0.0.0.0")
|
||||
.setHandler(handler).build();
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(server::stop));
|
||||
server.start();
|
||||
}
|
||||
|
||||
private static void visit(String url) throws IOException {
|
||||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||
CloseableHttpClient httpClient = HttpClients.createDefault();
|
||||
try {
|
||||
HttpGet httpget = new HttpGet(url);
|
||||
ResponseHandler<String> responseHandler = response -> {
|
||||
HttpEntity entity = response.getEntity();
|
||||
return entity != null ? EntityUtils.toString(entity) : null;
|
||||
};
|
||||
httpclient.execute(httpget, responseHandler);
|
||||
httpClient.execute(httpget, responseHandler);
|
||||
} finally {
|
||||
httpclient.close();
|
||||
httpClient.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue