Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Integration Test Log Dumping For Storage Backends #5915

Merged
merged 8 commits into from
Sep 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .github/workflows/ci-docker-hotrod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,3 @@ jobs:
env:
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
QUAY_TOKEN: ${{ secrets.QUAY_TOKEN }}

- name: Print logs from hotrod
run: docker compose -f ./examples/hotrod/docker-compose.yml logs
if: failure()
4 changes: 0 additions & 4 deletions .github/workflows/ci-e2e-cassandra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,6 @@ jobs:
id: test-execution
run: bash scripts/cassandra-integration-test.sh ${{ matrix.version.major }} ${{ matrix.version.schema }} ${{ matrix.jaeger-version }}

- name: Output Cassandra logs
run: docker compose -f ${{ steps.test-execution.outputs.docker_compose_file }} logs
if: ${{ failure() }}

- name: Upload coverage to codecov
uses: ./.github/actions/upload-codecov
with:
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/ci-e2e-elasticsearch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,6 @@ jobs:
id: test-execution
run: bash scripts/es-integration-test.sh ${{ matrix.version.distribution }} ${{ matrix.version.major }} ${{ matrix.version.jaeger }}


- name: Output ${{ matrix.version.distribution }} logs
run: docker compose -f ${{ steps.test-execution.outputs.docker_compose_file }} logs
if: ${{ failure() }}

- name: Upload coverage to codecov
uses: ./.github/actions/upload-codecov
with:
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/ci-e2e-opensearch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,6 @@ jobs:
id: test-execution
run: bash scripts/es-integration-test.sh ${{ matrix.version.distribution }} ${{ matrix.version.major }} ${{ matrix.version.jaeger }}


- name: Output ${{ matrix.version.distribution }} logs
run: docker compose -f ${{ steps.test-execution.outputs.docker_compose_file }} logs
if: ${{ failure() }}

- name: Upload coverage to codecov
uses: ./.github/actions/upload-codecov
with:
Expand Down
25 changes: 17 additions & 8 deletions scripts/es-integration-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ set -euf -o pipefail

# use global variables to reflect status of db
db_is_up=
success="false"

usage() {
echo "Usage: $0 <backend> <backend_version> <jaeger_version>"
Expand Down Expand Up @@ -55,10 +56,6 @@ wait_for_storage() {
# if after all the attempts the storage is not accessible, terminate it and exit
if [[ "$(curl "${params[@]}" "${url}")" != "200" ]]; then
echo "ERROR: ${distro} is not ready at ${url} after $(( attempt * 10 )) seconds"
echo "::group::${distro} logs"
docker compose -f "${compose_file}" logs
echo "::endgroup::"
docker compose -f "${compose_file}" down
db_is_up=0
else
echo "SUCCESS: ${distro} is available at ${url}"
Expand Down Expand Up @@ -87,18 +84,29 @@ bring_up_storage() {
break
fi
done
if [ ${db_is_up} = "1" ]; then
# shellcheck disable=SC2064
trap "teardown_storage ${compose_file}" EXIT
else
# shellcheck disable=SC2064
trap "teardown_storage ${compose_file} ${distro}" EXIT
if [ ${db_is_up} != "1" ]; then
echo "ERROR: unable to start ${distro}"
exit 1
fi
}

dump_logs() {
local compose_file=$1
local distro=$2
echo "::group::${distro} logs"
docker compose -f "${compose_file}" logs
echo "::endgroup::"
}

# terminate the elasticsearch/opensearch container
teardown_storage() {
local compose_file=$1
local distro=$2
if [[ "$success" == "false" ]]; then
dump_logs "${compose_file}" "${distro}"
fi
docker compose -f "${compose_file}" down
}

Expand Down Expand Up @@ -131,6 +139,7 @@ main() {
echo "ERROR: Invalid argument value jaeger_version=${j_version}, expecing v1/v2".
exit 1
fi
success="true"
}

main "$@"
13 changes: 13 additions & 0 deletions scripts/hotrod-integration-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ docker_compose_file="./examples/hotrod/docker-compose.yml"
platforms="$(make echo-linux-platforms)"
current_platform="$(go env GOOS)/$(go env GOARCH)"
LOCAL_FLAG=''
success="false"

while getopts "lp:h" opt; do
case "${opt}" in
Expand All @@ -33,8 +34,18 @@ while getopts "lp:h" opt; do
esac
done

dump_logs() {
local compose_file=$1
echo "::group:: Hotrod logs"
docker compose -f "${compose_file}" logs
echo "::endgroup::"
}

teardown() {
echo "Tearing down..."
if [[ "$success" == "false" ]]; then
dump_logs "${docker_compose_file}"
fi
docker compose -f "$docker_compose_file" down
}
trap teardown EXIT
Expand Down Expand Up @@ -115,6 +126,8 @@ if [[ "$span_count" -lt "$EXPECTED_SPANS" ]]; then
exit 1
fi

success="true"

# Ensure the image is published after successful test (maybe with -l flag if on a pull request).
# This is where all those multi-platform binaries we built earlier are utilized.
bash scripts/build-upload-a-docker-image.sh ${LOCAL_FLAG} -c example-hotrod -d examples/hotrod -p "${platforms}"
Loading