# 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/jetstack/cert-manager/releases/download/v1.3.1/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