fix(bats-tests): lifecycle hook injection test failing (#1095)
Co-authored-by: xmbhasin <xmbhasin@users.noreply.github.com>
This commit is contained in:
parent
f0da3494ae
commit
1ec83b9de9
|
|
@ -105,7 +105,7 @@ setup() {
|
||||||
--set jenkins.nodeSelector.batstest=yep \
|
--set jenkins.nodeSelector.batstest=yep \
|
||||||
--set jenkins.image="jenkins/jenkins:2.462.3-lts" \
|
--set jenkins.image="jenkins/jenkins:2.462.3-lts" \
|
||||||
--set jenkins.imagePullPolicy="IfNotPresent" \
|
--set jenkins.imagePullPolicy="IfNotPresent" \
|
||||||
--set jenkins.lifecycle.preStop.command='["echo bats test"]' \
|
--set jenkins.lifecycle.preStop.exec.command="{echo bats-test}" \
|
||||||
--set jenkins.backup.makeBackupBeforePodDeletion=false \
|
--set jenkins.backup.makeBackupBeforePodDeletion=false \
|
||||||
--set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \
|
--set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \
|
||||||
chart/jenkins-operator --wait
|
chart/jenkins-operator --wait
|
||||||
|
|
@ -139,16 +139,15 @@ setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#bats test_tags=phase:helm,scenario:more-options
|
#bats test_tags=phase:helm,scenario:more-options
|
||||||
@test "2.5 Helm: check lifecycle" {
|
@test "2.12 Helm: check lifecycle hook injection" {
|
||||||
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
||||||
|
|
||||||
run ${KUBECTL} get pod jenkins-jenkins -o jsonpath={.spec.containers[0].lifecycle.preStop.exec.command[0]}
|
run try "at most 20 times every 10s to get pods named 'jenkins-jenkins' and verify that '.spec.containers[?(@.name==\"jenkins-master\")].lifecycle.preStop.exec.command[0]' is 'echo bats-test'"
|
||||||
assert_success
|
assert_success
|
||||||
assert_output "echo 'bats test'"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#bats test_tags=phase:helm,scenario:more-options
|
#bats test_tags=phase:helm,scenario:more-options
|
||||||
@test "2.12 Helm: check node selector again" {
|
@test "2.13 Helm: check node selector again" {
|
||||||
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
||||||
|
|
||||||
NODENAME=$(${KUBECTL} get pod jenkins-jenkins -o jsonpath={.spec.nodeName})
|
NODENAME=$(${KUBECTL} get pod jenkins-jenkins -o jsonpath={.spec.nodeName})
|
||||||
|
|
@ -159,17 +158,32 @@ setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#bats test_tags=phase:helm,scenario:more-options
|
#bats test_tags=phase:helm,scenario:more-options
|
||||||
@test "2.13 Helm: check jenkins-plugin-cli command again" {
|
@test "2.14 Helm: check jenkins-plugin-cli command again" {
|
||||||
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
||||||
|
|
||||||
run ${KUBECTL} logs -c jenkins-master jenkins-jenkins
|
# Check logs for jenkins-plugin-cli command with retry.
|
||||||
|
# Retry is necessary here to reduce flakiness due to additional delays
|
||||||
|
# from reconciling and recreating jenkins pods after helm upgrade.
|
||||||
|
# We assert success only after the retry loop to reduce noise.
|
||||||
|
LOG_CMD="${KUBECTL} logs -c jenkins-master jenkins-jenkins"
|
||||||
|
|
||||||
|
EXPECTED_LOG_LINE_BASE_PLUGINS="jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/base-plugins.txt"
|
||||||
|
retry 10 10 "${LOG_CMD} | grep -e '${EXPECTED_LOG_LINE_BASE_PLUGINS}'"
|
||||||
|
|
||||||
|
run $LOG_CMD
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/base-plugins.txt'
|
assert_output --partial "${EXPECTED_LOG_LINE_BASE_PLUGINS}"
|
||||||
assert_output --partial 'jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/user-plugins.txt'
|
|
||||||
|
EXPECTED_LOG_LINE_USER_PLUGINS="jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/user-plugins.txt"
|
||||||
|
retry 10 10 "${LOG_CMD} | grep -e '${EXPECTED_LOG_LINE_USER_PLUGINS}'"
|
||||||
|
|
||||||
|
run $LOG_CMD
|
||||||
|
assert_success
|
||||||
|
assert_output --partial "${EXPECTED_LOG_LINE_USER_PLUGINS}"
|
||||||
}
|
}
|
||||||
|
|
||||||
#bats test_tags=phase:helm,scenario:more-options
|
#bats test_tags=phase:helm,scenario:more-options
|
||||||
@test "2.14 Helm: clean" {
|
@test "2.15 Helm: clean" {
|
||||||
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
[[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly"
|
||||||
|
|
||||||
run ${HELM} uninstall options --wait
|
run ${HELM} uninstall options --wait
|
||||||
|
|
|
||||||
|
|
@ -15,3 +15,36 @@ _common_setup() {
|
||||||
get_latest_chart_version() {
|
get_latest_chart_version() {
|
||||||
helm search repo jenkins-operator/jenkins --versions | awk 'NR==2 {print $2}' | sed 's/v//'
|
helm search repo jenkins-operator/jenkins --versions | awk 'NR==2 {print $2}' | sed 's/v//'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retry() {
|
||||||
|
# based on bats-detik's try function
|
||||||
|
|
||||||
|
if [[ $# -ne 3 ]]; then
|
||||||
|
echo "[ERROR] Usage: retry <times> <delay> <command>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local times="$1"
|
||||||
|
local delay="$2"
|
||||||
|
local cmd="$3"
|
||||||
|
|
||||||
|
code=0
|
||||||
|
for ((i=1; i<=times; i++)); do
|
||||||
|
|
||||||
|
# Run the command
|
||||||
|
eval "$cmd" && code=$? || code=$?
|
||||||
|
|
||||||
|
# Break the loop prematurely?
|
||||||
|
if [[ "$code" == "0" ]]; then
|
||||||
|
break
|
||||||
|
elif [[ "$i" != "1" ]]; then
|
||||||
|
code=3
|
||||||
|
sleep "$delay"
|
||||||
|
else
|
||||||
|
code=3
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
## Error code
|
||||||
|
return $code
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue