Merged from HDF5 trunk r21237.
Add test cases for HDFFV-7656 - "--delta=something" considers two NaN of the same type are different.
The fix was added (r21105) before but test cases were incorrectly added and missing for cmake script.
Tested:
jam (linux32-LE), koala (linux64-LE), tejeda (mac32-LE), cmake (jam)
Merged from HDF5 trunk r21105
Fixed two bugs:
- h5repack: h5repack failed to copy dataset if the layout is changed from c
hunked with unlimited dims to contiguous. (PC -- 2011/07/15)
- h5diff: "--delta" option considers two NaN of the same type are different
, which is wrong based on http://www.hdfgroup.org/HDF5/doc/RM/Tools.html#Tools-Diff. (PC -- 2011/07/15)
Tested:
jam (linux32-LE), koala (linux64-LE), heiwa (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE)
Work for HDFFV-7600 - GMQS: h5diff - argument options -d, -p and --use-system-epsilon should be mutually exclusive.
Description:
Merge from HDF5 trunk r21072.
Fixed h5diff to display instructive error message and exit with 1
when mutually exclusive options (-d, -p and --use-system-epsilon)
are used together.
Tested:
jam (linux32-LE), koala (linux64-LE), heiwa (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE), Cmake (jam)
Work for HDFFV-7602 - HDF5 command tools: Provide framework for reusable
test files among tools
Description:
Merged from HDF5 trunk r21057
Provide framework to share test files among tools for tools test.
Tested:
jam (linux32-LE), koala (linux64-LE), heiwa (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE)
Test scripts sometimes need to filter some system-specific messages from the
actual output so that it can match the correct expected output. These filtering
functions, ususally called "STDOUT_FILTER()" and "STDERR_FILTER()" were being
repeated in individual test scripts. This becomes a maintenance problem and
is error prone.
Solution:
Extract the two filter functions code to bin/output_filter.sh and then each
test script sources it in. This allows reuse of coding and is much easier to
maintain and to add new filtering.
Tested:
LLNL Zeus (linux64 cluster) and Dawndev (Blue-Gene cluster), both for serial
mode only.
- HDFFV-5928 - GMQS: h5diff problem and improvement on comparsing the same objects
Description:
Merged from HDF5 trunk r20676.
Fixed:
1) adding h5tools_is_obj_same() function to check if two given IDs or paths point to the same object. This function can be very useful for other tools and applications.
2) using h5tools_is_obj_same() at h5diff() and diff() in h5diff.c. If two paths point to the same object, there is no need to check the details of the object since we know there is no difference. The fix will increase the performance by skipping the content comparison. It also fixed the problem of reporting difference for some cases of comparing the same file, e.g. empty files or files with incomparable objects the same file.
Test update:
Updat prvious test cases (171, 172, 530) affected by this fix, so they
still perfrom originally intended testing without bypassing.
Tested:
jam (linux32-LE), koala (linux64-LE), heiwa (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE), cmake
dawndev mpirun issued diagnose messages to stderr if program exit non-zero.
The messages messed up the matching with expected output.
Added a filter to screen out the messages.
Tested: LLNL dawndev
Fixed Bug 2184 - GMQS: h5diff - incorrect calculation code for
--use-system-epsilon option
Description:
Fixed h5diff for --use-system-epsilon option: the calculation changed
from ( |a - b| / b ) to ( |a - b| ). This was decided for better
performance and was corrected only in HDF5 trunk, so 1.8 got updated.
Also comments for equal_XXX() function were updated correctly.
Also help page and RM got updated correctly.
Also add test cases for testing the differences w/wo the option.
Tested:
jam (linux32-LE), amani (linux64-LE), heiwa (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE), Windows (32-LE)
Fixed CHICAGO: Bug 2121 - h5diff - incorrect and lack of output for the
different set of attributes (different number and names)
Description:
Merged from HDF5 trunk r20294
Previously h5diff compared attributes correctly only when two objects have
the same number of attributes and attribute names are identical.
Also didn't display useful information about attribute difference.
This fix covers all other cases.
This fixes both issues.
Tested:
jam (linux32-LE), amani (linux64-LE), heiwa (linuxppc64-BE)
Bug 2089 - GMQS: h5diff segfault on a compound dataset with fixed length +
vlen string type order
Description:
Merged from HDF5 trunk r19892.
This is fix for the segfault when h5diff compares a compound dataset with
combination of fixed length string types and vlen string types in certain
orders. Optimized vlariable length string handling codes. The fix is
referred from h5dump handling vlen strings.
For testing, several compound datasets were added with various combinations.
Previous failed cases:
- Vlen string, Fixed length string, Vlen string, Fixed length string
- Fixed length string, Fixed length string, Vlen string, Vlen string
- Fixed length string, Vlen string, Fixed length string, Vlen string
Tested:
jam (linux32-LE), amani (linux64-LE), heiwa (linuxppc64-BE), linew (solaris-BE)
Fix for group comparison with exclude-path case. Use relative path.
Description:
Merge from hdf5 trunk (r19443)
Related to "1890: h5diff excluding object for file comparison via command line" checkins. (r19407)
Tested:
jam, amani
Add extra test cases for Bug1975 h5diff - support recursive comparison on group when specified as an object
Description:
Merged from hdf5 trunk (r19409)
Additional tests for combination of group recursive and --follow-symlinks
with multi-linked external links with several files (same name/strucure).
Tested:
jam, amani, heiwa
Add --exclude-path option
Description:
Merged from hdf5 trunk (r19406).
Specified path to an object will be excluded from comparing the two files or two groups. If group is specified all the member objects will be excluded.
Related to "1890: h5diff excluding object for file comparison via command line"
Tested:
jam, amani
Fix for Bug1975 h5diff - support recursive comparison on group when specified as an object
Description:
Merged from hdf5 trunk (r19400).
Compare member objects and groups recursively when two files or groups are specified to be compared. Support parallel diff and handling symbolic links accordingly.
Tested:
jam, amani
Problem:
some launching command like yod (and sometimes mpirun), do not pass
back the exit code of the executables back to the shell. It always returns 0
if it can launch the executable. This cause tests that expect non-zero exit
code to fail incorrectly.
Short term Solution:
Added the feature that if $RUNSERIAL_NOEXITCODE is defined, do not
test conditions that rely on non-zero exit code.
Tests:
dove-linux using RUNSERIAL=thgyod to see the failures and using
$RUNSERIAL_NOEXITCODE=yes to bypass the errors.
Also h5committested.
Rename '--follow-links' to '--follow-symlinks'
Description:
The '--follow-links' option is to follow symbolic links (soft and external).
Make the name more intuitive and specific to the feature.
Merged from hdf5 trunk r18873.
Tested:
jam
Work for bugzilla 1754: h5diff: support comparing through links.
Description:
merged from hdf5 trunk (18164, 18165, 18166, 18167, 18170, 18266, 18273)
Tested:
h5committest (jam, amani and linew)
The ph5diff tests printout incorrectly reporting they are running
h5diff when it actually is running ph5diff.
Fixed.
Tested: Jam (parallel), linew (serial)
No H5committest since it is a shell script and Jam tests both
serial and parallel h5diff for Linux while Linew tests Big
endian platform.
" Use "--use-system-epsilon" for system EPSILON
" Use "-p" or "-d" for whatever user's choice of epsilon
" Use "-p 0" or "-d 0" for strict equality (same as default)
Skipped the test of
TESTING $H5DIFF -v $SRCFILE9 $SRCFILE10
TOOLTEST h5diff_100.txt -v $FILE9 $FILE10
again because they still hanged.
Do not turn it back on until it is proven fixed.
Also, want to verify if this is the only tests that hang or
if other tests may hang or if any non-thg machines may hang.
Tested:
jam-pp since it is a simple shell-script change.
Bug fix: for compound types, the not comparable test for members was not done
Solution: for compound types, recursively apply that check
Two new cases are added
1) the compound type has a different number of members. Message printed is
<obj1> has X members <obj2> has Y members
Where X and Y are the number of members of each compound type being compared
2) the compound type has not comparable types (for example a double and an int at the same index)
In this case the message
Comparison not possible: object1 is of class1 and object2 is of class2
Is replaced with
Comparison not possible: object1 has a class1 and object2 has a class2
Modified the test generator program to have these 2 cases
Added a shell run for these 2 cases
Tested: h5committest
#1368 (E1) h5diff: implement "not comparable" messages. Implemented RFC. The new option is <-c, --compare List objects that are not comparable>
added some test cases
tested: windows, linux
The test "h5diff -v h5diff_hyper1.h5 h5diff_hyper2.h5" sometimes hangs in THG
machines. Skip it until its hanging is resolved.
Tested: Jam pp only since it is a simple script change.
Summary: when using h5diff to compare the results of h5repack (or other tools that copy one HDF5 file to another), a new option is needed to allow h5diff to make an "absolute" comparison of the 2 files. This is the "contents" mode explained in the usage below.
If this mode is present, objects in both files must match (must be exactly the same). If this does not happen, the tool returns an error code of 1 (instead of the success code of 0)
Changes to the h5repack test script: the call to h5diff was changed to include -c (maintaining the previous -q).
tested: windows, linux
On Windows, Mingw interprets all parameters starting with '/' as paths, and replaces the '/' with its home directory, "C:\Windows\msys\". This was a problem in h5diff tests such as:
h5diff h5diff_101.txt $FILE1 $FILE1 /g1/d1 g1/d2 -v
I've removed the leading '/', as h5diff will interpret it the same either way.
Tested:
kagiso, linew, and smirom, via h5committest
mingw on Windows XP
Bug fix: the macro used for percentage in the unsigned types needed a cast to signed (the difference can be negative)
Unlike the 1.6 branch the unsigned long long conversion to float is supported by H5Tconvert , so the test commented for 1.6 is run (tools/testfiles/h5diff_16_2.txt)
Added a relative error formula to deal with floating point uncertainty
in the comparison of floats and double types.
Added new tests for this feature to the file generator program and to
the shell script
h5diff: print a message of "not comparable" in a case where the relative error
compare is not possible, due to the denominator being zero. Modified
the test file generator program to include a example for this and a new
test on the shell script