-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a new test for ROOT file uploads to DQMGUI
It uses a ROOT file generated by the TestDQMServicesDemo test and uploads it to the dev DQMGUI. This should cover the case where CMSSW moves to a new ROOT release, which might be incompatible with the one being used at the DQMGUI. Resolves: #43590
- Loading branch information
1 parent
b96fd02
commit bde61fd
Showing
2 changed files
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
#!/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="--capath ${X509_CERT_DIR}/ --key ${X509_USER_PROXY} --cert ${X509_USER_PROXY}" | ||
elif [ -n "$X509_USER_CERT" ] && [ -n "$X509_USER_CERT" ]; then | ||
curl_args="--capath ${X509_CERT_DIR}/ --key ${X509_USER_KEY} --cert ${X509_USER_CERT}" | ||
elif [ -f $HOME/.globus/usercert.pem ] && [ -f $HOME/.globus/userkey.pem ]; then | ||
curl_args="-k --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" | ||
|
||
# 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 -L $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 | ||
exit 0 | ||
fi | ||
|
||
sleep 1 | ||
# Timeout after SECONDS_TO_WAIT have passed. | ||
if [ $SECONDS -ge $SECONDS_TO_WAIT ]; then | ||
exit 10 | ||
fi | ||
done | ||
exit 1 |