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

setup:
  env: kind
  file: ../kind.yaml
  steps:
    - name: prepare e2e.yaml
      command: bash hack/prepare-e2e.sh
    - name: install cert-manager
      command: |
        # kind k8s cluster is in $TMPDIR
        export KUBECONFIG=$TMPDIR/e2e-k8s.config
        kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.0/cert-manager.yaml
      wait:
        - namespace: cert-manager
          resource: pod
          for: condition=Ready
    - name: install operator
      command: |
        export OPERATOR_IMG=controller
        make -C operator docker-build   
        kind load docker-image controller
        make -C operator install
        make -C operator deploy
      wait:
        - namespace: skywalking-swck-system
          resource: pod
          for: condition=Ready
    - name: setup oapserver and ui
      command: |
        kubectl create namespace skywalking-system
        kubectl apply -f test/e2e/skywalking-components-with-satellite.yaml
      wait:
        - namespace: skywalking-system
          resource: OAPServer/skywalking-system
          for: condition=Available
        - namespace: skywalking-system
          resource: UI/skywalking-system
          for: condition=Available
        - namespace: skywalking-system
          resource: Satellite/skywalking-system
          for: condition=Available
    - name: setup java agent demo
      command: |
        kubectl label namespace skywalking-system swck-injection=enabled
        sed 's/oap-service/skywalking-system-satellite.skywalking-system/' test/e2e/demo.yaml | kubectl create -f -
      wait:
        - namespace: skywalking-system
          resource: deployment/demo
          for: condition=Available 
  kind:
    expose-ports:
      - namespace: skywalking-system
        resource: service/demo 
        port: 8085
      - namespace: skywalking-system
        resource: service/skywalking-system-oap
        port: 12800
      - namespace: skywalking-system
        resource: service/skywalking-system-ui
        port: 80
  timeout: 20m

trigger:
  action: http
  interval: 10s
  times: 5
  url: http://${service_demo_host}:${service_demo_8085}/hello
  method: GET

verify:
  # verify with retry strategy
  retry:
    # max retry count
    count: 10
    # the interval between two attempts, e.g. 10s, 1m.
    interval: 10s
  cases:
    # test oapserver
    - query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql service ls
      expected: ../verify/service.yaml
    - query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql metrics linear --name service_cpm --service-name Your_ApplicationName | yq e 'to_entries' -
      expected: ../verify/metrics.yaml
    - query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql endpoint list --keyword=hello --service-name Your_ApplicationName
      expected: ../verify/endpoint.yaml
    - query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql metrics linear --name endpoint_cpm --endpoint-name GET:/hello --service-name Your_ApplicationName | yq e 'to_entries' -
      expected: ../verify/metrics.yaml
    - includes:
        - ../ui-cases.yaml