diff options
author | Quincey Koziol <koziol@koziol.gov> | 2020-06-26 23:57:38 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@koziol.gov> | 2020-06-26 23:57:38 (GMT) |
commit | e767f44e953047297fece364218147c908e8b585 (patch) | |
tree | d4b6909f14b78bb732b6947adc46ac3cd3ca54f6 /test/cache_image.c | |
parent | 949649a2b6e00297cbdc49437e70a27e455e92d2 (diff) | |
parent | a08ab621febde7b09e4d86eab80cb029c123e9f6 (diff) | |
download | hdf5-e767f44e953047297fece364218147c908e8b585.zip hdf5-e767f44e953047297fece364218147c908e8b585.tar.gz hdf5-e767f44e953047297fece364218147c908e8b585.tar.bz2 |
Merge remote-tracking branch 'origin/develop' into monotonic_timer
Diffstat (limited to 'test/cache_image.c')
-rw-r--r-- | test/cache_image.c | 3350 |
1 files changed, 1741 insertions, 1609 deletions
diff --git a/test/cache_image.c b/test/cache_image.c index 58b0b8f..59689a9 100644 --- a/test/cache_image.c +++ b/test/cache_image.c @@ -14,8 +14,8 @@ /* Programmer: John Mainzer * 7/13/15 * - * This file contains tests specific to the cache image - * feature implemented in H5C.c + * This file contains tests specific to the cache image + * feature implemented in H5C.c */ #include "cache_common.h" #include "genall5.h" @@ -33,36 +33,36 @@ static void create_datasets(hid_t file_id, int min_dset, int max_dset); static void delete_datasets(hid_t file_id, int min_dset, int max_dset); static void open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, hbool_t read_only, hbool_t set_mdci_fapl, hbool_t config_fsm, - hbool_t set_eoc, const char *hdf_file_name, unsigned cache_image_flags, + hbool_t set_eoc, const char *hdf_file_name, unsigned cache_image_flags, hid_t *file_id_ptr, H5F_t **file_ptr_ptr, H5C_t **cache_ptr_ptr); static void attempt_swmr_open_hdf5_file(hbool_t create_file, hbool_t set_mdci_fapl, const char *hdf_file_name); static void verify_datasets(hid_t file_id, int min_dset, int max_dset); /* local test function declarations */ -static unsigned check_cache_image_ctl_flow_1(void); -static unsigned check_cache_image_ctl_flow_2(void); -static unsigned check_cache_image_ctl_flow_3(void); -static unsigned check_cache_image_ctl_flow_4(void); -static unsigned check_cache_image_ctl_flow_5(void); -static unsigned check_cache_image_ctl_flow_6(void); - -static unsigned cache_image_smoke_check_1(void); -static unsigned cache_image_smoke_check_2(void); -static unsigned cache_image_smoke_check_3(void); -static unsigned cache_image_smoke_check_4(void); -static unsigned cache_image_smoke_check_5(void); -static unsigned cache_image_smoke_check_6(void); - -static unsigned cache_image_api_error_check_1(void); -static unsigned cache_image_api_error_check_2(void); -static unsigned cache_image_api_error_check_3(void); -static unsigned cache_image_api_error_check_4(void); - -static unsigned get_free_sections_test(void); -static unsigned evict_on_close_test(void); - - +static unsigned check_cache_image_ctl_flow_1(hbool_t single_file_vfd); +static unsigned check_cache_image_ctl_flow_2(hbool_t single_file_vfd); +static unsigned check_cache_image_ctl_flow_3(hbool_t single_file_vfd); +static unsigned check_cache_image_ctl_flow_4(hbool_t single_file_vfd); +static unsigned check_cache_image_ctl_flow_5(hbool_t single_file_vfd); +static unsigned check_cache_image_ctl_flow_6(hbool_t single_file_vfd); + +static unsigned cache_image_smoke_check_1(hbool_t single_file_vfd); +static unsigned cache_image_smoke_check_2(hbool_t single_file_vfd); +static unsigned cache_image_smoke_check_3(hbool_t single_file_vfd); +static unsigned cache_image_smoke_check_4(hbool_t single_file_vfd); +static unsigned cache_image_smoke_check_5(hbool_t single_file_vfd); +static unsigned cache_image_smoke_check_6(hbool_t single_file_vfd); + +static unsigned cache_image_api_error_check_1(hbool_t single_file_vfd); +static unsigned cache_image_api_error_check_2(hbool_t single_file_vfd); +static unsigned cache_image_api_error_check_3(hbool_t single_file_vfd); +static unsigned cache_image_api_error_check_4(hbool_t single_file_vfd); + +static unsigned get_free_sections_test(hbool_t single_file_vfd); +static unsigned evict_on_close_test(hbool_t single_file_vfd); + + /****************************************************************************/ /***************************** Utility Functions ****************************/ /****************************************************************************/ @@ -71,10 +71,10 @@ static unsigned evict_on_close_test(void); * Function: create_datasets() * * Purpose: If pass is TRUE on entry, create the specified datasets - * in the indicated file. + * in the indicated file. * - * Datasets and their contents must be well known, as we - * will verify that they contain the expected data later. + * Datasets and their contents must be well known, as we + * will verify that they contain the expected data later. * * On failure, set pass to FALSE, and set failure_mssg * to point to an appropriate failure message. @@ -93,7 +93,7 @@ static unsigned evict_on_close_test(void); #define DSET_SIZE (40 * CHUNK_SIZE) #define MAX_NUM_DSETS 256 -static void +static void create_datasets(hid_t file_id, int min_dset, int max_dset) { const char * fcn_name = "create_datasets()"; @@ -169,7 +169,7 @@ create_datasets(hid_t file_id, int min_dset, int max_dset) /* create the dataset */ if ( pass ) { - sprintf(dset_name, "/dset%03d", i); + HDsprintf(dset_name, "/dset%03d", i); dataset_ids[i] = H5Dcreate2(file_id, dset_name, H5T_STD_I32BE, dataspace_id, H5P_DEFAULT, properties, H5P_DEFAULT); @@ -315,8 +315,8 @@ create_datasets(hid_t file_id, int min_dset, int max_dset) /* read the chunk from file */ if ( pass ) { - status = H5Dread(dataset_ids[m], H5T_NATIVE_INT, - memspace_id, filespace_ids[m], + status = H5Dread(dataset_ids[m], H5T_NATIVE_INT, + memspace_id, filespace_ids[m], H5P_DEFAULT, data_chunk); if ( status < 0 ) { @@ -341,7 +341,7 @@ create_datasets(hid_t file_id, int min_dset, int max_dset) valid_chunk = FALSE; - if ( verbose ) { + if ( verbose ) { HDfprintf(stdout, "data_chunk[%0d][%0d] = %0d, expect %0d.\n", @@ -351,7 +351,7 @@ create_datasets(hid_t file_id, int min_dset, int max_dset) HDfprintf(stdout, "m = %d, i = %d, j = %d, k = %d, l = %d\n", m, i, j, k, l); - } + } } } } @@ -361,12 +361,12 @@ create_datasets(hid_t file_id, int min_dset, int max_dset) pass = FALSE; failure_mssg = "slab validation failed."; - if ( verbose ) { + if ( verbose ) { - fprintf(stdout, + HDfprintf(stdout, "Chunk (%0d, %0d) in /dset%03d is invalid.\n", i, j, m); - } + } } } m++; @@ -417,16 +417,16 @@ create_datasets(hid_t file_id, int min_dset, int max_dset) } /* create_datasets() */ - + /*------------------------------------------------------------------------- * Function: delete_datasets() * - * Purpose: If pass is TRUE on entry, verify and then delete the - * dataset(s) indicated by min_dset and max_dset in the - * indicated file. + * Purpose: If pass is TRUE on entry, verify and then delete the + * dataset(s) indicated by min_dset and max_dset in the + * indicated file. * - * Datasets and their contents must be well know, as we - * will verify that they contain the expected data later. + * Datasets and their contents must be well know, as we + * will verify that they contain the expected data later. * * On failure, set pass to FALSE, and set failure_mssg * to point to an appropriate failure message. @@ -441,7 +441,7 @@ create_datasets(hid_t file_id, int min_dset, int max_dset) *------------------------------------------------------------------------- */ -static void +static void delete_datasets(hid_t file_id, int min_dset, int max_dset) { const char * fcn_name = "delete_datasets()"; @@ -470,13 +470,13 @@ delete_datasets(hid_t file_id, int min_dset, int max_dset) while ( ( pass ) && ( i <= max_dset ) ) { - sprintf(dset_name, "/dset%03d", i); + HDsprintf(dset_name, "/dset%03d", i); - if ( H5Ldelete(file_id, dset_name, H5P_DEFAULT) < 0) { + if ( H5Ldelete(file_id, dset_name, H5P_DEFAULT) < 0) { pass = FALSE; failure_mssg = "H5Ldelete() failed."; - } + } i++; } @@ -488,32 +488,32 @@ delete_datasets(hid_t file_id, int min_dset, int max_dset) } /* delete_datasets() */ - + /*------------------------------------------------------------------------- * Function: open_hdf5_file() * - * Purpose: If pass is true on entry, create or open the specified HDF5 - * and test to see if it has a metadata cache image superblock - * extension message. + * Purpose: If pass is true on entry, create or open the specified HDF5 + * and test to see if it has a metadata cache image superblock + * extension message. * - * Set pass to FALSE and issue a suitable failure - * message if either the file contains a metadata cache image - * superblock extension and mdci_sbem_expected is TRUE, or - * vise versa. + * Set pass to FALSE and issue a suitable failure + * message if either the file contains a metadata cache image + * superblock extension and mdci_sbem_expected is TRUE, or + * vise versa. * - * If mdci_sbem_expected is TRUE, also verify that the metadata - * cache has been advised of this. + * If mdci_sbem_expected is TRUE, also verify that the metadata + * cache has been advised of this. * - * If read_only is TRUE, open the file read only. Otherwise - * open the file read/write. + * If read_only is TRUE, open the file read only. Otherwise + * open the file read/write. * - * If set_mdci_fapl is TRUE, set the metadata cache image - * FAPL entry when opening the file, and verify that the - * metadata cache is notified. + * If set_mdci_fapl is TRUE, set the metadata cache image + * FAPL entry when opening the file, and verify that the + * metadata cache is notified. * - * If config_fsm is TRUE, setup the persistant free space - * manager. Note that this flag may only be set if - * create_file is also TRUE. + * If config_fsm is TRUE, setup the persistent free space + * manager. Note that this flag may only be set if + * create_file is also TRUE. * * Return pointers to the cache data structure and file data * structures. @@ -556,8 +556,8 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, if ( pass ) { - /* opening the file both read only and with a cache image - * requested is a contradiction. We resolve it by ignoring + /* opening the file both read only and with a cache image + * requested is a contradiction. We resolve it by ignoring * the cache image request silently. */ if ( ( create_file && mdci_sbem_expected ) || @@ -586,12 +586,12 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, /* create a file access propertly list. */ if ( pass ) { - fapl_id = H5Pcreate(H5P_FILE_ACCESS); + fapl_id = h5_fileaccess(); if ( fapl_id < 0 ) { pass = FALSE; - failure_mssg = "H5Pcreate() failed.\n"; + failure_mssg = "h5_fileaccess() failed.\n"; } } @@ -600,7 +600,7 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, /* call H5Pset_libver_bounds() on the fapl_id */ if ( pass ) { - if ( H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, + if ( H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0 ) { pass = FALSE; @@ -625,7 +625,7 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, H5AC__CURR_CACHE_IMAGE_CONFIG_VERSION ) || ( cache_image_config.generate_image != FALSE ) || ( cache_image_config.save_resize_status != FALSE ) || - ( cache_image_config.entry_ageout != + ( cache_image_config.entry_ageout != H5AC__CACHE_IMAGE__ENTRY_AGEOUT__NONE ) ) { pass = FALSE; @@ -654,20 +654,20 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++); - /* setup the persistant free space manager if indicated */ + /* setup the persistent free space manager if indicated */ if ( ( pass ) && ( config_fsm ) ) { - fcpl_id = H5Pcreate(H5P_FILE_CREATE); + fcpl_id = H5Pcreate(H5P_FILE_CREATE); - if ( fcpl_id <= 0 ) { + if ( fcpl_id <= 0 ) { - pass = FALSE; - failure_mssg = "H5Pcreate(H5P_FILE_CREATE) failed."; - } + pass = FALSE; + failure_mssg = "H5Pcreate(H5P_FILE_CREATE) failed."; + } } if ( ( pass ) && ( config_fsm ) ) { - if(H5Pset_file_space_strategy(fcpl_id, H5F_FSPACE_STRATEGY_PAGE, + if(H5Pset_file_space_strategy(fcpl_id, H5F_FSPACE_STRATEGY_PAGE, TRUE, (hsize_t)1) < 0) { pass = FALSE; failure_mssg = "H5Pset_file_space_strategy() failed."; @@ -693,13 +693,13 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, if ( create_file ) { - if ( fcpl_id != -1 ) + if ( fcpl_id != -1 ) - file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC, + file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC, fcpl_id, fapl_id); - else + else - file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC, + file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id); } else { @@ -713,6 +713,9 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, file_id = H5Fopen(hdf_file_name, H5F_ACC_RDWR, fapl_id); } + /* tidy up */ + H5Pclose(fapl_id); + if ( file_id < 0 ) { pass = FALSE; @@ -720,7 +723,7 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, } else { - file_ptr = (struct H5F_t *)H5I_object_verify(file_id, H5I_FILE); + file_ptr = (struct H5F_t *)H5VL_object_verify(file_id, H5I_FILE); if ( file_ptr == NULL ) { @@ -776,26 +779,26 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, if ( set_mdci_fapl ) { - if ( read_only ) { + if ( read_only ) { - if ( ( image_ctl.version != + if ( ( image_ctl.version != H5AC__CURR_CACHE_IMAGE_CONFIG_VERSION ) || ( image_ctl.generate_image != FALSE ) || ( image_ctl.save_resize_status != FALSE ) || - ( image_ctl.entry_ageout != + ( image_ctl.entry_ageout != H5AC__CACHE_IMAGE__ENTRY_AGEOUT__NONE ) || ( image_ctl.flags != H5C_CI__ALL_FLAGS ) ) { pass = FALSE; failure_mssg = "Unexpected image_ctl values(1).\n"; } - } else { + } else { - if ( ( image_ctl.version != + if ( ( image_ctl.version != H5AC__CURR_CACHE_IMAGE_CONFIG_VERSION ) || ( image_ctl.generate_image != TRUE ) || ( image_ctl.save_resize_status != FALSE ) || - ( image_ctl.entry_ageout != + ( image_ctl.entry_ageout != H5AC__CACHE_IMAGE__ENTRY_AGEOUT__NONE ) || ( image_ctl.flags != H5C_CI__ALL_FLAGS ) ) { @@ -805,11 +808,11 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, } } else { - if ( ( image_ctl.version != + if ( ( image_ctl.version != H5AC__CURR_CACHE_IMAGE_CONFIG_VERSION ) || ( image_ctl.generate_image != FALSE ) || ( image_ctl.save_resize_status != FALSE ) || - ( image_ctl.entry_ageout != + ( image_ctl.entry_ageout != H5AC__CACHE_IMAGE__ENTRY_AGEOUT__NONE ) || ( image_ctl.flags != H5C_CI__ALL_FLAGS ) ) { @@ -860,15 +863,15 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, pass = FALSE; failure_mssg = "mdci sb extension message not present?\n"; } - } + } } else { - if ( ( cache_ptr->load_image == TRUE ) || + if ( ( cache_ptr->load_image == TRUE ) || ( cache_ptr->delete_image == TRUE ) ) { pass = FALSE; failure_mssg = "mdci sb extension message present?\n"; - } + } } } @@ -888,12 +891,12 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, } /* open_hdf5_file() */ - + /*------------------------------------------------------------------------- * Function: attempt_swmr_open_hdf5_file() * - * Purpose: If pass is true on entry, attempt to create or open the - * specified HDF5 file with SWMR, and also with cache image + * Purpose: If pass is true on entry, attempt to create or open the + * specified HDF5 file with SWMR, and also with cache image * creation if requested. * * In all cases, the attempted open or create should fail. @@ -910,8 +913,8 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected, static void attempt_swmr_open_hdf5_file(const hbool_t create_file, - const hbool_t set_mdci_fapl, - const char * hdf_file_name) + const hbool_t set_mdci_fapl, + const char * hdf_file_name) { const char * fcn_name = "attempt_swmr_open_hdf5_file()"; hbool_t show_progress = FALSE; @@ -928,12 +931,12 @@ attempt_swmr_open_hdf5_file(const hbool_t create_file, /* create a file access propertly list. */ if ( pass ) { - fapl_id = H5Pcreate(H5P_FILE_ACCESS); + fapl_id = h5_fileaccess(); if ( fapl_id < 0 ) { pass = FALSE; - failure_mssg = "H5Pcreate() failed.\n"; + failure_mssg = "h5_fileaccess() failed.\n"; } } @@ -942,7 +945,7 @@ attempt_swmr_open_hdf5_file(const hbool_t create_file, /* call H5Pset_libver_bounds() on the fapl_id */ if ( pass ) { - if ( H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) + if ( H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0 ) { pass = FALSE; @@ -977,8 +980,8 @@ attempt_swmr_open_hdf5_file(const hbool_t create_file, if ( create_file ) { H5E_BEGIN_TRY { - file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC | H5F_ACC_SWMR_WRITE, - H5P_DEFAULT, fapl_id); + file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC | H5F_ACC_SWMR_WRITE, + H5P_DEFAULT, fapl_id); } H5E_END_TRY; } else { @@ -992,7 +995,7 @@ attempt_swmr_open_hdf5_file(const hbool_t create_file, pass = FALSE; failure_mssg = "SWMR H5Fcreate() or H5Fopen() succeeded.\n"; - } + } } if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++); @@ -1001,17 +1004,17 @@ attempt_swmr_open_hdf5_file(const hbool_t create_file, } /* attempt_swmr_open_hdf5_file() */ - + /*------------------------------------------------------------------------- * Function: verify_datasets() * - * Purpose: If pass is TRUE on entry, verify that the datasets in the - * file exist and contain the expected data. + * Purpose: If pass is TRUE on entry, verify that the datasets in the + * file exist and contain the expected data. * - * Note that these datasets were created by - * create_datasets() above. Thus any changes in that - * function must be reflected in this function, and - * vise-versa. + * Note that these datasets were created by + * create_datasets() above. Thus any changes in that + * function must be reflected in this function, and + * vise-versa. * * On failure, set pass to FALSE, and set failure_mssg * to point to an appropriate failure message. @@ -1026,7 +1029,7 @@ attempt_swmr_open_hdf5_file(const hbool_t create_file, *------------------------------------------------------------------------- */ -static void +static void verify_datasets(hid_t file_id, int min_dset, int max_dset) { const char * fcn_name = "verify_datasets()"; @@ -1062,7 +1065,7 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) /* open the dataset */ if ( pass ) { - sprintf(dset_name, "/dset%03d", i); + HDsprintf(dset_name, "/dset%03d", i); dataset_ids[i] = H5Dopen2(file_id, dset_name, H5P_DEFAULT); if ( dataset_ids[i] < 0 ) { @@ -1154,8 +1157,8 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) /* read the chunk from file */ if ( pass ) { - status = H5Dread(dataset_ids[m], H5T_NATIVE_INT, - memspace_id, filespace_ids[m], + status = H5Dread(dataset_ids[m], H5T_NATIVE_INT, + memspace_id, filespace_ids[m], H5P_DEFAULT, data_chunk); if ( status < 0 ) { @@ -1180,8 +1183,8 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) valid_chunk = FALSE; - if ( verbose ) { - + if ( verbose ) { + HDfprintf(stdout, "data_chunk[%0d][%0d] = %0d, expect %0d.\n", k, l, data_chunk[k][l], @@ -1190,7 +1193,7 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) HDfprintf(stdout, "m = %d, i = %d, j = %d, k = %d, l = %d\n", m, i, j, k, l); - } + } } } } @@ -1200,12 +1203,12 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) pass = FALSE; failure_mssg = "slab validation failed."; - if ( verbose ) { + if ( verbose ) { - fprintf(stdout, + HDfprintf(stdout, "Chunk (%0d, %0d) in /dset%03d is invalid.\n", i, j, m); - } + } } } m++; @@ -1256,7 +1259,7 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) } /* verify_datasets() */ - + /****************************************************************************/ /******************************* Test Functions *****************************/ /****************************************************************************/ @@ -1265,60 +1268,60 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) * Function: check_cache_image_ctl_flow_1() * * Purpose: This test is one of a sequence of control flow tests intended - * to verify that control flow for the cache image feature works - * as expected. + * to verify that control flow for the cache image feature works + * as expected. * - * This test is an initial smoke check, so the sequence of - * operations is relatively simple. In particular, we are - * testing: + * This test is an initial smoke check, so the sequence of + * operations is relatively simple. In particular, we are + * testing: * - * i) Creation of file with cache image FAPL entry set - * and insertion of metadata cache image superblock - * message on file close. + * i) Creation of file with cache image FAPL entry set + * and insertion of metadata cache image superblock + * message on file close. * - * ii) Open of file with metadata cache image superblock - * message, transmission of message to metadata cache, - * and deletion of superblock message prior to close. + * ii) Open of file with metadata cache image superblock + * message, transmission of message to metadata cache, + * and deletion of superblock message prior to close. * - * Note that in all cases we are performing operations on the - * file. While this is the typical case, we must repeat this - * test without operations on the file. + * Note that in all cases we are performing operations on the + * file. While this is the typical case, we must repeat this + * test without operations on the file. * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 2) Create some datasets in the file. + * 2) Create some datasets in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file. + * 4) Open the file. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 5) Open a dataset. + * 5) Open a dataset. * - * Verify that the metadata cache image superblock - * extension message has been deleted. + * Verify that the metadata cache image superblock + * extension message has been deleted. * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file. + * 7) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 8) Close the file. + * 8) Close the file. * - * 9) Delete the file. + * 9) Delete the file. * * Return: void * @@ -1329,7 +1332,7 @@ verify_datasets(hid_t file_id, int min_dset, int max_dset) */ static unsigned -check_cache_image_ctl_flow_1(void) +check_cache_image_ctl_flow_1(hbool_t single_file_vfd) { const char * fcn_name = "check_cache_image_ctl_flow_1()"; char filename[512]; @@ -1341,9 +1344,16 @@ check_cache_image_ctl_flow_1(void) TESTING("metadata cache image control flow test 1"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -1358,16 +1368,16 @@ check_cache_image_ctl_flow_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * - * Set flags forcing creation of metadata cache image super block - * extension message only. + * Set flags forcing creation of metadata cache image super block + * extension message only. */ if ( pass ) { @@ -1376,8 +1386,8 @@ check_cache_image_ctl_flow_1(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -1385,10 +1395,10 @@ check_cache_image_ctl_flow_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create some datasets in the file. */ if ( pass ) { @@ -1396,10 +1406,10 @@ check_cache_image_ctl_flow_1(void) create_datasets(file_id, 0, 5); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -1412,26 +1422,26 @@ check_cache_image_ctl_flow_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 4) Open the file. + + + /* 4) Open the file. * - * Verify that the metadata cache is instructed to load the - * metadata cache image, and that the supplied address and length - * are HADDR_UNDEF and zero respectively. Note that these values + * Verify that the metadata cache is instructed to load the + * metadata cache image, and that the supplied address and length + * are HADDR_UNDEF and zero respectively. Note that these values * indicate that the metadata image block doesn't exist. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -1439,13 +1449,13 @@ check_cache_image_ctl_flow_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 5) Open and close a dataset. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -1461,9 +1471,9 @@ check_cache_image_ctl_flow_1(void) */ } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ @@ -1476,24 +1486,24 @@ check_cache_image_ctl_flow_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 7) Open the file. + + + /* 7) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -1501,9 +1511,9 @@ check_cache_image_ctl_flow_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 8) Close the file. */ @@ -1516,9 +1526,9 @@ check_cache_image_ctl_flow_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 9) Delete the file */ @@ -1541,63 +1551,63 @@ check_cache_image_ctl_flow_1(void) } /* check_cache_image_ctl_flow_1() */ - + /*------------------------------------------------------------------------- * Function: check_cache_image_ctl_flow_2() * * Purpose: This test is one of a sequence of control flow tests intended - * to verify that control flow for the cache image feature works - * as expected. + * to verify that control flow for the cache image feature works + * as expected. * - * This test is an initial smoke check, so the sequence of - * operations is relatively simple. In particular, we are - * testing: + * This test is an initial smoke check, so the sequence of + * operations is relatively simple. In particular, we are + * testing: * - * i) Creation of file with cache image FAPL entry set - * and insertion of metadata cache image superblock - * message on file close. + * i) Creation of file with cache image FAPL entry set + * and insertion of metadata cache image superblock + * message on file close. * - * ii) Open of file with metadata cache image superblock - * message, transmission of message to metadata cache, - * and deletion of superblock message prior to close. + * ii) Open of file with metadata cache image superblock + * message, transmission of message to metadata cache, + * and deletion of superblock message prior to close. * - * Note that unlike the previous test, no operations are performed - * on the file. As a result of this, the metadata cache image - * message is not processed until the metadata cache receives - * the file close warning. (Under normal circumstances, it is - * processed as part of the first protect operation after the - * superblock is loaded.) + * Note that unlike the previous test, no operations are performed + * on the file. As a result of this, the metadata cache image + * message is not processed until the metadata cache receives + * the file close warning. (Under normal circumstances, it is + * processed as part of the first protect operation after the + * superblock is loaded.) * - * In this particular test, we preform the following operations: + * In this particular test, we preform the following operations: * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 2) Close the file. + * 2) Close the file. * - * 3) Open the file. + * 3) Open the file. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file. + * 7) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 8) Close the file. + * 8) Close the file. * - * 9) Delete the file. + * 9) Delete the file. * * Return: void * @@ -1608,7 +1618,7 @@ check_cache_image_ctl_flow_1(void) */ static unsigned -check_cache_image_ctl_flow_2(void) +check_cache_image_ctl_flow_2(hbool_t single_file_vfd) { const char * fcn_name = "check_cache_image_ctl_flow_2()"; char filename[512]; @@ -1620,9 +1630,16 @@ check_cache_image_ctl_flow_2(void) TESTING("metadata cache image control flow test 2"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* setup the file name */ @@ -1636,16 +1653,16 @@ check_cache_image_ctl_flow_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * - * Set flags forcing creation of metadata cache image super block - * extension message only. + * Set flags forcing creation of metadata cache image super block + * extension message only. */ if ( pass ) { @@ -1654,8 +1671,8 @@ check_cache_image_ctl_flow_2(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -1663,10 +1680,10 @@ check_cache_image_ctl_flow_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Close the file. */ if ( pass ) { @@ -1679,26 +1696,26 @@ check_cache_image_ctl_flow_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 3) Open the file. + + + /* 3) Open the file. * - * Verify that the metadata cache is instructed to load the - * metadata cache image, and that the supplied address and length - * are HADDR_UNDEF and zero respectively. Note that these values + * Verify that the metadata cache is instructed to load the + * metadata cache image, and that the supplied address and length + * are HADDR_UNDEF and zero respectively. Note that these values * indicate that the metadata image block doesn't exist. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -1706,10 +1723,10 @@ check_cache_image_ctl_flow_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 4) Close the file. */ if ( pass ) { @@ -1721,24 +1738,24 @@ check_cache_image_ctl_flow_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 5) Open the file. + + + /* 5) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -1746,9 +1763,9 @@ check_cache_image_ctl_flow_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ @@ -1761,9 +1778,9 @@ check_cache_image_ctl_flow_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Delete the file */ @@ -1786,81 +1803,81 @@ check_cache_image_ctl_flow_2(void) } /* check_cache_image_ctl_flow_2() */ - + /*------------------------------------------------------------------------- * Function: check_cache_image_ctl_flow_3() * * Purpose: This test is one of a sequence of control flow tests intended - * to verify that control flow for the cache image feature works - * as expected. + * to verify that control flow for the cache image feature works + * as expected. * - * The objectives of this test are to: + * The objectives of this test are to: * - * i) Test operation of the metadata cache image FAPL - * entry set on open of an existing file. This - * should result in the insertion of a metadata - * cache image superblock message on file close. + * i) Test operation of the metadata cache image FAPL + * entry set on open of an existing file. This + * should result in the insertion of a metadata + * cache image superblock message on file close. * - * ii) Test operation of the metadata cache image super - * block extension message when it appears in a file - * that is opened READ ONLY. + * ii) Test operation of the metadata cache image super + * block extension message when it appears in a file + * that is opened READ ONLY. * - * Note that in all cases we are performing operations on the - * file between file open and close. While this is the - * typical case, we must repeat this test without operations - * on the file. + * Note that in all cases we are performing operations on the + * file between file open and close. While this is the + * typical case, we must repeat this test without operations + * on the file. * - * 1) Create a HDF5 file WITHOUT the cache image FAPL entry. + * 1) Create a HDF5 file WITHOUT the cache image FAPL entry. * - * Verify that the cache is NOT informed of the cache image - * FAPL entry. + * Verify that the cache is NOT informed of the cache image + * FAPL entry. * - * 2) Close the file. + * 2) Close the file. * - * 3) Open the file WITH the cache image FAPL entry. + * 3) Open the file WITH the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 4) Create some datasets. + * 4) Create some datasets. * - * 5) Close the file. + * 5) Close the file. * - * 6) Open the file READ ONLY. + * 6) Open the file READ ONLY. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 7) Verify the contents of the datasets. + * 7) Verify the contents of the datasets. * - * 8) Close the file. + * 8) Close the file. * - * 9) Open the file READ/WRITE. + * 9) Open the file READ/WRITE. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 10) Verify the contents of the datasets. + * 10) Verify the contents of the datasets. * - * 11) Close the file. + * 11) Close the file. * - * 12) Open the file + * 12) Open the file * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 13) Close the file. + * 13) Close the file. * - * 14) Delete the file. + * 14) Delete the file. * * Return: void * @@ -1871,7 +1888,7 @@ check_cache_image_ctl_flow_2(void) */ static unsigned -check_cache_image_ctl_flow_3(void) +check_cache_image_ctl_flow_3(hbool_t single_file_vfd) { const char * fcn_name = "check_cache_image_ctl_flow_3()"; char filename[512]; @@ -1883,6 +1900,13 @@ check_cache_image_ctl_flow_3(void) TESTING("metadata cache image control flow test 3"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; if ( show_progress ) /* 0 */ @@ -1901,10 +1925,10 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 1 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 1) Create a HDF5 file WITHOUT the cache image FAPL entry. + + /* 1) Create a HDF5 file WITHOUT the cache image FAPL entry. * - * Verify that the cache is NOT informed of the cache image + * Verify that the cache is NOT informed of the cache image * FAPL entry. */ @@ -1914,8 +1938,8 @@ check_cache_image_ctl_flow_3(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -1926,7 +1950,7 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 2 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Close the file. */ if ( pass ) { @@ -1940,13 +1964,13 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 3 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 3) Open the file WITH the cache image FAPL entry. + + + /* 3) Open the file WITH the cache image FAPL entry. * * Verify that the cache is informed of the cache image FAPL entry. * - * Set flags forcing creation of metadata cache image super block + * Set flags forcing creation of metadata cache image super block * extension message only. */ @@ -1956,8 +1980,8 @@ check_cache_image_ctl_flow_3(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -1993,13 +2017,13 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 6 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Open the file READ ONLY. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. */ @@ -2007,11 +2031,11 @@ check_cache_image_ctl_flow_3(void) if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2021,7 +2045,7 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 7 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Verify the contents of the datasets. */ @@ -2047,13 +2071,13 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 9 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 9) Open the file READ/WRITE. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. */ @@ -2061,11 +2085,11 @@ check_cache_image_ctl_flow_3(void) if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2087,7 +2111,7 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 11 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 11) Close the file. */ if ( pass ) { @@ -2102,21 +2126,21 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 12 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 12) Open the file * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2142,7 +2166,7 @@ check_cache_image_ctl_flow_3(void) if ( show_progress ) /* 14 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 14) Delete the file. */ if ( pass ) { @@ -2165,73 +2189,73 @@ check_cache_image_ctl_flow_3(void) } /* check_cache_image_ctl_flow_3() */ - + /*------------------------------------------------------------------------- * Function: check_cache_image_ctl_flow_4() * * Purpose: This test is one of a sequence of control flow tests intended - * to verify that control flow for the cache image feature works - * as expected. + * to verify that control flow for the cache image feature works + * as expected. * - * The objectives of this test are to: + * The objectives of this test are to: * - * i) Test operation of the metadata cache image FAPL - * entry set on open of an existing file. This - * should result in the insertion of a metadata - * cache image superblock message on file close. + * i) Test operation of the metadata cache image FAPL + * entry set on open of an existing file. This + * should result in the insertion of a metadata + * cache image superblock message on file close. * - * ii) Test operation of the metadata cache image super - * block extension message when it appears in a file - * that is opened READ ONLY. + * ii) Test operation of the metadata cache image super + * block extension message when it appears in a file + * that is opened READ ONLY. * - * In this test we avoid all file access beyond file open - * and close. + * In this test we avoid all file access beyond file open + * and close. * - * 1) Create a HDF5 file WITHOUT the cache image FAPL entry. + * 1) Create a HDF5 file WITHOUT the cache image FAPL entry. * - * Verify that the cache is NOT informed of the cache image - * FAPL entry. + * Verify that the cache is NOT informed of the cache image + * FAPL entry. * - * 2) Close the file. + * 2) Close the file. * - * 3) Open the file WITH the cache image FAPL entry. + * 3) Open the file WITH the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 4) Close the file. + * 4) Close the file. * - * 5) Open the file READ ONLY. + * 5) Open the file READ ONLY. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file READ/WRITE. + * 7) Open the file READ/WRITE. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 8) Close the file. + * 8) Close the file. * - * 9) Open the file + * 9) Open the file * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 10) Close the file. + * 10) Close the file. * - * 11) Delete the file. + * 11) Delete the file. * * Return: void * @@ -2242,7 +2266,7 @@ check_cache_image_ctl_flow_3(void) */ static unsigned -check_cache_image_ctl_flow_4(void) +check_cache_image_ctl_flow_4(hbool_t single_file_vfd) { const char * fcn_name = "check_cache_image_ctl_flow_4()"; char filename[512]; @@ -2254,6 +2278,13 @@ check_cache_image_ctl_flow_4(void) TESTING("metadata cache image control flow test 4"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; if ( show_progress ) /* 0 */ @@ -2272,10 +2303,10 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 1 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 1) Create a HDF5 file WITHOUT the cache image FAPL entry. + + /* 1) Create a HDF5 file WITHOUT the cache image FAPL entry. * - * Verify that the cache is NOT informed of the cache image + * Verify that the cache is NOT informed of the cache image * FAPL entry. */ @@ -2285,8 +2316,8 @@ check_cache_image_ctl_flow_4(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2297,7 +2328,7 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 2 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Close the file. */ if ( pass ) { @@ -2311,13 +2342,13 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 3 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 3) Open the file WITH the cache image FAPL entry. + + + /* 3) Open the file WITH the cache image FAPL entry. * * Verify that the cache is informed of the cache image FAPL entry. * - * Set flags forcing creation of metadata cache image super block + * Set flags forcing creation of metadata cache image super block * extension message only. */ @@ -2327,8 +2358,8 @@ check_cache_image_ctl_flow_4(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -2353,13 +2384,13 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 5 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 5) Open the file READ ONLY. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. */ @@ -2367,11 +2398,11 @@ check_cache_image_ctl_flow_4(void) if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2381,7 +2412,7 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 6 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ @@ -2396,13 +2427,13 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 7 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Open the file READ/WRITE. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. */ @@ -2410,11 +2441,11 @@ check_cache_image_ctl_flow_4(void) if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2440,21 +2471,21 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 9 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 9) Open the file * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2480,7 +2511,7 @@ check_cache_image_ctl_flow_4(void) if ( show_progress ) /* 11 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 11) Delete the file. */ if ( pass ) { @@ -2503,66 +2534,66 @@ check_cache_image_ctl_flow_4(void) } /* check_cache_image_ctl_flow_4() */ - + /*------------------------------------------------------------------------- * Function: check_cache_image_ctl_flow_5() * * Purpose: This test is one of a sequence of control flow tests intended - * to verify that control flow for the cache image feature works - * as expected. + * to verify that control flow for the cache image feature works + * as expected. * - * The objective of this test is verify correct control flow - * when a file with a metadata cache image superblock extension - * message is opened with the metadata cache image FAPL entry. + * The objective of this test is verify correct control flow + * when a file with a metadata cache image superblock extension + * message is opened with the metadata cache image FAPL entry. * - * Note that in all cases we are performing operations on the - * file between file open and close. While this is the - * typical case, we must repeat this test without operations - * on the file. + * Note that in all cases we are performing operations on the + * file between file open and close. While this is the + * typical case, we must repeat this test without operations + * on the file. * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 2) Create some datasets. + * 2) Create some datasets. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file WITH the cache image FAPL entry. + * 4) Open the file WITH the cache image FAPL entry. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 5) Verify the contents of the datasets. + * 5) Verify the contents of the datasets. * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file. + * 7) Open the file. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 8) Verify the contents of the datasets. + * 8) Verify the contents of the datasets. * - * 9) Close the file. + * 9) Close the file. * - * 10) Delete the file. + * 10) Delete the file. * * Return: void * @@ -2573,7 +2604,7 @@ check_cache_image_ctl_flow_4(void) */ static unsigned -check_cache_image_ctl_flow_5(void) +check_cache_image_ctl_flow_5(hbool_t single_file_vfd) { const char * fcn_name = "check_cache_image_ctl_flow_5()"; char filename[512]; @@ -2585,6 +2616,13 @@ check_cache_image_ctl_flow_5(void) TESTING("metadata cache image control flow test 5"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; if ( show_progress ) /* 0 */ @@ -2604,12 +2642,12 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 1 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 1) Create a HDF5 file with the cache image FAPL entry. + + /* 1) Create a HDF5 file with the cache image FAPL entry. * * Verify that the cache is informed of the cache image FAPL entry. * - * Set flags forcing creation of metadata cache image + * Set flags forcing creation of metadata cache image * super block extension message only. */ @@ -2619,8 +2657,8 @@ check_cache_image_ctl_flow_5(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -2630,7 +2668,7 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 2 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create some datasets. */ @@ -2642,7 +2680,7 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 3 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 3) Close the file. */ if ( pass ) { @@ -2657,30 +2695,30 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 4 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 4) Open the file WITH the cache image FAPL entry. + + /* 4) Open the file WITH the cache image FAPL entry. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. * - * Verify that the cache is informed of the cache image + * Verify that the cache is informed of the cache image * FAPL entry. * - * Set flags forcing creation of metadata cache image + * Set flags forcing creation of metadata cache image * super block extension message only. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -2701,7 +2739,7 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 6 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ if ( pass ) { @@ -2716,12 +2754,12 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 7 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 7) Open the file. + + /* 7) Open the file. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. */ @@ -2729,11 +2767,11 @@ check_cache_image_ctl_flow_5(void) if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -2753,8 +2791,8 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 9 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 9) Close the file. */ if ( pass ) { @@ -2769,7 +2807,7 @@ check_cache_image_ctl_flow_5(void) if ( show_progress ) /* 10 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 10) Delete the file. */ if ( pass ) { @@ -2792,58 +2830,58 @@ check_cache_image_ctl_flow_5(void) } /* check_cache_image_ctl_flow_5() */ - + /*------------------------------------------------------------------------- * Function: check_cache_image_ctl_flow_6() * * Purpose: This test is one of a sequence of control flow tests intended - * to verify that control flow for the cache image feature works - * as expected. + * to verify that control flow for the cache image feature works + * as expected. * - * The objective of this test is verify correct control flow - * when a file with a metadata cache image superblock extension - * message is opened with the metadata cache image FAPL entry. + * The objective of this test is verify correct control flow + * when a file with a metadata cache image superblock extension + * message is opened with the metadata cache image FAPL entry. * - * In this test we avoid all file activity other than open - * and close. + * In this test we avoid all file activity other than open + * and close. * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 2) Close the file. + * 2) Close the file. * - * 3) Open the file WITH the cache image FAPL entry. + * 3) Open the file WITH the cache image FAPL entry. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set flags forcing creation of metadata cache image - * super block extension message only. + * Set flags forcing creation of metadata cache image + * super block extension message only. * - * 4) Close the file. + * 4) Close the file. * - * 5) Open the file. + * 5) Open the file. * - * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and - * zero respectively. Note that these values indicate - * that the metadata image block doesn't exist. + * Verify that the metadata cache is instructed + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and + * zero respectively. Note that these values indicate + * that the metadata image block doesn't exist. * - * 6) Close the file. + * 6) Close the file. * - * 7) Delete the file. + * 7) Delete the file. * * Return: void * @@ -2854,7 +2892,7 @@ check_cache_image_ctl_flow_5(void) */ static unsigned -check_cache_image_ctl_flow_6(void) +check_cache_image_ctl_flow_6(hbool_t single_file_vfd) { const char * fcn_name = "check_cache_image_ctl_flow_6()"; char filename[512]; @@ -2866,6 +2904,13 @@ check_cache_image_ctl_flow_6(void) TESTING("metadata cache image control flow test 6"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; if ( show_progress ) /* 0 */ @@ -2885,12 +2930,12 @@ check_cache_image_ctl_flow_6(void) if ( show_progress ) /* 1 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 1) Create a HDF5 file with the cache image FAPL entry. + + /* 1) Create a HDF5 file with the cache image FAPL entry. * * Verify that the cache is informed of the cache image FAPL entry. * - * Set flags forcing creation of metadata cache image + * Set flags forcing creation of metadata cache image * super block extension message only. */ @@ -2900,8 +2945,8 @@ check_cache_image_ctl_flow_6(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -2911,7 +2956,7 @@ check_cache_image_ctl_flow_6(void) if ( show_progress ) /* 2 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Close the file. */ @@ -2927,30 +2972,30 @@ check_cache_image_ctl_flow_6(void) if ( show_progress ) /* 3 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 4) Open the file WITH the cache image FAPL entry. + + /* 4) Open the file WITH the cache image FAPL entry. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. * - * Verify that the cache is informed of the cache image + * Verify that the cache is informed of the cache image * FAPL entry. * - * Set flags forcing creation of metadata cache image + * Set flags forcing creation of metadata cache image * super block extension message only. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG, /* file_id_ptr */ &file_id, @@ -2961,7 +3006,7 @@ check_cache_image_ctl_flow_6(void) if ( show_progress ) /* 4 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 5) Close the file. */ if ( pass ) { @@ -2976,12 +3021,12 @@ check_cache_image_ctl_flow_6(void) if ( show_progress ) /* 5 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 5) Open the file. + + /* 5) Open the file. * * Verify that the metadata cache is instructed - * to load the metadata cache image, and that the - * supplied address and length are HADDR_UNDEF and + * to load the metadata cache image, and that the + * supplied address and length are HADDR_UNDEF and * zero respectively. Note that these values indicate * that the metadata image block doesn't exist. */ @@ -2989,11 +3034,11 @@ check_cache_image_ctl_flow_6(void) if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -3004,7 +3049,7 @@ check_cache_image_ctl_flow_6(void) if ( show_progress ) /* 6 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ if ( pass ) { @@ -3019,7 +3064,7 @@ check_cache_image_ctl_flow_6(void) if ( show_progress ) /* 7 */ HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Delete the file. */ if ( pass ) { @@ -3042,93 +3087,93 @@ check_cache_image_ctl_flow_6(void) } /* check_cache_image_ctl_flow_6() */ - + /*------------------------------------------------------------------------- * Function: cache_image_smoke_check_1() * * Purpose: This test is one of a sequence of tests intended - * to exercise the cache image feature verifying that it - * works more or less correctly in common cases. + * to exercise the cache image feature verifying that it + * works more or less correctly in common cases. * - * This test is an initial smoke check, so the sequence of - * operations is relatively simple. In particular, we are - * testing: + * This test is an initial smoke check, so the sequence of + * operations is relatively simple. In particular, we are + * testing: * - * i) Creation of file with metadata cache image - * superblock extension message and cache image - * block. + * i) Creation of file with metadata cache image + * superblock extension message and cache image + * block. * - * ii) Open of file with metadata cache image superblock - * extension message and cache image block. - * Deserialization and removal of both, insertion - * of prefetched cache entries, and deserialization - * of prefetched cache entries as they are protected. + * ii) Open of file with metadata cache image superblock + * extension message and cache image block. + * Deserialization and removal of both, insertion + * of prefetched cache entries, and deserialization + * of prefetched cache entries as they are protected. * - * iii) Subsequent write of file without metadata cache - * image. + * iii) Subsequent write of file without metadata cache + * image. * - * iv) Open and close of file with metadata cache image - * image requested, but with no operations on the - * file. + * iv) Open and close of file with metadata cache image + * image requested, but with no operations on the + * file. * - * To do this: + * To do this: * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set all cache image flags, forcing full functionality. + * Set all cache image flags, forcing full functionality. * - * 2) Create some datasets in the file. + * 2) Create some datasets in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file. + * 4) Open the file. * - * Verify that the metadata cache is instructed - * to load the metadata cache image. + * Verify that the metadata cache is instructed + * to load the metadata cache image. * - * 5) Open a dataset. + * 5) Open a dataset. * - * Verify that it contains the expected data + * Verify that it contains the expected data * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file. + * 7) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 8) Open a dataset. + * 8) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 9) Close the file. + * 9) Close the file. * - * 10) Open the file with the cache image FAPL entry. + * 10) Open the file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set all cache image flags, forcing full functionality. + * Set all cache image flags, forcing full functionality. * - * 11) Close the file. Since there has been no access to - * any entries that would be included in the cache image, - * there should be no cache image. + * 11) Close the file. Since there has been no access to + * any entries that would be included in the cache image, + * there should be no cache image. * - * 12) Open the file. + * 12) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 13) Open a dataset. + * 13) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 14) Close the file. + * 14) Close the file. * - * 15) Delete the file. + * 15) Delete the file. * * Return: void * @@ -3139,7 +3184,7 @@ check_cache_image_ctl_flow_6(void) */ static unsigned -cache_image_smoke_check_1(void) +cache_image_smoke_check_1(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_smoke_check_1()"; char filename[512]; @@ -3151,9 +3196,16 @@ cache_image_smoke_check_1(void) TESTING("metadata cache image smoke check 1"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -3168,13 +3220,13 @@ cache_image_smoke_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * * Set flags forcing full function of the cache image feature. */ @@ -3185,8 +3237,8 @@ cache_image_smoke_check_1(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -3194,10 +3246,10 @@ cache_image_smoke_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create some datasets in the file. */ if ( pass ) { @@ -3218,10 +3270,10 @@ cache_image_smoke_check_1(void) - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -3234,26 +3286,26 @@ cache_image_smoke_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 4) Open the file. + + + /* 4) Open the file. * - * Verify that the metadata cache is instructed to load the - * metadata cache image, and that the supplied address and length - * are HADDR_UNDEF and zero respectively. Note that these values + * Verify that the metadata cache is instructed to load the + * metadata cache image, and that the supplied address and length + * are HADDR_UNDEF and zero respectively. Note that these values * indicate that the metadata image block doesn't exist. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -3261,13 +3313,13 @@ cache_image_smoke_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 5) Open and close a dataset. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -3287,9 +3339,9 @@ cache_image_smoke_check_1(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ @@ -3302,24 +3354,24 @@ cache_image_smoke_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 7) Open the file. + + + /* 7) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -3327,13 +3379,13 @@ cache_image_smoke_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 8) Open and close a dataset. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -3354,7 +3406,7 @@ cache_image_smoke_check_1(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -3369,24 +3421,24 @@ cache_image_smoke_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 10) Open the file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -3394,13 +3446,13 @@ cache_image_smoke_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 11) Close the file. Since there has been no access to - * any entries that would be included in the cache image, - * there should be no cache image. + + /* 11) Close the file. Since there has been no access to + * any entries that would be included in the cache image, + * there should be no cache image. */ if ( pass ) { @@ -3412,24 +3464,24 @@ cache_image_smoke_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 12) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -3437,13 +3489,13 @@ cache_image_smoke_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 13) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. */ if ( pass ) { @@ -3463,10 +3515,10 @@ cache_image_smoke_check_1(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 14) Close the file. */ if ( pass ) { @@ -3478,9 +3530,9 @@ cache_image_smoke_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 15) Delete the file */ @@ -3503,55 +3555,55 @@ cache_image_smoke_check_1(void) } /* cache_image_smoke_check_1() */ - + /*------------------------------------------------------------------------- * Function: cache_image_smoke_check_2() * * Purpose: This test is one of a sequence of tests intended - * to exercise the cache image feature verifying that it - * works more or less correctly in common cases. + * to exercise the cache image feature verifying that it + * works more or less correctly in common cases. * - * This test is an initial smoke check, so the sequence of - * operations is relatively simple. In particular, we are - * testing: + * This test is an initial smoke check, so the sequence of + * operations is relatively simple. In particular, we are + * testing: * - * i) Creation of file with metadata cache image - * superblock extension message and cache image - * block. + * i) Creation of file with metadata cache image + * superblock extension message and cache image + * block. * - * ii) Open of file with metadata cache image superblock - * extension message and cache image block. Write - * of prefetched entries to file on file close. + * ii) Open of file with metadata cache image superblock + * extension message and cache image block. Write + * of prefetched entries to file on file close. * - * To do this: + * To do this: * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set all cache image flags, forcing full functionality. + * Set all cache image flags, forcing full functionality. * - * 2) Create some datasets in the file. + * 2) Create some datasets in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file. + * 4) Open the file. * - * 5) Close the file. + * 5) Close the file. * - * 6) Open the file. + * 6) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 7) Open a dataset. + * 7) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 8) Close the file. + * 8) Close the file. * - * 9) Delete the file. + * 9) Delete the file. * * Return: void * @@ -3562,7 +3614,7 @@ cache_image_smoke_check_1(void) */ static unsigned -cache_image_smoke_check_2(void) +cache_image_smoke_check_2(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_smoke_check_2()"; char filename[512]; @@ -3574,9 +3626,16 @@ cache_image_smoke_check_2(void) TESTING("metadata cache image smoke check 2"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -3591,13 +3650,13 @@ cache_image_smoke_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * * Set flags forcing full function of the cache image feature. */ @@ -3608,8 +3667,8 @@ cache_image_smoke_check_2(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -3617,10 +3676,10 @@ cache_image_smoke_check_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create some datasets in the file. */ if ( pass ) { @@ -3640,10 +3699,10 @@ cache_image_smoke_check_2(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -3656,24 +3715,23 @@ cache_image_smoke_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 4) Open the file. + + /* 4) Open the file. * - * Verify that the metadata cache is instructed to load the + * Verify that the metadata cache is instructed to load the * metadata cache image. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -3682,15 +3740,15 @@ cache_image_smoke_check_2(void) } /* can't verify that metadata cache image has been loaded directly, - * as in this cache, the load will not happen until close, and thus - * the images_created stat will not be readily available as it is + * as in this cache, the load will not happen until close, and thus + * the images_created stat will not be readily available as it is * incremented just before the cache is shut down. */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 5) Close the file. */ if ( pass ) { @@ -3702,24 +3760,24 @@ cache_image_smoke_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 6) Open the file. + + + /* 6) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -3727,13 +3785,13 @@ cache_image_smoke_check_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 7) Open and close a dataset. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -3742,7 +3800,7 @@ cache_image_smoke_check_2(void) verify_datasets(file_id, 0, 5); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -3757,9 +3815,9 @@ cache_image_smoke_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 9) Delete the file */ @@ -3782,77 +3840,77 @@ cache_image_smoke_check_2(void) } /* cache_image_smoke_check_2() */ - + /*------------------------------------------------------------------------- * Function: cache_image_smoke_check_3() * * Purpose: This test is one of a sequence of tests intended - * to exercise the cache image feature verifying that it - * works more or less correctly in common cases. + * to exercise the cache image feature verifying that it + * works more or less correctly in common cases. * - * This test is an initial smoke check, so the sequence of - * operations is relatively simple. In particular, we are - * testing: + * This test is an initial smoke check, so the sequence of + * operations is relatively simple. In particular, we are + * testing: * - * i) Creation of file with metadata cache image - * superblock extension message and cache image - * block. + * i) Creation of file with metadata cache image + * superblock extension message and cache image + * block. * - * ii) Read only open and close of file with metadata - * cache image superblock extension message and - * cache image block. + * ii) Read only open and close of file with metadata + * cache image superblock extension message and + * cache image block. * - * iii) Subsequent R/W open and close of file with metadata - * cache image superblock extension message and + * iii) Subsequent R/W open and close of file with metadata + * cache image superblock extension message and * cache image block. * - * To do this: + * To do this: * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set all cache image flags, forcing full functionality. + * Set all cache image flags, forcing full functionality. * - * 2) Create some datasets in the file. + * 2) Create some datasets in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file read only. + * 4) Open the file read only. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 5 Open a dataset. + * 5 Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file. + * 7) Open the file. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 8 Open a dataset. + * 8 Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 9) Close the file. + * 9) Close the file. * - * 10) Open the file. + * 10) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 11) Open a dataset. + * 11) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 12) Close the file. + * 12) Close the file. * - * 13) Delete the file. + * 13) Delete the file. * * Return: void * @@ -3863,7 +3921,7 @@ cache_image_smoke_check_2(void) */ static unsigned -cache_image_smoke_check_3(void) +cache_image_smoke_check_3(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_smoke_check_3()"; char filename[512]; @@ -3875,9 +3933,16 @@ cache_image_smoke_check_3(void) TESTING("metadata cache image smoke check 3"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -3892,13 +3957,13 @@ cache_image_smoke_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * * Set flags forcing full function of the cache image feature. */ @@ -3909,8 +3974,8 @@ cache_image_smoke_check_3(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -3918,10 +3983,10 @@ cache_image_smoke_check_3(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create some datasets in the file. */ if ( pass ) { @@ -3940,10 +4005,10 @@ cache_image_smoke_check_3(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -3956,24 +4021,24 @@ cache_image_smoke_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 4) Open the file read only. + + + /* 4) Open the file read only. * - * Verify that the metadata cache is instructed to load the + * Verify that the metadata cache is instructed to load the * metadata cache image. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -3981,13 +4046,13 @@ cache_image_smoke_check_3(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 5) Open and close a dataset. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -4007,10 +4072,10 @@ cache_image_smoke_check_3(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ if ( pass ) { @@ -4022,24 +4087,24 @@ cache_image_smoke_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 7) Open the file. + + + /* 7) Open the file. * - * Verify that the file contains a metadata cache image + * Verify that the file contains a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -4047,13 +4112,13 @@ cache_image_smoke_check_3(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 8) Open and close a dataset. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -4074,7 +4139,7 @@ cache_image_smoke_check_3(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -4088,22 +4153,22 @@ cache_image_smoke_check_3(void) failure_mssg = "H5Fclose() failed.\n"; } } - - - /* 10) Open the file. + + + /* 10) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -4111,13 +4176,13 @@ cache_image_smoke_check_3(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 11) Open and close a dataset. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -4138,7 +4203,7 @@ cache_image_smoke_check_3(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -4153,9 +4218,9 @@ cache_image_smoke_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 13) Delete the file */ @@ -4178,66 +4243,66 @@ cache_image_smoke_check_3(void) } /* cache_image_smoke_check_3() */ - + /*------------------------------------------------------------------------- * Function: cache_image_smoke_check_4() * - * Purpose: This test attempts to mimic the typical "poor man's - * parallel use case in which the file is passed between - * processes, each of which open the file, write some data, - * close the file, and then pass control on to the next - * process. + * Purpose: This test attempts to mimic the typical "poor man's + * parallel use case in which the file is passed between + * processes, each of which open the file, write some data, + * close the file, and then pass control on to the next + * process. * - * In this case, we only write one dataset per process. + * In this case, we only write one dataset per process. * - * Cycle of operation + * Cycle of operation * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set all cache image flags, forcing full functionality. + * Set all cache image flags, forcing full functionality. * - * 2) Create and write a dataset in the file. + * 2) Create and write a dataset in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file with the cache image FAPL entry. + * 4) Open the file with the cache image FAPL entry. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 5 Create and write a new dataset + * 5 Create and write a new dataset * - * 6) Close the file. + * 6) Close the file. * - * If sufficient datasets have been created, continue to + * If sufficient datasets have been created, continue to * 7). Otherwise goto 4) * - * 7) Open the file. + * 7) Open the file. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 8) Open all datasets that have been created, and - * verify that they contain the expected data. + * 8) Open all datasets that have been created, and + * verify that they contain the expected data. * - * 9) Close the file. + * 9) Close the file. * - * 10) Open the file. + * 10) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 11) Open all datasets that have been created, and + * 11) Open all datasets that have been created, and * verify that they contain the expected data. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 12) Close the file. + * 12) Close the file. * - * 13) Delete the file. + * 13) Delete the file. * * Return: void * @@ -4248,7 +4313,7 @@ cache_image_smoke_check_3(void) */ static unsigned -cache_image_smoke_check_4(void) +cache_image_smoke_check_4(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_smoke_check_4()"; char filename[512]; @@ -4262,9 +4327,16 @@ cache_image_smoke_check_4(void) TESTING("metadata cache image smoke check 4"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -4279,13 +4351,13 @@ cache_image_smoke_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * * Set flags forcing full function of the cache image feature. */ @@ -4296,8 +4368,8 @@ cache_image_smoke_check_4(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -4305,10 +4377,10 @@ cache_image_smoke_check_4(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create a dataset in the file. */ if ( pass ) { @@ -4327,10 +4399,10 @@ cache_image_smoke_check_4(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -4343,26 +4415,26 @@ cache_image_smoke_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); while ( ( pass ) && ( max_dset < MAX_NUM_DSETS ) ) { - - /* 4) Open the file. + + /* 4) Open the file. * - * Verify that the metadata cache is instructed to load the + * Verify that the metadata cache is instructed to load the * metadata cache image. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -4370,11 +4442,11 @@ cache_image_smoke_check_4(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) - HDfprintf(stdout, "%s:L1 cp = %d, max_dset = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L1 cp = %d, max_dset = %d, pass = %d.\n", fcn_name, cp, max_dset, pass); - + /* 5) Create a dataset in the file. */ if ( pass ) { @@ -4393,11 +4465,11 @@ cache_image_smoke_check_4(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) - HDfprintf(stdout, "%s:L2 cp = %d, max_dset = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L2 cp = %d, max_dset = %d, pass = %d.\n", fcn_name, cp + 1, max_dset, pass); - + /* 6) Close the file. */ if ( pass ) { @@ -4410,27 +4482,27 @@ cache_image_smoke_check_4(void) } } - if ( show_progress ) - HDfprintf(stdout, "%s:L3 cp = %d, max_dset = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L3 cp = %d, max_dset = %d, pass = %d.\n", fcn_name, cp + 2, max_dset, pass); } /* end while */ cp += 3; - - - /* 7) Open the file. + + + /* 7) Open the file. * - * Verify that the file contains a metadata cache image + * Verify that the file contains a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -4438,13 +4510,13 @@ cache_image_smoke_check_4(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 8) Open and close all datasets. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -4465,7 +4537,7 @@ cache_image_smoke_check_4(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -4479,22 +4551,22 @@ cache_image_smoke_check_4(void) failure_mssg = "H5Fclose() failed.\n"; } } - - - /* 10) Open the file. + + + /* 10) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -4502,13 +4574,13 @@ cache_image_smoke_check_4(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 11) Open and close all datasets. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ @@ -4529,7 +4601,7 @@ cache_image_smoke_check_4(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -4544,7 +4616,7 @@ cache_image_smoke_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* 13) Delete the file */ @@ -4565,82 +4637,81 @@ cache_image_smoke_check_4(void) FUNC, failure_mssg); return !pass; - } /* cache_image_smoke_check_4() */ - + /*------------------------------------------------------------------------- * Function: cache_image_smoke_check_5() * - * Purpose: This test attempts to mimic the typical "poor man's - * parallel use case in which the file is passed between - * processes, each of which open the file, write some data, - * close the file, and then pass control on to the next - * process. + * Purpose: This test attempts to mimic the typical "poor man's + * parallel use case in which the file is passed between + * processes, each of which open the file, write some data, + * close the file, and then pass control on to the next + * process. * - * In this case, we create one group for each process, and - * populate it with a "zoo" of HDF5 objects selected to - * (ideally) exercise all HDF5 on disk data structures. + * In this case, we create one group for each process, and + * populate it with a "zoo" of HDF5 objects selected to + * (ideally) exercise all HDF5 on disk data structures. * - * Cycle of operation + * Cycle of operation * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set all cache image flags, forcing full functionality. + * Set all cache image flags, forcing full functionality. * - * 2) Create a process specific group. + * 2) Create a process specific group. * - * 3) Construct a "zoo" in the above group, and validate it. + * 3) Construct a "zoo" in the above group, and validate it. * - * 4) Close the file. + * 4) Close the file. * - * 5) Open the file with the cache image FAPL entry. + * 5) Open the file with the cache image FAPL entry. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 6) Validate the "zoo" created in the previous file open. + * 6) Validate the "zoo" created in the previous file open. * - * 7) Create a process specific group for this file open + * 7) Create a process specific group for this file open * - * 8) Construct a "zoo" in the above group, and validate it. - * - * 9) Close the file. + * 8) Construct a "zoo" in the above group, and validate it. * - * If sufficient zoos have been created, continue to + * 9) Close the file. + * + * If sufficient zoos have been created, continue to * 10). Otherwise goto 5) * - * 10) Open the file R/O. + * 10) Open the file R/O. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 11) Validate all the zoos. + * 11) Validate all the zoos. * - * 12) Close the file. + * 12) Close the file. * - * 13) Open the file. + * 13) Open the file. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 14) Validate all the zoos. + * 14) Validate all the zoos. * - * 15) Close the file. + * 15) Close the file. * - * 16) Open the file. + * 16) Open the file. * - * Verify that the file doesn't contain a metadata cache - * image superblock extension message. + * Verify that the file doesn't contain a metadata cache + * image superblock extension message. * - * 17) Validate all the zoos. + * 17) Validate all the zoos. * - * 18) Close the file. + * 18) Close the file. * - * 19) Delete the file. + * 19) Delete the file. * * Return: void * @@ -4650,10 +4721,10 @@ cache_image_smoke_check_4(void) *------------------------------------------------------------------------- */ -#define MAX_NUM_GROUPS 128 +#define MAX_NUM_GROUPS 64 static unsigned -cache_image_smoke_check_5(void) +cache_image_smoke_check_5(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_smoke_check_5()"; char filename[512]; @@ -4670,30 +4741,41 @@ cache_image_smoke_check_5(void) TESTING("metadata cache image smoke check 5"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* setup the file name */ if ( pass ) { - if ( h5_fixname(FILENAMES[0], H5P_DEFAULT, filename, sizeof(filename)) + hid_t fapl_id = h5_fileaccess(); + + if ( h5_fixname(FILENAMES[0], fapl_id, filename, sizeof(filename)) == NULL ) { pass = FALSE; failure_mssg = "h5_fixname() failed.\n"; } + + H5Pclose(fapl_id); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * * Set flags forcing full function of the cache image feature. */ @@ -4704,8 +4786,8 @@ cache_image_smoke_check_5(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -4713,31 +4795,31 @@ cache_image_smoke_check_5(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* 2) Create a process specific group. */ if ( pass ) { - sprintf(process_group_name, "/process_%d", min_group); + HDsprintf(process_group_name, "/process_%d", min_group); - proc_gid = H5Gcreate2(file_id, process_group_name, H5P_DEFAULT, + proc_gid = H5Gcreate2(file_id, process_group_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); if ( proc_gid < 0 ) { - pass = FALSE; - failure_mssg = "H5Gcreate2() failed (1).\n"; + pass = FALSE; + failure_mssg = "H5Gcreate2() failed (1).\n"; } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* 3) Construct a "zoo" in the above group, and validate it. */ - if ( pass ) + if ( pass ) create_zoo(file_id, process_group_name, min_group); #if H5C_COLLECT_CACHE_STATS @@ -4751,16 +4833,16 @@ cache_image_smoke_check_5(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 4) Close the file. */ if ( pass ) { - if ( H5Gclose(proc_gid) < 0 ) { - + if ( H5Gclose(proc_gid) < 0 ) { + pass = FALSE; failure_mssg = "H5Gclose(proc_gid) failed. (1)"; } @@ -4776,26 +4858,26 @@ cache_image_smoke_check_5(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); while ( ( pass ) && ( max_group < MAX_NUM_GROUPS ) ) { - - /* 5) Open the file. + + /* 5) Open the file. * - * Verify that the metadata cache is instructed to load the + * Verify that the metadata cache is instructed to load the * metadata cache image. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -4803,13 +4885,13 @@ cache_image_smoke_check_5(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) - HDfprintf(stdout, "%s:L1 cp = %d, max_group = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L1 cp = %d, max_group = %d, pass = %d.\n", fcn_name, cp, max_group, pass); /* 6) Validate the "zoo" created in the previous file open. */ - if ( pass ) + if ( pass ) validate_zoo(file_id, process_group_name, max_group); #if H5C_COLLECT_CACHE_STATS @@ -4823,47 +4905,47 @@ cache_image_smoke_check_5(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) - HDfprintf(stdout, "%s:L2 cp = %d, max_group = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L2 cp = %d, max_group = %d, pass = %d.\n", fcn_name, cp + 1, max_group, pass); - /* 7) Create a process specific group for this file open */ + /* 7) Create a process specific group for this file open */ if ( pass ) { - max_group++; - sprintf(process_group_name, "/process_%d", max_group); + max_group++; + HDsprintf(process_group_name, "/process_%d", max_group); - proc_gid = H5Gcreate2(file_id, process_group_name, H5P_DEFAULT, + proc_gid = H5Gcreate2(file_id, process_group_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); if ( proc_gid < 0 ) { - pass = FALSE; - failure_mssg = "H5Gcreate2() failed (2).\n"; + pass = FALSE; + failure_mssg = "H5Gcreate2() failed (2).\n"; } } - if ( show_progress ) - HDfprintf(stdout, "%s:L3 cp = %d, max_group = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L3 cp = %d, max_group = %d, pass = %d.\n", fcn_name, cp + 2, max_group, pass); - - /* 8) Construct a "zoo" in the above group, and validate it. */ - if ( pass ) + + /* 8) Construct a "zoo" in the above group, and validate it. */ + if ( pass ) create_zoo(file_id, process_group_name, max_group); - if ( show_progress ) - HDfprintf(stdout, "%s:L4 cp = %d, max_group = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L4 cp = %d, max_group = %d, pass = %d.\n", fcn_name, cp + 3, max_group, pass); - + /* 9) Close the file. */ if ( pass ) { - if ( H5Gclose(proc_gid) < 0 ) { - + if ( H5Gclose(proc_gid) < 0 ) { + pass = FALSE; failure_mssg = "H5Gclose(process_gid) failed. (2)"; } @@ -4879,24 +4961,24 @@ cache_image_smoke_check_5(void) } } - if ( show_progress ) - HDfprintf(stdout, "%s:L5 cp = %d, max_group = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L5 cp = %d, max_group = %d, pass = %d.\n", fcn_name, cp + 4, max_group, pass); } /* end while */ cp += 5; - - /* 10) Open the file read only. + + /* 10) Open the file read only. * - * Verify that the file contains a metadata cache image + * Verify that the file contains a metadata cache image * superblock extension message. */ if(pass) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -4911,10 +4993,10 @@ cache_image_smoke_check_5(void) /* 11) Validate all the zoos. */ i = min_group; while(pass && i <= max_group) { - sprintf(process_group_name, "/process_%d", i); + HDsprintf(process_group_name, "/process_%d", i); validate_zoo(file_id, process_group_name, i++); } - + #if H5C_COLLECT_CACHE_STATS if( pass) { if(cache_ptr->images_loaded == 0) { @@ -4935,20 +5017,20 @@ cache_image_smoke_check_5(void) } } - /* 13) Open the file R/W. + /* 13) Open the file R/W. * - * Verify that the file contains a metadata cache image + * Verify that the file contains a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -4956,7 +5038,7 @@ cache_image_smoke_check_5(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -4964,10 +5046,10 @@ cache_image_smoke_check_5(void) i = min_group; while ( ( pass ) && ( i <= max_group ) ) { - sprintf(process_group_name, "/process_%d", i); + HDsprintf(process_group_name, "/process_%d", i); validate_zoo(file_id, process_group_name, i++); } - + #if H5C_COLLECT_CACHE_STATS if ( pass ) { @@ -4980,7 +5062,7 @@ cache_image_smoke_check_5(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -4994,22 +5076,22 @@ cache_image_smoke_check_5(void) failure_mssg = "H5Fclose() failed.\n"; } } - - - /* 16) Open the file. + + + /* 16) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -5017,22 +5099,21 @@ cache_image_smoke_check_5(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 17) Validate all the zoos. * - * Verify that the metadata cache image superblock + * Verify that the metadata cache image superblock * extension message has been deleted. */ i = min_group; while ( ( pass ) && ( i <= max_group ) ) { - - sprintf(process_group_name, "/process_%d", i); + HDsprintf(process_group_name, "/process_%d", i); validate_zoo(file_id, process_group_name, i++); } - + #if H5C_COLLECT_CACHE_STATS if ( pass ) { @@ -5045,7 +5126,7 @@ cache_image_smoke_check_5(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5060,9 +5141,9 @@ cache_image_smoke_check_5(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 19) Delete the file */ @@ -5086,78 +5167,78 @@ cache_image_smoke_check_5(void) } /* cache_image_smoke_check_5() */ - + /*------------------------------------------------------------------------- * Function: cache_image_smoke_check_6() * * Purpose: As the free space manager metadata is now included in the - * cache image, a smoke check to verify generally correct - * behaviour of the persistent free space managers seems - * prudent. + * cache image, a smoke check to verify generally correct + * behaviour of the persistent free space managers seems + * prudent. * - * The basic idea of this test is to construct a long - * sequence of dataset creations and deletions, all separated - * by file open/close cycles with cache image enabled. If the - * perisistant free space managers are performing as expected, - * the size of the file should stabilize. + * The basic idea of this test is to construct a long + * sequence of dataset creations and deletions, all separated + * by file open/close cycles with cache image enabled. If the + * perisistant free space managers are performing as expected, + * the size of the file should stabilize. * - * To implement this, proceed as outlined in the cycle of - * operation below: + * To implement this, proceed as outlined in the cycle of + * operation below: * - * Cycle of operation + * Cycle of operation * - * 1) Create a HDF5 file with the cache image FAPL entry. + * 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image - * FAPL entry. + * Verify that the cache is informed of the cache image + * FAPL entry. * - * Set all cache image flags, forcing full functionality. + * Set all cache image flags, forcing full functionality. * - * 2) Create and write a dataset in the file. + * 2) Create and write a dataset in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file with the cache image FAPL entry. + * 4) Open the file with the cache image FAPL entry. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 5) Create and write a new dataset. + * 5) Create and write a new dataset. * - * 6) Verify and delete the old dataset. + * 6) Verify and delete the old dataset. * - * 7) Close the file. + * 7) Close the file. * - * If sufficient datasets have been created, and then - * deleteded continue to 8). Otherwise goto 4) + * If sufficient datasets have been created, and then + * deleteded continue to 8). Otherwise goto 4) * - * 8) Open the file. + * 8) Open the file. * - * Verify that the file contains a metadata cache - * image superblock extension message. + * Verify that the file contains a metadata cache + * image superblock extension message. * - * 9) Verify the last dataset created. + * 9) Verify the last dataset created. * - * 10) Close the file. + * 10) Close the file. * - * 11) Open the file. + * 11) Open the file. * - * 12) Verify and delete the last dataset. + * 12) Verify and delete the last dataset. * - * Verify that a metadata cache image is not loaded. + * Verify that a metadata cache image is not loaded. * - * 13) Close the file. + * 13) Close the file. * - * 14) Get the size of the file. Verify that it is less - * than 20 KB. Without deletions and persistant free - * space managers, size size is about 167 MB, so this - * is sufficient to verify that the persistant free - * space managers are more or less doing their job. + * 14) Get the size of the file. Verify that it is less + * than 20 KB. Without deletions and persistent free + * space managers, size size is about 167 MB, so this + * is sufficient to verify that the persistent free + * space managers are more or less doing their job. * * Note that in the absence of paged allocation, file * size gets below 1 KB. * - * 15) Delete the file. + * 15) Delete the file. * * Return: void * @@ -5168,7 +5249,7 @@ cache_image_smoke_check_5(void) */ static unsigned -cache_image_smoke_check_6(void) +cache_image_smoke_check_6(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_smoke_check_6()"; char filename[512]; @@ -5183,9 +5264,16 @@ cache_image_smoke_check_6(void) TESTING("metadata cache image smoke check 6"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5200,13 +5288,13 @@ cache_image_smoke_check_6(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a HDF5 file with the cache image FAPL entry. + /* 1) Create a HDF5 file with the cache image FAPL entry. * - * Verify that the cache is informed of the cache image FAPL entry. + * Verify that the cache is informed of the cache image FAPL entry. * * Set flags forcing full function of the cache image feature. */ @@ -5217,8 +5305,8 @@ cache_image_smoke_check_6(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -5226,10 +5314,10 @@ cache_image_smoke_check_6(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create a dataset in the file. */ if ( pass ) { @@ -5248,10 +5336,10 @@ cache_image_smoke_check_6(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -5264,26 +5352,26 @@ cache_image_smoke_check_6(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); while ( ( pass ) && ( max_dset < MAX_NUM_DSETS ) ) { - - /* 4) Open the file. + + /* 4) Open the file. * - * Verify that the metadata cache is instructed to load the + * Verify that the metadata cache is instructed to load the * metadata cache image. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -5291,11 +5379,11 @@ cache_image_smoke_check_6(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) - HDfprintf(stdout, "%s:L1 cp = %d, max_dset = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L1 cp = %d, max_dset = %d, pass = %d.\n", fcn_name, cp, max_dset, pass); - + /* 5) Create a dataset in the file. */ if ( pass ) { @@ -5314,22 +5402,22 @@ cache_image_smoke_check_6(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) - HDfprintf(stdout, "%s:L2 cp = %d, max_dset = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L2 cp = %d, max_dset = %d, pass = %d.\n", fcn_name, cp + 1, max_dset, pass); - /* 6) Verify and delete the old dataset. */ - if ( pass ) { + /* 6) Verify and delete the old dataset. */ + if ( pass ) { - delete_datasets(file_id, min_dset - 2, max_dset - 2); - } + delete_datasets(file_id, min_dset - 2, max_dset - 2); + } - if ( show_progress ) - HDfprintf(stdout, "%s:L3 cp = %d, max_dset = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L3 cp = %d, max_dset = %d, pass = %d.\n", fcn_name, cp + 2, max_dset, pass); - + /* 7) Close the file. */ if ( pass ) { @@ -5342,27 +5430,27 @@ cache_image_smoke_check_6(void) } } - if ( show_progress ) - HDfprintf(stdout, "%s:L4 cp = %d, max_dset = %d, pass = %d.\n", + if ( show_progress ) + HDfprintf(stdout, "%s:L4 cp = %d, max_dset = %d, pass = %d.\n", fcn_name, cp + 3, max_dset, pass); } /* end while */ cp += 4; - - - /* 8) Open the file. + + + /* 8) Open the file. * - * Verify that the file contains a metadata cache image + * Verify that the file contains a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -5370,10 +5458,10 @@ cache_image_smoke_check_6(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 9) Verify the last dataset created. */ if ( pass ) { @@ -5393,7 +5481,7 @@ cache_image_smoke_check_6(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5407,22 +5495,22 @@ cache_image_smoke_check_6(void) failure_mssg = "H5Fclose() failed.\n"; } } - - - /* 11) Open the file. + + + /* 11) Open the file. * - * Verify that the file doesn't contain a metadata cache image + * Verify that the file doesn't contain a metadata cache image * superblock extension message. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -5430,13 +5518,13 @@ cache_image_smoke_check_6(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* 12) Verify and delete the last dataset. * - * Verify that a metadata cache image is not loaded. + * Verify that a metadata cache image is not loaded. */ if ( pass ) { @@ -5455,7 +5543,7 @@ cache_image_smoke_check_6(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - + /* 13) Close the file. */ @@ -5468,18 +5556,18 @@ cache_image_smoke_check_6(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* 14) Get the size of the file. Verify that it is less - * than 20 KB. Without deletions and persistant free + * than 20 KB. Without deletions and persistent free * space managers, size size is about 167 MB, so this - * is sufficient to verify that the persistant free + * is sufficient to verify that the persistent free * space managers are more or less doing their job. * * Note that in the absence of paged allocation, file - * size gets below 1 KB, but since this test is run both + * size gets below 1 KB, but since this test is run both * with and without paged allocation, we must leave some * extra space for the paged allocation case. */ @@ -5493,9 +5581,9 @@ cache_image_smoke_check_6(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 15) Delete the file */ if ( pass ) { @@ -5518,56 +5606,56 @@ cache_image_smoke_check_6(void) } /* cache_image_smoke_check_6() */ - + /*------------------------------------------------------------------------- * Function: cache_image_api_error_check_1() * * Purpose: This test is one of a sequence of tests intended - * to verify correct management of API errors. + * to verify correct management of API errors. * - * The object of this test is to verify that a file without - * a pre-existing cache image that is opened both read only - * and with a cache image requested is handle correctly - * (the cache image request should be ignored silently). + * The object of this test is to verify that a file without + * a pre-existing cache image that is opened both read only + * and with a cache image requested is handle correctly + * (the cache image request should be ignored silently). * - * The test is set up as follows: + * The test is set up as follows: * - * 1) Create a HDF5 file. + * 1) Create a HDF5 file. * - * 2) Create some datasets in the file. + * 2) Create some datasets in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file read only with a cache image FAPL entry - * requested. + * 4) Open the file read only with a cache image FAPL entry + * requested. * - * 5) Open a dataset. + * 5) Open a dataset. * - * Verify that it contains the expected data + * Verify that it contains the expected data * - * Verify that the cache image was not loaded. + * Verify that the cache image was not loaded. * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file read only. + * 7) Open the file read only. * - * 8) Open a dataset. + * 8) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * Verify that the cache image was not loaded. + * Verify that the cache image was not loaded. * - * 9) Close the file. + * 9) Close the file. * - * 10) Open the file read write. + * 10) Open the file read write. * - * 11) Open a dataset. + * 11) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * 12) Close the file. + * 12) Close the file. * - * 13) Delete the file. + * 13) Delete the file. * * Return: void * @@ -5578,7 +5666,7 @@ cache_image_smoke_check_6(void) */ static unsigned -cache_image_api_error_check_1(void) +cache_image_api_error_check_1(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_api_error_check_1()"; char filename[512]; @@ -5590,9 +5678,16 @@ cache_image_api_error_check_1(void) TESTING("metadata cache image api error check 1"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5607,7 +5702,7 @@ cache_image_api_error_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5619,8 +5714,8 @@ cache_image_api_error_check_1(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -5628,10 +5723,10 @@ cache_image_api_error_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create some datasets in the file. */ if ( pass ) { @@ -5652,10 +5747,10 @@ cache_image_api_error_check_1(void) - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -5668,20 +5763,20 @@ cache_image_api_error_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 4) Open the file read only with a cache image FAPL entry requested. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ TRUE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -5689,10 +5784,10 @@ cache_image_api_error_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 5) Open and close a dataset. * * Verify that it contains the expected data. @@ -5716,9 +5811,9 @@ cache_image_api_error_check_1(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ @@ -5731,20 +5826,20 @@ cache_image_api_error_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 7) Open the file read only. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -5752,10 +5847,10 @@ cache_image_api_error_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 8) Open and close a dataset. * * Verify that it contains the expected data. @@ -5780,7 +5875,7 @@ cache_image_api_error_check_1(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5795,20 +5890,20 @@ cache_image_api_error_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 10) Open the file read / write. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -5816,9 +5911,9 @@ cache_image_api_error_check_1(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 11) Open and close a dataset. * * Verify that it contains the expected data. @@ -5842,9 +5937,9 @@ cache_image_api_error_check_1(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 12) Close the file. */ @@ -5857,9 +5952,9 @@ cache_image_api_error_check_1(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 13) Delete the file */ @@ -5882,68 +5977,68 @@ cache_image_api_error_check_1(void) } /* cache_image_api_error_check_1() */ - + /*------------------------------------------------------------------------- * Function: cache_image_api_error_check_2() * * Purpose: This test is one of a sequence of tests intended - * to verify correct management of API errors. + * to verify correct management of API errors. * - * The object of this test is to verify that a file with - * a pre-existing cache image that is opened both read only - * and with a cache image requested is handled correctly - * (the cache image request should be ignored silently). + * The object of this test is to verify that a file with + * a pre-existing cache image that is opened both read only + * and with a cache image requested is handled correctly + * (the cache image request should be ignored silently). * - * The test is set up as follows: + * The test is set up as follows: * - * 1) Create a HDF5 file with a cache image requested.. + * 1) Create a HDF5 file with a cache image requested.. * - * 2) Create some datasets in the file. + * 2) Create some datasets in the file. * - * 3) Close the file. + * 3) Close the file. * - * 4) Open the file read only with a cache image FAPL entry - * requested. + * 4) Open the file read only with a cache image FAPL entry + * requested. * - * 5) Open a dataset. + * 5) Open a dataset. * - * Verify that it contains the expected data + * Verify that it contains the expected data * - * Verify that the cache image was loaded. + * Verify that the cache image was loaded. * - * 6) Close the file. + * 6) Close the file. * - * 7) Open the file read only. + * 7) Open the file read only. * - * 8) Open a dataset. + * 8) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * Verify that the cache image was loaded. + * Verify that the cache image was loaded. * - * 9) Close the file. + * 9) Close the file. * - * 10) Open the file read write. + * 10) Open the file read write. * - * 11) Open a dataset. + * 11) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * Verify that the cache image was loaded. + * Verify that the cache image was loaded. * - * 12) Close the file. + * 12) Close the file. * - * 13) Open the file read write. + * 13) Open the file read write. * - * 14) Open a dataset. + * 14) Open a dataset. * - * Verify that it contains the expected data. + * Verify that it contains the expected data. * - * Verify that the cache image was NOT loaded. + * Verify that the cache image was NOT loaded. * - * 15) Close the file. + * 15) Close the file. * - * 16) Delete the file. + * 16) Delete the file. * * Return: void * @@ -5954,7 +6049,7 @@ cache_image_api_error_check_1(void) */ static unsigned -cache_image_api_error_check_2(void) +cache_image_api_error_check_2(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_api_error_check_2()"; char filename[512]; @@ -5966,9 +6061,16 @@ cache_image_api_error_check_2(void) TESTING("metadata cache image api error check 2"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5983,7 +6085,7 @@ cache_image_api_error_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -5995,8 +6097,8 @@ cache_image_api_error_check_2(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -6004,10 +6106,10 @@ cache_image_api_error_check_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Create some datasets in the file. */ if ( pass ) { @@ -6028,10 +6130,10 @@ cache_image_api_error_check_2(void) - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 3) Close the file. */ if ( pass ) { @@ -6044,20 +6146,20 @@ cache_image_api_error_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 4) Open the file read only with a cache image FAPL entry requested. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -6065,10 +6167,10 @@ cache_image_api_error_check_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 5) Open and close a dataset. * * Verify that it contains the expected data. @@ -6092,9 +6194,9 @@ cache_image_api_error_check_2(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Close the file. */ @@ -6107,20 +6209,20 @@ cache_image_api_error_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 7) Open the file read only. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ 0, /* file_id_ptr */ &file_id, @@ -6128,10 +6230,10 @@ cache_image_api_error_check_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 8) Open and close a dataset. * * Verify that it contains the expected data. @@ -6156,7 +6258,7 @@ cache_image_api_error_check_2(void) #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6171,20 +6273,20 @@ cache_image_api_error_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 10) Open the file read / write. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ TRUE, + /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -6192,9 +6294,9 @@ cache_image_api_error_check_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 11) Open and close a dataset. * * Verify that it contains the expected data. @@ -6218,9 +6320,9 @@ cache_image_api_error_check_2(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 12) Close the file. */ @@ -6233,7 +6335,7 @@ cache_image_api_error_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6242,11 +6344,11 @@ cache_image_api_error_check_2(void) if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -6254,9 +6356,9 @@ cache_image_api_error_check_2(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 14) Open and close a dataset. * * Verify that it contains the expected data. @@ -6280,9 +6382,9 @@ cache_image_api_error_check_2(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 15) Close the file. */ @@ -6295,9 +6397,9 @@ cache_image_api_error_check_2(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 13) Delete the file */ @@ -6320,36 +6422,36 @@ cache_image_api_error_check_2(void) } /* cache_image_api_error_check_2() */ - + /*------------------------------------------------------------------------- * Function: cache_image_api_error_check_3() * * Purpose: This test is one of a sequence of tests intended - * to verify correct management of API errors. + * to verify correct management of API errors. * - * At present, SWMR and cache image may not be active - * at the same time. The purpose of this test is to - * verify that attempts to run SWMR and cache image - * at the same time will fail. + * At present, SWMR and cache image may not be active + * at the same time. The purpose of this test is to + * verify that attempts to run SWMR and cache image + * at the same time will fail. * - * The test is set up as follows: + * The test is set up as follows: * - * 1) Create a HDF5 file with a cache image requested.. + * 1) Create a HDF5 file with a cache image requested.. * - * 2) Try to start SWMR write -- should fail. + * 2) Try to start SWMR write -- should fail. * * 3) Discard the file if necessary * - * 4) Attempt to create a HDF5 file with SWMR write - * access and cache image requested -- should fail. + * 4) Attempt to create a HDF5 file with SWMR write + * access and cache image requested -- should fail. * * 5) Discard the file if necessary * * 6) Create a HDF5 file with a cache image requested. * - * 7) Create some datasets in the file. + * 7) Create some datasets in the file. * - * 8) Close the file. + * 8) Close the file. * * 9) Attempt to open the file with SWMR write access -- * should fail. @@ -6365,7 +6467,7 @@ cache_image_api_error_check_2(void) */ static unsigned -cache_image_api_error_check_3(void) +cache_image_api_error_check_3(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_api_error_check_3()"; char filename[512]; @@ -6377,9 +6479,16 @@ cache_image_api_error_check_3(void) TESTING("metadata cache image api error check 3"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6394,7 +6503,7 @@ cache_image_api_error_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6406,8 +6515,8 @@ cache_image_api_error_check_3(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -6415,9 +6524,9 @@ cache_image_api_error_check_3(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 2) Try to start SWMR write -- should fail. */ @@ -6432,9 +6541,9 @@ cache_image_api_error_check_3(void) } H5E_END_TRY; } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 3) Discard the file if necessary */ @@ -6454,19 +6563,19 @@ cache_image_api_error_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 4) Attempt to create a HDF5 file with SWMR write + + /* 4) Attempt to create a HDF5 file with SWMR write * access and cache image requested -- should fail. */ - + attempt_swmr_open_hdf5_file(/* create_file */ TRUE, - /* set_mdci_fapl */ TRUE, + /* set_mdci_fapl */ TRUE, /* hdf_file_name */ filename); - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6474,16 +6583,16 @@ cache_image_api_error_check_3(void) if ( pass ) { - /* file probably doesn't exist, so don't + /* file probably doesn't exist, so don't * error check the remove call. */ HDremove(filename); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Create a HDF5 file with a cache image requested. */ if ( pass ) { @@ -6492,8 +6601,8 @@ cache_image_api_error_check_3(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -6501,10 +6610,10 @@ cache_image_api_error_check_3(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Create some datasets in the file. */ if ( pass ) { @@ -6523,9 +6632,9 @@ cache_image_api_error_check_3(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 8) Close the file. */ @@ -6539,20 +6648,20 @@ cache_image_api_error_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 9) Attempt to open the file with SWMR write access -- should fail. */ - + attempt_swmr_open_hdf5_file(/* create_file */ FALSE, - /* set_mdci_fapl */ TRUE, + /* set_mdci_fapl */ TRUE, /* hdf_file_name */ filename); - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 10) Discard the file if necessary. */ if ( pass ) { @@ -6564,7 +6673,7 @@ cache_image_api_error_check_3(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6578,67 +6687,67 @@ cache_image_api_error_check_3(void) } /* cache_image_api_error_check_3() */ - + /*------------------------------------------------------------------------- * Function: cache_image_api_error_check_4() * * Purpose: This test is one of a sequence of tests intended - * to verify correct management of API errors. + * to verify correct management of API errors. * - * The object of this test is to verify that a request for - * a cache image when a version 2 superblock is not available/ - * not requested is handled correctly. - * (the cache image request should be ignored silently). + * The object of this test is to verify that a request for + * a cache image when a version 2 superblock is not available/ + * not requested is handled correctly. + * (the cache image request should be ignored silently). * - * The test is set up as follows: + * The test is set up as follows: * - * 1) Create a FAPL requesting a cache image, but WITHOUT - * specifying the latest file format. + * 1) Create a FAPL requesting a cache image, but WITHOUT + * specifying the latest file format. * - * 2) Create a HDF5 file using the above FAPL. + * 2) Create a HDF5 file using the above FAPL. * - * 3) Create some datasets in the file. + * 3) Create some datasets in the file. * - * 4) Close the file. + * 4) Close the file. * - * 5) Open the file read only. Verify that the file doesn't - * contain a cache image. + * 5) Open the file read only. Verify that the file doesn't + * contain a cache image. * - * 6) Verify that the datasets exist and contain the - * expected data + * 6) Verify that the datasets exist and contain the + * expected data * - * Verify that the cache image was not loaded. + * Verify that the cache image was not loaded. * - * 7) Close the file. + * 7) Close the file. * - * 8) Open the file R/W using the FAPL defined in 1) above. - * Verify that the file does not contain a cache image. + * 8) Open the file R/W using the FAPL defined in 1) above. + * Verify that the file does not contain a cache image. * - * 9) Close the file. + * 9) Close the file. * - * 10) Open the file R/W using the FAPL defined in 1) above. - * Verify that the file does not contain a cache image. + * 10) Open the file R/W using the FAPL defined in 1) above. + * Verify that the file does not contain a cache image. * - * 11) Verify that the data sets contain the expected data + * 11) Verify that the data sets contain the expected data * - * Verify that a cache image was not loaded. + * Verify that a cache image was not loaded. * - * 12) Create several more data sets. + * 12) Create several more data sets. * - * 13) Close the file. + * 13) Close the file. * - * 14) Open the file read write. - * - * Verify that the file does not contain a cache image. + * 14) Open the file read write. * - * 15) Verify the data sets exist and contain the expected - * data. + * Verify that the file does not contain a cache image. * - * Verify that a cache image was not loaded. + * 15) Verify the data sets exist and contain the expected + * data. * - * 16) Close the file. + * Verify that a cache image was not loaded. * - * 17) Delete the file. + * 16) Close the file. + * + * 17) Delete the file. * * Return: void * @@ -6649,7 +6758,7 @@ cache_image_api_error_check_3(void) */ static unsigned -cache_image_api_error_check_4(void) +cache_image_api_error_check_4(hbool_t single_file_vfd) { const char * fcn_name = "cache_image_api_error_check_4()"; char filename[512]; @@ -6663,9 +6772,16 @@ cache_image_api_error_check_4(void) TESTING("metadata cache image api error check 4"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6680,24 +6796,24 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 1) Create a FAPL requesting a cache image, but WITHOUT - * specifying the latest file format. + /* 1) Create a FAPL requesting a cache image, but WITHOUT + * specifying the latest file format. */ if ( pass ) { - fapl_id = H5Pcreate(H5P_FILE_ACCESS); + fapl_id = h5_fileaccess(); if ( fapl_id < 0 ) { pass = FALSE; - failure_mssg = "H5Pcreate() failed.\n"; + failure_mssg = "h5_fileaccess() failed.\n"; } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -6715,7 +6831,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6732,7 +6848,7 @@ cache_image_api_error_check_4(void) } else { - file_ptr = (struct H5F_t *)H5I_object_verify(file_id, H5I_FILE); + file_ptr = (struct H5F_t *)H5VL_object_verify(file_id, H5I_FILE); if ( file_ptr == NULL ) { @@ -6743,7 +6859,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* get a pointer to the files internal data structure and then @@ -6762,10 +6878,10 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 3) Create some datasets in the file. */ if ( pass ) { @@ -6786,10 +6902,10 @@ cache_image_api_error_check_4(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 4) Close the file. */ if ( pass ) { @@ -6802,20 +6918,20 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 5) Open the file read only. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -6823,11 +6939,11 @@ cache_image_api_error_check_4(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 6) Verify that the datasets exist and contain the + + + /* 6) Verify that the datasets exist and contain the * expected data */ @@ -6847,9 +6963,9 @@ cache_image_api_error_check_4(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Close the file. */ @@ -6862,11 +6978,11 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - - /* 8) Open the file R/W using the FAPL defined in 1) above. + + + /* 8) Open the file R/W using the FAPL defined in 1) above. * * Verify that the file does not contain a cache image. */ @@ -6882,7 +6998,7 @@ cache_image_api_error_check_4(void) } else { - file_ptr = (struct H5F_t *)H5I_object_verify(file_id, H5I_FILE); + file_ptr = (struct H5F_t *)H5VL_object_verify(file_id, H5I_FILE); if ( file_ptr == NULL ) { @@ -6893,7 +7009,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* get a pointer to the files internal data structure and then @@ -6912,7 +7028,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -6925,7 +7041,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -6940,9 +7056,9 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 10) Open the file R/W using the FAPL defined in 1) above. @@ -6960,7 +7076,7 @@ cache_image_api_error_check_4(void) } else { - file_ptr = (struct H5F_t *)H5I_object_verify(file_id, H5I_FILE); + file_ptr = (struct H5F_t *)H5VL_object_verify(file_id, H5I_FILE); if ( file_ptr == NULL ) { @@ -6971,7 +7087,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* get a pointer to the files internal data structure and then @@ -6990,7 +7106,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -7003,7 +7119,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7028,7 +7144,7 @@ cache_image_api_error_check_4(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7039,7 +7155,7 @@ cache_image_api_error_check_4(void) create_datasets(file_id, 6, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7054,23 +7170,23 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 14) Open the file read write. - * + * * Verify that the file does not contain a cache image. */ if ( pass ) { open_hdf5_file(/* create_file */ FALSE, - /* mdci_sbem_expected */ FALSE, + /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7078,10 +7194,10 @@ cache_image_api_error_check_4(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - + + /* 15) Verify the data sets exist and contain the expected data. * * Verify that a cache image was not loaded. @@ -7103,7 +7219,7 @@ cache_image_api_error_check_4(void) } #endif /* H5C_COLLECT_CACHE_STATS */ - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7118,9 +7234,9 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 17) Delete the file */ @@ -7133,7 +7249,7 @@ cache_image_api_error_check_4(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7152,36 +7268,36 @@ cache_image_api_error_check_4(void) } /* cache_image_api_error_check_4() */ - + /*------------------------------------------------------------------------- * Function: get_free_sections_test() * * Purpose: It is possible that H5Fget_free_sections() to be - * called before any activity on the metadata cache. - * This is a potential problem, as satisfying the - * H5Fget_free_sections() call requires access to all - * free space managers. When persistant free space + * called before any activity on the metadata cache. + * This is a potential problem, as satisfying the + * H5Fget_free_sections() call requires access to all + * free space managers. When persistent free space * managers are enabled, this will require calling - * H5MF_tidy_self_referential_fsm_hack(). This is a + * H5MF_tidy_self_referential_fsm_hack(). This is a * non issue in the absence of a cache image. However, - * this is a problem if a cache image exists, as - * the call to H5MF_tidy_self_referential_fsm_hack() - * will free the file space allocated to the cache - * image. - * - * The objective of this test is to create a test file - * with both non-empty self referential presistant - * free space managers, and a cache image, and then - * verify that this situation is handled correctly if + * this is a problem if a cache image exists, as + * the call to H5MF_tidy_self_referential_fsm_hack() + * will free the file space allocated to the cache + * image. + * + * The objective of this test is to create a test file + * with both non-empty self referential presistant + * free space managers, and a cache image, and then + * verify that this situation is handled correctly if * H5Fget_free_sections() is called before the metadata * cache image is loaded. * - * The test is set up as follows: + * The test is set up as follows: * - * 1) Create a HDF5 file with a cache image requested - * and persistant free space managers enabled. + * 1) Create a HDF5 file with a cache image requested + * and persistent free space managers enabled. * - * 2) Create some data sets, and then delete some of + * 2) Create some data sets, and then delete some of * of those near the beginning of the file. * * 3) Close the file. @@ -7192,12 +7308,12 @@ cache_image_api_error_check_4(void) * been loaded. * * 6) Verify that one or more self referential FSMs - * have been stored at the end of the file just + * have been stored at the end of the file just * before the cache image. * * 7) Call H5Fget_free_sections(). * - * 8) Verify that the cache image has been loaded and + * 8) Verify that the cache image has been loaded and * that the self referential FSMs have been floated. * * 9) Verify that the remaining data sets contain the @@ -7211,12 +7327,12 @@ cache_image_api_error_check_4(void) * been loaded. * * 13) Verify that one or more self referential FSMs - * have been stored at the end of the file just + * have been stored at the end of the file just * before the cache image. * * 14) Call H5Fget_free_sections(). * - * 15) Verify that the cache image has been loaded and + * 15) Verify that the cache image has been loaded and * that the self referential FSMs have been floated. * * 16) Verify that the remaining data sets contain the @@ -7224,7 +7340,7 @@ cache_image_api_error_check_4(void) * * 17) Delete the remaining data sets. * - * 18) Close the file. + * 18) Close the file. * * 19) Verify that file space has been reclaimed. * @@ -7238,7 +7354,7 @@ cache_image_api_error_check_4(void) *------------------------------------------------------------------------- */ static unsigned -get_free_sections_test(void) +get_free_sections_test(hbool_t single_file_vfd) { const char * fcn_name = "get_free_sections_test()"; char filename[512]; @@ -7251,9 +7367,16 @@ get_free_sections_test(void) TESTING("Cache image / H5Fget_free_sections() interaction"); + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7268,12 +7391,12 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* 1) Create a HDF5 file with a cache image requested - * and persistant free space managers enabled. + * and persistent free space managers enabled. */ if ( pass ) { @@ -7282,8 +7405,8 @@ get_free_sections_test(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7291,11 +7414,11 @@ get_free_sections_test(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - /* 2) Create some data sets, and then delete some of + /* 2) Create some data sets, and then delete some of * of those near the beginning of the file. */ @@ -7304,7 +7427,7 @@ get_free_sections_test(void) create_datasets(file_id, 1, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -7312,7 +7435,7 @@ get_free_sections_test(void) verify_datasets(file_id, 1, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -7320,10 +7443,10 @@ get_free_sections_test(void) delete_datasets(file_id, 1, 5); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 3) Close the file. */ if ( pass ) { @@ -7336,10 +7459,10 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 4) Open the file read only. */ if ( pass ) { @@ -7348,8 +7471,8 @@ get_free_sections_test(void) /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7357,10 +7480,10 @@ get_free_sections_test(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 5) Verify that a cache image exists, and has not been loaded. */ if ( pass ) { @@ -7373,24 +7496,23 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Verify that one or more self referential FSMs - * have been stored at the end of the file just + * have been stored at the end of the file just * before the cache image. */ if ( pass ) { - /* file_ptr->shared->first_alloc_dealloc is set to FALSE if the + /* file_ptr->shared->first_alloc_dealloc is set to FALSE if the * file is opened R/O. */ - if ( ( file_ptr->shared->first_alloc_dealloc ) || - ( ! H5F_addr_defined(file_ptr->shared->eoa_pre_fsm_fsalloc) ) || + if ( ( ! H5F_addr_defined(file_ptr->shared->eoa_fsm_fsalloc) ) || ( ! H5F_addr_defined(file_ptr->shared->cache->image_addr) ) || - ( H5F_addr_gt(file_ptr->shared->eoa_pre_fsm_fsalloc, + ( H5F_addr_gt(file_ptr->shared->eoa_fsm_fsalloc, file_ptr->shared->cache->image_addr) ) ) { pass = FALSE; @@ -7398,15 +7520,15 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Call H5Fget_free_sections(). */ if ( pass ) { - if ( H5Fget_free_sections(file_id, H5FD_MEM_DEFAULT, (size_t)0, NULL) + if ( H5Fget_free_sections(file_id, H5FD_MEM_DEFAULT, (size_t)0, NULL) < 0 ){ pass = FALSE; @@ -7414,11 +7536,11 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 8) Verify that the cache image has been loaded and + + /* 8) Verify that the cache image has been loaded and * that the self referential FSMs have been floated. */ if ( pass ) { @@ -7428,14 +7550,11 @@ get_free_sections_test(void) pass = FALSE; failure_mssg = "cache image not loaded (1).\n"; - } else if ( file_ptr->shared->first_alloc_dealloc ) { - - pass = FALSE; - failure_mssg = "self referential FSMs not floated (1).\n"; } + } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7446,10 +7565,10 @@ get_free_sections_test(void) verify_datasets(file_id, 6, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 10) Close the file. */ if ( pass ) { @@ -7461,10 +7580,10 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 11) Open the file R/W. */ if ( pass ) { @@ -7473,8 +7592,8 @@ get_free_sections_test(void) /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7482,10 +7601,10 @@ get_free_sections_test(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 12) Verify that a cache image exists, and has not been loaded. */ if ( pass ) { @@ -7498,20 +7617,19 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 13) Verify that one or more self referential FSMs - * have been stored at the end of the file just + * have been stored at the end of the file just * before the cache image. */ if ( pass ) { - if ( ( ! file_ptr->shared->first_alloc_dealloc ) || - ( ! H5F_addr_defined(file_ptr->shared->eoa_pre_fsm_fsalloc) ) || + if ( ( ! H5F_addr_defined(file_ptr->shared->eoa_fsm_fsalloc) ) || ( ! H5F_addr_defined(file_ptr->shared->cache->image_addr) ) || - ( H5F_addr_gt(file_ptr->shared->eoa_pre_fsm_fsalloc, + ( H5F_addr_gt(file_ptr->shared->eoa_fsm_fsalloc, file_ptr->shared->cache->image_addr) ) ) { pass = FALSE; @@ -7519,15 +7637,15 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 14) Call H5Fget_free_sections(). */ if ( pass ) { - if ( H5Fget_free_sections(file_id, H5FD_MEM_DEFAULT, (size_t)0, NULL) + if ( H5Fget_free_sections(file_id, H5FD_MEM_DEFAULT, (size_t)0, NULL) < 0 ){ pass = FALSE; @@ -7535,11 +7653,11 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - - /* 15) Verify that the cache image has been loaded and + + /* 15) Verify that the cache image has been loaded and * that the self referential FSMs have been floated. */ if ( pass ) { @@ -7549,14 +7667,11 @@ get_free_sections_test(void) pass = FALSE; failure_mssg = "cache image not loaded (2).\n"; - } else if ( file_ptr->shared->first_alloc_dealloc ) { - - pass = FALSE; - failure_mssg = "self referential FSMs not floated (2).\n"; } + } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7567,10 +7682,10 @@ get_free_sections_test(void) verify_datasets(file_id, 6, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 17) Delete the remaining data sets. */ if ( pass ) { @@ -7578,10 +7693,10 @@ get_free_sections_test(void) delete_datasets(file_id, 6, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 18) Close the file. */ if ( pass ) { @@ -7593,7 +7708,7 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7613,10 +7728,10 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 20) Discard the file. */ if ( pass ) { @@ -7628,7 +7743,7 @@ get_free_sections_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { PASSED(); } else { H5_FAILED(); } @@ -7641,40 +7756,40 @@ get_free_sections_test(void) } /* get_free_sections_test() */ - + /*------------------------------------------------------------------------- * Function: evict_on_close_test() * - * Purpose: If a file containing a cache image which in turn - * contains dirty entries is opened R/O, the metadata - * cache must refuse to evict the dirty entries, as + * Purpose: If a file containing a cache image which in turn + * contains dirty entries is opened R/O, the metadata + * cache must refuse to evict the dirty entries, as * it will not be able to reload them from file. This * is a bit tricky, as the dirty entries must marked as - * clean in the metadata cache so that the MDC will not + * clean in the metadata cache so that the MDC will not * attempt to flush then on file close. * - * The objective of this test is to verify that the + * The objective of this test is to verify that the * metadata will not evict dirty entries in the above * context when the file is opened with the evict on close * FAPL entry. * - * Do this by creating a HDF5 file with a cache image - * containing dirty metadata. + * Do this by creating a HDF5 file with a cache image + * containing dirty metadata. * - * Then close the file, re-open it R/O, and scan its + * Then close the file, re-open it R/O, and scan its * contents twice. If evict on close succeeds in evicting - * the dirty metadata, the second scan will fail, as valid + * the dirty metadata, the second scan will fail, as valid * versions of the dirty metadata will not be available. * - * To make the test more useful, enable persistant free + * To make the test more useful, enable persistent free * space managers. * - * The test is set up as follows: + * The test is set up as follows: * - * 1) Create a HDF5 file without a cache image requested - * and persistant free space managers enabled. + * 1) Create a HDF5 file without a cache image requested + * and persistent free space managers enabled. * - * 2) Create some data sets and verify them. + * 2) Create some data sets and verify them. * * 3) Close the file. * @@ -7710,7 +7825,7 @@ get_free_sections_test(void) *------------------------------------------------------------------------- */ static unsigned -evict_on_close_test(void) +evict_on_close_test(hbool_t single_file_vfd) { #ifndef H5_HAVE_PARALLEL const char * fcn_name = "evict_on_close_test()"; @@ -7731,9 +7846,16 @@ evict_on_close_test(void) return 0; #else + /* Check for VFD that is a single file */ + if(!single_file_vfd) { + SKIPPED(); + HDputs(" Cache image not supported with the current VFD."); + return 0; + } + pass = TRUE; - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7748,12 +7870,12 @@ evict_on_close_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); /* 1) Create a HDF5 file without a cache image requested - * and persistant free space managers enabled. + * and persistent free space managers enabled. */ if ( pass ) { @@ -7761,8 +7883,8 @@ evict_on_close_test(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ TRUE, - /* set_eoc */ FALSE, + /* config_fsm */ TRUE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7770,7 +7892,7 @@ evict_on_close_test(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7781,7 +7903,7 @@ evict_on_close_test(void) create_datasets(file_id, 1, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -7789,10 +7911,10 @@ evict_on_close_test(void) verify_datasets(file_id, 1, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 3) Close the file. */ if ( pass ) { @@ -7805,10 +7927,10 @@ evict_on_close_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 4) Open the file R/W, and with cache image requested. */ if ( pass ) { @@ -7817,8 +7939,8 @@ evict_on_close_test(void) /* mdci_sbem_expected */ FALSE, /* read_only */ FALSE, /* set_mdci_fapl */ TRUE, - /* config_fsm */ FALSE, - /* set_eoc */ FALSE, + /* config_fsm */ FALSE, + /* set_eoc */ FALSE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7826,7 +7948,7 @@ evict_on_close_test(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7840,10 +7962,10 @@ evict_on_close_test(void) verify_datasets(file_id, 1, 10); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 6) Create some more datasets and verify them */ if ( pass ) { @@ -7851,7 +7973,7 @@ evict_on_close_test(void) create_datasets(file_id, 11, 20); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -7864,15 +7986,15 @@ evict_on_close_test(void) HDassert(cache_ptr); HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC); - HDfprintf(stdout, "index size / index dirty size = %lld / %lld\n", + HDfprintf(stdout, "index size / index dirty size = %lld / %lld\n", (long long)(cache_ptr->index_size), (long long)(cache_ptr->dirty_index_size)); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 7) Close the file. */ if ( pass ) { @@ -7884,10 +8006,10 @@ evict_on_close_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 8) Open the file R/O and with evict on close enabled. */ if ( pass ) { @@ -7896,8 +8018,8 @@ evict_on_close_test(void) /* mdci_sbem_expected */ TRUE, /* read_only */ TRUE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ TRUE, + /* config_fsm */ FALSE, + /* set_eoc */ TRUE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7905,7 +8027,7 @@ evict_on_close_test(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s*: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7916,7 +8038,7 @@ evict_on_close_test(void) verify_datasets(file_id, 1, 20); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -7924,7 +8046,7 @@ evict_on_close_test(void) verify_datasets(file_id, 1, 20); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7939,10 +8061,10 @@ evict_on_close_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); - + /* 11) Open the file R/w and with evict on close enabled. */ if ( pass ) { @@ -7951,8 +8073,8 @@ evict_on_close_test(void) /* mdci_sbem_expected */ TRUE, /* read_only */ FALSE, /* set_mdci_fapl */ FALSE, - /* config_fsm */ FALSE, - /* set_eoc */ TRUE, + /* config_fsm */ FALSE, + /* set_eoc */ TRUE, /* hdf_file_name */ filename, /* cache_image_flags */ H5C_CI__ALL_FLAGS, /* file_id_ptr */ &file_id, @@ -7960,7 +8082,7 @@ evict_on_close_test(void) /* cache_ptr_ptr */ &cache_ptr); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s*: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7971,7 +8093,7 @@ evict_on_close_test(void) verify_datasets(file_id, 1, 20); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { @@ -7979,7 +8101,7 @@ evict_on_close_test(void) verify_datasets(file_id, 1, 20); } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -7994,7 +8116,7 @@ evict_on_close_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); @@ -8009,7 +8131,7 @@ evict_on_close_test(void) } } - if ( show_progress ) + if ( show_progress ) HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass); if ( pass ) { PASSED(); } else { H5_FAILED(); } @@ -8023,7 +8145,7 @@ evict_on_close_test(void) } /* evict_on_close_test() */ - + /*------------------------------------------------------------------------- * Function: main * @@ -8041,39 +8163,49 @@ evict_on_close_test(void) int main(void) { + const char *env_h5_drvr; /* File driver value from environment */ + hbool_t single_file_vfd; /* Whether VFD used stores data in a single file */ unsigned nerrs = 0; int express_test; + /* Get the VFD to use */ + env_h5_drvr = HDgetenv("HDF5_DRIVER"); + if(env_h5_drvr == NULL) + env_h5_drvr = "nomatch"; + H5open(); express_test = GetTestExpress(); - printf("=========================================\n"); - printf("Cache image tests\n"); - printf(" express_test = %d\n", express_test); - printf("=========================================\n"); - - nerrs += check_cache_image_ctl_flow_1(); - nerrs += check_cache_image_ctl_flow_2(); - nerrs += check_cache_image_ctl_flow_3(); - nerrs += check_cache_image_ctl_flow_4(); - nerrs += check_cache_image_ctl_flow_5(); - nerrs += check_cache_image_ctl_flow_6(); - - nerrs += cache_image_smoke_check_1(); - nerrs += cache_image_smoke_check_2(); - nerrs += cache_image_smoke_check_3(); - nerrs += cache_image_smoke_check_4(); - nerrs += cache_image_smoke_check_5(); - nerrs += cache_image_smoke_check_6(); - - nerrs += cache_image_api_error_check_1(); - nerrs += cache_image_api_error_check_2(); - nerrs += cache_image_api_error_check_3(); - nerrs += cache_image_api_error_check_4(); - - nerrs += get_free_sections_test(); - nerrs += evict_on_close_test(); + HDprintf("=========================================\n"); + HDprintf("Cache image tests\n"); + HDprintf(" express_test = %d\n", express_test); + HDprintf("=========================================\n"); + + /* Check for VFD which stores data in multiple files */ + single_file_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi") && HDstrcmp(env_h5_drvr, "family")); + + nerrs += check_cache_image_ctl_flow_1(single_file_vfd); + nerrs += check_cache_image_ctl_flow_2(single_file_vfd); + nerrs += check_cache_image_ctl_flow_3(single_file_vfd); + nerrs += check_cache_image_ctl_flow_4(single_file_vfd); + nerrs += check_cache_image_ctl_flow_5(single_file_vfd); + nerrs += check_cache_image_ctl_flow_6(single_file_vfd); + + nerrs += cache_image_smoke_check_1(single_file_vfd); + nerrs += cache_image_smoke_check_2(single_file_vfd); + nerrs += cache_image_smoke_check_3(single_file_vfd); + nerrs += cache_image_smoke_check_4(single_file_vfd); + nerrs += cache_image_smoke_check_5(single_file_vfd); + nerrs += cache_image_smoke_check_6(single_file_vfd); + + nerrs += cache_image_api_error_check_1(single_file_vfd); + nerrs += cache_image_api_error_check_2(single_file_vfd); + nerrs += cache_image_api_error_check_3(single_file_vfd); + nerrs += cache_image_api_error_check_4(single_file_vfd); + + nerrs += get_free_sections_test(single_file_vfd); + nerrs += evict_on_close_test(single_file_vfd); return(nerrs > 0); |