#
# 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:
- segmentSize: 1
  segments:
  - segmentId: not null
    spans:
    - componentId: 7012
      endTime: gt 0
      isError: false
      operationName: /users
      parentSpanId: -1
      peer: not null
      skipAnalysis: false
      spanId: 0
      spanLayer: Http
      spanType: Entry
      startTime: gt 0
      tags:
      - key: http.method
        value: GET
      - key: http.url
        value: http://provider:9091/users
      - key: http.status_code
        value: '200'
      - key: http.status_msg
        value: OK
  serviceName: provider
- segmentSize: 1
  segments:
  - segmentId: not null
    spans:
    - componentId: 7002
      endTime: gt 0
      isError: false
      operationName: /users
      parentSpanId: 0
      peer: provider:9091
      skipAnalysis: false
      spanId: 1
      spanLayer: Http
      spanType: Exit
      startTime: gt 0
      tags:
      - key: http.method
        value: GET
      - key: http.url
        value: http://provider:9091/users
      - key: http.status_code
        value: '200'
    - componentId: 7012
      endTime: gt 0
      isError: false
      operationName: /users
      parentSpanId: -1
      peer: not null
      skipAnalysis: false
      spanId: 0
      spanLayer: Http
      spanType: Entry
      startTime: gt 0
      tags:
      - key: http.method
        value: GET
      - key: http.url
        value: http://0.0.0.0:9090/users
      - key: http.status_code
        value: '200'
      - key: http.status_msg
        value: OK
  serviceName: consumer
