Forked from
Dan Guest / athena
24717 commits behind, 7547 commits ahead of the upstream repository.
-
fixes for ART See merge request atlas/athena!8064 (cherry picked from commit 84abc09b [formerly 00520d021f8a3bb967109d6d813c8da9ea9c64f7]) 8fad0901 fixes for ART Former-commit-id: 6d92ad6328d09d527050d178164eb3992011b012
fixes for ART See merge request atlas/athena!8064 (cherry picked from commit 84abc09b [formerly 00520d021f8a3bb967109d6d813c8da9ea9c64f7]) 8fad0901 fixes for ART Former-commit-id: 6d92ad6328d09d527050d178164eb3992011b012
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
art-task-grid.sh 5.05 KiB
#!/bin/bash
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
#
# NOTE do NOT run with /bin/bash -x as the output is too big for gitlab-ci
#
# Example command lines for three types:
#
# art-task-grid.sh [--no-action --skip-setup] batch <submit_directory> <script_directory> <sequence_tag> <package> <outfile> <job_type> <number_of_tests>
#
# art-task-grid.sh [--no-action --skip-setup] single [--inds <input_file> --n-files <number_of_files> --split <split>] <submit_directory> <script_directory> <sequence_tag> <package> <outfile> <job_name>
#
# env: ART_GRID_OPTIONS
#
# author : Tulay Cuhadar Donszelmann <tcuhadar@cern.ch>
#
# options have to be in-order, and at the correct place
#
# example: [--skip-setup --test-name TestName --inDS user.tcuhadar.SingleMuon... --nFiles 3 --in] tmp /cvmfs/atlas-nightlies.cern.ch/sw/... Tier0ChainTests grid 316236 3 user.${USER}.atlas.${NIGHTLY_RELEASE_SHORT}.${PROJECT}.${PLATFORM}.${NIGHTLY_TAG}.${SEQUENCE_TAG}.${PACKAGE}[.${TEST_NUMBER}]
set -e
echo "art-task-grid.sh executed by $(whoami) on $(date)"
NO_ACTION=0
if [ $1 == "--no-action" ]; then
NO_ACTION=1
shift
echo "NO_ACTION=${NO_ACTION}"
fi
SKIP_SETUP=0
if [ $1 == "--skip-setup" ]; then
SKIP_SETUP=1
shift
echo "SKIP_SETUP=${SKIP_SETUP}"
fi
TYPE=$1
shift
echo "TYPE=${TYPE}"
case ${TYPE} in
'batch')
echo "Running 'batch'"
SPLIT=""
;;
'single')
echo "Running 'single'"
INDS=""
if [ $1 == "--inds" ]; then
INDS="--inDS $2"
shift
shift
fi
NFILES=""
NFILES_PER_JOB=""
if [ $1 == "--n-files" ]; then
NFILES="--nFiles $2"
NFILES_PER_JOB="--nFilesPerJob $2"
shift
shift
fi
SPLIT=""
LARGE_JOB="--long --memory 4096"
if [ $1 == "--split" ]; then
SPLIT="--split $2"
NFILES_PER_JOB=""
LARGE_JOB=""
shift
shift
fi
IN_FILE=""
if [ $1 == "--in" ]; then
IN_FILE="--in=%IN"
shift
fi
;;
*)
echo "Unknown TYPE: ${TYPE}"
exit 1
;;
esac
SUBMIT_DIRECTORY=$1
shift
echo "SUBMIT_DIRECTORY=${SUBMIT_DIRECTORY}"
SCRIPT_DIRECTORY=$1
shift
echo "SCRIPT_DIRECTORY=${SCRIPT_DIRECTORY}"
SEQUENCE_TAG=$1
shift
echo "SEQUENCE_TAG=${SEQUENCE_TAG}"
PACKAGE=$1
shift
echo "PACKAGE=${PACKAGE}"
OUTFILE=$1
shift
echo "OUTFILE=${OUTFILE}"
case ${TYPE} in
'batch')
JOB_TYPE=$1
shift
echo "JOB_TYPE=${JOB_TYPE}"
NUMBER_OF_TESTS=$1
SPLIT="--split ${NUMBER_OF_TESTS}"
shift
echo "NUMBER_OF_TESTS=${NUMBER_OF_TESTS}"
echo "SPLIT=${SPLIT}"
;;
'single')
JOB_NAME=$1
shift
echo "JOB_NAME=${JOB_NAME}"
;;
esac
# general options
PATHENA_OPTIONS="--destSE=CERN-PROD_SCRATCHDISK"
OUT="%OUT.tar"
# we seem to have to copy the env variables locally
GRID_OPTIONS=$ART_GRID_OPTIONS
echo "GRID_OPTIONS=${GRID_OPTIONS}"
if [ ${SKIP_SETUP} -eq 0 ]; then
# maybe not necessary
PLATFORM=${AtlasProject}_PLATFORM
echo "Setting up release: ${!PLATFORM} ${AtlasBuildBranch} ${AtlasBuildStamp} ${AtlasProject} "
USER=artprod
export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase
source $ATLAS_LOCAL_ROOT_BASE/user/atlasLocalSetup.sh || true
export RUCIO_ACCOUNT=artprod
echo "Setting up panda and release"
lsetup panda "asetup --platform=${!PLATFORM} ${AtlasBuildBranch},${AtlasBuildStamp},${AtlasProject}" || true
echo "Setting up panda and release done"
voms-proxy-init --rfc -noregen -cert ./grid.proxy -voms atlas --valid 24:00 || true
echo "Setting up proxy done"
fi
case ${TYPE} in
'batch')
# <script_directory> <sequence_tag> <package> <outfile> <job_type> <job_index>
INTERNAL_COMMAND="grid batch"
JOB_INDEX="%RNDM:0"
ARGS="${JOB_TYPE} ${JOB_INDEX}"
echo "JOB_INDEX=${JOB_INDEX}"
echo "ARGS=${ARGS}"
;;
'single')
# <script_directory> <sequence_tag> <package> <outfile> <job_name>
INTERNAL_COMMAND="grid single"
PATHENA_TYPE_OPTIONS="${LARGE_JOB} ${INDS} ${NFILES} ${NFILES_PER_JOB}"
ARGS="${JOB_NAME}"
echo "PATHENA_TYPE_OPTIONS=${PATHENA_TYPE_OPTIONS}"
echo "ARGS=${ARGS}"
;;
esac
# NOTE: for art-internal.py the current dir can be used as it is copied there
cd ${SUBMIT_DIRECTORY}/${PACKAGE}/run
SUBCOMMAND="./art-internal.py ${INTERNAL_COMMAND} ${IN_FILE} ${SCRIPT_DIRECTORY} ${SEQUENCE_TAG} ${PACKAGE} ${OUT} ${ARGS}"
CMD="pathena ${GRID_OPTIONS} ${PATHENA_OPTIONS} ${PATHENA_TYPE_OPTIONS} --noBuild --expertOnly_skipScout --trf \"${SUBCOMMAND}\" ${SPLIT} --outDS ${OUTFILE} --extOutFile art-job.json"
#--disableAutoRetry
#--excludedSite=ANALY_TECHNION-HEP-CREAM
#--site=ANALY_NIKHEF-ELPROD_SHORT,ANALY_NIKHEF-ELPROD"
#--site=ANALY_FZK,ANALY_BNL,ANALY_RAL"
echo "Command: ${CMD}"
if [ ${NO_ACTION} -ne 1 ]; then
echo "Submitting..."
RESULT=`eval "${CMD}"`
echo ${RESULT}
fi