diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index aba6bb522..55414080c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -36,6 +36,7 @@ list( APPEND tests1 calendar unit_tests md5 + uerra ) list( APPEND tests2 bufr_dump diff --git a/tests/Makefile.am b/tests/Makefile.am index 271adf3d4..bd0363b01 100755 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -45,6 +45,7 @@ TESTS = definitions.sh \ julian.sh \ statistics.sh \ tigge.sh \ + uerra.sh \ tigge_conversions.sh \ read_any.sh \ padding.sh \ diff --git a/tests/calendar.sh b/tests/calendar.sh index f11d84890..29af98c1c 100755 --- a/tests/calendar.sh +++ b/tests/calendar.sh @@ -18,27 +18,27 @@ sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl ${tools_dir}grib_set -s tablesVersion=13,setCalendarId=1,typeOfCalendar=0 $sample $temp1 -check_key_equals $temp1 calendarIdPresent 1 -check_key_equals $temp1 section1Length 24 -check_key_equals $temp1 calendarIdentificationTemplateNumber 0 -check_key_equals $temp1 typeOfCalendar 0 +grib_check_key_equals $temp1 calendarIdPresent 1 +grib_check_key_equals $temp1 section1Length 24 +grib_check_key_equals $temp1 calendarIdentificationTemplateNumber 0 +grib_check_key_equals $temp1 typeOfCalendar 0 ${tools_dir}grib_set -s tablesVersion=13,setCalendarId=1,calendarIdentificationTemplateNumber=1 $sample $temp1 -check_key_equals $temp1 calendarIdPresent 1 -check_key_equals $temp1 section1Length 25 -check_key_equals $temp1 calendarIdentificationTemplateNumber 1 -check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING +grib_check_key_equals $temp1 calendarIdPresent 1 +grib_check_key_equals $temp1 section1Length 25 +grib_check_key_equals $temp1 calendarIdentificationTemplateNumber 1 +grib_check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING ${tools_dir}grib_set -s tablesVersion=13,setCalendarId=1,calendarIdentificationTemplateNumber=2 $sample $temp1 -check_key_equals $temp1 calendarIdPresent 1 -check_key_equals $temp1 section1Length 26 -check_key_equals $temp1 calendarIdentificationTemplateNumber 2 -check_key_equals $temp1 typeOfCalendar 255 -check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING +grib_check_key_equals $temp1 calendarIdPresent 1 +grib_check_key_equals $temp1 section1Length 26 +grib_check_key_equals $temp1 calendarIdentificationTemplateNumber 2 +grib_check_key_equals $temp1 typeOfCalendar 255 +grib_check_key_equals $temp1 numberOfTensOfThousandsOfYearsOfOffset MISSING # Remove the calendar section ${tools_dir}grib_set -s deleteCalendarId=1 $temp1 $temp2 -check_key_equals $temp2 section1Length 21 -check_key_equals $temp2 calendarIdPresent 0 +grib_check_key_equals $temp2 section1Length 21 +grib_check_key_equals $temp2 calendarIdPresent 0 rm -f $temp1 $temp2 diff --git a/tests/check_gaussian_grids.sh b/tests/check_gaussian_grids.sh index 07f96b57e..cdde04a44 100755 --- a/tests/check_gaussian_grids.sh +++ b/tests/check_gaussian_grids.sh @@ -13,5 +13,5 @@ samples_dir=$ECCODES_SAMPLES_PATH for gg in ${samples_dir}/reduced_gg_* ${samples_dir}/regular_gg_*; do ${tools_dir}grib_check_gaussian_grid $gg >/dev/null - check_key_equals $gg "global" 1 + grib_check_key_equals $gg "global" 1 done diff --git a/tests/global.sh b/tests/global.sh index fc67c1702..bcc3066e1 100755 --- a/tests/global.sh +++ b/tests/global.sh @@ -42,10 +42,10 @@ files_subarea=" for gg in $files_global; do filepath=${data_dir}/$gg - check_key_equals $filepath "global" 1 + grib_check_key_equals $filepath "global" 1 done for gg in $files_subarea; do filepath=${data_dir}/$gg - check_key_equals $filepath "global" 0 + grib_check_key_equals $filepath "global" 0 done diff --git a/tests/neg_fctime.sh b/tests/neg_fctime.sh index 3cbd02c8e..a505429e6 100755 --- a/tests/neg_fctime.sh +++ b/tests/neg_fctime.sh @@ -28,38 +28,38 @@ done ############################ # check input time and date -check_key_equals $input 'dataDate,dataTime' '20080206 1200' +grib_check_key_equals $input 'dataDate,dataTime' '20080206 1200' # Negative step in same day # -------------------------- ${tools_dir}grib_set -s forecastTime=-2 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080206 1000' +grib_check_key_equals $temp 'validityDate,validityTime' '20080206 1000' ${tools_dir}grib_set -s forecastTime=-11 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080206 100' +grib_check_key_equals $temp 'validityDate,validityTime' '20080206 100' ${tools_dir}grib_set -s forecastTime=-12 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080206 0' +grib_check_key_equals $temp 'validityDate,validityTime' '20080206 0' # Negative step previous day # -------------------------- ${tools_dir}grib_set -s forecastTime=-13 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080205 2300' +grib_check_key_equals $temp 'validityDate,validityTime' '20080205 2300' ${tools_dir}grib_set -s forecastTime=-24 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080205 1200' +grib_check_key_equals $temp 'validityDate,validityTime' '20080205 1200' ${tools_dir}grib_set -s forecastTime=-33 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080205 300' +grib_check_key_equals $temp 'validityDate,validityTime' '20080205 300' # Negative step further back # -------------------------- ${tools_dir}grib_set -s forecastTime=-38 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080204 2200' +grib_check_key_equals $temp 'validityDate,validityTime' '20080204 2200' ${tools_dir}grib_set -s forecastTime=-185 $input $temp -check_key_equals $temp 'validityDate,validityTime' '20080129 1900' +grib_check_key_equals $temp 'validityDate,validityTime' '20080129 1900' # Clean up diff --git a/tests/uerra.sh b/tests/uerra.sh new file mode 100755 index 000000000..5e82936c3 --- /dev/null +++ b/tests/uerra.sh @@ -0,0 +1,69 @@ +#!/bin/sh +# Copyright 2005-2016 ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.sh + +REDIRECT=/dev/null + +#set -eax +grib2_sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl +this_test=ecCodes-uerra +tempSample=tempSample.${this_test}.grib2 +temp1=temp1.${this_test}.grib2 +temp2=temp2.${this_test}.grib2 + +test_stream_and_type() +{ + utype=$1 + + if [ "$utype" = "oper" ]; then + pspd=8 + elif [ "$utype" = "test" ]; then + pspd=9 + fi + + ${tools_dir}grib_set -s tablesVersion=15,productionStatusOfProcessedData=$pspd \ + $grib2_sample $tempSample + + grib_check_key_equals $tempSample 'stream,mars.stream' 'oper oper' + + # Check mars model is not set + model=`${tools_dir}grib_get -f -p mars.model $tempSample` + [ "$model" = "not_found" ] + + ${tools_dir}grib_set -s typeOfProcessedData=0 $tempSample $temp1 + grib_check_key_equals $temp1 'mars.type' 'an' + ${tools_dir}grib_set -s typeOfProcessedData=2 $tempSample $temp1 + grib_check_key_equals $temp1 'mars.type' 'fc' + + ${tools_dir}grib_set -s marsStream=enda $tempSample $temp1 # ENSEMBLE + grib_check_key_exists $temp1 'perturbationNumber' + + # All combinations + for mt in an fc; do + for ms in oper enda; do + echo "Testing stream=$ms type=$mt ..." + ${tools_dir}grib_set -s marsStream=$ms,marsType=$mt $tempSample $temp1 + grib_check_key_equals $temp1 'mars.stream,mars.type' "$ms $mt" + + # Param 228228 (accum) and 167 (instant) + ${tools_dir}grib_set -s stepType=accum,paramId=228228 $temp1 $temp2 + grib_check_key_equals $temp2 'stream,type' "$ms $mt" + + ${tools_dir}grib_set -s paramId=167 $temp1 $temp2 + grib_check_key_equals $temp2 'stream,type' "$ms $mt" + done + done +} + +test_stream_and_type 'oper' +test_stream_and_type 'test' + +rm -f $temp1 $temp2 $tempSample diff --git a/tests/utils.sh b/tests/utils.sh index 656a3a8ba..269c89e33 100644 --- a/tests/utils.sh +++ b/tests/utils.sh @@ -15,7 +15,7 @@ set -ea # Check the key(s) in the given grib file have the expected value(s) # Assumes the file has only ONE message otherwise output goes on to # several lines -check_key_equals() +grib_check_key_equals() { file=$1 key=$2 @@ -24,3 +24,10 @@ check_key_equals() [ "$result" = "$val" ] } +grib_check_key_exists() +{ + file=$1 + key=$2 + # grib_get will fail if the key is not found + $tools_dir/grib_get -p $key $file >/dev/null +}