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
CDRIVER-3665 End-to-end test for OCSP caching #612
Conversation
465ea17
to
b9ce4e3
Compare
fi | ||
|
||
# This test will hang after the first ping. | ||
${CDRIVER_BUILD}/src/libmongoc/test-mongoc-cache ${CDRIVER_ROOT}/.evergreen/ocsp/${CERT_TYPE}/ca.pem & |
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 wasn't sure how errexit
treats background processes. To check, I created two files:
fail.sh
containing justexit 1
run.sh
containing:
set -o errexit
echo "Start"
./fail.sh &
echo "End (should fail sooner)"
But run.sh
prints both messages.
IIUC, calling wait
on the background process PID may be all that's needed. That returns the exit code of that process. Modifying run.sh
as follows seemed to give the desired behavior:
set -o errexit
echo "Start"
./fail.sh &
child_pid=$!
wait $child_pid
echo "End (should fail sooner)"
With that, it terminated before printing the final 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.
I'm not sure I understand. I think the first example is more in line with the expected behavior since this line doesn't terminate, i.e., return an exit code, in the background. It just hangs while the rest of the scripts continues. The sleep is just there to make sure that it can contact the OCSP responder before we kill the OCSP responder. But the program is still hanging around. Finally, kill will continue the program and return its exit code. If the test program does exit in the background for whatever reason this program still fails. Although I'm not exactly sure how I'd capture the exit status of a background that may either halt indefinitely or return.
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.
Ah I was misunderstanding. I was thinking that if it terminated quickly, the script may quietly pass. But in that case the kill
would fail
fi | ||
|
||
# This test will hang after the first ping. | ||
${CDRIVER_BUILD}/src/libmongoc/test-mongoc-cache ${CDRIVER_ROOT}/.evergreen/ocsp/${CERT_TYPE}/ca.pem & |
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.
Ah I was misunderstanding. I was thinking that if it terminated quickly, the script may quietly pass. But in that case the kill
would fail
No description provided.