Skip to content

Commit

Permalink
More tests for cnvgrib (#823)
Browse files Browse the repository at this point in the history
* add test file

* more tests for cnvgrib

* cut off top 40 bytes in simple packing comparison

* checking byte cutoff needed to compare simple packing

* Update run_cnvgrib_tests.sh

* added test for error

* new test file

* test conversion to complex packing

* Update CMakeLists.txt

* 2 test files

* more conversion tests

* replacing test file with correct one

* added png test file

* conversion test with png

* Update run_cnvgrib_tests.sh

* more error cases

* Update run_cnvgrib_tests.sh

* replacing and renaming some data files

* fixing files again

* rewriting tests for cleanliness and changing file names to make room for more test cases

* debug byte difference

* debug

* Update run_cnvgrib_tests.sh

* Update run_cnvgrib_tests.sh

* debug test file

* comment out jpeg test

* test file

* more tests

* undo changes

* test files for g22

* g22 tests

* Update run_cnvgrib_tests.sh
  • Loading branch information
AlysonStahl-NOAA authored Feb 13, 2025
1 parent d9af04f commit 98bbfcf
Show file tree
Hide file tree
Showing 16 changed files with 104 additions and 18 deletions.
14 changes: 14 additions & 0 deletions test_utils/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,20 @@ gu_copy_test_data(ref_grid_172.landmask.grib1)
gu_copy_test_data(ref_grid_220.landmask.grib1)
gu_copy_test_data(tocgrib2.nml)
gu_copy_test_data(tocgrib2_bad.nml)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx)
gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx)

if(FTP_TEST_FILES)
message(STATUS "Getting FTP test files...")
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
108 changes: 90 additions & 18 deletions test_utils/run_cnvgrib_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,111 @@
# This is a test script for the NCEPLIBS-grib_util project.
#
# Ed Hartnett, 12/25/21
# Alyson Stahl, 1/29/25

set -e
echo ""
echo "*** Running cnvgrib test"

# Show all options
../utils/cnvgrib -h

# Run with zero arguments
../utils/cnvgrib && exit 2

# Run with incorrect number of arguments
../utils/cnvgrib -g21 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 && exit 2

# Run with no -gxx option
../utils/cnvgrib -p0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 2

# Invalid master table version
../utils/cnvgrib -g21 -mastertable_ver_0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 2

# Invalid input file
../utils/cnvgrib -g21 - test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 3

# Invalid conversion option
../utils/cnvgrib -g11 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 5

# Convert test file to GRIB1.
../utils/cnvgrib -g21 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1

# Generate an inventory of the GRIB1 file.
#../src/wgrib/wgrib test_gdaswave.t00z.wcoast.0p16.f000.grib1 &> test_gdaswave.t00z.wcoast.0p16.f000.grib1.inventory.txt
# Convert GRIB1 output back to GRIB2, create index, and compare to expected output
# First 120 bytes contain differences, so ignore them.

# Simple packing
../utils/cnvgrib -g12 -p0 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx

# Complex Packing
../utils/cnvgrib -g12 -p2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx

# Complex Packing w/ primary missing values
../utils/cnvgrib -g12 -p2 -m test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx

# Complex Packing w/ no explicit missing values included
../utils/cnvgrib -g12 -p2 -m0 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx

# Complex Packing w/ 1st order diffs
../utils/cnvgrib -g12 -p31 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx

# Complex Packing w/ 2nd order diffs
../utils/cnvgrib -g12 -p32 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx

# PNG Packing
../utils/cnvgrib -g12 -p41 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx

# Convert GRIB2 to GRIB2, create index, and compare to expected output
# First 120 bytes contain differences, so ignore them.

# Check against expected output.
#cmp test_gdaswave.t00z.wcoast.0p16.f000.grib1.inventory.txt data/ref_gdaswave_grib1_inventory.txt
# Simple packing
../utils/cnvgrib -g22 -p0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx

# Convert GRIB1 output back to GRIB2.
../utils/cnvgrib -g12 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.grib2
# Complex Packing
../utils/cnvgrib -g22 -p2 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx

# Create an index of a GRIB2 file.
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib2.idx
# Complex Packing w/ primary missing values
../utils/cnvgrib -g22 -p2 -m data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx

# Check against expected output. First 120 bytes contain differences,
# so ignore them.
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2.idx
# Complex Packing w/ no explicit missing values included
../utils/cnvgrib -g22 -p2 -m0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx

# Convert test file to another GRIB2 file.
../utils/cnvgrib -g22 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2
# Complex Packing w/ 1st order diffs
../utils/cnvgrib -g22 -p31 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx

# Create an index of the new GRIB2 file.
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2.idx
# Complex Packing w/ 2nd order diffs
../utils/cnvgrib -g22 -p32 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx

# Check against expected output. First 120 bytes contain differences,
# so ignore them.
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000_2.grib2.idx
# PNG Packing
../utils/cnvgrib -g22 -p41 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2
../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx
cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx

echo "*** SUCCESS!"
exit 0

0 comments on commit 98bbfcf

Please sign in to comment.