eccodes/tests/grib_mars_keys2.sh

127 lines
3.1 KiB
Bash
Executable File

#!/bin/sh
# (C) Copyright 2005- 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.ctest.sh
label="grib_mars_keys2_test"
tempOut=temp.${label}.out
tempGrib=temp.${label}.grib
tempRef=temp.${label}.ref
grib1_sample=$ECCODES_SAMPLES_PATH/GRIB1.tmpl
grib2_sample=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl
if [ $ECCODES_ON_WINDOWS -eq 1 ]; then
echo "$0: This test is currently disabled on Windows"
exit 0
fi
# Check lowercase/uppercase
${tools_dir}/grib_set -s class=YT,type=EM,stream=DCWV $grib1_sample $tempGrib
grib_check_key_equals $tempGrib mars.class,mars.type,mars.stream 'yt em dcwv'
grib_check_key_equals $tempGrib marsClass:i,marsType:i,marsStream:i '18 17 1029'
# Check unalias
# -----------------
${tools_dir}/grib_set -s stream=gfas,type=ga $grib2_sample $tempGrib
${tools_dir}/grib_ls -jm $tempGrib > $tempOut
cat > $tempRef << EOF
{ "messages" : [
{
"domain": "g",
"date": 20100912,
"time": 1200,
"expver": "0001",
"class": "od",
"type": "ga",
"stream": "gfas",
"step": 0,
"levelist": 1000,
"levtype": "pl",
"param": 130
}
]}
EOF
diff $tempRef $tempOut
# This combo unaliases mars.levelist and mars.step
${tools_dir}/grib_set -s stream=gfas,type=gsd $grib2_sample $tempGrib
${tools_dir}/grib_ls -jm $tempGrib > $tempOut
cat > $tempRef << EOF
{ "messages" : [
{
"domain": "g",
"date": 20100912,
"time": 1200,
"expver": "0001",
"class": "od",
"type": "gsd",
"stream": "gfas",
"param": 130
}
]}
EOF
diff $tempRef $tempOut
${tools_dir}/grib_dump -Da $grib2_sample > $tempOut
grep -q "g2level level = 1000 .vertical.level, mars.levelist" $tempOut
${tools_dir}/grib_dump -Da $tempGrib > $tempOut
set +e
grep -w levelist $tempOut # dump should not show levelist
status=$?
set -e
[ $status -ne 0 ]
# GRIB1
# This combo unaliases mars.step
${tools_dir}/grib_set -s localDefinitionNumber=31,stream=esmm,type=em $grib1_sample $tempGrib
${tools_dir}/grib_ls -jm $tempGrib > $tempOut
cat > $tempRef << EOF
{ "messages" : [
{
"domain": "g",
"levtype": "pl",
"levelist": 500,
"time": 1200,
"param": 129.128,
"class": "od",
"type": "em",
"stream": "esmm",
"expver": "0001",
"fcmonth": 0,
"date": 0
}
]}
EOF
diff $tempRef $tempOut
# Check all combinations
# ------------------------
i=0
for cfg in $ECCODES_DEFINITION_PATH/mars/grib.*.*.def; do
b=$(basename $cfg)
# Each file should be of the form grib.$stream.$type.def
stream=$(echo $b | awk -F. '{print $2}')
type=$(echo $b | awk -F. '{print $3}')
if [ $type = "fc" -o $type = "an" ]; then
${tools_dir}/grib_set -s stream=$stream,type=$type $grib2_sample $tempGrib
${tools_dir}/grib_ls -m $tempGrib > /dev/null
i=$((i + 1))
fi
done
echo "Checked $i files"
# Clean up
rm -f $tempGrib $tempRef $tempOut