-
Notifications
You must be signed in to change notification settings - Fork 25
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
[VC-37264] Update E2E test to check for certificate in the API #629
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -195,7 +195,40 @@ kubectl -n team-1 wait certificate app-0 --for=condition=Ready | |
# Parse logs as JSON using jq to ensure logs are all JSON formatted. | ||
# Disable pipefail to prevent SIGPIPE (141) errors from tee | ||
# See https://unix.stackexchange.com/questions/274120/pipe-fail-141-when-piping-output-into-tee-why | ||
set +o pipefail | ||
kubectl logs deployments/venafi-kubernetes-agent \ | ||
--follow \ | ||
--namespace venafi \ | ||
| timeout 60 jq 'if .msg | test("Data sent successfully") then . | halt_error(0) end' | ||
set -o pipefail | ||
|
||
# Create a unique TLS Secret and wait for it to appear in the Venafi certificate | ||
# inventory API. The case conversion is due to macOS' version of uuidgen which | ||
# prints UUIDs in upper case, but DNS labels need lower case characters. | ||
commonname="venafi-kubernetes-agent-e2e.$(uuidgen | tr '[:upper:]' '[:lower:]')" | ||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/tls.key -out /tmp/tls.crt -subj "/CN=$commonname" | ||
kubectl create secret tls "$commonname" --cert=/tmp/tls.crt --key=/tmp/tls.key -o yaml --dry-run=client | kubectl apply -f - | ||
|
||
getCertificate() { | ||
jq -n '{ | ||
"expression": { | ||
"field": "subjectCN", | ||
"operator": "MATCH", | ||
"value": $commonname | ||
}, | ||
"ordering": { | ||
"orders": [ | ||
{ "direction": "DESC", "field": "certificatInstanceModificationDate" } | ||
] | ||
}, | ||
"paging": { "pageNumber": 0, "pageSize": 10 } | ||
}' --arg commonname "${commonname}" \ | ||
| curl "https://${VEN_API_HOST}/outagedetection/v1/certificatesearch?excludeSupersededInstances=true&ownershipTree=true" \ | ||
-fsSL \ | ||
-H "tppl-api-key: $VEN_API_KEY" \ | ||
--json @- \ | ||
| jq 'if .count == 0 then . | halt_error(1) end' | ||
} | ||
|
||
# Wait 5 minutes for the certificate to appear. | ||
for ((i=0;;i++)); do if getCertificate; then exit 0; fi; sleep 30; done | timeout -v -- 5m cat | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I didn't realise that you can pipe into the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Neat. I didn't know this trick. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd accidentally removed this pipefail trick in #596
and it resulted in the test always exiting with a 141 status.
I've restored it here so that the new shell lines can run after the "Data sent successfully" message.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for fixing this! I was seeing this 141 exit code without really paying attention to it since it said "Data sent successfully" 😅