Skip to content

feat(http_server source): add custom_enriching auth type #25038

feat(http_server source): add custom_enriching auth type

feat(http_server source): add custom_enriching auth type #25038

Workflow file for this run

# Integration Test Suite
#
# This workflow runs the integration tests. If the workflow is triggered in the merge queue, all integration tests
# are run. If the workflow is triggered in a PR commit, then the files changed in the PR are evaluated to determine
# if any integration tests will run.
name: Integration Test Suite
on:
workflow_call:
inputs:
run_all:
description: "Run all integration and e2e tests regardless of changed files"
required: false
type: boolean
default: false
coverage:
description: "Collect code coverage (outputs target/coverage/lcov.info per service)"
required: false
type: boolean
default: false
ref:
description: "Git ref to checkout (defaults to github.sha)"
required: false
type: string
workflow_dispatch:
pull_request:
merge_group:
types: [checks_requested]
concurrency:
# `github.event.number` exists for pull requests, otherwise fall back to SHA for merge queue.
# For workflow_call (e.g. weekly coverage), use run_id so each caller gets its own group.
group: ${{ github.workflow }}-${{ github.event.number || github.event.merge_group.head_sha || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
env:
CONTAINER_TOOL: "docker"
DD_ENV: "ci"
TEST_DATADOG_API_KEY: ${{ secrets.CI_TEST_DATADOG_API_KEY }}
TEST_APPSIGNAL_PUSH_API_KEY: ${{ secrets.TEST_APPSIGNAL_PUSH_API_KEY }}
AXIOM_TOKEN: ${{ secrets.AXIOM_TOKEN }}
RUST_BACKTRACE: full
VECTOR_LOG: vector=debug
VERBOSE: true
CI: true
PROFILE: debug
jobs:
changes:
if: github.event_name == 'merge_group'
uses: ./.github/workflows/changes.yml
with:
source: true
int_tests: true
e2e_tests: true
secrets: inherit
build-test-runner:
# Elevated permission required by build-test-runner.yml to push test runner image to GHCR
permissions:
contents: read
packages: write
needs: changes
if: ${{
always() &&
(github.event_name == 'workflow_dispatch' ||
github.event_name == 'workflow_call' ||
inputs.run_all == true ||
(github.event_name == 'merge_group' &&
needs.changes.result == 'success' &&
(needs.changes.outputs.dependencies == 'true' ||
needs.changes.outputs.integration-yml == 'true' ||
needs.changes.outputs.int-tests-any == 'true' ||
needs.changes.outputs.e2e-tests-any == 'true')))
}}
uses: ./.github/workflows/build-test-runner.yml
with:
commit_sha: ${{ inputs.ref || github.sha }}
checkout_ref: ${{ inputs.ref }}
integration-tests:
runs-on: ubuntu-24.04-8core
permissions:
contents: read
id-token: write
needs:
- changes
- build-test-runner
if: ${{ always() && !failure() && !cancelled() && needs.build-test-runner.result == 'success' &&
(github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call' || inputs.run_all == true) }}
strategy:
fail-fast: false
matrix:
# TODO: Add "splunk" back once https://github.com/vectordotdev/vector/issues/23474 is fixed.
# If you modify this list, please also update the `int_tests` job in changes.yml.
service:
[
"amqp",
"appsignal",
"axiom",
"aws",
"azure",
"clickhouse",
"databend",
"datadog-agent",
"datadog-logs",
"datadog-metrics",
"datadog-traces",
"dnstap",
"docker-logs",
"doris",
"elasticsearch",
"eventstoredb",
"fluent",
"gcp",
"greptimedb",
"http-client",
"influxdb",
"kafka",
"logstash",
"loki",
"mqtt",
"mongodb",
"nats",
"nginx",
"opentelemetry",
"postgres",
"prometheus",
"pulsar",
"redis",
"webhdfs"
]
timeout-minutes: 90
steps:
- name: Download JSON artifact from changes.yml
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
if: github.event_name == 'merge_group'
with:
name: int_tests_changes
- name: Determine if test should run
id: check
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" || \
"${{ github.event_name }}" == "workflow_call" || \
"${{ inputs.run_all }}" == "true" || \
"${{ needs.changes.outputs.dependencies }}" == "true" || \
"${{ needs.changes.outputs.integration-yml }}" == "true" ]]; then
echo "should_run=true" >> "$GITHUB_OUTPUT"
elif [[ "${{ needs.changes.outputs.website_only }}" == "true" ]]; then
echo "should_run=false" >> "$GITHUB_OUTPUT"
elif [[ -f int_tests_changes.json ]]; then
should_run=$(jq -r '."${{ matrix.service }}" // false' int_tests_changes.json)
echo "should_run=${should_run}" >> "$GITHUB_OUTPUT"
else
echo "should_run=false" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.check.outputs.should_run == 'true'
with:
submodules: "recursive"
ref: ${{ inputs.ref || github.sha }}
- uses: ./.github/actions/dd-token
if: steps.check.outputs.should_run == 'true'
- uses: ./.github/actions/setup
if: steps.check.outputs.should_run == 'true'
with:
vdev: true
mold: false
cargo-cache: false
datadog-ci: true
- name: Pull test runner image
if: steps.check.outputs.should_run == 'true'
uses: ./.github/actions/pull-test-runner
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_sha: ${{ inputs.ref || github.sha }}
- name: Run Integration Tests for ${{ matrix.service }}
if: steps.check.outputs.should_run == 'true'
uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0
with:
timeout_minutes: 30
max_attempts: 3
command: |
bash scripts/run-integration-test.sh ${{ inputs.coverage && '-c' || '' }} int ${{ matrix.service }}
- name: Upload coverage artifact
if: inputs.coverage && always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: coverage-int-${{ matrix.service }}
path: target/coverage/lcov.info
if-no-files-found: ignore
e2e-tests:
runs-on: ubuntu-24.04-8core
permissions:
contents: read
id-token: write
needs:
- changes
- build-test-runner
if: ${{ always() && !failure() && !cancelled() && needs.build-test-runner.result == 'success' &&
(github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call' || inputs.run_all == true) }}
strategy:
fail-fast: false
matrix:
service: ["datadog-logs", "datadog-metrics", "opentelemetry-logs", "opentelemetry-metrics"]
timeout-minutes: 90
steps:
- name: Download JSON artifact from changes.yml
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
if: github.event_name == 'merge_group'
with:
name: e2e_tests_changes
- name: Determine if test should run
id: check
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" || \
"${{ github.event_name }}" == "workflow_call" || \
"${{ inputs.run_all }}" == "true" || \
"${{ needs.changes.outputs.dependencies }}" == "true" || \
"${{ needs.changes.outputs.integration-yml }}" == "true" ]]; then
echo "should_run=true" >> "$GITHUB_OUTPUT"
elif [[ "${{ needs.changes.outputs.website_only }}" == "true" ]]; then
echo "should_run=false" >> "$GITHUB_OUTPUT"
elif [[ -f e2e_tests_changes.json ]]; then
should_run=$(jq -r '."${{ matrix.service }}" // false' e2e_tests_changes.json)
echo "should_run=${should_run}" >> "$GITHUB_OUTPUT"
else
echo "should_run=false" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.check.outputs.should_run == 'true'
with:
submodules: "recursive"
ref: ${{ inputs.ref || github.sha }}
- uses: ./.github/actions/dd-token
if: steps.check.outputs.should_run == 'true'
- uses: ./.github/actions/setup
if: steps.check.outputs.should_run == 'true'
with:
vdev: true
mold: false
cargo-cache: false
datadog-ci: true
- name: Pull test runner image
if: steps.check.outputs.should_run == 'true'
uses: ./.github/actions/pull-test-runner
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_sha: ${{ inputs.ref || github.sha }}
- name: Run E2E Tests for ${{ matrix.service }}
if: steps.check.outputs.should_run == 'true'
uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0
with:
timeout_minutes: 30
max_attempts: 3
command: |
bash scripts/run-integration-test.sh ${{ inputs.coverage && '-c' || '' }} e2e ${{ matrix.service }}
- name: Upload coverage artifact
if: inputs.coverage && always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: coverage-e2e-${{ matrix.service }}
path: target/coverage/lcov.info
if-no-files-found: ignore
integration-test-suite:
name: Integration Test Suite
runs-on: ubuntu-24.04
if: always()
needs:
- changes
- build-test-runner
- integration-tests
- e2e-tests
steps:
- run: |
if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" == "true" ]]; then
echo "One or more jobs failed or were cancelled"
exit 1
else
echo "All jobs completed successfully"
fi