-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
[DQM] Added a new test for ROOT file uploads to DQMGUI #46551
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 |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/bin/env bash | ||
# Simple test to use one of the files generated by TestDQMServicesDemo test | ||
# to upload it to the dev DQMGUI, making sure that the ROOT file format generated | ||
# is compatible. See cmssw issue #43590. | ||
# Requires curl and jq to be installed. Also requires either a Grid key and certificate, | ||
# or a proxy to be available. | ||
set -x | ||
set -e | ||
|
||
DEV_DQMGUI_URL="https://cmsweb.cern.ch/dqm/dev" | ||
# Create a unique fake "Era", so that different executions of this test | ||
# produce differently named files. This is required, because this test might pass | ||
# if it's checking a file that was successfully uploaded during a previous | ||
# instance of the same test. | ||
UNIQUE_ERA_ID=$(date -u +%Y%m%d%M%S%N) | ||
OLD_FILENAME=DQM_V0001_R000000001__Harvesting__DQMTests__DQMIO.root | ||
NEW_FILENAME=${OLD_FILENAME/DQMTests/DQMTests${UNIQUE_ERA_ID}} | ||
|
||
# Make sure the required file exists. We expect to find it in the current directory. | ||
if [ ! -f $OLD_FILENAME ]; then | ||
echo "Unable to find required file ${OLD_FILENAME}!" | ||
exit 1 | ||
fi | ||
|
||
# Prepare curl args | ||
curl_args="" | ||
if [ -n "$X509_CERT_DIR" ]; then | ||
curl_args="${curl_args} --capath ${X509_CERT_DIR}/" | ||
else | ||
curl_args="${curl_args} -k" | ||
fi | ||
if [ -n "$X509_USER_PROXY" ]; then | ||
curl_args="${curl_args} --key ${X509_USER_PROXY} --cert ${X509_USER_PROXY}" | ||
elif [ -n "$X509_USER_KEY" ] && [ -n "$X509_USER_CERT" ]; then | ||
curl_args="${curl_args} --key ${X509_USER_KEY} --cert ${X509_USER_CERT}" | ||
elif [ -f $HOME/.globus/usercert.pem ] && [ -f $HOME/.globus/userkey.pem ]; then | ||
curl_args="${curl_args} --key $HOME/.globus/userkey.pem --cert $HOME/.globus/usercert.pem" | ||
else | ||
echo "Unable to find proxy or key/cert env vars, cannot continue" | ||
exit 1 | ||
fi | ||
|
||
# Make a copy with a filename that conforms to the naming convention required by DQMGUI. | ||
rm -f "$NEW_FILENAME" | ||
cp $OLD_FILENAME "$NEW_FILENAME" | ||
|
||
# Upload the file to the DQMGUI | ||
visDQMUpload.py "$DEV_DQMGUI_URL" "$NEW_FILENAME" | ||
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. For my education: will these files be indexed and stored permanently? Do we risk to eventually run out of db space if this is going to run twice a day times N IBs flavours for the foreseable future? Also do we risk to take down a production GUI with some kind of DDoS if some user inadvertenly runs this test multiple times? Sorry for the naive questions! 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.
Yes.
Yes, but this happens anyway for the dev flavor, since all CMSSW automated tests upload there all their files, which is why we clean it up every now and then. AFAIK no one will check for the tests of very old CMSSW PRs.
This test (same as all tests by cmsbuild) is uploading to 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.
If it's used for the PR tests, it's "production" in some sense. But ok if you already clean it up regularly I think it's fine, thanks for the explanation. |
||
|
||
# Wait for a bit for the file to be imported into the DQMGUI's index. | ||
# The currently used file is very small and expected to be ingested quickly, | ||
# but better safe than sorry. | ||
SECONDS_TO_WAIT=600 | ||
# Reset shell's internal SECONDS var. | ||
SECONDS=0 | ||
|
||
while true; do | ||
# Wait for the dataset to appear in the /json/samples endpoint. It might take a while. | ||
if curl -sL $curl_args "${DEV_DQMGUI_URL}/data/json/samples?match=DQMTests${UNIQUE_ERA_ID}" | jq .samples[0].items[0].dataset | grep -q "$UNIQUE_ERA_ID"; then | ||
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. @smuzaffar |
||
exit 0 | ||
fi | ||
|
||
sleep 10 | ||
# Timeout after SECONDS_TO_WAIT have passed. | ||
nothingface0 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if [ $SECONDS -ge $SECONDS_TO_WAIT ]; then | ||
exit 1 | ||
fi | ||
done | ||
exit 1 |
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.
@nothingface0 , looks like test is not using
X509_USER_PROXY
. AlthoughX509_USER_PROXY
is set but due to[ -n "$X509_CERT_DIR" ]
check script is not using it. I would suggest to useX509_CERT_DIR
to only add--capath ${X509_CERT_DIR}
and separate condition forX509_USER_PROXY
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.
also may be add
-s
to curl command to avoid curl verbose outputThere 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.
Any better like this?
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.
looks good now