# 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.
segmentItems:
- serviceName: baidu-brpc-3.x-scenario
  segmentSize: gt 2
  segments:
  - segmentId: not null
    spans:
    - operationName: example.EchoService.Echo
      parentSpanId: -1
      spanId: 0
      spanLayer: RPCFramework
      startTime: nq 0
      endTime: nq 0
      componentId: 91
      isError: false
      spanType: Entry
      peer: ''
      refs:
      - {parentEndpoint: GET:/baidu-brpc-3.x-scenario/case/brpc, networkAddress: '127.0.0.1:1118',
        refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null, parentServiceInstance: not
          null, parentService: baidu-brpc-3.x-scenario, traceId: not null}
      skipAnalysis: 'false'
  - segmentId: not null
    spans:
    - operationName: example.EchoService.Echo
      parentSpanId: 0
      spanId: 1
      spanLayer: RPCFramework
      startTime: nq 0
      endTime: nq 0
      componentId: 91
      isError: false
      spanType: Exit
      peer: 127.0.0.1:1118
      skipAnalysis: 'false'
      tags:
        - {key: url, value: '127.0.0.1:1118/example.EchoService.Echo'}
    - operationName: GET:/baidu-brpc-3.x-scenario/case/brpc
      parentSpanId: -1
      spanId: 0
      spanLayer: Http
      startTime: nq 0
      endTime: nq 0
      componentId: 1
      isError: false
      spanType: Entry
      peer: ''
      tags:
      - {key: url, value: 'http://localhost:8080/baidu-brpc-3.x-scenario/case/brpc'}
      - {key: http.method, value: GET}
      - {key: http.status_code, value: '200'}
      skipAnalysis: 'false'
