diff --git a/Jenkinsfile-Agent-Test-3 b/Jenkinsfile-Agent-Test-3
index a46dfd172..1edfb2642 100755
--- a/Jenkinsfile-Agent-Test-3
+++ b/Jenkinsfile-Agent-Test-3
@@ -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'
diff --git a/Jenkinsfile-Agent-Test-4 b/Jenkinsfile-Agent-Test-4
index 5ce04d811..8b994e533 100755
--- a/Jenkinsfile-Agent-Test-4
+++ b/Jenkinsfile-Agent-Test-4
@@ -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'
}
}
diff --git a/docs/en/guides/Plugin-test.md b/docs/en/guides/Plugin-test.md
index 5cbd881fe..75a7b8191 100644
--- a/docs/en/guides/Plugin-test.md
+++ b/docs/en/guides/Plugin-test.md
@@ -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
\ No newline at end of file
+httpasyncclient 4.0-4.1.3 | 7 | 200.11
diff --git a/test/plugin/run.sh b/test/plugin/run.sh
index b4c024388..38e4a53f8 100644
--- a/test/plugin/run.sh
+++ b/test/plugin/run.sh
@@ -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"
diff --git a/test/plugin/scenarios/undertow-routing-scenario/bin/startup.sh b/test/plugin/scenarios/undertow-routing-scenario/bin/startup.sh
deleted file mode 100644
index 52f5a542f..000000000
--- a/test/plugin/scenarios/undertow-routing-scenario/bin/startup.sh
+++ /dev/null
@@ -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 &
\ No newline at end of file
diff --git a/test/plugin/scenarios/undertow-routing-scenario/config/expectedData.yaml b/test/plugin/scenarios/undertow-routing-scenario/config/expectedData.yaml
deleted file mode 100644
index b8439feff..000000000
--- a/test/plugin/scenarios/undertow-routing-scenario/config/expectedData.yaml
+++ /dev/null
@@ -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}
\ No newline at end of file
diff --git a/test/plugin/scenarios/undertow-routing-scenario/configuration.yml b/test/plugin/scenarios/undertow-routing-scenario/configuration.yml
deleted file mode 100644
index c32ce969f..000000000
--- a/test/plugin/scenarios/undertow-routing-scenario/configuration.yml
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/test/plugin/scenarios/undertow-routing-scenario/pom.xml b/test/plugin/scenarios/undertow-routing-scenario/pom.xml
deleted file mode 100644
index 7ab0a460e..000000000
--- a/test/plugin/scenarios/undertow-routing-scenario/pom.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
- 4.0.0
-
- org.apache.skywalking
- undertow-routing-scenario
- jar
- 5.0.0
-
-
- UTF-8
- 1.8
- org.apache.skywalking.amp.testcase.undertow.Application
-
- undertow
- 1.3.0.Final
-
-
- skywalking-undertow-routing-scenario
-
-
-
- javax.servlet
- javax.servlet-api
- 3.1.0
- provided
-
-
- io.undertow
- undertow-core
- ${test.framework.version}
-
-
-
- org.apache.httpcomponents
- httpclient
- 4.3
-
-
-
-
- undertow-routing-scenario
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- repackage
-
-
-
-
-
- maven-compiler-plugin
-
- ${compiler.version}
- ${compiler.version}
- ${project.build.sourceEncoding}
-
-
-
- org.apache.maven.plugins
- maven-assembly-plugin
-
-
- assemble
- package
-
- single
-
-
-
- src/main/assembly/assembly.xml
-
- ./target/
-
-
-
-
-
-
-
-
-
- spring-snapshots
- http://repo.spring.io/snapshot
-
-
- spring-milestones
- http://repo.spring.io/milestone
-
-
-
\ No newline at end of file
diff --git a/test/plugin/scenarios/undertow-routing-scenario/src/main/assembly/assembly.xml b/test/plugin/scenarios/undertow-routing-scenario/src/main/assembly/assembly.xml
deleted file mode 100644
index 9d3588c2f..000000000
--- a/test/plugin/scenarios/undertow-routing-scenario/src/main/assembly/assembly.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- zip
-
-
-
-
- ./bin
- 0775
-
-
-
-
-
- ${project.build.directory}/undertow-routing-scenario.jar
- ./libs
- 0775
-
-
-
diff --git a/test/plugin/scenarios/undertow-routing-scenario/src/main/java/org/apache/skywalking/amp/testcase/undertow/Application.java b/test/plugin/scenarios/undertow-routing-scenario/src/main/java/org/apache/skywalking/amp/testcase/undertow/Application.java
deleted file mode 100644
index 4a33673c8..000000000
--- a/test/plugin/scenarios/undertow-routing-scenario/src/main/java/org/apache/skywalking/amp/testcase/undertow/Application.java
+++ /dev/null
@@ -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 responseHandler = response -> {
- HttpEntity entity = response.getEntity();
- return entity != null ? EntityUtils.toString(entity) : null;
- };
- httpclient.execute(httpget, responseHandler);
- } finally {
- httpclient.close();
- }
- }
-}
diff --git a/test/plugin/scenarios/undertow-routing-scenario/support-version.list b/test/plugin/scenarios/undertow-routing-scenario/support-version.list
deleted file mode 100644
index 3a6f7d0e8..000000000
--- a/test/plugin/scenarios/undertow-routing-scenario/support-version.list
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/test/plugin/scenarios/undertow-scenario/config/expectedData.yaml b/test/plugin/scenarios/undertow-scenario/config/expectedData.yaml
index bbfbafb22..c4fb328c3 100644
--- a/test/plugin/scenarios/undertow-scenario/config/expectedData.yaml
+++ b/test/plugin/scenarios/undertow-scenario/config/expectedData.yaml
@@ -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}
\ No newline at end of file
+ - {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}
diff --git a/test/plugin/scenarios/undertow-scenario/src/main/java/org/apache/skywalking/amp/testcase/undertow/Application.java b/test/plugin/scenarios/undertow-scenario/src/main/java/org/apache/skywalking/amp/testcase/undertow/Application.java
index f1fa0bd96..3617bcfc3 100644
--- a/test/plugin/scenarios/undertow-scenario/src/main/java/org/apache/skywalking/amp/testcase/undertow/Application.java
+++ b/test/plugin/scenarios/undertow-scenario/src/main/java/org/apache/skywalking/amp/testcase/undertow/Application.java
@@ -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 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();
}
}
}