diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2006-10-23 20:40:14 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2006-10-23 20:40:14 (GMT) |
commit | e40557304fcfc662bb1a445abca516ee4b246d94 (patch) | |
tree | c9f1692443a62e0c481c7c0278e39d7b83d1b419 /test/dsets.c | |
parent | 1062b4f9d7080a3e439df7d3d527aee43f96d085 (diff) | |
download | hdf5-e40557304fcfc662bb1a445abca516ee4b246d94.zip hdf5-e40557304fcfc662bb1a445abca516ee4b246d94.tar.gz hdf5-e40557304fcfc662bb1a445abca516ee4b246d94.tar.bz2 |
[svn-r12803] Description:
Finish new version of the I/O pipeline message, which is much smaller than
the previous version. This version is used with the "use the latest version
of the format" flag.
Closed several memory leaks/overruns (found with valgrind).
Also, lots of compiler & formatting cleanups.
Tested on:
Linux/32 2.6 (chicago)
Linux/64 2.6 (chicago2)
Diffstat (limited to 'test/dsets.c')
-rw-r--r-- | test/dsets.c | 225 |
1 files changed, 128 insertions, 97 deletions
diff --git a/test/dsets.c b/test/dsets.c index 8a8f9f0..b35e965 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -1651,7 +1651,7 @@ error: */ #ifdef H5_HAVE_FILTER_SZIP static herr_t -test_filter_noencoder(const char *dset_name) +test_filter_noencoder(const char *dset_name, hid_t fapl) { hid_t file_id = -1; hid_t dset_id = -1; @@ -1677,7 +1677,7 @@ test_filter_noencoder(const char *dset_name) } HDstrcat(testfile, NOENCODER_FILENAME); - file_id = H5Fopen(testfile, H5F_ACC_RDWR, H5P_DEFAULT); + file_id = H5Fopen(testfile, H5F_ACC_RDWR, fapl); if (file_id < 0) goto error; dset_id = H5Dopen(file_id, dset_name); @@ -1749,15 +1749,15 @@ test_filter_noencoder(const char *dset_name) error: H5_FAILED(); if (dset_id != -1) - H5Dclose(dset_id); + H5Dclose(dset_id); if (test_dset_id != -1) - H5Dclose(test_dset_id); + H5Dclose(test_dset_id); if (space_id != -1) - H5Sclose(space_id); + H5Sclose(space_id); if (dcpl_id != -1) - H5Pclose(dcpl_id); + H5Pclose(dcpl_id); if (file_id != -1) - H5Fclose(file_id); + H5Fclose(file_id); return -1; } #endif /* H5_HAVE_FILTER_SZIP */ @@ -1868,7 +1868,11 @@ error: *------------------------------------------------------------------------- */ static herr_t -test_filters(hid_t file) +test_filters(hid_t file, hid_t +#ifndef H5_HAVE_FILTER_SZIP +UNUSED +#endif /* H5_HAVE_FILTER_SZIP */ + fapl) { hid_t dc; /* Dataset creation property list ID */ const hsize_t chunk_size[2] = {FILTER_CHUNK_DIM1, FILTER_CHUNK_DIM2}; /* Chunk dimensions */ @@ -2006,7 +2010,7 @@ test_filters(hid_t file) if ( h5_szip_can_encode() != 1) { puts(""); - if(test_filter_noencoder(NOENCODER_SZIP_DATASET) < 0) goto error; + if(test_filter_noencoder(NOENCODER_SZIP_DATASET, fapl) < 0) goto error; } else { SKIPPED(); } @@ -5696,12 +5700,10 @@ error: * Programmer: Pedro Vicente * Monday, March 8, 2004 * - * Modifications: - * *------------------------------------------------------------------------- */ static herr_t -test_filters_endianess(void) +test_filters_endianess(hid_t fapl) { hid_t fid=-1; /* file ID */ hid_t dsid=-1; /* dataset ID */ @@ -5727,7 +5729,7 @@ test_filters_endianess(void) *------------------------------------------------------------------------- */ /* create a file using default properties */ - fid=H5Fcreate("test_filters.h5",H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT); + if((fid = H5Fcreate("test_filters.h5", H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) goto error; /* create a data space */ if ((sid = H5Screate_simple(rank,dims,NULL))<0) goto error; @@ -5756,17 +5758,15 @@ test_filters_endianess(void) */ /* compose the name of the file to open, using the srcdir, if appropriate */ - strcpy(data_file, ""); - if ( srcdir ) - { - strcpy(data_file, srcdir); - strcat(data_file, "/"); + HDstrcpy(data_file, ""); + if ( srcdir ) { + HDstrcpy(data_file, srcdir); + HDstrcat(data_file, "/"); } - strcat( data_file, "test_filters_le.hdf5"); + strcat( data_file, "test_filters_le.hdf5"); /* open */ - if ((fid=H5Fopen(data_file,H5F_ACC_RDONLY,H5P_DEFAULT))<0) - goto error; + if((fid = H5Fopen(data_file, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) goto error; /* read */ if (auxread_fdata(fid,"dset")<0) goto error; @@ -5780,17 +5780,15 @@ test_filters_endianess(void) */ /* compose the name of the file to open, using the srcdir, if appropriate */ - strcpy(data_file, ""); - if ( srcdir ) - { - strcpy(data_file, srcdir); - strcat(data_file, "/"); + HDstrcpy(data_file, ""); + if ( srcdir ) { + HDstrcpy(data_file, srcdir); + HDstrcat(data_file, "/"); } - strcat( data_file, "test_filters_be.hdf5"); + HDstrcat( data_file, "test_filters_be.hdf5"); /* open */ - if ((fid=H5Fopen(data_file,H5F_ACC_RDONLY,H5P_DEFAULT))<0) - goto error; + if((fid = H5Fopen(data_file, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) goto error; /* read */ if (auxread_fdata(fid,"dset")<0) goto error; @@ -5982,92 +5980,125 @@ error: int main(void) { - hid_t file, grp, fapl; - int mdc_nelmts; - size_t rdcc_nelmts; - size_t rdcc_nbytes; - double rdcc_w0; - int nerrors=0; - char filename[1024]; - const char *envval = NULL; + int nerrors = 0; + const char *envval; /* Don't run this test using certain file drivers */ envval = HDgetenv("HDF5_DRIVER"); - if (envval == NULL) + if(envval == NULL) envval = "nomatch"; - if (HDstrcmp(envval, "core") && HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) { + if(HDstrcmp(envval, "core") && HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) { + char filename[1024]; + hid_t file, grp, fapl, fapl2; + hbool_t new_format; + int mdc_nelmts; + size_t rdcc_nelmts; + size_t rdcc_nbytes; + double rdcc_w0; + + /* Testing setup */ h5_reset(); fapl = h5_fileaccess(); /* Set the random # seed */ HDsrandom((unsigned long)HDtime(NULL)); + /* Copy the file access property list */ + if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR + + /* Set the "use the latest version of the format" flag for creating objects in the file */ + if(H5Pset_latest_format(fapl2, TRUE) < 0) TEST_ERROR + h5_fixname(FILENAME[0], fapl, filename, sizeof filename); - /* Turn off the chunk cache, so all the chunks are immediately written to disk */ - if(H5Pget_cache(fapl, &mdc_nelmts, &rdcc_nelmts, &rdcc_nbytes, &rdcc_w0)<0) goto error; - rdcc_nbytes=0; - if(H5Pset_cache(fapl, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)<0) goto error; + /* Test with old & new format groups */ + for(new_format = FALSE; new_format <= TRUE; new_format++) { + hid_t my_fapl; - if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl))<0) { - goto error; - } + /* Set the FAPL for the type of format */ + if(new_format) { + puts("\nTesting with new file format:"); + my_fapl = fapl2; + } /* end if */ + else { + puts("Testing with old file format:"); + my_fapl = fapl; + } /* end else */ - /* Cause the library to emit initial messages */ - if ((grp = H5Gcreate (file, "emit diagnostics", 0))<0) goto error; - if (H5Gset_comment(grp, ".", "Causes diagnostic messages to be emitted")<0) - goto error; - if (H5Gclose (grp)<0) goto error; - - nerrors += test_create(file)<0 ?1:0; - nerrors += test_simple_io(fapl)<0 ?1:0; - nerrors += test_compact_io(fapl)<0 ?1:0; - nerrors += test_max_compact(fapl)<0 ?1:0; - nerrors += test_conv_buffer(file)<0 ?1:0; - nerrors += test_tconv(file)<0 ?1:0; - nerrors += test_filters(file)<0 ?1:0; - nerrors += test_onebyte_shuffle(file)<0 ?1:0; - nerrors += test_nbit_int(file)<0 ?1:0; - nerrors += test_nbit_float(file)<0 ?1:0; - nerrors += test_nbit_double(file)<0 ?1:0; - nerrors += test_nbit_array(file)<0 ?1:0; - nerrors += test_nbit_compound(file)<0 ?1:0; - nerrors += test_nbit_compound_2(file)<0 ?1:0; - nerrors += test_nbit_compound_3(file)<0 ?1:0; - nerrors += test_scaleoffset_int(file)<0 ?1:0; - nerrors += test_scaleoffset_int_2(file)<0 ?1:0; - nerrors += test_scaleoffset_float(file)<0 ?1:0; - nerrors += test_scaleoffset_float_2(file)<0 ?1:0; - nerrors += test_scaleoffset_double(file)<0 ?1:0; - nerrors += test_scaleoffset_double_2(file)<0 ?1:0; - nerrors += test_multiopen (file)<0 ?1:0; - nerrors += test_types(file)<0 ?1:0; - nerrors += test_userblock_offset(fapl)<0 ?1:0; - nerrors += test_missing_filter(file)<0 ?1:0; - nerrors += test_can_apply(file)<0 ?1:0; - nerrors += test_set_local(fapl)<0 ?1:0; - nerrors += test_can_apply_szip(file)<0 ?1:0; - nerrors += test_compare_dcpl(file)<0 ?1:0; - nerrors += test_filter_delete(file)<0 ?1:0; - nerrors += test_filters_endianess()<0 ?1:0; - nerrors += test_zero_dims(file)<0 ?1:0; - nerrors += test_missing_chunk(file)<0 ?1:0; - - if (H5Fclose(file)<0) goto error; - - if (nerrors) goto error; + /* Turn off the chunk cache, so all the chunks are immediately written to disk */ + if(H5Pget_cache(my_fapl, &mdc_nelmts, &rdcc_nelmts, &rdcc_nbytes, &rdcc_w0) < 0) + goto error; + rdcc_nbytes = 0; + if(H5Pset_cache(my_fapl, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0) < 0) + goto error; + + /* Create the file for this test */ + if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, my_fapl)) < 0) + goto error; + + /* Cause the library to emit initial messages */ + if((grp = H5Gcreate(file, "emit diagnostics", 0)) < 0) + goto error; + if(H5Gset_comment(grp, ".", "Causes diagnostic messages to be emitted") < 0) + goto error; + if(H5Gclose(grp) < 0) + goto error; + + nerrors += (test_create(file) < 0 ? 1: 0); + nerrors += (test_simple_io(my_fapl) < 0 ? 1: 0); + nerrors += (test_compact_io(my_fapl) < 0 ? 1: 0); + nerrors += (test_max_compact(my_fapl) < 0 ? 1: 0); + nerrors += (test_conv_buffer(file) < 0 ? 1: 0); + nerrors += (test_tconv(file) < 0 ? 1: 0); + nerrors += (test_filters(file, my_fapl) < 0 ? 1: 0); + nerrors += (test_onebyte_shuffle(file) < 0 ? 1: 0); + nerrors += (test_nbit_int(file) < 0 ? 1: 0); + nerrors += (test_nbit_float(file) < 0 ? 1: 0); + nerrors += (test_nbit_double(file) < 0 ? 1: 0); + nerrors += (test_nbit_array(file) < 0 ? 1: 0); + nerrors += (test_nbit_compound(file) < 0 ? 1: 0); + nerrors += (test_nbit_compound_2(file) < 0 ? 1: 0); + nerrors += (test_nbit_compound_3(file) < 0 ? 1: 0); + nerrors += (test_scaleoffset_int(file) < 0 ? 1: 0); + nerrors += (test_scaleoffset_int_2(file) < 0 ? 1: 0); + nerrors += (test_scaleoffset_float(file) < 0 ? 1: 0); + nerrors += (test_scaleoffset_float_2(file) < 0 ? 1: 0); + nerrors += (test_scaleoffset_double(file) < 0 ? 1: 0); + nerrors += (test_scaleoffset_double_2(file) < 0 ? 1: 0); + nerrors += (test_multiopen (file) < 0 ? 1: 0); + nerrors += (test_types(file) < 0 ? 1: 0); + nerrors += (test_userblock_offset(my_fapl) < 0 ? 1: 0); + nerrors += (test_missing_filter(file) < 0 ? 1: 0); + nerrors += (test_can_apply(file) < 0 ? 1: 0); + nerrors += (test_set_local(my_fapl) < 0 ? 1: 0); + nerrors += (test_can_apply_szip(file) < 0 ? 1: 0); + nerrors += (test_compare_dcpl(file) < 0 ? 1: 0); + nerrors += (test_filter_delete(file) < 0 ? 1: 0); + nerrors += (test_filters_endianess(my_fapl) < 0 ? 1: 0); + nerrors += (test_zero_dims(file) < 0 ? 1: 0); + nerrors += (test_missing_chunk(file) < 0 ? 1: 0); + + if(H5Fclose(file) < 0) + goto error; + } /* end for */ + + /* Close 2nd FAPL */ + H5Pclose(fapl2); + + if(nerrors) + goto error; printf("All dataset tests passed.\n"); h5_cleanup(FILENAME, fapl); - } + } /* end if */ else - { puts("All dataset tests skipped - Incompatible with current Virtual File Driver"); - } + return 0; - error: - nerrors = MAX(1, nerrors); - printf("***** %d DATASET TEST%s FAILED! *****\n", - nerrors, 1 == nerrors ? "" : "S"); - return 1; +error: + nerrors = MAX(1, nerrors); + printf("***** %d DATASET TEST%s FAILED! *****\n", + nerrors, 1 == nerrors ? "" : "S"); + return 1; } + |