Navigation Menu

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

CDRIVER-3665 End-to-end test for OCSP caching #612

Merged
merged 2 commits into from May 20, 2020

Conversation

bazile-clyde
Copy link
Contributor

No description provided.

.evergreen/run-ocsp-cache-test.sh Show resolved Hide resolved
.evergreen/run-ocsp-cache-test.sh Show resolved Hide resolved
fi

# This test will hang after the first ping.
${CDRIVER_BUILD}/src/libmongoc/test-mongoc-cache ${CDRIVER_ROOT}/.evergreen/ocsp/${CERT_TYPE}/ca.pem &
Copy link
Collaborator

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 just exit 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.

Copy link
Contributor Author

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.

Copy link
Collaborator

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

build/evergreen_config_lib/tasks.py Outdated Show resolved Hide resolved
src/libmongoc/tests/test-mongoc-cache.c Show resolved Hide resolved
fi

# This test will hang after the first ping.
${CDRIVER_BUILD}/src/libmongoc/test-mongoc-cache ${CDRIVER_ROOT}/.evergreen/ocsp/${CERT_TYPE}/ca.pem &
Copy link
Collaborator

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

@bazile-clyde bazile-clyde merged commit 45ff8b6 into mongodb:master May 20, 2020
@bazile-clyde bazile-clyde deleted the CDRIVER-3665 branch May 20, 2020 14:49
kevinAlbs pushed a commit to kevinAlbs/mongo-c-driver that referenced this pull request May 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants