Add feign loadbalancer case for spring-cloud-feign-2.x-scenario plugin. (#5700)
This commit is contained in:
parent
d8f1d01a78
commit
63d63ed7f5
|
|
@ -14,188 +14,248 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
segmentItems:
|
||||
- serviceName: spring-cloud-feign-2.x-scenario
|
||||
segmentSize: ge 5
|
||||
segments:
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/case/healthCheck
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/case/healthCheck'}
|
||||
- {key: http.method, value: HEAD}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/create/
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/create/'}
|
||||
- {key: http.method, value: POST}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 1,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/create/
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 1
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: POST}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/create/'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/get/{id}
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 2
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: GET}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/get/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/update/{id}
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 3
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: PUT}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/update/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/delete/{id}
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 4
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: DELETE}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/delete/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario'}
|
||||
- {key: http.method, value: GET}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/get/1
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/get/1'}
|
||||
- {key: http.method, value: GET}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 2,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/update/1
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/update/1'}
|
||||
- {key: http.method, value: PUT}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 3,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/delete/1
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/delete/1'}
|
||||
- {key: http.method, value: DELETE}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 4,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
- serviceName: spring-cloud-feign-2.x-scenario
|
||||
segmentSize: ge 6
|
||||
segments:
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/case/healthCheck
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/case/healthCheck'}
|
||||
- {key: http.method, value: HEAD}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/create/
|
||||
operationId: 0
|
||||
parentSpanId: 1
|
||||
spanId: 2
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: POST}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/create/'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: Balancer/spring-cloud-feign-2.x-scenario/create/
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 1
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Local
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: http.method, value: POST}
|
||||
- {key: url, value: 'http://spring-cloud-feign-2.x-scenario/spring-cloud-feign-2.x-scenario/create/'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/get/1
|
||||
operationId: 0
|
||||
parentSpanId: 3
|
||||
spanId: 4
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: GET}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/get/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: Balancer/spring-cloud-feign-2.x-scenario/get/{id}
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 3
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Local
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: http.method, value: GET}
|
||||
- {key: url, value: 'http://spring-cloud-feign-2.x-scenario/spring-cloud-feign-2.x-scenario/get/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/update/1
|
||||
operationId: 0
|
||||
parentSpanId: 5
|
||||
spanId: 6
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: PUT}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/update/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: Balancer/spring-cloud-feign-2.x-scenario/update/{id}
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 5
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Local
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: http.method, value: PUT}
|
||||
- {key: url, value: 'http://spring-cloud-feign-2.x-scenario/spring-cloud-feign-2.x-scenario/update/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/delete/1
|
||||
operationId: 0
|
||||
parentSpanId: 7
|
||||
spanId: 8
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Exit
|
||||
peer: localhost:8080
|
||||
tags:
|
||||
- {key: http.method, value: DELETE}
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/delete/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: Balancer/spring-cloud-feign-2.x-scenario/delete/{id}
|
||||
operationId: 0
|
||||
parentSpanId: 0
|
||||
spanId: 7
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Local
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: http.method, value: DELETE}
|
||||
- {key: url, value: 'http://spring-cloud-feign-2.x-scenario/spring-cloud-feign-2.x-scenario/delete/1'}
|
||||
skipAnalysis: 'false'
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario'}
|
||||
- {key: http.method, value: GET}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/create/
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/create/'}
|
||||
- {key: http.method, value: POST}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 2,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/get/1
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/get/1'}
|
||||
- {key: http.method, value: GET}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 4,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/update/1
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/update/1'}
|
||||
- {key: http.method, value: PUT}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 6,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
- segmentId: not null
|
||||
spans:
|
||||
- operationName: /spring-cloud-feign-2.x-scenario/delete/1
|
||||
operationId: 0
|
||||
parentSpanId: -1
|
||||
spanId: 0
|
||||
spanLayer: Http
|
||||
startTime: nq 0
|
||||
endTime: nq 0
|
||||
componentId: not null
|
||||
isError: false
|
||||
spanType: Entry
|
||||
peer: ''
|
||||
tags:
|
||||
- {key: url, value: 'http://localhost:8080/spring-cloud-feign-2.x-scenario/delete/1'}
|
||||
- {key: http.method, value: DELETE}
|
||||
refs:
|
||||
- {parentEndpoint: /spring-cloud-feign-2.x-scenario/case/spring-cloud-feign-2.x-scenario,
|
||||
networkAddress: 'localhost:8080', refType: CrossProcess, parentSpanId: 8,
|
||||
parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: spring-cloud-feign-2.x-scenario,
|
||||
traceId: not null}
|
||||
skipAnalysis: 'false'
|
||||
|
|
|
|||
|
|
@ -18,9 +18,13 @@
|
|||
|
||||
package org.apache.skywalking.apm.testcase.feign;
|
||||
|
||||
import com.netflix.loadbalancer.DynamicServerListLoadBalancer;
|
||||
import com.netflix.loadbalancer.ILoadBalancer;
|
||||
import com.netflix.loadbalancer.Server;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableFeignClients
|
||||
|
|
@ -33,4 +37,11 @@ public class Application {
|
|||
// Never do this
|
||||
}
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ILoadBalancer loadBalancer() {
|
||||
DynamicServerListLoadBalancer<Server> serverDynamicServerListLoadBalancer = new DynamicServerListLoadBalancer<>();
|
||||
serverDynamicServerListLoadBalancer.addServer(new Server("localhost", 8080));
|
||||
return serverDynamicServerListLoadBalancer;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,9 +21,14 @@ package org.apache.skywalking.apm.testcase.feign.controller;
|
|||
import org.apache.skywalking.apm.testcase.feign.entity.User;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@FeignClient(value = "spring-cloud-feign-2.x-scenario", url = "localhost:8080", path = "/spring-cloud-feign-2.x-scenario")
|
||||
@FeignClient(value = "spring-cloud-feign-2.x-scenario", path = "/spring-cloud-feign-2.x-scenario")
|
||||
public interface RestRequest {
|
||||
|
||||
@GetMapping("/get/{id}")
|
||||
|
|
|
|||
Loading…
Reference in New Issue