[svn-r22751] Purpose:

HDFFV-5919 -  GMQS: h5diff - The number of object difference is not consistent between dataset and group/type when attribute(s) have differences

Description:
  Object differences are not consistent between dataset and group/datatype when their attribute(s) have differences. This is because attribute(s) differences is not accumulated to group or datatype object’s difference, but accumulated to dataset difference.
  To fix, do not accumulate attribute difference to dataset difference.  This is referred to h5diff’s default behavior and also past report from users that users were confused by the accumulated behavior. (also can’t figure out only for dataset difference , also hard to spot dataset difference when it has lots of attributes or differences)
  This also lead to fix inconsistent format indicating difference between dataset and group/datatype object.

Tested: 
    jam (linux32-LE), koala (linux64-LE), ostrich (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE),  Windows (32-LE cmake), cmake (jam)
This commit is contained in:
Jonathan Kim 2012-09-10 16:40:47 -05:00
parent f5efc5224f
commit 89a2c4a783
14 changed files with 41 additions and 25 deletions

View File

@ -712,9 +712,15 @@ Bug Fixes since HDF5-1.8.0 release
Tools
-----
- h5diff: Fixed not to accumulate attribute difference to dataset
difference in verbose mode (-v, -r), which caused incorrect
difference between dataset and group/datatype object if attribute
exist with any differences. This also lead to fix inconsistent
format indicating difference between dataset and group/datatype
object. HDFFV-5919 (JKM 2012/09/05)
- h5diff: Fixed the incorrect result when comparing attribute data
values and the data type has same class but different size.
HDFFV-7942 (JKM 08/15/2012)
HDFFV-7942 (JKM 2012/08/15)
- ph5diff: Fixed intermittent hang issue on a certain operation in
parallel mode. It was detected by daily test for comparing
non-comparable objects, but it could have occurred in other

View File

@ -1,8 +1,6 @@
Not comparable: </g1/dset1> is of class H5T_INTEGER and </g1/dset1> is of class H5T_STRING
attribute: <attr of </g1/dset1>> and <attr of </g1/dset1>>
3 differences found
dataset: </g1/dset1> and </g1/dset1>
3 differences found
dataset: </g1/dset2> and </g1/dset2>
3 differences found
EXIT CODE: 1

View File

@ -1,3 +1,5 @@
dataset: </g2/dset1> and </g2/dset1>
3 differences found
Not comparable: <attr1> is of class H5T_INTEGER and <attr1> is of class H5T_STRING
Not comparable: <attr2> has rank 1, dimensions [3], max dimensions [3]
and <attr2> has rank 1, dimensions [4], max dimensions [4]
@ -5,8 +7,6 @@ Not comparable: <attr3> has rank 1, dimensions [3], max dimensions [3]
and <attr3> has rank 2, dimensions [3x1], max dimensions [3x1]
attribute: <attr4 of </g2/dset1>> and <attr4 of </g2/dset1>>
3 differences found
dataset: </g2/dset1> and </g2/dset1>
6 differences found
dataset: </g2/dset2> and </g2/dset2>
3 differences found
EXIT CODE: 1

View File

@ -4,10 +4,10 @@ Not comparable: </diffobjtypes/obj3> is of type H5G_TYPE and </diffobjtypes/obj3
Not comparable: </g1/dset1> is of class H5T_INTEGER and </g1/dset1> is of class H5T_STRING
attribute: <attr of </g1/dset1>> and <attr of </g1/dset1>>
3 differences found
dataset: </g1/dset1> and </g1/dset1>
3 differences found
dataset: </g1/dset2> and </g1/dset2>
3 differences found
dataset: </g2/dset1> and </g2/dset1>
3 differences found
Not comparable: <attr1> is of class H5T_INTEGER and <attr1> is of class H5T_STRING
Not comparable: <attr2> has rank 1, dimensions [3], max dimensions [3]
and <attr2> has rank 1, dimensions [4], max dimensions [4]
@ -15,8 +15,6 @@ Not comparable: <attr3> has rank 1, dimensions [3], max dimensions [3]
and <attr3> has rank 2, dimensions [3x1], max dimensions [3x1]
attribute: <attr4 of </g2/dset1>> and <attr4 of </g2/dset1>>
3 differences found
dataset: </g2/dset1> and </g2/dset1>
6 differences found
dataset: </g2/dset2> and </g2/dset2>
3 differences found
EXIT CODE: 1

View File

@ -2,10 +2,10 @@ dataset: </dset11a> and </dset11b>
Warning: different storage datatype
</dset11a> has file datatype H5T_STD_U16LE
</dset11b> has file datatype H5T_STD_U32LE
0 differences found
Warning: different storage datatype
<attr> has file datatype H5T_STD_U16LE
<attr> has file datatype H5T_STD_U32LE
attribute: <attr of </dset11a>> and <attr of </dset11b>>
0 differences found
0 differences found
EXIT CODE: 0

View File

@ -678,6 +678,7 @@ position vlen3D of </> vlen3D of </> difference
59 differences found
dataset: </dset> and </dset>
Not comparable: </dset> or </dset> is an empty dataset
0 differences found
attribute: <VLstring of </dset>> and <VLstring of </dset>>
size: [2] [2]
position VLstring of </dset> VLstring of </dset> difference
@ -1353,7 +1354,6 @@ position vlen3D of </dset> vlen3D of </dset> difference
[ 3 2 1 ] 58 0 58
[ 3 2 1 ] 59 0 59
59 differences found
519 differences found
group : </g1> and </g1>
0 differences found
attribute: <VLstring of </g1>> and <VLstring of </g1>>

View File

@ -681,6 +681,7 @@ position vlen3D of </> vlen3D of </> difference
dataset: </dset> and </dset>
Not comparable: </dset> or </dset> is an empty dataset
0 differences found
Attributes status: 33 common, 0 only in obj1, 0 only in obj2
attribute: <VLstring of </dset>> and <VLstring of </dset>>
size: [2] [2]
@ -1357,7 +1358,6 @@ position vlen3D of </dset> vlen3D of </dset> difference
[ 3 2 1 ] 58 0 58
[ 3 2 1 ] 59 0 59
59 differences found
519 differences found
group : </g1> and </g1>
0 differences found

View File

@ -713,6 +713,7 @@ position vlen3D of </> vlen3D of </> difference
dataset: </dset> and </dset>
Not comparable: </dset> or </dset> is an empty dataset
0 differences found
obj1 obj2
--------------------------------------
x x VLstring
@ -1424,7 +1425,6 @@ position vlen3D of </dset> vlen3D of </dset> difference
[ 3 2 1 ] 58 0 58
[ 3 2 1 ] 59 0 59
59 differences found
519 differences found
group : </g1> and </g1>
0 differences found

View File

@ -681,6 +681,7 @@ position vlen3D of </> vlen3D of </> difference
dataset: </dset> and </dset>
Not comparable: </dset> or </dset> is an empty dataset
0 differences found
Attributes status: 33 common, 0 only in obj1, 0 only in obj2
attribute: <VLstring of </dset>> and <VLstring of </dset>>
size: [2] [2]
@ -1357,7 +1358,6 @@ position vlen3D of </dset> vlen3D of </dset> difference
[ 3 2 1 ] 58 0 58
[ 3 2 1 ] 59 0 59
59 differences found
519 differences found
group : </g1> and </g1>
0 differences found

View File

@ -713,6 +713,7 @@ position vlen3D of </> vlen3D of </> difference
dataset: </dset> and </dset>
Not comparable: </dset> or </dset> is an empty dataset
0 differences found
obj1 obj2
--------------------------------------
x x VLstring
@ -1424,7 +1425,6 @@ position vlen3D of </dset> vlen3D of </dset> difference
[ 3 2 1 ] 58 0 58
[ 3 2 1 ] 59 0 59
59 differences found
519 differences found
group : </g1> and </g1>
0 differences found

View File

@ -1,5 +1,6 @@
dataset: </dset> and </dset>
0 differences found
obj1 obj2
--------------------------------------
x float2
@ -13,5 +14,4 @@ position integer1 of </dset> integer1 of </dset> difference
[ 0 ] 1 2 1
[ 1 ] 2 3 1
2 differences found
2 differences found
EXIT CODE: 1

View File

@ -17,6 +17,7 @@ group : </> and </>
Attributes status: 0 common, 0 only in obj1, 0 only in obj2
dataset: </dset> and </dset>
0 differences found
obj1 obj2
--------------------------------------
x float2
@ -30,7 +31,6 @@ position integer1 of </dset> integer1 of </dset> difference
[ 0 ] 1 2 1
[ 1 ] 2 3 1
2 differences found
2 differences found
group : </g> and </g>
0 differences found

View File

@ -1547,6 +1547,8 @@ hsize_t diff(hid_t file1_id,
diff_opt_t * options,
diff_args_t *argdata)
{
hid_t dset1_id = (-1);
hid_t dset2_id = (-1);
hid_t type1_id = (-1);
hid_t type2_id = (-1);
hid_t grp1_id = (-1);
@ -1714,6 +1716,10 @@ hsize_t diff(hid_t file1_id,
*----------------------------------------------------------------------
*/
case H5TRAV_TYPE_DATASET:
if((dset1_id = H5Dopen2(file1_id, path1, H5P_DEFAULT)) < 0)
goto out;
if((dset2_id = H5Dopen2(file2_id, path2, H5P_DEFAULT)) < 0)
goto out;
/* verbose (-v) and report (-r) mode */
if(options->m_verbose || options->m_report)
{
@ -1737,6 +1743,22 @@ hsize_t diff(hid_t file1_id,
print_found(nfound);
}
}
/*---------------------------------------------------------
* compare attributes
* if condition refers to cases when the dataset is a
* referenced object
*---------------------------------------------------------
*/
if(path1)
nfound += diff_attr(dset1_id, dset2_id, path1, path2, options);
if(H5Dclose(dset1_id) < 0)
goto out;
if(H5Dclose(dset2_id) < 0)
goto out;
break;
/*----------------------------------------------------------------------

View File

@ -507,14 +507,6 @@ hsize_t diff_datasetid( hid_t did1,
} /* hyperslab read */
} /*can_compare*/
/*-------------------------------------------------------------------------
* compare attributes
* the if condition refers to cases when the dataset is a referenced object
*-------------------------------------------------------------------------
*/
h5difftrace("compare attributes?\n");
if(obj1_name)
nfound += diff_attr(did1,did2,obj1_name,obj2_name,options);
/*-------------------------------------------------------------------------
* close