# SkyWalking Infra E2E configuration for service-proxy (KinD).

setup:
  env: kind
  file: ./kind.yaml
  timeout: 20m
  kind:
    # These images must exist locally before running `e2e run`.
    import-images:
      - service-proxy:e2e
      - mock-server:e2e
    expose-ports:
      - namespace: service-proxy-e2e
        resource: deployment/service-proxy
        port: 8080
  steps:
    - name: apply manifests
      path: ./manifests
      wait:
        - namespace: service-proxy-e2e
          resource: deployment/mock-server
          for: condition=Available
        - namespace: service-proxy-e2e
          resource: deployment/service-proxy
          for: condition=Available

cleanup:
  on: success

trigger:
  action: http
  interval: 2s
  times: 10
  url: http://${deployment_service_proxy_host}:${deployment_service_proxy_8080}/healthz
  method: GET

verify:
  retry:
    count: 10
    interval: 5s
  cases:
    - name: proxy-forward-basic
      query: |
        set -euo pipefail
        export URL="http://${deployment_service_proxy_host}:${deployment_service_proxy_8080}/proxy/services/mock-server/namespaces/service-proxy-e2e/ports/8080/echo?foo=bar"
        python3 test/e2e/scripts/proxy_forward_basic.py
      expected: ./expected/proxy-forward-basic.yaml

    - name: audit-log-sanitization
      query: |
        set -euo pipefail

        export URL="http://${deployment_service_proxy_host}:${deployment_service_proxy_8080}/proxy/services/mock-server/namespaces/service-proxy-e2e/ports/8080/echo?foo=audit&token=supersecret"
        python3 test/e2e/scripts/audit_log_sanitization_send.py

        POD="$(kubectl -n service-proxy-e2e get pods -l app=service-proxy -o jsonpath='{.items[0].metadata.name}')"
        export AUDIT_LOG="$(kubectl -n service-proxy-e2e exec "$POD" -- cat /tmp/audit.log)"
        python3 test/e2e/scripts/audit_log_sanitization_extract.py
      expected: ./expected/audit-log-sanitization.yaml
