# Copyright 2024 Google LLC
#
# Licensed 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.

steps:
# set the project ID in the k8s manifest for OTLP export
- name: 'ubuntu'
  id: Replace
  script: |
    #!/usr/bin/env bash
    sed -i "s/\${GOOGLE_CLOUD_PROJECT}/${PROJECT_ID}/g" k8s/overlays/test/*
  env:
  - 'PROJECT_ID=$PROJECT_ID'

# create a GKE cluster
- name: 'gcr.io/cloud-builders/gcloud'
  id: CreateCluster
  args:
  - 'container'
  - 'clusters'
  - 'create'
  - '${TRIGGER_NAME}-${SHORT_SHA}'
  - '--zone=${LOCATION}'
  - '--num-nodes=1'

# deploy the manifests in GKE
- name: 'gcr.io/cloud-builders/kubectl'
  id: Deploy
  args:
  - 'apply'
  - '-k'
  - './k8s/overlays/test'
  env:
  - 'CLOUDSDK_COMPUTE_REGION=${LOCATION}'
  - 'CLOUDSDK_CONTAINER_CLUSTER=${TRIGGER_NAME}-${SHORT_SHA}'

# assert that all pods are up and running
- name: 'gcr.io/cloud-builders/kubectl'
  id: AssertReady
  args:
  - 'wait'
  - '--for=condition=Ready'
  - '--timeout=300s'
  - '-n'
  - 'opentelemetry'
  - 'pods'
  - '--all'
  env:
  - 'CLOUDSDK_COMPUTE_REGION=${LOCATION}'
  - 'CLOUDSDK_CONTAINER_CLUSTER=${TRIGGER_NAME}-${SHORT_SHA}'

- name: 'ubuntu'
  id: Wait for telemetry to be collected
  script: |
    #!/usr/bin/env bash
    sleep 5

# Copy the telemetry out
- name: 'gcr.io/cloud-builders/kubectl'
  id: Copy
  args:
  - 'cp'
  - '-c'
  - 'filecp'
  - 'opentelemetry/opentelemetry-collector-0:/output/output.json'
  - 'test/fixtures/tmp.json'
  env:
  - 'CLOUDSDK_COMPUTE_REGION=${LOCATION}'
  - 'CLOUDSDK_CONTAINER_CLUSTER=${TRIGGER_NAME}-${SHORT_SHA}'

- name: 'ubuntu'
  id: Prettify the output for easier diff
  script: |
    #!/usr/bin/env bash
    apt-get update && apt-get install -y build-essential curl
    make prettify-fixture

- name: bats/bats
  id: Check output
  args:
  - 'test/verify.bats'

# delete the GKE cluster
- name: 'gcr.io/cloud-builders/gcloud'
  id: DeleteCluster
  args:
  - 'container'
  - 'clusters'
  - 'delete'
  - '${TRIGGER_NAME}-${SHORT_SHA}'
  - '--zone=${LOCATION}'
  - '--quiet'
