New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 11161 for utils/CI/sette/all_functions.sh – NEMO

Ignore:
Timestamp:
2019-06-20T18:55:23+02:00 (5 years ago)
Author:
mathiot
Message:

merge fix_sette_ticket2239 : major simplification/improvement of SETTE (see README.rst for all the details), tested with the latest version of the trunk (r11160) (ticket #2239)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • utils/CI/sette/all_functions.sh

    r10632 r11161  
    9090usage=" Usage : set_namelist input_namelist variable_name value" 
    9191usage=" if value is a string ths is neede syntax : ./set_namelist namelist_name var_name \"new_value\" " 
     92 
     93# define validation dir 
     94set_valid_dir () { 
     95    LANG=en_US 
     96    REVISION_NB=`LC_MESSAGES=${LANG} ${SVN_CMD} info ${SETTE_DIR}/.. | grep "Last Changed Rev" | awk '{print $NF}'` 
     97    if [ ${#REVISION_NB} -eq 0 ] 
     98    then 
     99        echo "some problems with ${SVN_CMD} info command" 
     100        echo "some problems with ${SVN_CMD} info command" >> ${SETTE_DIR}/output.sette 
     101        REVISION_NB=`date +%Y%m%d` 
     102        echo "put in ${REVISION_NB} date" 
     103        echo "put in ${REVISION_NB} date" >> ${SETTE_DIR}/output.sette 
     104    else 
     105    echo "value of revision number of NEMOGCM: ${REVISION_NB}" 
     106    fi 
     107    [ `${SVN_CMD} status -q ${SETTE_DIR}/../{cfg,tests,src} | wc -l` -ge 1 ] && REVISION_NB=${REVISION_NB}+ 
     108    NEMO_VALID=${NEMO_VALIDATION_DIR}/W${NEW_CONF}/${CMP_NAM}/${REVISION_NB}/${TEST_NAME} 
     109} 
     110 
     111# clean valid dir (move old ocean_output/run.stat and tracer to avoid checking them in case something wrong happen. 
     112clean_valid_dir () { 
     113#   set_valid_dir # already done in sette_ref/sette_test 
     114   echo "validation directory is : $NEMO_VALID" 
     115   if [ -d $NEMO_VALID ] ; then 
     116      [ -f ${NEMO_VALID}/ocean.output ] && mv ${NEMO_VALID}/ocean.output ${NEMO_VALID}/ocean.output_old 
     117      [ -f ${NEMO_VALID}/run.stat ]     && mv ${NEMO_VALID}/run.stat     ${NEMO_VALID}/run.stat_old 
     118      [ -f ${NEMO_VALID}/tracer.stat ]  && mv ${NEMO_VALID}/tracer.stat  ${NEMO_VALID}/tracer.stat_old 
     119   fi 
     120} 
    92121 
    93122# function to set namelists parameters 
     
    141170   fi 
    142171 
    143         sed -e "s:${VAR_NAME}.*:${VAR_NAME}:" ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
     172        ARGS_LST="${@:3}" 
     173        sed -e "s;${VAR_NAME}.*;${VAR_NAME};" ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
    144174        mv ${EXE_DIR}/$1.tmp ${EXE_DIR}/$1 
    145         sed -e "s:${VAR_NAME}:$2=$3:"  ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
     175        sed -e "s;${VAR_NAME};$2=${ARGS_LST};"  ${EXE_DIR}/$1 > ${EXE_DIR}/$1.tmp 
    146176        mv ${EXE_DIR}/$1.tmp ${EXE_DIR}/$1 
    147177 
     
    154184# function to tidy up after each test and populate the NEMO_VALIDATION store 
    155185post_test_tidyup () { 
     186# Save current exit status of caller script  
     187    RUN_STATUS=$?  
     188    echo "Exit status: ${RUN_STATUS}"  
    156189# 
    157190# requires the following variables defined and exported from the calling script: 
     
    168201echo "EXECUTION directory is : ${EXE_DIR}" 
    169202echo "CONFIG directory is : ${CONFIG_DIR}" 
    170 echo "VALIDATION directory is : ${NEMO_VALIDATION_DIR}" 
     203echo "VALIDATION directory is : ${NEMO_VALID}" 
    171204echo "NEW CONFIGURATION is : ${NEW_CONF}" 
    172205echo "COMPILER is : ${CMP_NAM}" 
     
    175208################################################################ 
    176209# SMALL DEBUG 
     210    EXIT_STATUS=${RUN_STATUS} 
    177211    if [ ! -r ${EXE_DIR}/ocean.output ] 
    178212        then 
    179213        grep "E R R O R" ${EXE_DIR}/ocean.output && echo "Some ERRORS at execution time, see ${EXE_DIR}/ocean.output" 
    180         exit 2 
     214        EXIT_STATUS=2 
     215        # exit 2 Error now catch in the report  
    181216    fi 
    182217 
     
    185220        echo "file time.step does not exist"   >> ${SETTE_DIR}/output.sette 
    186221        echo "some problems during execution of model"  >> ${SETTE_DIR}/output.sette  
    187         exit 1 
     222        EXIT_STATUS=1 
     223        # exit 1 Error now catch in the report 
    188224    else 
    189225        echo "file time.step exists"  >> ${SETTE_DIR}/output.sette 
     
    194230 
    195231################################################################ 
     232# 
    196233# Creation of NEMO_VALIDATION tree 
    197     export LANG=en_US  
    198     REVISION_NB=`svn info ${SETTE_DIR}/../.. | grep -i "Last Changed Rev:" | sed -e "s/ //g" | cut -d ":" -f 2` 
    199     if [ ${#REVISION_NB} -eq 0 ] 
    200     then 
    201       echo "some problems with svn info command" 
    202       echo "some problems with svn info command" >> ${SETTE_DIR}/output.sette 
    203       REVISION_NB=`date +%Y%m%d` 
    204       echo "put in ${REVISION_NB} date" 
    205       echo "put in ${REVISION_NB} date" >> ${SETTE_DIR}/output.sette 
    206     else 
    207     echo "value of revision number of NEMOGCM: ${REVISION_NB}" 
    208     fi 
    209     cd ${NEMO_VALIDATION_DIR} 
    210     `mkdir -p ${NEMO_VALIDATION_DIR}/W${NEW_CONF}/${CMP_NAM}/${REVISION_NB}/${TEST_NAME}` 
    211     NEMO_VALID=${NEMO_VALIDATION_DIR}/W${NEW_CONF}/${CMP_NAM}/${REVISION_NB}/${TEST_NAME} 
    212     if [ -d ${NEMO_VALID} ] ; then 
    213    echo "created ${NEMO_VALID} directory"   >> ${SETTE_DIR}/output.sette 
     234#    set_valid_dir already done in sette_reference_config 
     235    mkdir -p ${NEMO_VALIDATION_DIR} 
     236    if [ -d ${NEMO_VALIDATION_DIR} ] ; then 
     237   echo "created ${NEMO_VALIDATION_DIR} directory"   >> ${SETTE_DIR}/output.sette 
    214238    else  
    215    echo "problems in creating ${NEMO_VALID} directory"   >> ${SETTE_DIR}/output.sette 
     239   echo "problems in creating ${NEMO_VALIDATION_DIR} directory"   >> ${SETTE_DIR}/output.sette 
    216240   echo "EXIT," 
    217241   exit 1 
    218242    fi 
    219     # Save output & debug files in NEMO_VALIDATION tree 
     243#  
     244# Exit before populating validation directory if the model run has  
     245# returned a non-zero exit status  
     246# On CRAY NEMO exit is not the expected 999 or 123456 (let this bloc in case useful later on). 
     247#    case ${EXIT_STATUS} in 
     248#        0|123456|999) echo " NEMO finished with exit code $EXIT_STATUS " ; post_test_tidyup ;; 
     249#        *) echo " NEMO abort on an unexpected error (segmentation fault or whatever) $EXIT_STATUS " 
     250#    esac 
     251 
     252    [ ${EXIT_STATUS} -ne 0 ] && exit ${EXIT_STATUS}   
     253# 
     254# Save output & debug files in NEMO_VALIDATION tree 
    220255    echo "saving ocean & ice output, run.stat, tracer.stat files ...." >> ${SETTE_DIR}/output.sette 
    221256    echo "            " >> ${SETTE_DIR}/output.sette 
    222     [ -f ${EXE_DIR}/ocean.output ] && cp ${EXE_DIR}/*ocean.output ${NEMO_VALID}/. 
    223     [ -f ${EXE_DIR}/run.stat ] && cp ${EXE_DIR}/*run.stat ${NEMO_VALID}/. 
    224     [ -f ${EXE_DIR}/output.namelist.dyn ] && cp ${EXE_DIR}/*output.nam* ${NEMO_VALID}/. 
    225     [ -f ${EXE_DIR}/tracer.stat ] && cp ${EXE_DIR}/*tracer.stat ${NEMO_VALID}/. 
    226  
    227     if [ -n "$(ls ${NEMO_VALID}/*run*)" ] ; then 
    228    echo "moved run.stat in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
    229    echo "moved run.stat in ${NEMO_VALID} directory"   
     257    [ -f ${EXE_DIR}/ocean.output ] && cp ${EXE_DIR}/*ocean.output ${NEMO_VALIDATION_DIR}/. 
     258    [ -f ${EXE_DIR}/run.stat ] && cp ${EXE_DIR}/*run.stat ${NEMO_VALIDATION_DIR}/. 
     259    [ -f ${EXE_DIR}/output.namelist.dyn ] && cp ${EXE_DIR}/*output.nam* ${NEMO_VALIDATION_DIR}/. 
     260    [ -f ${EXE_DIR}/tracer.stat ] && cp ${EXE_DIR}/*tracer.stat ${NEMO_VALIDATION_DIR}/. 
     261 
     262    if [ -n "$(ls ${NEMO_VALIDATION_DIR}/*run*)" ] ; then 
     263   echo "moved run.stat in ${NEMO_VALIDATION_DIR} directory"  >> ${SETTE_DIR}/output.sette 
     264   echo "moved run.stat in ${NEMO_VALIDATION_DIR} directory"   
    230265    else 
    231    echo "problem in looking for run.stat file in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
    232    echo "run.stat IS NOT in ${NEMO_VALID} directory"  
    233     fi 
    234     if [ -n "$(ls ${NEMO_VALID}/*ocean.output*)" ] ; then 
    235    echo "moved ocean.output in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
    236    echo "moved ocean.output in ${NEMO_VALID} directory"  
     266   echo "problem in looking for run.stat file in ${NEMO_VALIDATION_DIR} directory"  >> ${SETTE_DIR}/output.sette 
     267   echo "run.stat IS NOT in ${NEMO_VALIDATION_DIR} directory"  
     268    fi 
     269    if [ -n "$(ls ${NEMO_VALIDATION_DIR}/*ocean.output*)" ] ; then 
     270   echo "moved ocean.output in ${NEMO_VALIDATION_DIR} directory"  >> ${SETTE_DIR}/output.sette 
     271   echo "moved ocean.output in ${NEMO_VALIDATION_DIR} directory"  
    237272    else 
    238    echo "problem in looking for ocean.output file in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
    239    echo "ocean.output IS NOT in ${NEMO_VALID} directory"  
    240     fi 
    241     if [ -n "$(ls ${NEMO_VALID}/*tracer.stat*)" ] ; then 
    242         echo "moved tracer.stat in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
    243         echo "moved tracer.stat in ${NEMO_VALID} directory" 
     273   echo "problem in looking for ocean.output file in ${NEMO_VALIDATION_DIR} directory"  >> ${SETTE_DIR}/output.sette 
     274   echo "ocean.output IS NOT in ${NEMO_VALIDATION_DIR} directory"  
     275    fi 
     276    if [ -n "$(ls ${NEMO_VALIDATION_DIR}/*tracer.stat*)" ] ; then 
     277        echo "moved tracer.stat in ${NEMO_VALIDATION_DIR} directory"  >> ${SETTE_DIR}/output.sette 
     278        echo "moved tracer.stat in ${NEMO_VALIDATION_DIR} directory" 
    244279    else 
    245         echo "problem in looking for tracer.stat file in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
    246         echo "tracer.stat IS NOT in ${NEMO_VALID} directory" 
     280        echo "problem in looking for tracer.stat file in ${NEMO_VALIDATION_DIR} directory"  >> ${SETTE_DIR}/output.sette 
     281        echo "tracer.stat IS NOT in ${NEMO_VALIDATION_DIR} directory" 
    247282    fi 
    248283} 
Note: See TracChangeset for help on using the changeset viewer.