# 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: install metrics-adapter
      command: |
        export ADAPTER_IMG=metrics-adapter
        make -C adapter docker-build
        kind load docker-image metrics-adapter
        make -C adapter deploy
        kubectl wait pods -n skywalking-custom-metrics-system -l app=custom-metrics-apiserver --for condition=Ready --timeout=180s
    - name: setup oapserver and ui
      command: |
        kubectl create namespace skywalking-system
        grep -B17 "\-\-\-" test/e2e/skywalking-components-with-satellite.yaml | kubectl apply -f -
      wait:
        - namespace: skywalking-system
          resource: OAPServer/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
    - name: setup the hpa of java agent demo
      command: |
        kubectl apply -f test/e2e/satellite-hpa-demo.yaml
    - name: increase the satellite connection count
      command: |
        kubectl -n skywalking-system scale deployment/demo --replicas 5
        kubectl rollout status --watch --timeout=120s deployment/demo -n skywalking-system
  kind:
    expose-ports:
      - namespace: skywalking-system
        resource: service/demo 
        port: 8085
      - namespace: skywalking-system
        resource: service/skywalking-system-oap
        port: 12800
  timeout: 20m

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

verify:
  # verify with retry strategy
  retry:
    # max retry count
    count: 15
    # the interval between two attempts, e.g. 10s, 1m.
    interval: 15s
  cases:
    - query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql metrics linear --name satellite_service_grpc_connect_count --service-name satellite-service | yq e 'to_entries' -
      expected: ../verify/satellite-hpa-metrics.yaml
    # the trigger will do 30 times, as the hpa's value is set as 5, so the deployment's replicas will be 3(maxReplicas).
    - query: 'kubectl get deployment skywalking-system-satellite -n skywalking-system -o jsonpath=''{.status.replicas}'' | yq e ''{"replicas": .}'' - | yq e ''to_entries'' -'
      expected: ../verify/satellite-replicas.yaml