# 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 storage(use the internal type)
      command: |
        kubectl apply -f test/e2e/internal-storage.yaml
      wait:
        - namespace: default
          resource: Storage/sample
          for: condition=Ready
    - name: setup oapserver and ui
      command: |
        kubectl create namespace skywalking-system
        kubectl apply -f test/e2e/skywalking-components-with-storage.yaml
      wait:
        - namespace: default
          resource: OAPServer/default
          for: condition=Available
        - namespace: skywalking-system
          resource: UI/skywalking-system
          for: condition=Available
    - name: setup java agent demo
      command: |
        kubectl label namespace skywalking-system swck-injection=enabled
        sed 's/oap-service/default-oap.default/' 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: default
        resource: service/default-oap
        port: 12800
      - namespace: skywalking-system
        resource: service/skywalking-system-ui
        port: 80
      - namespace: default
        resource: service/skywalking-storage
        port: 9200
  timeout: 20m

cleanup:
  # always never success failure
  on: always

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:
    - includes:
        - ../oapserver-cases.yaml
        - ../ui-cases.yaml
    # confirm whether the data are stored in the es
    - query: 'curl -u "elastic:changeme" -k "https://${service_skywalking_storage_host}:${service_skywalking_storage_9200}/_cat/indices?v" 2>&1 | grep sw_metrics | cut -d " " -f 5 | sed ''/^$/d'' | yq e ''{"indices": .}'' - | yq e ''to_entries'' -'
      expected: ../verify/indices.yaml