- Timestamp:
- 2015-10-12T20:28:35+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5092_CNRS18_TRUST/NEMOGCM/TRUST/trusting.sh
r5761 r5788 6 6 ## Set defaults 7 7 ##--------------------------------------------------- 8 NEMO_TRUS=$PWD 9 DEBUG=0; PUBLISH=0 10 IMOD=0; ST='FAILED' ## No modules system & 'FAILED' status 11 SVN_CMD='svn status' ## No update on directories 12 trus_help='trusting_help.txt' 8 DBG=0; PROD=0; HELP=0 9 TRUS_DIR=$PWD; TRUS_RSLT='FAILED'; SVN_CMD='svn status' # ('FAILED' result & no update on directories) 10 xios_mode='--full'; stdout_redir='>&' 11 revi=$( svn info | awk '(NR == 9) {print $NF}' ) 13 12 14 13 … … 16 15 ##--------------------------------------------------- 17 16 while [ $# -ne 0 ]; do 18 19 17 case $1 in 20 '-a'|'--archive') NEMO_TARF=$2 ; shift 2;; '-b'|'--branch ') NEMO_BRAN=$2; shift 2;;21 '-d'|'--debug ') set -vx; DEBUG=1; shift ;; '-e'|'--email ') EMAIL=$2; shift 2;;22 '-j'|'--job ') NPROC=$2 ; shift 2;; '-h'|'--help ') cat ${help_file}; exit 1;;23 '-m'|'--machine') NEMO_HPCC=$2 ; shift 2;; '-n'|'--newconf') TEST_CONF=$2; shift 2;;24 '-r'|'--refconf') REFE_CONF=$2 ; shift 2;; '-t'|'--time ') TIME_LIMI=$2; shift 2;;25 '-p'|'--p ublish') PUBLISH=1 ; shift ;; '-u'|'--user ') NEMO_USER=$2; shift 2;;26 '-v'|'--version') NEMO_VERS=$2 ; shift 2;; "*" ) cat ${help_file}; exit 1;;18 '-a'|'--archive') TRUS_TARF=$2 ; shift 2;; '-b'|'--branch' ) TRUS_WKCY=$2; shift 2;; 19 '-d'|'--debug' ) set -vx; DBG=1; shift ;; '-e'|'--email' ) TRUS_MAIL=$2; shift 2;; 20 '-j'|'--job' ) TRUS_NPRO=$2 ; shift 2;; '-h'|'--help' ) HELP=1 ; shift ;; 21 '-m'|'--machine') TRUS_HPCC=$2 ; shift 2;; '-n'|'--newconf') TRUS_TEST=$2; shift 2;; 22 '-r'|'--refconf') TRUS_REFE=$2 ; shift 2;; '-t'|'--time' ) TIMEOUT=$2 ; shift 2;; 23 '-p'|'--prod' ) PROD=1 ; shift ;; '-u'|'--user' ) TRUS_USER=$2; shift 2;; 24 '-v'|'--version') TRUS_VERS=$2 ; shift 2;; "*" ) HELP=1 ; shift ;; 27 25 esac 28 29 26 done 30 27 31 ## DEBUG options to speed up & expand verbosity of compilation32 xios_full='--full'; stderr_redir='>&'33 [ $DEBUG -eq 1 ] && { xios_full=''; stderr_redir='>'; }34 28 35 ## If -v|--version option has been set, modify default SVN action on directories 36 if [ $( echo ${NEMO_VERS} | grep "HEAD\|up\|update" ) ]; then 37 SVN_CMD='svn update -r HEAD' 38 elif [ $( echo ${NEMO_VERS} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' ) ]; then 39 SVN_CMD='svn update -r '$( echo ${NEMO_VERS} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' ) 40 elif [ $( echo ${NEMO_VERS} | grep -o '[0-9]*' ) ]; then 41 SVN_CMD='svn update -r '$( echo ${NEMO_VERS} | grep -o '[0-9]*' ) 42 fi 29 ## Initialization (HPC & user environment) 30 ##--------------------------------------------------- 31 if [[ ! $( find config -name ${TRUS_USER}'.cfg' && find config -name ${TRUS_HPCC}'.cfg' ) || $HELP -eq 1 ]]; then 32 cat trusting_help.txt 43 33 44 45 ## Initialization (super-computer & user environment) 46 ##--------------------------------------------------- 47 if [[ ! -z "${NEMO_HPCC}" && ! -z "${NEMO_USER}" ]]; then 48 49 if [ ! $( find ${NEMO_TRUS}/config -name ${NEMO_USER}'.cfg' ) ]; then 50 echo 'No configuration file (.cfg) in '${NEMO_TRUS}'/config for '${NEMO_USER} 51 exit 1 52 elif [ ! $( find ${NEMO_TRUS}/config -name ${NEMO_HPCC}'.cfg' ) ]; then 53 echo 'No configuration file (.cfg) in '${NEMO_TRUS}'/config for '${NEMO_HPCC} 54 exit 1 55 else 56 . ${NEMO_TRUS}/trusting.env 34 if [ $HELP -eq 0 ]; then 35 printf "\n\nAt least one configuration file is missing or misspelled: %s.cfg %s.cfg" \ 36 ${TRUS_USER} ${TRUS_HPCC} 57 37 fi 58 38 39 printf "\n\nContent of config folder:" 40 find config -name *.cfg | cut -d/ -f2 | xargs -n 3 printf "%-30s\t%-30s\t%-30s\n" 41 exit 1 59 42 else 60 cat ${NEMO_TRUS}/${trus_help} 61 exit 1 43 . trusting.env && . trusting_func.sh 44 45 ## DEBUG options to speed up & expand verbosity of compilation 46 [ $DBG -eq 1 ] && { xios_mode=''; stdout_redir='>'; } 47 48 ## If -v|--version option has been set, modify default SVN action on directories 49 if [ $( echo ${TRUS_VERS} | grep "HEAD\|up\|update" ) ]; then 50 SVN_CMD='svn update -r HEAD' 51 elif [ $( echo ${TRUS_VERS} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' ) ]; then 52 SVN_CMD='svn update -r '$( echo ${TRUS_VERS} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' ) 53 elif [ $( echo ${TRUS_VERS} | grep -o '[0-9]*' ) ]; then 54 SVN_CMD='svn update -r '$( echo ${TRUS_VERS} | grep -o '[0-9]*' ) 55 fi 56 62 57 fi 63 64 . ./trusting_func.sh65 58 66 59 67 60 ## Display contextual summary of trusting test 68 61 ##--------------------------------------------------- 69 echo 'NEMO Trusting test:' 70 echo '-------------------' 71 echo 'Testing '${TEST_CONF}' based on '${REFE_CONF}' from '${NEMO_BRAN} 72 echo 'NEMO installation: '${NEMO_USER} 73 echo 'Computing architecture: '${NEMO_HPCC} 74 echo 'Trusting SVN version: '$( svn info | awk '(NR == 9) {print $NF}' ) 62 echo 63 cat banner.txt 64 echo 65 echo '****************************************************************************************************' 66 echo '* *' 67 echo '* NEMO Trusting (Continuous Integration Tool) *' 68 echo "* ver.$revi *" 69 echo '* *' 70 echo '****************************************************************************************************' 71 echo 72 echo ' - Testing configuration '${TRUS_TEST}' based on '${TRUS_REFE} 73 echo ' - Working copy '${TRUS_WKCY} 74 echo ' - Benchmark folder '${TRUS_BHMK} 75 echo ' - (Super)Computer '${TRUS_HPCC} 76 echo ' - User installation '${TRUS_USER} 77 echo 75 78 76 79 … … 78 81 ##--------------------------------------------------- 79 82 print_step 'Timestamped testing directory' 80 mkdir -p ${TEST_DIR} ${ REFE_DIR}83 mkdir -p ${TEST_DIR} ${TRUS_BHMK} 81 84 cd ${TEST_DIR} && echo ${TEST_DIR} 82 85 init_files … … 92 95 ## Check softwares versions (after sourced arch environment) 93 96 ##--------------------------------------------------- 94 print_step 'Get softwares releases' 95 [ -e ${ARCH_ENV} ] && . ${ARCH_ENV} > /dev/null 96 [ $? -eq 0 ] && export IMOD=1 97 print_step 'Get testing environement' 97 98 get_soft_rel 98 99 cat model.log 100 env | sort > env.log 99 101 100 102 … … 103 105 print_step 'Compile XIOS' 104 106 cd ${DIR_XIOS} 105 eval ./make_xios ${xios_ full} --arch ${NEMO_HPCC} --job $NPROC\106 ${std err_redir} /dev/null107 eval ./make_xios ${xios_mode} --arch ${TRUS_HPCC} --job ${TRUS_NPRO} \ 108 ${stdout_redir} /dev/null 107 109 [ ! -e lib/libxios.a ] && get_out 1 || echo 'Success' 108 110 … … 110 112 ## NEMO compilation from scratch 111 113 ##--------------------------------------------------- 112 print_step "Compile ${ REFE_CONF} configuration"113 cd ${ NEMO_CONF}114 [[ -d ${T EST_CONF} && $DEBUG -eq 0 ]] && ./makenemo -n ${TEST_CONF} clean_config \114 print_step "Compile ${TRUS_REFE} configuration" 115 cd ${TRUS_WKCY}/CONFIG 116 [[ -d ${TRUS_TEST} && $DBG -eq 0 ]] && ./makenemo -n ${TRUS_TEST} clean_config \ 115 117 > /dev/null <<EOF 116 118 y 117 119 EOF 118 120 119 eval ./makenemo -n ${T EST_CONF} -r ${REFE_CONF} -m ${NEMO_HPCC} -j $NPROC\120 ${KEYS_ADD} ${KEYS_DEL} \121 ${std err_redir} /dev/null122 [ ! -e ${T EST_CONF}/BLD/bin/nemo.exe ] && get_out 2 || echo 'Success'121 eval ./makenemo -n ${TRUS_TEST} -r ${TRUS_REFE} -m ${TRUS_HPCC} -j ${TRUS_NPRO} \ 122 ${KEYS_ADD} ${KEYS_DEL} \ 123 ${stdout_redir} /dev/null 124 [ ! -e ${TRUS_TEST}/BLD/bin/nemo.exe ] && get_out 2 || echo 'Success' 123 125 124 126 … … 127 129 print_step 'Set job (copying or extracting inputs)' 128 130 cd ${TEST_DIR} 129 cp ${NEMO_CONF}/${TEST_CONF}/cpp_* .130 find ${ NEMO_CONF}/${TEST_CONF}/EXP00 -regex '.*\(_cfg\|.in\|opa\|_ref\|.xml\)' \131 -exec cp {} . \;131 cp ${TRUS_WKCY}/CONFIG/${TRUS_TEST}/cpp_* . 132 find ${TRUS_WKCY}/CONFIG/${TRUS_TEST}/EXP00 -regex '.*\(_cfg\|.in\|opa\|_ref\|.xml\)' \ 133 -exec cp {} . \; 132 134 get_inputs 133 135 [ $? -ne 0 ] && get_out 3 || echo 'Success' … … 137 139 ## Check inputs 138 140 ##--------------------------------------------------- 139 print_step 'Compare inputs to benchmark files'141 print_step 'Compare inputs' 140 142 diff_inputs 141 143 … … 151 153 152 154 153 ## Check job state & get comput ing timeif succeeded155 ## Check job state & get computation performances if succeeded 154 156 ##--------------------------------------------------- 155 157 print_step 'Test job state' 156 158 [[ ! -e time.step || $( grep 'E R R O R' ocean.output ) ]] && get_out 5 || echo 'Success' 157 print_step 'Get real CPU time' 158 get_cpu_time 159 print_step 'Get job performances' 160 get_time 161 get_memy 159 162 160 163 161 164 ## Check outputs 162 165 ##--------------------------------------------------- 163 ST='OK' ## 'OK' by default164 print_step 'Compare new outputs to benchmark files'166 TRUS_RSLT='OK' ## 'OK' by default 167 print_step 'Compare outputs' 165 168 diff_results 166 print_step 'Compare new restarts to benchmark files'169 print_step 'Compare restarts' 167 170 diff_restart 168 [ $ ST == 'FAILED' ] && get_out 8171 [ $TRUS_RSLT == 'FAILED' ] && get_out 8 169 172 170 173
Note: See TracChangeset
for help on using the changeset viewer.