diff options
author | jhendersonHDF <jhenderson@hdfgroup.org> | 2023-11-13 19:49:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-13 19:49:38 (GMT) |
commit | 28d2b6771f41396f1e243e00cb9dd57c4c891613 (patch) | |
tree | 238e77e247ac6b688d0eea0a6f81df95e47448dc /test/tmisc.c | |
parent | 8b3ffdef3099d2699ec71a5f855966132b3d3c25 (diff) | |
download | hdf5-28d2b6771f41396f1e243e00cb9dd57c4c891613.zip hdf5-28d2b6771f41396f1e243e00cb9dd57c4c891613.tar.gz hdf5-28d2b6771f41396f1e243e00cb9dd57c4c891613.tar.bz2 |
HDF5 API test updates (#3835)
* HDF5 API test updates
Removed test duplication from bringing API tests
back into the library from external VOL tests
repo
Synced changes between API tests and library's
tests
Updated API tests CMake code to directly use and
install testhdf5, testphdf5, etc. instead of
creating duplicate binaries
Added new h5_using_native_vol() test function to
determine whether the VOL connector being used
is (or the VOL connector stack being used resolves
to) the native VOL connector
* Remove duplicate variable
Diffstat (limited to 'test/tmisc.c')
-rw-r--r-- | test/tmisc.c | 482 |
1 files changed, 319 insertions, 163 deletions
diff --git a/test/tmisc.c b/test/tmisc.c index c43f54f..a8103af 100644 --- a/test/tmisc.c +++ b/test/tmisc.c @@ -451,6 +451,9 @@ test_misc2_write_attribute(void) char *string_att1 = strdup("string attribute in file one"); char *string_att2 = strdup("string attribute in file two"); + memset(&data, 0, sizeof(data)); + memset(&data_check, 0, sizeof(data_check)); + type = misc2_create_type(); dataspace = H5Screate(H5S_SCALAR); @@ -1148,6 +1151,7 @@ test_misc7(void) { hid_t fid, did, tid, sid; int enum_value = 1; + bool vol_is_native; herr_t ret; /* Output message about test being performed */ @@ -1159,6 +1163,14 @@ test_misc7(void) fid = H5Fcreate(MISC7_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); CHECK(fid, FAIL, "H5Fcreate"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, fid, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + CHECK(H5Fclose(fid), FAIL, "H5Fclose"); + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + /* Create the dataspace */ sid = H5Screate(H5S_SCALAR); CHECK(sid, FAIL, "H5Screate"); @@ -1255,10 +1267,10 @@ test_misc8(void) hsize_t storage_size; /* Number of bytes of raw data storage used */ int *wdata; /* Data to write */ int *tdata; /* Temporary pointer to data write */ -#ifdef VERIFY_DATA - int *rdata; /* Data to read */ - int *tdata2; /* Temporary pointer to data to read */ -#endif /* VERIFY_DATA */ +#ifndef H5_HAVE_PARALLEL + int *rdata; /* Data to read */ + int *tdata2; /* Temporary pointer to data to read */ +#endif unsigned u, v; /* Local index variables */ int mdc_nelmts; /* Metadata number of elements */ size_t rdcc_nelmts; /* Raw data number of elements */ @@ -1266,25 +1278,12 @@ test_misc8(void) double rdcc_w0; /* Raw data write percentage */ hsize_t start[MISC8_RANK]; /* Hyperslab start */ hsize_t count[MISC8_RANK]; /* Hyperslab block count */ + bool vol_is_native; herr_t ret; /* Output message about test being performed */ MESSAGE(5, ("Testing dataset storage sizes\n")); - /* Allocate space for the data to write & read */ - wdata = (int *)malloc(sizeof(int) * MISC8_DIM0 * MISC8_DIM1); - CHECK_PTR(wdata, "malloc"); -#ifdef VERIFY_DATA - rdata = (int *)malloc(sizeof(int) * MISC8_DIM0 * MISC8_DIM1); - CHECK_PTR(rdata, "malloc"); -#endif /* VERIFY_DATA */ - - /* Initialize values */ - tdata = wdata; - for (u = 0; u < MISC8_DIM0; u++) - for (v = 0; v < MISC8_DIM1; v++) - *tdata++ = (int)(((u * MISC8_DIM1) + v) % 13); - /* Create a file access property list */ fapl = H5Pcreate(H5P_FILE_ACCESS); CHECK(fapl, FAIL, "H5Pcreate"); @@ -1308,6 +1307,28 @@ test_misc8(void) ret = H5Pclose(fapl); CHECK(ret, FAIL, "H5Pclose"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5I_INVALID_HID, fid, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + CHECK(H5Fclose(fid), FAIL, "H5Fclose"); + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + + /* Allocate space for the data to write & read */ + wdata = (int *)malloc(sizeof(int) * MISC8_DIM0 * MISC8_DIM1); + CHECK_PTR(wdata, "malloc"); +#ifndef H5_HAVE_PARALLEL + rdata = (int *)malloc(sizeof(int) * MISC8_DIM0 * MISC8_DIM1); + CHECK_PTR(rdata, "malloc"); +#endif + + /* Initialize values */ + tdata = wdata; + for (u = 0; u < MISC8_DIM0; u++) + for (v = 0; v < MISC8_DIM1; v++) + *tdata++ = (int)(((u * MISC8_DIM1) + v) % 13); + /* Create a simple dataspace */ sid = H5Screate_simple(rank, dims, NULL); CHECK(sid, FAIL, "H5Screate_simple"); @@ -1537,7 +1558,6 @@ test_misc8(void) ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); CHECK(ret, FAIL, "H5Dwrite"); -#ifdef VERIFY_DATA /* Read data */ ret = H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata); CHECK(ret, FAIL, "H5Dread"); @@ -1550,7 +1570,6 @@ test_misc8(void) if (*tdata != *tdata2) TestErrPrintf("Error on line %d: u=%u, v=%d, *tdata=%d, *tdata2=%d\n", __LINE__, (unsigned)u, (unsigned)v, (int)*tdata, (int)*tdata2); -#endif /* VERIFY_DATA */ /* Check the storage size after data is written */ storage_size = H5Dget_storage_size(did); @@ -1632,7 +1651,6 @@ test_misc8(void) ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); CHECK(ret, FAIL, "H5Dwrite"); -#ifdef VERIFY_DATA /* Read data */ ret = H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata); CHECK(ret, FAIL, "H5Dread"); @@ -1645,7 +1663,6 @@ test_misc8(void) if (*tdata != *tdata2) TestErrPrintf("Error on line %d: u=%u, v=%d, *tdata=%d, *tdata2=%d\n", __LINE__, (unsigned)u, (unsigned)v, (int)*tdata, (int)*tdata2); -#endif /* VERIFY_DATA */ /* Check the storage size after data is written */ storage_size = H5Dget_storage_size(did); @@ -1697,7 +1714,6 @@ test_misc8(void) ret = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); CHECK(ret, FAIL, "H5Dwrite"); -#ifdef VERIFY_DATA /* Read data */ ret = H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata); CHECK(ret, FAIL, "H5Dread"); @@ -1710,7 +1726,6 @@ test_misc8(void) if (*tdata != *tdata2) TestErrPrintf("Error on line %d: u=%u, v=%d, *tdata=%d, *tdata2=%d\n", __LINE__, (unsigned)u, (unsigned)v, (int)*tdata, (int)*tdata2); -#endif /* VERIFY_DATA */ /* Check the storage size after data is written */ storage_size = H5Dget_storage_size(did); @@ -1744,9 +1759,9 @@ test_misc8(void) /* Free the read & write buffers */ free(wdata); -#ifdef VERIFY_DATA +#ifndef H5_HAVE_PARALLEL free(rdata); -#endif /* VERIFY_DATA */ +#endif } /* end test_misc8() */ /**************************************************************** @@ -1800,25 +1815,35 @@ test_misc10(void) hid_t dcpl; /* Dataset creation property list */ hid_t space, type; /* Old dataset's dataspace & datatype */ const char *testfile = H5_get_srcdir_filename(MISC10_FILE_OLD); /* Corrected test file name */ + bool vol_is_native; bool driver_is_default_compatible; herr_t ret; /* Output message about test being performed */ MESSAGE(5, ("Testing using old dataset creation property list\n")); - ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible); - CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible"); - - if (!driver_is_default_compatible) { - printf("-- SKIPPED --\n"); - return; - } - /* * Open the old file and the dataset and get old settings. */ file = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT); CHECK(file, FAIL, "H5Fopen"); + + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, file, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + CHECK(H5Fclose(file), FAIL, "H5Fclose"); + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + /* Check if VFD used is native file format compatible */ + CHECK(h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible), FAIL, + "h5_driver_is_default_vfd_compatible"); + if (!driver_is_default_compatible) { + CHECK(H5Fclose(file), FAIL, "H5Fclose"); + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + fcpl = H5Fget_create_plist(file); CHECK(fcpl, FAIL, "H5Fget_create_plist"); @@ -1884,7 +1909,8 @@ test_misc11(void) H5F_fspace_strategy_t strategy; /* File space strategy */ hsize_t threshold; /* Free-space section threshold */ bool persist; /* To persist free-space or not */ - herr_t ret; /* Generic return value */ + bool vol_is_native; + herr_t ret; /* Generic return value */ /* Output message about test being performed */ MESSAGE(5, ("Testing file creation properties retrieved correctly\n")); @@ -1897,12 +1923,17 @@ test_misc11(void) file = H5Fcreate(MISC11_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); CHECK(file, FAIL, "H5Fcreate"); - /* Get the file's version information */ - ret = H5Fget_info2(file, &finfo); - CHECK(ret, FAIL, "H5Fget_info2"); - VERIFY(finfo.super.version, 0, "H5Fget_info2"); - VERIFY(finfo.free.version, 0, "H5Fget_info2"); - VERIFY(finfo.sohm.version, 0, "H5Fget_info2"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, file, &vol_is_native), FAIL, "h5_using_native_vol"); + + if (vol_is_native) { + /* Get the file's version information */ + ret = H5Fget_info2(file, &finfo); + CHECK(ret, FAIL, "H5Fget_info2"); + VERIFY(finfo.super.version, 0, "H5Fget_info2"); + VERIFY(finfo.free.version, 0, "H5Fget_info2"); + VERIFY(finfo.sohm.version, 0, "H5Fget_info2"); + } /* Close file */ ret = H5Fclose(file); @@ -1955,16 +1986,21 @@ test_misc11(void) file = H5Fcreate(MISC11_FILE, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT); CHECK(file, FAIL, "H5Fcreate"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, file, &vol_is_native), FAIL, "h5_using_native_vol"); + /* Close FCPL */ ret = H5Pclose(fcpl); CHECK(ret, FAIL, "H5Pclose"); - /* Get the file's version information */ - ret = H5Fget_info2(file, &finfo); - CHECK(ret, FAIL, "H5Fget_info2"); - VERIFY(finfo.super.version, 2, "H5Fget_info2"); - VERIFY(finfo.free.version, 0, "H5Fget_info2"); - VERIFY(finfo.sohm.version, 0, "H5Fget_info2"); + if (vol_is_native) { + /* Get the file's version information */ + ret = H5Fget_info2(file, &finfo); + CHECK(ret, FAIL, "H5Fget_info2"); + VERIFY(finfo.super.version, 2, "H5Fget_info2"); + VERIFY(finfo.free.version, 0, "H5Fget_info2"); + VERIFY(finfo.sohm.version, 0, "H5Fget_info2"); + } /* Close file */ ret = H5Fclose(file); @@ -1974,16 +2010,21 @@ test_misc11(void) file = H5Fopen(MISC11_FILE, H5F_ACC_RDONLY, H5P_DEFAULT); CHECK(file, FAIL, "H5Fcreate"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, file, &vol_is_native), FAIL, "h5_using_native_vol"); + /* Get the file's creation property list */ fcpl = H5Fget_create_plist(file); CHECK(fcpl, FAIL, "H5Fget_create_plist"); - /* Get the file's version information */ - ret = H5Fget_info2(file, &finfo); - CHECK(ret, FAIL, "H5Fget_info2"); - VERIFY(finfo.super.version, 2, "H5Fget_info2"); - VERIFY(finfo.free.version, 0, "H5Fget_info2"); - VERIFY(finfo.sohm.version, 0, "H5Fget_info2"); + if (vol_is_native) { + /* Get the file's version information */ + ret = H5Fget_info2(file, &finfo); + CHECK(ret, FAIL, "H5Fget_info2"); + VERIFY(finfo.super.version, 2, "H5Fget_info2"); + VERIFY(finfo.free.version, 0, "H5Fget_info2"); + VERIFY(finfo.sohm.version, 0, "H5Fget_info2"); + } /* Retrieve all the property values & check them */ ret = H5Pget_userblock(fcpl, &userblock); @@ -2500,6 +2541,12 @@ test_misc13(void) unsigned *data = NULL; /* Data to write to dataset */ hsize_t userblock_size; /* Correct size of userblock */ bool check_for_new_dataset; /* Whether to check for the post-userblock-creation dataset */ + bool vol_is_native; + + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, H5I_INVALID_HID, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) + return; /* Create a data buffer for the datasets */ data = (unsigned *)calloc(MISC13_DIM1, sizeof(unsigned)); @@ -2830,6 +2877,9 @@ test_misc16(void) hsize_t dims[] = {MISC16_SPACE_DIM}; int i; + memset(wdata, 0, sizeof(wdata)); + memset(rdata, 0, sizeof(rdata)); + /* Initialize the data */ /* (Note that these are supposed to stress the code, so are a little weird) */ memcpy(wdata[0], "1234567", MISC16_STR_SIZE); @@ -2918,6 +2968,9 @@ test_misc17(void) hsize_t dims[] = {MISC17_SPACE_DIM1, MISC17_SPACE_DIM2}; int i; + memset(wdata, 0, sizeof(wdata)); + memset(rdata, 0, sizeof(rdata)); + /* Initialize the data */ /* (Note that these are supposed to stress the code, so are a little weird) */ memcpy(wdata[0], "1234567", MISC17_SPACE_DIM2); @@ -3003,12 +3056,16 @@ test_misc18(void) H5O_native_info_t ninfo; /* Native file format information about object */ char attr_name[32]; /* Attribute name buffer */ unsigned u; /* Local index variable */ - herr_t ret; /* Generic return value */ + bool vol_is_native; + herr_t ret; /* Generic return value */ /* Create the file */ fid = H5Fcreate(MISC18_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); CHECK(fid, FAIL, "H5Fcreate"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, fid, &vol_is_native), FAIL, "h5_using_native_vol"); + /* Create dataspace for attributes */ sid = H5Screate(H5S_SCALAR); CHECK(sid, FAIL, "H5Screate"); @@ -3021,22 +3078,25 @@ test_misc18(void) ret = H5Oget_info_by_name3(fid, MISC18_DSET1_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT); CHECK(ret, FAIL, "H5Oget_info_by_name"); VERIFY(oinfo.num_attrs, 0, "H5Oget_info_by_name"); + + if (vol_is_native) { #ifndef H5_NO_DEPRECATED_SYMBOLS - ret = H5Oget_info_by_name2(fid, MISC18_DSET1_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, - H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nmesgs, 6, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nchunks, 1, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.total, 272, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.free, 152, "H5Oget_info_by_name"); - VERIFY(old_oinfo.num_attrs, 0, "H5Oget_info_by_name"); + ret = H5Oget_info_by_name2(fid, MISC18_DSET1_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, + H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nmesgs, 6, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nchunks, 1, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.total, 272, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.free, 152, "H5Oget_info_by_name"); + VERIFY(old_oinfo.num_attrs, 0, "H5Oget_info_by_name"); #endif /* H5_NO_DEPRECATED_SYMBOLS */ - ret = H5Oget_native_info_by_name(fid, MISC18_DSET1_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.nmesgs, 6, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.nchunks, 1, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.total, 272, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.free, 152, "H5Oget_native_info_by_name"); + ret = H5Oget_native_info_by_name(fid, MISC18_DSET1_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.nmesgs, 6, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.nchunks, 1, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.total, 272, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.free, 152, "H5Oget_native_info_by_name"); + } /* Create second dataset */ did2 = H5Dcreate2(fid, MISC18_DSET2_NAME, H5T_STD_U32LE, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); @@ -3046,22 +3106,25 @@ test_misc18(void) ret = H5Oget_info_by_name3(fid, MISC18_DSET2_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT); CHECK(ret, FAIL, "H5Oget_info_by_name"); VERIFY(oinfo.num_attrs, 0, "H5Oget_info_by_name"); + + if (vol_is_native) { #ifndef H5_NO_DEPRECATED_SYMBOLS - ret = H5Oget_info_by_name2(fid, MISC18_DSET2_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, - H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nmesgs, 6, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nchunks, 1, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.total, 272, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.free, 152, "H5Oget_info_by_name"); - VERIFY(old_oinfo.num_attrs, 0, "H5Oget_info_by_name"); + ret = H5Oget_info_by_name2(fid, MISC18_DSET2_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, + H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nmesgs, 6, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nchunks, 1, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.total, 272, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.free, 152, "H5Oget_info_by_name"); + VERIFY(old_oinfo.num_attrs, 0, "H5Oget_info_by_name"); #endif /* H5_NO_DEPRECATED_SYMBOLS */ - ret = H5Oget_native_info_by_name(fid, MISC18_DSET2_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.nmesgs, 6, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.nchunks, 1, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.total, 272, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.free, 152, "H5Oget_native_info_by_name"); + ret = H5Oget_native_info_by_name(fid, MISC18_DSET2_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.nmesgs, 6, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.nchunks, 1, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.total, 272, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.free, 152, "H5Oget_native_info_by_name"); + } /* Loop creating attributes on each dataset, flushing them to the file each time */ for (u = 0; u < 10; u++) { @@ -3091,43 +3154,49 @@ test_misc18(void) ret = H5Oget_info_by_name3(fid, MISC18_DSET1_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT); CHECK(ret, FAIL, "H5Oget_info_by_name"); VERIFY(oinfo.num_attrs, 10, "H5Oget_info_by_name"); + + if (vol_is_native) { #ifndef H5_NO_DEPRECATED_SYMBOLS - ret = H5Oget_info_by_name2(fid, MISC18_DSET1_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, - H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nmesgs, 24, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nchunks, 9, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.total, 888, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.free, 16, "H5Oget_info_by_name"); - VERIFY(old_oinfo.num_attrs, 10, "H5Oget_info_by_name"); + ret = H5Oget_info_by_name2(fid, MISC18_DSET1_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, + H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nmesgs, 24, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nchunks, 9, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.total, 888, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.free, 16, "H5Oget_info_by_name"); + VERIFY(old_oinfo.num_attrs, 10, "H5Oget_info_by_name"); #endif /* H5_NO_DEPRECATED_SYMBOLS */ - ret = H5Oget_native_info_by_name(fid, MISC18_DSET1_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.nmesgs, 24, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.nchunks, 9, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.total, 888, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.free, 16, "H5Oget_native_info_by_name"); + ret = H5Oget_native_info_by_name(fid, MISC18_DSET1_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.nmesgs, 24, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.nchunks, 9, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.total, 888, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.free, 16, "H5Oget_native_info_by_name"); + } /* Get object information for dataset #2 now */ ret = H5Oget_info_by_name3(fid, MISC18_DSET2_NAME, &oinfo, H5O_INFO_NUM_ATTRS, H5P_DEFAULT); CHECK(ret, FAIL, "H5Oget_info_by_name"); VERIFY(oinfo.num_attrs, 10, "H5Oget_info_by_name"); + + if (vol_is_native) { #ifndef H5_NO_DEPRECATED_SYMBOLS - ret = H5Oget_info_by_name2(fid, MISC18_DSET2_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, - H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nmesgs, 24, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.nchunks, 9, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.total, 888, "H5Oget_info_by_name"); - VERIFY(old_oinfo.hdr.space.free, 16, "H5Oget_info_by_name"); - VERIFY(old_oinfo.num_attrs, 10, "H5Oget_info_by_name"); + ret = H5Oget_info_by_name2(fid, MISC18_DSET2_NAME, &old_oinfo, H5O_INFO_HDR | H5O_INFO_NUM_ATTRS, + H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nmesgs, 24, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.nchunks, 9, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.total, 888, "H5Oget_info_by_name"); + VERIFY(old_oinfo.hdr.space.free, 16, "H5Oget_info_by_name"); + VERIFY(old_oinfo.num_attrs, 10, "H5Oget_info_by_name"); #endif /* H5_NO_DEPRECATED_SYMBOLS */ - ret = H5Oget_native_info_by_name(fid, MISC18_DSET2_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); - CHECK(ret, FAIL, "H5Oget_mative_info_by_name"); - VERIFY(ninfo.hdr.nmesgs, 24, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.nchunks, 9, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.total, 888, "H5Oget_native_info_by_name"); - VERIFY(ninfo.hdr.space.free, 16, "H5Oget_native_info_by_name"); + ret = H5Oget_native_info_by_name(fid, MISC18_DSET2_NAME, &ninfo, H5O_NATIVE_INFO_HDR, H5P_DEFAULT); + CHECK(ret, FAIL, "H5Oget_mative_info_by_name"); + VERIFY(ninfo.hdr.nmesgs, 24, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.nchunks, 9, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.total, 888, "H5Oget_native_info_by_name"); + VERIFY(ninfo.hdr.space.free, 16, "H5Oget_native_info_by_name"); + } /* Close second dataset */ ret = H5Dclose(did2); @@ -3702,17 +3771,30 @@ test_misc20(void) unsigned version; /* Version of storage layout info */ hsize_t contig_size; /* Size of contiguous storage size from layout into */ const char *testfile = H5_get_srcdir_filename(MISC20_FILE_OLD); /* Corrected test file name */ + bool vol_is_native; bool driver_is_default_compatible; herr_t ret; /* Generic return value */ /* Output message about test being performed */ MESSAGE(5, ("Testing large dimension truncation fix\n")); - ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible); - CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible"); + /* Create the file */ + fid = H5Fcreate(MISC20_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + CHECK(fid, FAIL, "H5Fcreate"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, fid, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + CHECK(H5Fclose(fid), FAIL, "H5Fclose"); + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + /* Check if VFD used is native file format compatible */ + CHECK(h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible), FAIL, + "h5_driver_is_default_vfd_compatible"); if (!driver_is_default_compatible) { - printf("-- SKIPPED --\n"); + CHECK(H5Fclose(fid), FAIL, "H5Fclose"); + MESSAGE(5, (" -- SKIPPED --\n")); return; } @@ -3730,10 +3812,6 @@ test_misc20(void) * been truncated. */ - /* Create the file */ - fid = H5Fcreate(MISC20_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - CHECK(fid, FAIL, "H5Fcreate"); - /* Create dataspace with _really_ big dimensions */ sid = H5Screate_simple(rank, big_dims, NULL); CHECK(sid, FAIL, "H5Screate_simple"); @@ -4400,22 +4478,27 @@ test_misc23(void) * test H5Lcreate_external() **********************************************************************/ - status = H5Lcreate_external("fake_filename", "fake_path", file_id, "/A/B20/grp", create_id, access_id); - CHECK(status, FAIL, "H5Lcreate_external"); + if (vol_cap_flags_g & H5VL_CAP_FLAG_EXTERNAL_LINKS) { + status = + H5Lcreate_external("fake_filename", "fake_path", file_id, "/A/B20/grp", create_id, access_id); + CHECK(status, FAIL, "H5Lcreate_external"); - tri_status = H5Lexists(file_id, "/A/B20/grp", access_id); - VERIFY(tri_status, true, "H5Lexists"); + tri_status = H5Lexists(file_id, "/A/B20/grp", access_id); + VERIFY(tri_status, true, "H5Lexists"); + } /********************************************************************** * test H5Lcreate_ud() **********************************************************************/ - status = - H5Lcreate_ud(file_id, "/A/B21/grp", H5L_TYPE_EXTERNAL, "file\0obj", (size_t)9, create_id, access_id); - CHECK(status, FAIL, "H5Lcreate_ud"); + if (vol_cap_flags_g & H5VL_CAP_FLAG_UD_LINKS) { + status = H5Lcreate_ud(file_id, "/A/B21/grp", H5L_TYPE_EXTERNAL, "file\0obj", (size_t)9, create_id, + access_id); + CHECK(status, FAIL, "H5Lcreate_ud"); - tri_status = H5Lexists(file_id, "/A/B21/grp", access_id); - VERIFY(tri_status, true, "H5Lexists"); + tri_status = H5Lexists(file_id, "/A/B21/grp", access_id); + VERIFY(tri_status, true, "H5Lexists"); + } /********************************************************************** * close @@ -4998,17 +5081,25 @@ test_misc25b(void) hid_t fid; /* File ID */ hid_t gid; /* Group ID */ const char *testfile = H5_get_srcdir_filename(MISC25B_FILE); /* Corrected test file name */ + bool vol_is_native; bool driver_is_default_compatible; herr_t ret; /* Generic return value */ /* Output message about test being performed */ MESSAGE(5, ("Exercise null object header message bug\n")); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, H5I_INVALID_HID, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible); CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible"); if (!driver_is_default_compatible) { - printf("-- SKIPPED --\n"); + MESSAGE(5, (" -- SKIPPED --\n")); return; } @@ -5259,17 +5350,25 @@ test_misc27(void) hid_t fid; /* File ID */ hid_t gid; /* Group ID */ const char *testfile = H5_get_srcdir_filename(MISC27_FILE); /* Corrected test file name */ + bool vol_is_native; bool driver_is_default_compatible; herr_t ret; /* Generic return value */ /* Output message about test being performed */ MESSAGE(5, ("Corrupt object header handling\n")); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, H5I_INVALID_HID, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible); CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible"); if (!driver_is_default_compatible) { - printf("-- SKIPPED --\n"); + MESSAGE(5, (" -- SKIPPED --\n")); return; } @@ -5324,6 +5423,7 @@ test_misc28(void) int nused; char buf[MISC28_SIZE]; int i; + bool vol_is_native; herr_t ret; /* Generic return value */ /* Output message about test being performed */ @@ -5350,17 +5450,22 @@ test_misc28(void) fid = H5Fcreate(MISC28_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, fapl); CHECK(fid, FAIL, "H5Fcreate"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(fapl, fid, &vol_is_native), FAIL, "h5_using_native_vol"); + sidf = H5Screate_simple(2, dims, NULL); CHECK(sidf, FAIL, "H5Screate_simple"); did = H5Dcreate2(fid, "dataset", H5T_NATIVE_CHAR, sidf, H5P_DEFAULT, dcpl, H5P_DEFAULT); CHECK(did, FAIL, "H5Dcreate2"); - /* Verify that the chunk cache is empty */ - ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); - CHECK(ret, FAIL, "H5D__current_cache_size_test"); - VERIFY(nbytes_used, (size_t)0, "H5D__current_cache_size_test"); - VERIFY(nused, 0, "H5D__current_cache_size_test"); + if (vol_is_native) { + /* Verify that the chunk cache is empty */ + ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); + CHECK(ret, FAIL, "H5D__current_cache_size_test"); + VERIFY(nbytes_used, (size_t)0, "H5D__current_cache_size_test"); + VERIFY(nused, 0, "H5D__current_cache_size_test"); + } /* Initialize write buffer */ for (i = 0; i < MISC28_SIZE; i++) @@ -5377,11 +5482,13 @@ test_misc28(void) ret = H5Dwrite(did, H5T_NATIVE_CHAR, sidm, sidf, H5P_DEFAULT, buf); CHECK(ret, FAIL, "H5Dwrite"); - /* Verify that all 10 chunks written have been cached */ - ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); - CHECK(ret, FAIL, "H5D__current_cache_size_test"); - VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); - VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + if (vol_is_native) { + /* Verify that all 10 chunks written have been cached */ + ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); + CHECK(ret, FAIL, "H5D__current_cache_size_test"); + VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); + VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + } /* Initialize write buffer */ for (i = 0; i < MISC28_SIZE; i++) @@ -5396,11 +5503,13 @@ test_misc28(void) ret = H5Dwrite(did, H5T_NATIVE_CHAR, sidm, sidf, H5P_DEFAULT, buf); CHECK(ret, FAIL, "H5Dwrite"); - /* Verify that the size of the cache remains at 10 */ - ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); - CHECK(ret, FAIL, "H5D__current_cache_size_test"); - VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); - VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + if (vol_is_native) { + /* Verify that the size of the cache remains at 10 */ + ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); + CHECK(ret, FAIL, "H5D__current_cache_size_test"); + VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); + VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + } /* Close dataset */ ret = H5Dclose(did); @@ -5410,11 +5519,13 @@ test_misc28(void) did = H5Dopen2(fid, "dataset", H5P_DEFAULT); CHECK(did, FAIL, "H5Dopen2"); - /* Verify that the chunk cache is empty */ - ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); - CHECK(ret, FAIL, "H5D__current_cache_size_test"); - VERIFY(nbytes_used, (size_t)0, "H5D__current_cache_size_test"); - VERIFY(nused, 0, "H5D__current_cache_size_test"); + if (vol_is_native) { + /* Verify that the chunk cache is empty */ + ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); + CHECK(ret, FAIL, "H5D__current_cache_size_test"); + VERIFY(nbytes_used, (size_t)0, "H5D__current_cache_size_test"); + VERIFY(nused, 0, "H5D__current_cache_size_test"); + } /* Select hyperslabe for reading */ start[1] = 0; @@ -5429,11 +5540,13 @@ test_misc28(void) for (i = 0; i < MISC28_SIZE; i++) VERIFY(buf[i], i, "H5Dread"); - /* Verify that all 10 chunks read have been cached */ - ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); - CHECK(ret, FAIL, "H5D__current_cache_size_test"); - VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); - VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + if (vol_is_native) { + /* Verify that all 10 chunks read have been cached */ + ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); + CHECK(ret, FAIL, "H5D__current_cache_size_test"); + VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); + VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + } /* Select new hyperslab */ start[1] = 1; @@ -5448,11 +5561,13 @@ test_misc28(void) for (i = 0; i < MISC28_SIZE; i++) VERIFY(buf[i], MISC28_SIZE - 1 - i, "H5Dread"); - /* Verify that the size of the cache remains at 10 */ - ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); - CHECK(ret, FAIL, "H5D__current_cache_size_test"); - VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); - VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + if (vol_is_native) { + /* Verify that the size of the cache remains at 10 */ + ret = H5D__current_cache_size_test(did, &nbytes_used, &nused); + CHECK(ret, FAIL, "H5D__current_cache_size_test"); + VERIFY(nbytes_used, (size_t)MISC28_SIZE, "H5D__current_cache_size_test"); + VERIFY(nused, MISC28_SIZE, "H5D__current_cache_size_test"); + } /* Close dataset */ ret = H5Dclose(did); @@ -5482,6 +5597,7 @@ test_misc28(void) static void test_misc29(void) { + bool vol_is_native; bool driver_is_default_compatible; hid_t fid; /* File ID */ herr_t ret; /* Generic return value */ @@ -5489,11 +5605,18 @@ test_misc29(void) /* Output message about test being performed */ MESSAGE(5, ("Speculative metadata reads\n")); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, H5I_INVALID_HID, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible); CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible"); if (!driver_is_default_compatible) { - printf("-- SKIPPED --\n"); + MESSAGE(5, (" -- SKIPPED --\n")); return; } @@ -5541,10 +5664,18 @@ test_misc30(void) { hsize_t file_size[] = {0, 0}; /* Sizes of file created */ unsigned get_info; /* Whether to perform the get info call */ + bool vol_is_native; /* Output message about test being performed */ MESSAGE(5, ("Local heap dropping free block info\n")); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, H5I_INVALID_HID, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + for (get_info = false; get_info <= true; get_info++) { hid_t fid; /* File ID */ hid_t gid; /* Group ID */ @@ -5610,8 +5741,9 @@ test_misc31(void) hid_t attr_id; /* Attribute id */ hid_t group_id; /* Group id */ hid_t dtype_id; /* Datatype id */ - herr_t ret; /* Generic return value */ -#endif /* H5_NO_DEPRECATED_SYMBOLS */ + bool vol_is_native; + herr_t ret; /* Generic return value */ +#endif /* H5_NO_DEPRECATED_SYMBOLS */ /* Output message about test being performed */ MESSAGE(5, ("Deprecated routines initialize after H5close()\n")); @@ -5620,6 +5752,14 @@ test_misc31(void) file_id = H5Fcreate(MISC31_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); CHECK(file_id, FAIL, "H5Fcreate"); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, file_id, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + CHECK(H5Fclose(file_id), FAIL, "H5Fclose"); + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + /* Test dataset package */ space_id = H5Screate(H5S_SCALAR); CHECK(space_id, FAIL, "H5Screate"); @@ -5774,17 +5914,25 @@ test_misc33(void) hid_t fid = H5I_INVALID_HID; /* File ID */ const char *testfile = H5_get_srcdir_filename(MISC33_FILE); /* Corrected test file name */ H5O_info2_t oinfo; /* Structure for object metadata information */ + bool vol_is_native; bool driver_is_default_compatible; herr_t ret; /* Generic return value */ /* Output message about test being performed */ MESSAGE(5, ("Testing that bad offset into the heap returns error")); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, H5I_INVALID_HID, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible); CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible"); if (!driver_is_default_compatible) { - printf("-- SKIPPED --\n"); + MESSAGE(5, (" -- SKIPPED --\n")); return; } @@ -6072,6 +6220,7 @@ static void test_misc37(void) { const char *testfile = H5_get_srcdir_filename(CVE_2020_10812_FILENAME); + bool vol_is_native; bool driver_is_default_compatible; hid_t fid; herr_t ret; @@ -6079,11 +6228,18 @@ test_misc37(void) /* Output message about test being performed */ MESSAGE(5, ("Fix for HDFFV-11052/CVE-2020-10812")); + /* Check if native VOL is being used */ + CHECK(h5_using_native_vol(H5P_DEFAULT, H5I_INVALID_HID, &vol_is_native), FAIL, "h5_using_native_vol"); + if (!vol_is_native) { + MESSAGE(5, (" -- SKIPPED --\n")); + return; + } + ret = h5_driver_is_default_vfd_compatible(H5P_DEFAULT, &driver_is_default_compatible); CHECK(ret, FAIL, "h5_driver_is_default_vfd_compatible"); if (!driver_is_default_compatible) { - printf("-- SKIPPED --\n"); + MESSAGE(5, (" -- SKIPPED --\n")); return; } |