Skip to content

[chore] remove assignment of selected trace to only pick the one matching the expected trace count #1526

[chore] remove assignment of selected trace to only pick the one matching the expected trace count

[chore] remove assignment of selected trace to only pick the one matching the expected trace count #1526

name: functional-tests
on:
pull_request:
push:
branches: [ main ]
workflow_dispatch:
inputs:
UPDATE_EXPECTED_RESULTS:
description: 'Set this to true to update expected results and collect updated test output as a Github workflow artifact.'
required: false
default: false
env:
# Make sure to exit early if cache segment download times out after 2 minutes.
# We limit cache download as a whole to 5 minutes.
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2
jobs:
kubernetes-test:
env:
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing
KUBE_TEST_ENV: kind
strategy:
fail-fast: false
matrix:
# The kubernetes_version matrix entries are currently following native Kubernetes version support and +1, see: https://endoflife.date/kubernetes
# To check latest versions, see: https://hub.docker.com/r/kindest/node/tags
k8s-version:
- v1.30.0 # Support: 28 Apr 2025 - 28 Jun 2025
- v1.29.0 # Support: 28 Dec 2024 - 28 Feb 2025
- v1.28.0 # Support: 28 Aug 2024 - 28 Oct 2024
- v1.27.3 # Support: 28 Apr 2024 - 28 Jun 2024
- v1.26.6 # Support: 28 Dec 2023 - 28 Feb 2024
# Test current +1 out-of-date Kubernetes version to cover EKS's extended support version matrix
- v1.25.11 # Support: 27 Aug 2023 - 27 Oct 2023
test-job:
- functional
- histogram
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ~1.22.5
cache: false
- name: Cache Go
id: go-cache
timeout-minutes: 5
uses: actions/cache@v4
with:
path: |
~/go/bin
~/go/pkg/mod
key: go-cache-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
- name: Create kind cluster
uses: helm/[email protected]
with:
node_image: kindest/node:${{ matrix.k8s-version }}
kubectl_version: ${{ matrix.k8s-version }}
cluster_name: kind
config: ./.github/workflows/configs/kind-config.yaml
- name: Fix kubelet TLS server certificates
run: |
kubectl get csr -o=jsonpath='{range.items[?(@.spec.signerName=="kubernetes.io/kubelet-serving")]}{.metadata.name}{" "}{end}' | xargs kubectl certificate approve
- name: Update dependencies
run: |
make dep-update
- name: Deploy cert-manager
run: |
make cert-manager
- name: run functional tests
env:
K8S_VERSION: ${{ matrix.k8s-version }}
UPDATE_EXPECTED_RESULTS: ${{ github.event.inputs.UPDATE_EXPECTED_RESULTS || 'false' }}
run: |
cd functional_tests
TEARDOWN_BEFORE_SETUP=true UPDATE_EXPECTED_RESULTS=${{ env.UPDATE_EXPECTED_RESULTS }} go test -v -tags ${{ matrix.test-job }}
- name: 'Upload test results'
if: failure() && env.UPDATE_EXPECTED_RESULTS == 'true'
uses: actions/upload-artifact@v4
with:
name: functional_tests-${{ matrix.test-job }}-${{ matrix.k8s-version }}
path: functional_tests/results
retention-days: 5
eks-test:
name: Test helm install in EKS - credentials needed
needs: kubernetes-test
if: github.event.pull_request.head.repo.full_name == github.repository
concurrency:
group: eks-access
env:
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing-eks
KUBE_TEST_ENV: eks
SKIP_TESTS: "true" # we need to skip functional tests as we have not set probes to listen to the traffic.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ~1.21.8
cache: false
- name: Cache Go
id: go-cache
timeout-minutes: 5
uses: actions/cache@v4
with:
path: |
~/go/bin
~/go/pkg/mod
key: go-cache-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET }}
aws-region: us-west-1
- name: Install kubeconfig
run: |
aws eks update-kubeconfig --name rotel-eks --region us-west-1
- name: Update dependencies
run: |
make dep-update
- name: Deploy cert-manager
run: |
make cert-manager
- name: run functional tests
env:
HOST_ENDPOINT: 0.0.0.0
run: |
cd functional_tests
TEARDOWN_BEFORE_SETUP=true go test -v -tags functional
eks-upgrade-test:
name: Test helm upgrade in EKS - credentials needed
needs: kubernetes-test
if: github.event.pull_request.head.repo.full_name == github.repository
concurrency:
group: eks-access
env:
KUBECONFIG: /tmp/kube-config-splunk-otel-collector-chart-functional-testing-eks
KUBE_TEST_ENV: eks
SKIP_TESTS: "true" # we need to skip functional tests as we have not set probes to listen to the traffic.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout main if in a PR
if: github.event_name == 'pull_request'
uses: actions/checkout@v4
with:
path: base
ref: main
- name: Checkout previous main commit if in main
if: github.event_name != 'pull_request'
uses: actions/checkout@v4
with:
path: base
ref: HEAD
fetch-depth: 2
- name: Checkout previous main commit if in main
if: github.event_name != 'pull_request'
run: cd base && git checkout HEAD^
- uses: actions/setup-go@v5
with:
go-version: ~1.21.8
cache: false
- name: Cache Go
id: go-cache
timeout-minutes: 5
uses: actions/cache@v4
with:
path: |
~/go/bin
~/go/pkg/mod
key: go-cache-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET }}
aws-region: us-west-1
- name: Install kubeconfig
run: |
aws eks update-kubeconfig --name rotel-eks --region us-west-1
- name: Update dependencies
run: |
cd base && make dep-update
- name: Deploy cert-manager
run: |
cd base && make cert-manager
- name: Deploy previous version of the chart
run: |
cd base && helm install sock helm-charts/splunk-otel-collector --set cloudProvider=aws --set distribution=eks --set splunkObservability.realm=us0 --set splunkObservability.accessToken=xxxxx
- name: Update dependencies
run: |
make dep-update
- name: Deploy cert-manager
run: |
make cert-manager
- name: run functional tests
env:
HOST_ENDPOINT: 0.0.0.0
run: |
cd functional_tests
go test -v -tags functional
gke-autopilot-test:
name: Test helm install in GKE/Autopilot - credentials needed
needs: kubernetes-test
if: github.event.pull_request.head.repo.full_name == github.repository
concurrency:
group: gke-autopilot-access
env:
KUBE_TEST_ENV: gke/autopilot
SKIP_TESTS: "true"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ~1.21.8
cache: false
- name: Cache Go
id: go-cache
timeout-minutes: 5
uses: actions/cache@v4
with:
path: |
~/go/bin
~/go/pkg/mod
key: go-cache-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
- uses: 'google-github-actions/[email protected]'
with:
project_id: ${{ secrets.GKE_PROJECT }}
credentials_json: ${{ secrets.GKE_SA_KEY }}
- uses: google-github-actions/[email protected]
with:
project_id: ${{ secrets.GKE_PROJECT }}
- uses: google-github-actions/[email protected]
with:
cluster_name: ${{ secrets.GKE_AUTOPILOT_CLUSTER }}
location: ${{ secrets.GKE_REGION }}
project_id: ${{ secrets.GKE_PROJECT }}
- name: Update dependencies
run: |
make dep-update
- name: run functional tests
env:
HOST_ENDPOINT: 0.0.0.0
run: |
cd functional_tests
TEARDOWN_BEFORE_SETUP=true go test -v -tags functional
gke-autopilot-upgrade-test:
name: Test helm upgrade in GKE/Autopilot - credentials needed
needs: kubernetes-test
if: github.event.pull_request.head.repo.full_name == github.repository
concurrency:
group: gke-autopilot-access
env:
KUBE_TEST_ENV: gke/autopilot
SKIP_TESTS: "true"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout main if in a PR
if: github.event_name == 'pull_request'
uses: actions/checkout@v4
with:
path: base
ref: main
- name: Checkout previous main commit if in main
if: github.event_name != 'pull_request'
uses: actions/checkout@v4
with:
path: base
ref: HEAD
fetch-depth: 2
- name: Checkout previous main commit if in main
if: github.event_name != 'pull_request'
run: cd base && git checkout HEAD^
- uses: actions/setup-go@v5
with:
go-version: ~1.21.8
cache: false
- name: Cache Go
id: go-cache
timeout-minutes: 5
uses: actions/cache@v4
with:
path: |
~/go/bin
~/go/pkg/mod
key: go-cache-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
- uses: 'google-github-actions/[email protected]'
with:
project_id: ${{ secrets.GKE_PROJECT }}
credentials_json: ${{ secrets.GKE_SA_KEY }}
- uses: google-github-actions/[email protected]
with:
project_id: ${{ secrets.GKE_PROJECT }}
- uses: google-github-actions/[email protected]
with:
cluster_name: ${{ secrets.GKE_AUTOPILOT_CLUSTER }}
location: ${{ secrets.GKE_REGION }}
project_id: ${{ secrets.GKE_PROJECT }}
- name: Update dependencies
run: |
make dep-update
- name: Deploy previous version of the chart
run: |
cd base
helm dependency update helm-charts/splunk-otel-collector
helm install sock helm-charts/splunk-otel-collector --set cloudProvider=gcp --set distribution=gke/autopilot --set splunkObservability.realm=us0 --set splunkObservability.accessToken=xxxxx
- name: run functional tests
env:
HOST_ENDPOINT: 0.0.0.0
run: |
cd functional_tests
go test -v -tags functional
aks-windows-test:
name: Test helm install in AKS - credentials needed
needs: kubernetes-test
if: github.event.pull_request.head.repo.full_name == github.repository
concurrency:
group: aks-windows-group
env:
KUBE_TEST_ENV: aks
SKIP_TESTS: "true"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ~1.21.8
cache: false
- name: Cache Go
id: go-cache
timeout-minutes: 5
uses: actions/cache@v4
with:
path: |
~/go/bin
~/go/pkg/mod
key: go-cache-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
- name: Set up kubelogin for non-interactive login
uses: azure/[email protected]
with:
kubelogin-version: "v0.0.24"
- uses: azure/[email protected]
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- uses: azure/aks-set-context@v4
with:
resource-group: ${{ secrets.AKS_RESOURCE_GROUP }}
cluster-name: ${{ secrets.AKS_CLUSTER_NAME }}
admin: false
use-kubelogin: true
- name: Update dependencies
run: |
make dep-update
- name: run functional tests
env:
HOST_ENDPOINT: 0.0.0.0
run: |
cd functional_tests
TEARDOWN_BEFORE_SETUP=true go test -v -tags functional