Skip to content

Commit 18ed4c4

Browse files
authored
TA Env var checks for docker (#5927)
* pass through the env vars to test stuff * add test for env vars * add more env vars to test for * some cleanup * remove commented out checks * change test to for loop
1 parent 4481d72 commit 18ed4c4

File tree

5 files changed

+186
-0
lines changed

5 files changed

+186
-0
lines changed

.github/workflows/splunk-ta-otel.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,28 @@ jobs:
129129
set -o pipefail
130130
make -e bundle.d otelcol generate-technical-addon copy-local-build-to-ta package-ta
131131
make -e discovery-test-ta
132+
test-envvars:
133+
name: test-envvars
134+
runs-on: ubuntu-24.04
135+
needs: [setup-environment, test]
136+
strategy:
137+
matrix:
138+
PLATFORM: ["all"]
139+
steps:
140+
- name: Check out the codebase.
141+
uses: actions/checkout@v4
142+
143+
- name: Set up Go
144+
uses: actions/setup-go@v5
145+
with:
146+
go-version: ${{ env.GO_VERSION }}
147+
cache-dependency-path: '**/go.sum'
148+
149+
- name: Build & Package TA
150+
run: |
151+
set -o pipefail
152+
make -e package-technical-addon
153+
make -e envvar-test-ta
132154
spell-check:
133155
name: spell-check
134156
runs-on: ubuntu-latest

packaging/technical-addon/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ discovery-test-ta:
128128
PLATFORM="$(PLATFORM)" \
129129
$(SOURCE_DIR)/packaging-scripts/cicd-tests/discovery/discovery-docker-test.sh
130130

131+
.PHONY: envvar-test-ta
132+
envvar-test-ta:
133+
SOURCE_DIR="$(SOURCE_DIR)" \
134+
BUILD_DIR="$(BUILD_DIR)" \
135+
ARCH="$(ARCH)" \
136+
PLATFORM="$(PLATFORM)" \
137+
$(SOURCE_DIR)/packaging-scripts/cicd-tests/envvars/envvartest.sh
138+
131139
.PHONY: update-ta-deps
132140
update-ta-deps:
133141
SOURCE_DIR="$(SOURCE_DIR)" \
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# See https://splunk.github.io/docker-splunk/advanced/APP_INSTALL.html#apps-on-filesystem
2+
services:
3+
ta-test-envvars:
4+
image: ${SPLUNK_IMAGE:-splunk/splunk:9.2.1}
5+
network_mode: "host"
6+
healthcheck:
7+
test: ["CMD", "curl", "-f", "http://localhost:8000/en-US/account/login"]
8+
interval: 30s
9+
timeout: 10s
10+
retries: 5
11+
start_period: 60s
12+
environment:
13+
# If there's a bug in the TA, you may comment out this line and use docker exec via cp and splunk restart
14+
# in the test script to manually debug the TA
15+
- SPLUNK_APPS_URL=/tmp/local-tas/$REPACKED_TA_NAME
16+
- SPLUNK_START_ARGS=--accept-license
17+
- SPLUNK_PASSWORD=Chang3d!
18+
volumes:
19+
- $ADDON_DIR:/tmp/local-tas:rwz
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#!/bin/bash -eu
2+
set -o pipefail
3+
4+
[[ -z "$BUILD_DIR" ]] && echo "BUILD_DIR not set" && exit 1
5+
[[ -z "$SOURCE_DIR" ]] && echo "SOURCE_DIR not set" && exit 1
6+
7+
source "${SOURCE_DIR}/packaging-scripts/cicd-tests/add-access-token.sh"
8+
TA_FULLPATH="$(repack_with_access_token "foobar" "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" | tail -n 1)"
9+
REPACKED_TA_NAME="$(basename "$TA_FULLPATH")"
10+
ADDON_DIR="$(realpath "$(dirname "$TA_FULLPATH")")"
11+
rm -rf "$ADDON_DIR/$REPACKED_TA_NAME"
12+
13+
# Set passthrough env vars config & repackage TA
14+
echo 'splunk_config=$SPLUNK_OTEL_TA_HOME/configs/passthrough_env_vars.yaml' >> "$ADDON_DIR/Splunk_TA_otel/local/inputs.conf"
15+
echo 'gomemlimit=512MiB' >> "$ADDON_DIR/Splunk_TA_otel/local/inputs.conf"
16+
echo 'splunk_debug_config_server=test_notused' >> "$ADDON_DIR/Splunk_TA_otel/local/inputs.conf"
17+
echo 'splunk_hec_url=test_notused' >> "$ADDON_DIR/Splunk_TA_otel/local/inputs.conf"
18+
echo 'splunk_gateway_url=test_notused' >> "$ADDON_DIR/Splunk_TA_otel/local/inputs.conf"
19+
cp "$SOURCE_DIR/packaging-scripts/cicd-tests/envvars/passthrough_env_vars.yaml" "$ADDON_DIR/Splunk_TA_otel/configs/"
20+
tar -C "$ADDON_DIR" -hcz --file "$TA_FULLPATH" "Splunk_TA_otel"
21+
22+
23+
echo "Testing with hot TA $TA_FULLPATH ($ADDON_DIR and $REPACKED_TA_NAME)"
24+
25+
DOCKER_COMPOSE_CONFIG="$SOURCE_DIR/packaging-scripts/cicd-tests/envvars/docker-compose.yml"
26+
REPACKED_TA_NAME=$REPACKED_TA_NAME ADDON_DIR=$ADDON_DIR docker compose --file "$DOCKER_COMPOSE_CONFIG" up --build --force-recreate --wait --detach --timestamps
27+
28+
docker exec -u root envvars-ta-test-envvars-1 /opt/splunk/bin/splunk btool check --debug | grep -qi "Invalid key in stanza" && exit 1
29+
30+
# Most of what we care about can be found in
31+
# https://github.com/signalfx/splunk-otel-collector/blob/main/internal/settings/settings.go#L40
32+
33+
MAX_ATTEMPTS=6
34+
DELAY=10
35+
ATTEMPT=1
36+
while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
37+
if docker exec -u root envvars-ta-test-envvars-1 grep -qi "Everything is ready. Begin running and processing data." /opt/splunk/var/log/splunk/otel.log; then
38+
break
39+
else
40+
if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
41+
echo "Failed to see success message in otel.log after $MAX_ATTEMPTS attempts."
42+
docker exec -u root envvars-ta-test-envvars-1 cat /opt/splunk/var/log/splunk/otel.log
43+
exit 1
44+
fi
45+
echo "success message not found in otel.log Retrying in $DELAY seconds"
46+
ATTEMPT=$((ATTEMPT + 1))
47+
sleep $DELAY
48+
fi
49+
done
50+
51+
echo "checking env vars"
52+
for test_str in \
53+
'envvartest_given: Str(helloworld)' \
54+
'envvartest_GOMEMLIMIT: Str(512MiB)' \
55+
'envvartest_SPLUNK_ACCESS_TOKEN_FILE: Str(/opt/splunk/etc/apps/Splunk_TA_otel/local/access_token)' \
56+
'envvartest_SPLUNK_API_URL: Str(https://api.us0.signalfx.com)' \
57+
'envvartest_SPLUNK_BUNDLE_DIR: Str(/opt/splunk/etc/apps/Splunk_TA_otel/linux_x86_64/bin/agent-bundle)' \
58+
'envvartest_SPLUNK_COLLECTD_DIR: Str(/opt/splunk/etc/apps/Splunk_TA_otel/linux_x86_64/bin/agent-bundle/run/collectd)' \
59+
'envvartest_SPLUNK_CONFIG: Str(/opt/splunk/etc/apps/Splunk_TA_otel/configs/passthrough_env_vars.yaml)' \
60+
'envvartest_SPLUNK_DEBUG_CONFIG_SERVER: Str(test_notused)' \
61+
'envvartest_SPLUNK_GATEWAY_URL: Str(test_notused)' \
62+
'envvartest_SPLUNK_HEC_URL: Str(test_notused)' \
63+
'envvartest_SPLUNK_INGEST_URL: Str(https://ingest.us0.signalfx.com)' \
64+
'envvartest_SPLUNK_LISTEN_INTERFACE: Str(localhost)' \
65+
'envvartest_SPLUNK_OTEL_LOG_FILE_NAME: Str(/opt/splunk/var/log/splunk/otel.log)' \
66+
'envvartest_SPLUNK_REALM: Str(us0)' \
67+
; do
68+
docker exec -u root envvars-ta-test-envvars-1 grep -qi "$test_str" /opt/splunk/var/log/splunk/otel.log
69+
done
70+
71+
REPACKED_TA_NAME=$REPACKED_TA_NAME BUILD_DIR=$BUILD_DIR ADDON_DIR=$ADDON_DIR docker compose --file "$DOCKER_COMPOSE_CONFIG" down
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
receivers:
2+
hostmetrics:
3+
collection_interval: 10s
4+
scrapers:
5+
cpu:
6+
7+
processors:
8+
resource:
9+
attributes:
10+
- action: "insert"
11+
key: "envvartest_given"
12+
value: "helloworld"
13+
- action: "insert"
14+
key: "envvartest_GOMEMLIMIT"
15+
value: "${env:GOMEMLIMIT}"
16+
- action: "insert"
17+
key: "envvartest_SPLUNK_ACCESS_TOKEN_FILE"
18+
value: "${env:SPLUNK_ACCESS_TOKEN_FILE}"
19+
- action: "insert"
20+
key: "envvartest_SPLUNK_API_URL"
21+
value: "${env:SPLUNK_API_URL}"
22+
- action: "insert"
23+
key: "envvartest_SPLUNK_BUNDLE_DIR"
24+
value: "${env:SPLUNK_BUNDLE_DIR}"
25+
- action: "insert"
26+
key: "envvartest_SPLUNK_COLLECTD_DIR"
27+
value: "${env:SPLUNK_COLLECTD_DIR}"
28+
- action: "insert"
29+
key: "envvartest_SPLUNK_CONFIG"
30+
value: "${env:SPLUNK_CONFIG}"
31+
- action: "insert"
32+
key: "envvartest_SPLUNK_DEBUG_CONFIG_SERVER"
33+
value: "${env:SPLUNK_DEBUG_CONFIG_SERVER}"
34+
- action: "insert"
35+
key: "envvartest_SPLUNK_GATEWAY_URL"
36+
value: "${env:SPLUNK_GATEWAY_URL}"
37+
- action: "insert"
38+
key: "envvartest_SPLUNK_HEC_URL"
39+
value: "${env:SPLUNK_HEC_URL}"
40+
- action: "insert"
41+
key: "envvartest_SPLUNK_LISTEN_INTERFACE"
42+
value: "${env:SPLUNK_LISTEN_INTERFACE}"
43+
- action: "insert"
44+
key: "envvartest_SPLUNK_OTEL_LOG_FILE_NAME"
45+
value: "${env:SPLUNK_OTEL_LOG_FILE_NAME}"
46+
- action: "insert"
47+
key: "envvartest_SPLUNK_INGEST_URL"
48+
value: "${env:SPLUNK_INGEST_URL}"
49+
- action: "insert"
50+
key: "envvartest_SPLUNK_REALM"
51+
value: "${env:SPLUNK_REALM}"
52+
53+
54+
exporters:
55+
debug:
56+
verbosity: detailed
57+
58+
service:
59+
telemetry:
60+
logs:
61+
level: debug
62+
pipelines:
63+
logs:
64+
receivers: ["hostmetrics"]
65+
processors: ["resource"]
66+
exporters: ["debug"]

0 commit comments

Comments
 (0)