未验证 提交 10ddf0c3 编写于 作者: D Darcy 提交者: GitHub

fix a bug that spring-mvc set an error endpoint name (#6783)

上级 db1d655b
......@@ -17,7 +17,8 @@ Release Notes.
* Add Seata in the component definition. Seata plugin hosts on Seata project.
* Extended Kafka plugin to properly trace consumers that have topic partitions directly assigned.
* Support print SkyWalking context to logs.
* Add `MessageListener` enhancement in pulsar plugin
* Add `MessageListener` enhancement in pulsar plugin.
* fix a bug that spring-mvc set an error endpoint name if the controller class annotation implements an interface.
* Add an optional agent plugin to support mybatis.
#### OAP-Backend
......
......@@ -22,6 +22,7 @@ import org.apache.skywalking.apm.plugin.spring.mvc.commons.PathMappingCache;
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance;
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor;
import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.bind.annotation.RequestMapping;
/**
......@@ -32,7 +33,7 @@ public class ControllerConstructorInterceptor implements InstanceConstructorInte
@Override
public void onConstruct(EnhancedInstance objInst, Object[] allArguments) {
String basePath = "";
RequestMapping basePathRequestMapping = objInst.getClass().getAnnotation(RequestMapping.class);
RequestMapping basePathRequestMapping = AnnotationUtils.findAnnotation(objInst.getClass(), RequestMapping.class);
if (basePathRequestMapping != null) {
if (basePathRequestMapping.value().length > 0) {
basePath = basePathRequestMapping.value()[0];
......
......@@ -22,6 +22,7 @@ import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedI
import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache;
import org.apache.skywalking.apm.plugin.spring.mvc.commons.PathMappingCache;
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.bind.annotation.RequestMapping;
/**
......@@ -42,7 +43,7 @@ public class ControllerConstructorInterceptor implements InstanceConstructorInte
@Override
public void onConstruct(EnhancedInstance objInst, Object[] allArguments) {
String basePath = "";
RequestMapping basePathRequestMapping = objInst.getClass().getAnnotation(RequestMapping.class);
RequestMapping basePathRequestMapping = AnnotationUtils.findAnnotation(objInst.getClass(), RequestMapping.class);
if (basePathRequestMapping != null) {
if (basePathRequestMapping.value().length > 0) {
basePath = basePathRequestMapping.value()[0];
......
......@@ -22,13 +22,14 @@ import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedI
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor;
import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache;
import org.apache.skywalking.apm.plugin.spring.mvc.commons.PathMappingCache;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.bind.annotation.RequestMapping;
public class ControllerForLowVersionConstructorInterceptor implements InstanceConstructorInterceptor {
@Override
public void onConstruct(EnhancedInstance objInst, Object[] allArguments) {
String basePath = "";
RequestMapping basePathRequestMapping = objInst.getClass().getAnnotation(RequestMapping.class);
RequestMapping basePathRequestMapping = AnnotationUtils.findAnnotation(objInst.getClass(), RequestMapping.class);
if (basePathRequestMapping != null) {
if (basePathRequestMapping.value().length > 0) {
basePath = basePathRequestMapping.value()[0];
......
......@@ -22,6 +22,7 @@ import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedI
import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache;
import org.apache.skywalking.apm.plugin.spring.mvc.commons.PathMappingCache;
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.bind.annotation.RequestMapping;
/**
......@@ -42,7 +43,7 @@ public class ControllerConstructorInterceptor implements InstanceConstructorInte
@Override
public void onConstruct(EnhancedInstance objInst, Object[] allArguments) {
String basePath = "";
RequestMapping basePathRequestMapping = objInst.getClass().getAnnotation(RequestMapping.class);
RequestMapping basePathRequestMapping = AnnotationUtils.findAnnotation(objInst.getClass(), RequestMapping.class);
if (basePathRequestMapping != null) {
if (basePathRequestMapping.value().length > 0) {
basePath = basePathRequestMapping.value()[0];
......
......@@ -35,11 +35,7 @@ public class RequestMappingMethodInterceptor extends AbstractMethodInterceptor {
String requestURL = null;
RequestMapping methodRequestMapping = AnnotationUtils.getAnnotation(m, RequestMapping.class);
if (methodRequestMapping != null) {
if (methodRequestMapping.value().length > 0) {
requestURL = methodRequestMapping.value()[0];
} else if (methodRequestMapping.path().length > 0) {
requestURL = methodRequestMapping.path()[0];
}
requestURL = methodRequestMapping.value().length > 0 ? methodRequestMapping.value()[0] : "";
}
return requestURL;
});
......
......@@ -14,52 +14,130 @@
# See the License for the specific language governing permissions and
# limitations under the License.
segmentItems:
- serviceName: spring-3.0.x-scenario
segmentSize: ge 2
segments:
- segmentId: not null
spans:
- operationName: /healthCheck
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/healthCheck'}
- {key: http.method, value: HEAD}
skipAnalysis: 'false'
- segmentId: not null
spans:
- {operationName: test.apache.skywalking.apm.testcase.spring3.component.TestComponentBean.componentMethod,
operationId: 0, parentSpanId: 1, spanId: 2, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- {operationName: test.apache.skywalking.apm.testcase.spring3.dao.TestRepositoryBean.doSomeStuff,
operationId: 0, parentSpanId: 1, spanId: 3, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- {operationName: test.apache.skywalking.apm.testcase.spring3.service.TestServiceBean.doSomeBusiness,
operationId: 0, parentSpanId: 0, spanId: 1, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- operationName: /case/spring3
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/case/spring3'}
- {key: http.method, value: GET}
skipAnalysis: 'false'
- serviceName: spring-3.0.x-scenario
segmentSize: ge 4
segments:
- segmentId: not null
spans:
- operationName: /healthCheck
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/healthCheck'}
- {key: http.method, value: HEAD}
- segmentId: not null
spans:
- operationName: /impl/requestmapping
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/impl/requestmapping'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/spring3, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 5, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.0.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{GET}/impl/restmapping'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/impl/restmapping'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/spring3, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 6, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.0.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- {operationName: test.apache.skywalking.apm.testcase.spring3.component.TestComponentBean.componentMethod,
operationId: 0, parentSpanId: 1, spanId: 2, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- {operationName: test.apache.skywalking.apm.testcase.spring3.dao.TestRepositoryBean.doSomeStuff,
operationId: 0, parentSpanId: 1, spanId: 3, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- {operationName: test.apache.skywalking.apm.testcase.spring3.service.TestServiceBean.doSomeBusiness,
operationId: 0, parentSpanId: 0, spanId: 1, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- operationName: /spring-3.0.x-scenario/impl/requestmapping
operationId: 0
parentSpanId: 4
spanId: 5
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/impl/requestmapping'}
- {key: http.method, value: GET}
- operationName: /spring-3.0.x-scenario/impl/restmapping
operationId: 0
parentSpanId: 4
spanId: 6
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/impl/restmapping'}
- {key: http.method, value: GET}
- {operationName: test.apache.skywalking.apm.testcase.spring3.service.TestServiceBean.doInvokeImplCase,
operationId: 0, parentSpanId: 0, spanId: 4, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- operationName: /case/spring3
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.0.x-scenario/case/spring3'}
- {key: http.method, value: GET}
......@@ -36,6 +36,7 @@ public class CaseController {
@ResponseBody
public String updateUser() {
testServiceBean.doSomeBusiness("test");
testServiceBean.doInvokeImplCase();
return SUCCESS;
}
......
/*
* 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 test.apache.skywalking.apm.testcase.spring3.implinterface;
import org.springframework.stereotype.Controller;
@Controller
public class TestCaseController implements TestCaseInterface {
@Override
public String implRequestMappingAnnotationTestCase() {
return "implRequestMappingAnnotationTestCase";
}
@Override
public String implRestAnnotationTestCase() {
return "implRestAnnotationTestCase";
}
}
/*
* 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 test.apache.skywalking.apm.testcase.spring3.implinterface;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping("/impl")
public interface TestCaseInterface {
@RequestMapping("/requestmapping")
@ResponseBody
String implRequestMappingAnnotationTestCase();
@RequestMapping(value = "/restmapping", method = RequestMethod.GET)
@ResponseBody
String implRestAnnotationTestCase();
}
......@@ -20,11 +20,14 @@ package test.apache.skywalking.apm.testcase.spring3.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import test.apache.skywalking.apm.testcase.spring3.dao.TestRepositoryBean;
import test.apache.skywalking.apm.testcase.spring3.component.TestComponentBean;
@Service
public class TestServiceBean {
public static final String URL = "http://localhost:8080/spring-3.0.x-scenario";
@Autowired
private TestComponentBean componentBean;
......@@ -35,4 +38,10 @@ public class TestServiceBean {
componentBean.componentMethod(name);
repositoryBean.doSomeStuff(name);
}
public void doInvokeImplCase() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getForObject(URL + "/impl/requestmapping", String.class);
restTemplate.getForObject(URL + "/impl/restmapping", String.class);
}
}
......@@ -14,236 +14,315 @@
# See the License for the specific language governing permissions and
# limitations under the License.
segmentItems:
- serviceName: spring-3.1.x-scenario
segmentSize: ge 7
segments:
- segmentId: not null
spans:
- operationName: /healthCheck
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/healthCheck'}
- {key: http.method, value: HEAD}
skipAnalysis: 'false'
- segmentId: not null
spans:
- {operationName: test.apache.skywalking.apm.testcase.spring3.component.TestComponentBean.componentMethod,
operationId: 0, parentSpanId: 1, spanId: 2, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- {operationName: test.apache.skywalking.apm.testcase.spring3.dao.TestRepositoryBean.doSomeStuff,
operationId: 0, parentSpanId: 1, spanId: 3, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- {operationName: test.apache.skywalking.apm.testcase.spring3.service.TestServiceBean.doSomeBusiness,
operationId: 0, parentSpanId: 0, spanId: 1, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- operationName: /case/spring3
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/case/spring3/'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 1, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-3.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{POST}/create/'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/create/'}
- {key: http.method, value: POST}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 2, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-3.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{GET}/get/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/get/1'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 3, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-3.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{DELETE}/delete/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 5, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-3.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: /spring-3.1.x-scenario/case/spring3/
operationId: 0
parentSpanId: 0
spanId: 1
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/case/spring3/'}
skipAnalysis: 'false'
- operationName: /spring-3.1.x-scenario/create/
operationId: 0
parentSpanId: 0
spanId: 2
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/create/'}
- {key: http.method, value: POST}
skipAnalysis: 'false'
- operationName: /spring-3.1.x-scenario/get/1
operationId: 0
parentSpanId: 0
spanId: 3
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/get/1'}
- {key: http.method, value: GET}
skipAnalysis: 'false'
- operationName: /spring-3.1.x-scenario/update/1
operationId: 0
parentSpanId: 0
spanId: 4
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
skipAnalysis: 'false'
- operationName: /spring-3.1.x-scenario/delete/1
operationId: 0
parentSpanId: 0
spanId: 5
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
skipAnalysis: 'false'
- operationName: /case/resttemplate
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/case/resttemplate'}
- {key: http.method, value: GET}
- key: http.params
value: |-
q1=[v1]
chinese=[中文]
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{PUT}/update/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 4, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-3.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- serviceName: spring-3.1.x-scenario
segmentSize: ge 9
segments:
- segmentId: not null
spans:
- operationName: /healthCheck
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/healthCheck'}
- {key: http.method, value: HEAD}
- segmentId: not null
spans:
- {operationName: test.apache.skywalking.apm.testcase.spring3.component.TestComponentBean.componentMethod,
operationId: 0, parentSpanId: 1, spanId: 2, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- {operationName: test.apache.skywalking.apm.testcase.spring3.dao.TestRepositoryBean.doSomeStuff,
operationId: 0, parentSpanId: 1, spanId: 3, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- {operationName: test.apache.skywalking.apm.testcase.spring3.service.TestServiceBean.doSomeBusiness,
operationId: 0, parentSpanId: 0, spanId: 1, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- operationName: /case/spring3
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/case/spring3/'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 1, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{POST}/create/'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/create/'}
- {key: http.method, value: POST}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 2, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{GET}/get/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/get/1'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 3, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{DELETE}/delete/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 5, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{PUT}/update/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 4, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: /impl/requestmapping
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/impl/requestmapping'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 6, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: /spring-3.1.x-scenario/case/spring3/
operationId: 0
parentSpanId: 0
spanId: 1
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/case/spring3/'}
- operationName: /spring-3.1.x-scenario/create/
operationId: 0
parentSpanId: 0
spanId: 2
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/create/'}
- {key: http.method, value: POST}
- operationName: /spring-3.1.x-scenario/get/1
operationId: 0
parentSpanId: 0
spanId: 3
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/get/1'}
- {key: http.method, value: GET}
- operationName: /spring-3.1.x-scenario/update/1
operationId: 0
parentSpanId: 0
spanId: 4
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
- operationName: /spring-3.1.x-scenario/delete/1
operationId: 0
parentSpanId: 0
spanId: 5
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
- operationName: /spring-3.1.x-scenario/impl/requestmapping
operationId: 0
parentSpanId: 0
spanId: 6
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/impl/requestmapping'}
- operationName: /spring-3.1.x-scenario/impl/restmapping
operationId: 0
parentSpanId: 0
spanId: 7
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/impl/restmapping'}
- operationName: /case/resttemplate
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/case/resttemplate'}
- {key: http.method, value: GET}
- key: http.params
value: |-
q1=[v1]
chinese=[中文]
- segmentId: not null
spans:
- operationName: '{GET}/impl/restmapping'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-3.1.x-scenario/impl/restmapping'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 7, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-3.1.x-scenario,
traceId: not null}
/*
* 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 test.apache.skywalking.apm.testcase.implinterface;
import org.springframework.stereotype.Controller;
@Controller
public class TestCaseController implements TestCaseInterface {
@Override
public String implRequestMappingAnnotationTestCase() {
return "implRequestMappingAnnotationTestCase";
}
@Override
public String implRestAnnotationTestCase() {
return "implRestAnnotationTestCase";
}
}
/*
* 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 test.apache.skywalking.apm.testcase.implinterface;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping("/impl")
public interface TestCaseInterface {
@RequestMapping("/requestmapping")
@ResponseBody
String implRequestMappingAnnotationTestCase();
@RequestMapping(value = "/restmapping", method = RequestMethod.GET)
@ResponseBody
String implRestAnnotationTestCase();
}
......@@ -19,6 +19,7 @@
package test.apache.skywalking.apm.testcase.resttemplate;
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
......@@ -61,6 +62,14 @@ public class RestTemplateController {
//Delete user
new RestTemplate().delete(URL + "/delete/{id}", 1);
Request implRequestMappingRequest = new Request.Builder().url(URL + "/impl/requestmapping").build();
response = new OkHttpClient().newCall(implRequestMappingRequest).execute();
LOGGER.info(response.toString());
Request implRestMappingRequest = new Request.Builder().url(URL + "/impl/restmapping").build();
response = new OkHttpClient().newCall(implRestMappingRequest).execute();
LOGGER.info(response.toString());
return SUCCESS;
}
......
......@@ -14,232 +14,312 @@
# See the License for the specific language governing permissions and
# limitations under the License.
segmentItems:
- serviceName: spring-4.1.x-scenario
segmentSize: ge 7
segments:
- segmentId: not null
spans:
- operationName: /healthCheck
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/healthCheck'}
- {key: http.method, value: HEAD}
skipAnalysis: 'false'
- segmentId: not null
spans:
- {operationName: test.apache.skywalking.apm.testcase.spring3.component.TestComponentBean.componentMethod,
operationId: 0, parentSpanId: 1, spanId: 2, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- {operationName: test.apache.skywalking.apm.testcase.spring3.dao.TestRepositoryBean.doSomeStuff,
operationId: 0, parentSpanId: 1, spanId: 3, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- {operationName: test.apache.skywalking.apm.testcase.spring3.service.TestServiceBean.doSomeBusiness,
operationId: 0, parentSpanId: 0, spanId: 1, spanLayer: Unknown, startTime: nq
0, endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: 'false'}
- operationName: /case/spring3
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/case/spring3/'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 1, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-4.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{POST}/create/'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/create/'}
- {key: http.method, value: POST}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 2, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-4.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{GET}/get/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/get/1'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 3, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-4.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{DELETE}/delete/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 5, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-4.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: /spring-4.1.x-scenario/case/spring3/
operationId: 0
parentSpanId: 0
spanId: 1
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/case/spring3/'}
skipAnalysis: 'false'
- operationName: /spring-4.1.x-scenario/create/
operationId: 0
parentSpanId: 0
spanId: 2
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/create/'}
- {key: http.method, value: POST}
skipAnalysis: 'false'
- operationName: /spring-4.1.x-scenario/get/1
operationId: 0
parentSpanId: 0
spanId: 3
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/get/1'}
- {key: http.method, value: GET}
skipAnalysis: 'false'
- operationName: /spring-4.1.x-scenario/update/1
operationId: 0
parentSpanId: 0
spanId: 4
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
skipAnalysis: 'false'
- operationName: /spring-4.1.x-scenario/delete/1
operationId: 0
parentSpanId: 0
spanId: 5
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
skipAnalysis: 'false'
- operationName: /case/resttemplate
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/case/resttemplate'}
- {key: http.method, value: GET}
skipAnalysis: 'false'
- segmentId: not null
spans:
- operationName: '{PUT}/update/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 4, parentTraceSegmentId: not null, parentServiceInstance: not
null, parentService: spring-4.1.x-scenario, traceId: not null}
skipAnalysis: 'false'
- serviceName: spring-4.1.x-scenario
segmentSize: ge 9
segments:
- segmentId: not null
spans:
- operationName: /healthCheck
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/healthCheck'}
- {key: http.method, value: HEAD}
- segmentId: not null
spans:
- {operationName: test.apache.skywalking.apm.testcase.spring3.component.TestComponentBean.componentMethod,
operationId: 0, parentSpanId: 1, spanId: 2, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- {operationName: test.apache.skywalking.apm.testcase.spring3.dao.TestRepositoryBean.doSomeStuff,
operationId: 0, parentSpanId: 1, spanId: 3, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- {operationName: test.apache.skywalking.apm.testcase.spring3.service.TestServiceBean.doSomeBusiness,
operationId: 0, parentSpanId: 0, spanId: 1, spanLayer: Unknown, startTime: nq 0,
endTime: nq 0, componentId: 93, isError: false, spanType: Local, peer: '',
skipAnalysis: false}
- operationName: /case/spring3
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/case/spring3/'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 1, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-4.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{POST}/create/'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/create/'}
- {key: http.method, value: POST}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 2, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-4.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{GET}/get/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/get/1'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 3, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-4.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{PUT}/update/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 4, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-4.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: '{DELETE}/delete/{id}'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 5, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-4.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: /impl/requestmapping
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/impl/requestmapping'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 6, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-4.1.x-scenario,
traceId: not null}
- segmentId: not null
spans:
- operationName: /spring-4.1.x-scenario/case/spring3/
operationId: 0
parentSpanId: 0
spanId: 1
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/case/spring3/'}
- operationName: /spring-4.1.x-scenario/create/
operationId: 0
parentSpanId: 0
spanId: 2
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/create/'}
- {key: http.method, value: POST}
- operationName: /spring-4.1.x-scenario/get/1
operationId: 0
parentSpanId: 0
spanId: 3
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/get/1'}
- {key: http.method, value: GET}
- operationName: /spring-4.1.x-scenario/update/1
operationId: 0
parentSpanId: 0
spanId: 4
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/update/1'}
- {key: http.method, value: PUT}
- operationName: /spring-4.1.x-scenario/delete/1
operationId: 0
parentSpanId: 0
spanId: 5
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 13
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/delete/1'}
- {key: http.method, value: DELETE}
- operationName: /spring-4.1.x-scenario/impl/requestmapping
operationId: 0
parentSpanId: 0
spanId: 6
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/impl/requestmapping'}
- operationName: /spring-4.1.x-scenario/impl/restmapping
operationId: 0
parentSpanId: 0
spanId: 7
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 12
isError: false
spanType: Exit
peer: localhost:8080
skipAnalysis: false
tags:
- {key: http.method, value: GET}
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/impl/restmapping'}
- operationName: /case/resttemplate
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/case/resttemplate'}
- {key: http.method, value: GET}
- segmentId: not null
spans:
- operationName: '{GET}/impl/restmapping'
operationId: 0
parentSpanId: -1
spanId: 0
spanLayer: Http
startTime: nq 0
endTime: nq 0
componentId: 14
isError: false
spanType: Entry
peer: ''
skipAnalysis: false
tags:
- {key: url, value: 'http://localhost:8080/spring-4.1.x-scenario/impl/restmapping'}
- {key: http.method, value: GET}
refs:
- {parentEndpoint: /case/resttemplate, networkAddress: 'localhost:8080', refType: CrossProcess,
parentSpanId: 7, parentTraceSegmentId: not null,
parentServiceInstance: not null, parentService: spring-4.1.x-scenario,
traceId: not null}
/*
* 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 test.apache.skywalking.apm.testcase.implinterface;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestCaseController implements TestCaseInterface {
@Override
public String implRequestMappingAnnotationTestCase() {
return "implRequestMappingAnnotationTestCase";
}
@Override
public String implRestAnnotationTestCase() {
return "implRestAnnotationTestCase";
}
}
/*
* 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 test.apache.skywalking.apm.testcase.implinterface;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RequestMapping("/impl")
public interface TestCaseInterface {
@RequestMapping("/requestmapping")
String implRequestMappingAnnotationTestCase();
@RequestMapping(value = "/restmapping", method = RequestMethod.GET)
String implRestAnnotationTestCase();
}
......@@ -19,6 +19,7 @@
package test.apache.skywalking.apm.testcase.resttemplate;
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
......@@ -61,6 +62,14 @@ public class RestTemplateController {
//Delete user
new RestTemplate().delete(URL + "/delete/{id}", 1);
Request implRequestMappingRequest = new Request.Builder().url(URL + "/impl/requestmapping").build();
response = new OkHttpClient().newCall(implRequestMappingRequest).execute();
LOGGER.info(response.toString());
Request implRestMappingRequest = new Request.Builder().url(URL + "/impl/restmapping").build();
response = new OkHttpClient().newCall(implRestMappingRequest).execute();
LOGGER.info(response.toString());
return SUCCESS;
}
......
......@@ -21,10 +21,11 @@ package test.apache.skywalking.apm.testcase.implinterface;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/impl")
public interface TestCaseInterface {
@RequestMapping("/impl/requestmapping")
@RequestMapping(path = "/requestmapping")
String implRequestMappingAnnotationTestCase();
@GetMapping("/impl/restmapping")
@GetMapping("/restmapping")
String implRestAnnotationTestCase();
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册