# 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.

registryItems:
  applications:
    - {'e2e-test-with-mock-collector': 2}
  instances:
    - {'e2e-test-with-mock-collector': 1}
  operationNames:
    - e2e-test-with-mock-collector: [/tier2/lb, /ingress]
segmentItems:
  - serviceName: e2e-test-with-mock-collector
    segmentSize: eq 2
    segments:
      - segmentId: not null
        spans:
          - operationName: /tier2/lb
            startTime: gt 0
            endTime: gt 0
            spanType: Exit
            spanId: 1
            isError: false
            parentSpanId: 0
            componentId: 6000
            peer: 'e2e-test-with-mock-collector:upstream_ip2:port2'
            spanLayer: Http
            tags:
              - {key: http.status, value: '200'}
          - operationName: /tier2/lb
            startTime: gt 0
            tags:
              - {key: http.method, value: GET}
              - {key: http.params, value: 'http://127.0.0.1/tier2/lb'}
              - {key: http.status, value: '200'}
            endTime: gt 0
            spanType: Entry
            spanId: 0
            isError: false
            parentSpanId: -1
            componentId: 6000
            refs:
              - {parentEndpoint: /ingress, parentTraceSegmentId: not null, refType: 'CrossProcess',
                 networkAddress: 'e2e-test-with-mock-collector:upstream_ip:port', parentSpanId: 1,
                 parentServiceInstance: 'e2e-test-with-mock-collector-instanceA', traceId: not null,
                 parentService: 'e2e-test-with-mock-collector'}
            spanLayer: Http
      - segmentId: not null
        spans:
          - operationName: /ingress
            startTime: gt 0
            endTime: gt 0
            spanType: Exit
            spanId: 1
            isError: false
            parentSpanId: 0
            componentId: 6000
            peer: 'e2e-test-with-mock-collector:upstream_ip:port'
            spanLayer: Http
            tags:
              - {key: http.status, value: '200'}
          - operationName: /ingress
            startTime: gt 0
            tags:
              - {key: http.method, value: GET}
              - {key: http.params, value: 'not null'}
              - {key: http.status, value: '200'}
            endTime: gt 0
            spanType: Entry
            spanId: 0
            parentSpanId: -1
            isError: false
            spanLayer: Http
            componentId: 6000
