# 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: kong
    segmentSize: '2'
    segments:
      - segmentId: not null
        spans:
          - operationName: "/backend"
            operationId: '0'
            parentSpanId: '0'
            spanId: '1'
            spanLayer: Http
            tags:
              - key: http.status
                value: '200'
            startTime: gt 0
            endTime: gt 0
            componentId: '6001'
            spanType: Exit
            peer: 'mockbin.org:80'
            skipAnalysis: 'false'
          - operationName: "/backend"
            operationId: '0'
            parentSpanId: "-1"
            spanId: '0'
            spanLayer: Http
            tags:
              - key: http.method
                value: GET
              - key: http.params
                value: http://localhost/backend
              - key: kong.node
                value: not null
              - key: kong.service
                value: not null
              - key: kong.route
                value: not null
              - key: kong.service_name
                value: upstream-service
              - key: http.status
                value: '200'
            refs:
              - parentEndpoint: "/mock"
                networkAddress: 'localhost:8000'
                refType: CrossProcess
                parentSpanId: 1
                parentTraceSegmentId: not null
                parentServiceInstance: kong-with-skywalking
                parentService: kong
                traceId: not null
            startTime: gt 0
            endTime: gt 0
            componentId: '6001'
            spanType: Entry
            peer: ''
            skipAnalysis: 'false'
      - segmentId: not null
        spans:
          - operationName: "/mock"
            operationId: '0'
            parentSpanId: '0'
            spanId: '1'
            spanLayer: Http
            tags:
              - key: http.status
                value: '200'
            startTime: gt 0
            endTime: gt 0
            componentId: '6001'
            spanType: Exit
            peer: 'localhost:8000'
            skipAnalysis: 'false'
          - operationName: "/mock"
            operationId: '0'
            parentSpanId: "-1"
            spanId: '0'
            spanLayer: Http
            tags:
              - key: http.method
                value: GET
              - key: http.params
                value: http://localhost/mock
              - key: kong.node
                value: not null
              - key: kong.service
                value: not null
              - key: kong.route
                value: not null
              - key: kong.service_name
                value: mock-service
              - key: http.status
                value: '200'
            startTime: gt 0
            endTime: gt 0
            componentId: '6001'
            spanType: Entry
            peer: ''
            skipAnalysis: 'false'
