diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2010-05-05 19:18:32 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2010-05-05 19:18:32 (GMT) |
commit | b60f90da91886edc2afaaca9bf1587d7591051e1 (patch) | |
tree | 9f0c5f09e65af4c1b45e3e0577c2310df8242b7b /test/cache1_api.c | |
parent | b05a1c671317403994e4bff5564563f41d348eea (diff) | |
download | hdf5-b60f90da91886edc2afaaca9bf1587d7591051e1.zip hdf5-b60f90da91886edc2afaaca9bf1587d7591051e1.tar.gz hdf5-b60f90da91886edc2afaaca9bf1587d7591051e1.tar.bz2 |
[svn-r18711] Description:
More changes to move metadata journaling code closer to trunk:
- Retire old (H5AC1) cache code & tests
- Remove 'clear_dirty_bits' callback from client class struct
- Eliminate 'addr' & 'len' parameters from 'free_icr' client callbacks
Tested on:
Mac OS X/32 10.6.3 (amazon) debug & production
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Diffstat (limited to 'test/cache1_api.c')
-rw-r--r-- | test/cache1_api.c | 4058 |
1 files changed, 0 insertions, 4058 deletions
diff --git a/test/cache1_api.c b/test/cache1_api.c deleted file mode 100644 index 8fe57ec..0000000 --- a/test/cache1_api.c +++ /dev/null @@ -1,4058 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* Programmer: John Mainzer - * 11/10/05 - * - * This file contains tests for the API calls associated - * with the cache implemented in H5C.c - */ - -#include "h5test.h" -#include "H5Iprivate.h" -#include "H5AC1private.h" -#include "cache1_common.h" - -/* global variable declarations: */ - -const char *FILENAME1[] = { - "cache1_api", - NULL -}; - -/* macro definitions */ - -#define RESIZE_CONFIGS_ARE_EQUAL(a, b, compare_init) \ -( ( (a).version == (b).version ) && \ - ( (a).rpt_fcn == (b).rpt_fcn ) && \ - ( ( ! compare_init ) || \ - ( (a).set_initial_size == (b).set_initial_size ) ) && \ - ( ( ! compare_init ) || \ - ( (a).initial_size == (b).initial_size ) ) && \ - ( (a).min_clean_fraction == (b).min_clean_fraction ) && \ - ( (a).max_size == (b).max_size ) && \ - ( (a).min_size == (b).min_size ) && \ - ( (a).epoch_length == (b).epoch_length ) && \ - ( (a).incr_mode == (b).incr_mode ) && \ - ( (a).lower_hr_threshold == (b).lower_hr_threshold ) && \ - ( (a).increment == (b).increment ) && \ - ( (a).apply_max_increment == (b).apply_max_increment ) && \ - ( (a).max_increment == (b).max_increment ) && \ - ( (a).flash_incr_mode == (b).flash_incr_mode ) && \ - ( (a).flash_multiple == (b).flash_multiple ) && \ - ( (a).flash_threshold == (b).flash_threshold ) && \ - ( (a).decr_mode == (b).decr_mode ) && \ - ( (a).upper_hr_threshold == (b).upper_hr_threshold ) && \ - ( (a).decrement == (b).decrement ) && \ - ( (a).apply_max_decrement == (b).apply_max_decrement ) && \ - ( (a).max_decrement == (b).max_decrement ) && \ - ( (a).epochs_before_eviction == (b).epochs_before_eviction ) && \ - ( (a).apply_empty_reserve == (b).apply_empty_reserve ) && \ - ( (a).empty_reserve == (b).empty_reserve ) ) - - -/* private function declarations: */ - -static void check_fapl_mdc_api_calls(void); - -static void validate_mdc_config(hid_t file_id, - H5AC1_cache_config_t * ext_config_ptr, - hbool_t compare_init, - int test_num); - -static void check_file_mdc_api_calls(void); - -static void check_and_validate_cache_hit_rate(hid_t file_id, - double * hit_rate_ptr, - hbool_t dump_data, - int64_t min_accesses, - double min_hit_rate); - -static void check_and_validate_cache_size(hid_t file_id, - size_t * max_size_ptr, - size_t * min_clean_size_ptr, - size_t * cur_size_ptr, - int32_t * cur_num_entries_ptr, - hbool_t dump_data); - -static void mdc_api_call_smoke_check(int express_test1); - -static void check_fapl_mdc_api_errs(void); - -static void check_file_mdc_api_errs(void); - - -/**************************************************************************/ -/**************************************************************************/ -/********************************* tests: *********************************/ -/**************************************************************************/ -/**************************************************************************/ - -/*------------------------------------------------------------------------- - * Function: check_fapl_mdc_api_calls() - * - * Purpose: Verify that the file access property list related - * metadata cache related API calls are functioning - * correctly. - * - * Since we have tested the H5C code elsewhere, it should - * be sufficient to verify that the desired configuration - * data is getting to the cache. - * - * Return: void - * - * Programmer: John Mainzer - * 4/12/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -#define CACHE_CONFIGS_EQUAL(a, b, cmp_set_init, cmp_init_size) \ - ( ( (a).version == (b).version ) && \ - ( (a).rpt_fcn_enabled == (b).rpt_fcn_enabled ) && \ - ( (a).open_trace_file == (b).open_trace_file ) && \ - ( (a).close_trace_file == (b).close_trace_file ) && \ - ( ( (a).open_trace_file == FALSE ) || \ - ( strcmp((a).trace_file_name, (b).trace_file_name) == 0 ) ) && \ - ( (a).evictions_enabled == (b).evictions_enabled ) && \ - ( ( ! cmp_set_init ) || \ - ( (a).set_initial_size == (b).set_initial_size ) ) && \ - ( ( ! cmp_init_size ) || \ - ( (a).initial_size == (b).initial_size ) ) && \ - ( (a).min_clean_fraction == (b).min_clean_fraction ) && \ - ( (a).max_size == (b).max_size ) && \ - ( (a).min_size == (b).min_size ) && \ - ( (a).epoch_length == (b).epoch_length ) && \ - ( (a).incr_mode == (b).incr_mode ) && \ - ( (a).lower_hr_threshold == (b).lower_hr_threshold ) && \ - ( (a).increment == (b).increment ) && \ - ( (a).apply_max_increment == (b).apply_max_increment ) && \ - ( (a).max_increment == (b).max_increment ) && \ - ( (a).flash_incr_mode == (b).flash_incr_mode ) && \ - ( (a).flash_multiple == (b).flash_multiple ) && \ - ( (a).flash_threshold == (b).flash_threshold ) && \ - ( (a).decr_mode == (b).decr_mode ) && \ - ( (a).upper_hr_threshold == (b).upper_hr_threshold ) && \ - ( (a).decrement == (b).decrement ) && \ - ( (a).apply_max_decrement == (b).apply_max_decrement ) && \ - ( (a).max_decrement == (b).max_decrement ) && \ - ( (a).epochs_before_eviction == (b).epochs_before_eviction ) && \ - ( (a).apply_empty_reserve == (b).apply_empty_reserve ) && \ - ( (a).empty_reserve == (b).empty_reserve ) ) - -#define XLATE_EXT_TO_INT_MDC_CONFIG(i, e) \ -{ \ - (i).version = H5C1__CURR_AUTO_SIZE_CTL_VER; \ - if ( (e).rpt_fcn_enabled ) \ - (i).rpt_fcn = H5C1_def_auto_resize_rpt_fcn; \ - else \ - (i).rpt_fcn = NULL; \ - (i).set_initial_size = (e).set_initial_size; \ - (i).initial_size = (e).initial_size; \ - (i).min_clean_fraction = (e).min_clean_fraction; \ - (i).max_size = (e).max_size; \ - (i).min_size = (e).min_size; \ - (i).epoch_length = (long int)((e).epoch_length); \ - (i).incr_mode = (e).incr_mode; \ - (i).lower_hr_threshold = (e).lower_hr_threshold; \ - (i).increment = (e).increment; \ - (i).apply_max_increment = (e).apply_max_increment; \ - (i).max_increment = (e).max_increment; \ - (i).flash_incr_mode = (e).flash_incr_mode; \ - (i).flash_multiple = (e).flash_multiple; \ - (i).flash_threshold = (e).flash_threshold; \ - (i).decr_mode = (e).decr_mode; \ - (i).upper_hr_threshold = (e).upper_hr_threshold; \ - (i).flash_incr_mode = (e).flash_incr_mode; \ - (i).flash_multiple = (e).flash_multiple; \ - (i).flash_threshold = (e).flash_threshold; \ - (i).decrement = (e).decrement; \ - (i).apply_max_decrement = (e).apply_max_decrement; \ - (i).max_decrement = (e).max_decrement; \ - (i).epochs_before_eviction = (int)((e).epochs_before_eviction); \ - (i).apply_empty_reserve = (e).apply_empty_reserve; \ - (i).empty_reserve = (e).empty_reserve; \ -} - -static void -check_fapl_mdc_api_calls(void) -{ - const char * fcn_name = "check_fapl_mdc_api_calls()"; - char filename[512]; - herr_t result; - hid_t fapl_id = -1; - hid_t test_fapl_id = -1; - hid_t file_id = -1; - H5F_t * file_ptr = NULL; - H5C1_t * cache_ptr = NULL; - H5AC1_cache_config_t default_config = H5AC1__DEFAULT_CACHE_CONFIG; - H5AC1_cache_config_t mod_config = - { - /* int version = */ - H5AC1__CURR_CACHE_CONFIG_VERSION, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024 + 1), - /* double min_clean_fraction = */ 0.2, - /* size_t max_size = */ (16 * 1024 * 1024 + 1), - /* size_t min_size = */ ( 1 * 1024 * 1024 + 1), - /* long int epoch_length = */ 50001, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.91, - /* double increment = */ 2.1, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024 + 1), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out, - /* double upper_hr_threshold = */ 0.998, - /* double decrement = */ 0.91, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024 - 1), - /* int epochs_before_eviction = */ 4, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.05, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - H5AC1_cache_config_t scratch; - H5C1_auto_size_ctl_t default_auto_size_ctl; - H5C1_auto_size_ctl_t mod_auto_size_ctl; - - TESTING("MDC/FAPL related API calls"); - - pass1 = TRUE; - - XLATE_EXT_TO_INT_MDC_CONFIG(default_auto_size_ctl, default_config) - XLATE_EXT_TO_INT_MDC_CONFIG(mod_auto_size_ctl, mod_config) - - /* Create a FAPL and verify that it contains the default - * initial mdc configuration - */ - - if ( pass1 ) { - - fapl_id = H5Pcreate(H5P_FILE_ACCESS); - - if ( fapl_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pcreate(H5P_FILE_ACCESS) failed.\n"; - } - } - - if ( pass1 ) { - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - - result = H5Pget_mdc_config(fapl_id, &scratch); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pget_mdc_config() failed.\n"; - - } else if (!CACHE_CONFIGS_EQUAL(default_config, scratch, TRUE, TRUE)) { - - pass1 = FALSE; - failure_mssg1 = "retrieved config doesn't match default."; - } - } - - - /* Modify the initial mdc configuration in a FAPL, and verify that - * the changes can be read back - */ - - if ( pass1 ) { - - result = H5Pset_mdc_config(fapl_id, &mod_config); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pset_mdc_config() failed.\n"; - } - } - - if ( pass1 ) { - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - - result = H5Pget_mdc_config(fapl_id, &scratch); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pget_mdc_config() failed.\n"; - - } else if ( ! CACHE_CONFIGS_EQUAL(mod_config, scratch, TRUE, TRUE) ) { - - pass1 = FALSE; - failure_mssg1 = "retrieved config doesn't match mod config."; - } - } - - if ( pass1 ) { - - if ( H5Pclose(fapl_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pclose() failed.\n"; - } - } - - /* Open a file using the default FAPL. Verify that the resulting - * metadata cache uses the default configuration as well. Get a - * copy of the FAPL from the file, and verify that it contains the - * default initial meta data cache configuration. Close and delete - * the file. - */ - - /* setup the file name */ - if ( pass1 ) { - - if ( h5_fixname(FILENAME1[0], H5P_DEFAULT, filename, sizeof(filename)) - == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "h5_fixname() failed.\n"; - } - } - - /* create the file using the default FAPL */ - if ( pass1 ) { - - file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if ( file_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fcreate() failed.\n"; - } - } - - /* get a pointer to the files internal data structure */ - if ( pass1 ) { - - file_ptr = H5I_object_verify(file_id, H5I_FILE); - - if ( file_ptr == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "Can't get file_ptr.\n"; - - } else { - - cache_ptr = file_ptr->shared->cache1; - } - } - - /* verify that we can access the internal version of the cache config */ - if ( pass1 ) { - - if ( ( cache_ptr == NULL ) || - ( cache_ptr->magic != H5C1__H5C1_T_MAGIC ) || - ( cache_ptr->resize_ctl.version != H5C1__CURR_AUTO_SIZE_CTL_VER ) ){ - - pass1 = FALSE; - failure_mssg1 = "Can't access cache resize_ctl.\n"; - } - } - - /* conpare the cache's internal configuration with the expected value */ - if ( pass1 ) { - - if ( ! RESIZE_CONFIGS_ARE_EQUAL(default_auto_size_ctl, \ - cache_ptr->resize_ctl, TRUE) ) { - - - pass1 = FALSE; - failure_mssg1 = "Unexpected value(s) in cache resize_ctl.\n"; - } - } - - /* get a copy of the files FAPL */ - if ( pass1 ) { - - fapl_id = H5Fget_access_plist(file_id); - - if ( fapl_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_access_plist() failed.\n"; - } - } - - /* compare the initial cache config from the copy of the file's FAPL - * to the expected value. If all goes well, close the copy of the FAPL. - */ - if ( pass1 ) { - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - - result = H5Pget_mdc_config(fapl_id, &scratch); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pget_mdc_config() failed.\n"; - - } else if (!CACHE_CONFIGS_EQUAL(default_config, scratch, TRUE, TRUE)) { - - pass1 = FALSE; - failure_mssg1 = "config retrieved from file doesn't match default."; - - } else if ( H5Pclose(fapl_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pclose() failed.\n"; - } - } - - /* close the file and delete it */ - if ( pass1 ) { - - if ( H5Fclose(file_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fclose() failed.\n"; - - } else if ( HDremove(filename) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "HDremove() failed.\n"; - } - } - - - /* Open a file using a FAPL with a modified initial metadata cache - * configuration. Verify that the resulting metadata cache uses the - * modified configuration as well. Get a copy of the FAPL from the - * file, and verify that it contains the modified initial meta data - * cache configuration. Close and delete the file. - */ - - /* Create a FAPL */ - if ( pass1 ) { - - fapl_id = H5Pcreate(H5P_FILE_ACCESS); - - if ( fapl_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pcreate(H5P_FILE_ACCESS) failed.\n"; - } - } - - /* Modify the initial mdc configuration in the FAPL. */ - - if ( pass1 ) { - - result = H5Pset_mdc_config(fapl_id, &mod_config); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pset_mdc_config() failed.\n"; - } - } - - /* setup the file name */ - if ( pass1 ) { - - if ( h5_fixname(FILENAME1[0], H5P_DEFAULT, filename, sizeof(filename)) - == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "h5_fixname() failed.\n"; - } - } - - /* create the file using the modified FAPL */ - if ( pass1 ) { - - file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id); - - if ( file_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fcreate() failed.\n"; - } - } - - /* get a pointer to the files internal data structure */ - if ( pass1 ) { - - file_ptr = H5I_object_verify(file_id, H5I_FILE); - - if ( file_ptr == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "Can't get file_ptr.\n"; - - } else { - - cache_ptr = file_ptr->shared->cache1; - } - } - - /* verify that we can access the internal version of the cache config */ - if ( pass1 ) { - - if ( ( cache_ptr == NULL ) || - ( cache_ptr->magic != H5C1__H5C1_T_MAGIC ) || - ( cache_ptr->resize_ctl.version != H5C1__CURR_AUTO_SIZE_CTL_VER ) ){ - - pass1 = FALSE; - failure_mssg1 = "Can't access cache resize_ctl.\n"; - } - } - - /* conpare the cache's internal configuration with the expected value */ - if ( pass1 ) { - - if ( ! RESIZE_CONFIGS_ARE_EQUAL(mod_auto_size_ctl, \ - cache_ptr->resize_ctl, TRUE) ) { - - - pass1 = FALSE; - failure_mssg1 = "Unexpected value(s) in cache resize_ctl.\n"; - } - } - - /* get a copy of the files FAPL */ - if ( pass1 ) { - - test_fapl_id = H5Fget_access_plist(file_id); - - if ( test_fapl_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_access_plist() failed.\n"; - } - } - - /* compare the initial cache config from the copy of the file's FAPL - * to the expected value. If all goes well, close the copy of the FAPL. - */ - if ( pass1 ) { - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - - result = H5Pget_mdc_config(test_fapl_id, &scratch); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pget_mdc_config() failed.\n"; - - } else if ( ! CACHE_CONFIGS_EQUAL(mod_config, scratch, TRUE, TRUE) ) { - - pass1 = FALSE; - failure_mssg1 = "config retrieved from file doesn't match."; - - } else if ( H5Pclose(test_fapl_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pclose() failed.\n"; - } - } - - /* close the fapl used to create the file */ - if ( pass1 ) { - - if ( H5Pclose(fapl_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pclose() failed.\n"; - } - } - - /* close the file and delete it */ - if ( pass1 ) { - - if ( H5Fclose(file_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fclose() failed.\n"; - - } else if ( HDremove(filename) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "HDremove() failed.\n"; - } - } - - if ( pass1 ) { PASSED(); } else { H5_FAILED(); } - - if ( ! pass1 ) - HDfprintf(stdout, "%s: failure_mssg1 = \"%s\".\n", - fcn_name, failure_mssg1); - -} /* check_fapl_mdc_api_calls() */ - - -/*------------------------------------------------------------------------- - * Function: validate_mdc_config() - * - * Purpose: Verify that the file indicated by the file_id parameter - * has both internal and external configuration matching - * *config_ptr. - * - * Do nothin on success. On failure, set pass1 to FALSE, and - * load an error message into failue_mssg. Note that - * failure_msg is assumed to be at least 128 bytes in length. - * - * Return: void - * - * Programmer: John Mainzer - * 4/14/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static void -validate_mdc_config(hid_t file_id, - H5AC1_cache_config_t * ext_config_ptr, - hbool_t compare_init, - int test_num) -{ - /* const char * fcn_name = "validate_mdc_config()"; */ - static char msg[256]; - H5F_t * file_ptr = NULL; - H5C1_t * cache_ptr = NULL; - H5AC1_cache_config_t scratch; - H5C1_auto_size_ctl_t int_config; - - XLATE_EXT_TO_INT_MDC_CONFIG(int_config, (*ext_config_ptr)) - - /* get a pointer to the files internal data structure */ - if ( pass1 ) { - - file_ptr = H5I_object_verify(file_id, H5I_FILE); - - if ( file_ptr == NULL ) { - - pass1 = FALSE; - HDsnprintf(msg, (size_t)128, "Can't get file_ptr #%d.", test_num); - failure_mssg1 = msg; - - } else { - - cache_ptr = file_ptr->shared->cache1; - } - } - - /* verify that we can access the internal version of the cache config */ - if ( pass1 ) { - - if ( ( cache_ptr == NULL ) || - ( cache_ptr->magic != H5C1__H5C1_T_MAGIC ) || - ( cache_ptr->resize_ctl.version != H5C1__CURR_AUTO_SIZE_CTL_VER ) ){ - - pass1 = FALSE; - HDsnprintf(msg, (size_t)128, - "Can't access cache resize_ctl #%d.", test_num); - failure_mssg1 = msg; - } - } - - /* compare the cache's internal configuration with the expected value */ - if ( pass1 ) { - - if ( ! RESIZE_CONFIGS_ARE_EQUAL(int_config, cache_ptr->resize_ctl, - compare_init) ) { - - pass1 = FALSE; - HDsnprintf(msg, (size_t)128, - "Unexpected internal config #%d.", test_num); - failure_mssg1 = msg; - } - } - - /* obtain external cache config */ - if ( pass1 ) { - - scratch.version = H5AC1__CURR_CACHE_CONFIG_VERSION; - - if ( H5Fget_mdc_config(file_id, &scratch) < 0 ) { - - pass1 = FALSE; - HDsnprintf(msg, (size_t)128, - "H5Fget_mdc_config() failed #%d.", test_num); - failure_mssg1 = msg; - } - } - - if ( pass1 ) { - - /* Recall that in any configuration supplied by the cache - * at run time, the set_initial_size field will always - * be FALSE, regardless of the value pass1ed in. Thus we - * always presume that this field need not match that of - * the supplied external configuration. - * - * The cache also sets the initial_size field to the current - * cache max size instead of the value initialy supplied. - * Depending on circumstances, this may or may not match - * the original. Hence the compare_init parameter. - */ - if ( ! CACHE_CONFIGS_EQUAL((*ext_config_ptr), scratch, \ - FALSE, compare_init) ) { - - pass1 = FALSE; - HDsnprintf(msg, (size_t)128, - "Unexpected external config #%d.", test_num); - failure_mssg1 = msg; - } - } - - return; - -} /* validate_mdc_config() */ - - -/*------------------------------------------------------------------------- - * Function: check_file_mdc_api_calls() - * - * Purpose: Verify that the file related metadata cache API calls are - * functioning correctly. - * - * Since we have tested the H5C code elsewhere, it should - * be sufficient to verify that the desired configuration - * data is getting in and out of the cache. Similarly, - * we need only verify that the cache monitoring calls - * return the data that the cache thinks they should return. - * We shouldn't need to verify data correctness beyond that - * point. - * - * Return: void - * - * Programmer: John Mainzer - * 4/14/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static void -check_file_mdc_api_calls(void) -{ - const char * fcn_name = "check_file_mdc_api_calls()"; - char filename[512]; - hid_t file_id = -1; - size_t max_size; - size_t min_clean_size; - size_t cur_size; - int cur_num_entries; - double hit_rate; - H5AC1_cache_config_t default_config = H5AC1__DEFAULT_CACHE_CONFIG; - H5AC1_cache_config_t mod_config_1 = - { - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024 + 1), - /* double min_clean_fraction = */ 0.2, - /* size_t max_size = */ (16 * 1024 * 1024 + 1), - /* size_t min_size = */ ( 1 * 1024 * 1024 + 1), - /* long int epoch_length = */ 50001, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.91, - /* double increment = */ 2.1, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024 + 1), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out, - /* double upper_hr_threshold = */ 0.998, - /* double decrement = */ 0.91, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024 - 1), - /* int epochs_before_eviction = */ 4, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.05, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - H5AC1_cache_config_t mod_config_2 = - { - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ TRUE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (512 * 1024), - /* double min_clean_fraction = */ 0.1, - /* size_t max_size = */ ( 8 * 1024 * 1024), - /* size_t min_size = */ ( 512 * 1024), - /* long int epoch_length = */ 25000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (2 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 1.5, - /* double flash_threshold = */ 0.4, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__threshold, - /* double upper_hr_threshold = */ 0.9995, - /* double decrement = */ 0.95, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (512 * 1024), - /* int epochs_before_eviction = */ 4, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.05, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - H5AC1_cache_config_t mod_config_3 = - { - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.2, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__off, - /* double lower_hr_threshold = */ 0.90, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.1, - /* double flash_threshold = */ 0.6, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__off, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ FALSE, - /* size_t max_decrement = */ (1 * 1024 * 1024 - 1), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ FALSE, - /* double empty_reserve = */ 0.05, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - H5AC1_cache_config_t mod_config_4 = - { - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.15, - /* size_t max_size = */ (20 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 75000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (2 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 1.1, - /* double flash_threshold = */ 0.3, - /* enum H5C1_cache_decr_mode decr_mode = */ - H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - - TESTING("MDC/FILE related API calls"); - - pass1 = TRUE; - - /* Open a file with the default FAPL. Verify that the cache is - * configured as per the default both by looking at its internal - * configuration, and via the H5Fget_mdc_config() call. - * - * Then set serveral different configurations, and verify that - * they took as per above. - */ - - /* setup the file name */ - if ( pass1 ) { - - if ( h5_fixname(FILENAME1[0], H5P_DEFAULT, filename, sizeof(filename)) - == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "h5_fixname() failed.\n"; - } - } - - /* create the file using the default FAPL */ - if ( pass1 ) { - - file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if ( file_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fcreate() failed.\n"; - } - } - - /* verify that the cache is set to the default config */ - validate_mdc_config(file_id, &default_config, TRUE, 1); - - /* set alternate config 1 */ - if ( pass1 ) { - - if ( H5Fset_mdc_config(file_id, &mod_config_1) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() failed 1.\n"; - } - } - - /* verify that the cache is now set to the alternate config */ - validate_mdc_config(file_id, &mod_config_1, TRUE, 2); - - /* set alternate config 2 */ - if ( pass1 ) { - - if ( H5Fset_mdc_config(file_id, &mod_config_2) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() failed 2.\n"; - } - } - - /* verify that the cache is now set to the alternate config */ - validate_mdc_config(file_id, &mod_config_2, TRUE, 3); - - /* set alternate config 3 */ - if ( pass1 ) { - - if ( H5Fset_mdc_config(file_id, &mod_config_3) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() failed 3.\n"; - } - } - - /* verify that the cache is now set to the alternate config */ - validate_mdc_config(file_id, &mod_config_3, TRUE, 4); - - /* set alternate config 4 */ - if ( pass1 ) { - - if ( H5Fset_mdc_config(file_id, &mod_config_4) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() failed 4.\n"; - } - } - - /* verify that the cache is now set to the alternate config */ - validate_mdc_config(file_id, &mod_config_4, TRUE, 5); - - - /* Run some quick smoke checks on the cache status monitoring - * calls -- no interesting data as the cache hasn't had a - * chance to do much yet. - */ - - if ( pass1 ) { - - if ( H5Fget_mdc_hit_rate(file_id, &hit_rate) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_hit_rate() failed 1.\n"; - - } else if ( hit_rate != 0.0 ) { - - pass1 = FALSE; - failure_mssg1 = - "H5Fget_mdc_hit_rate() returned unexpected hit rate.\n"; - - } -#if 0 /* this may be useful now and then -- keep it around */ - else { - - HDfprintf(stdout, - "H5Fget_mdc_hit_rate() reports hit_rate = %lf:\n", - hit_rate); - } -#endif - } - - if ( pass1 ) { - - if ( H5Fget_mdc_size(file_id, &max_size, &min_clean_size, - &cur_size, &cur_num_entries) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_size() failed 1.\n"; - - } else if ( ( mod_config_4.initial_size != max_size ) || - ( min_clean_size != (size_t) - ((double)max_size * mod_config_4.min_clean_fraction) ) ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_size() returned unexpected value(s).\n"; - - } -#if 0 /* this may be useful now and then -- keep it around */ - else { - - HDfprintf(stdout, "H5Fget_mdc_size() reports:\n"); - HDfprintf(stdout, " max_size: %ld, min_clean_size: %ld\n", - (long)max_size, (long)min_clean_size); - HDfprintf(stdout, " cur_size: %ld, cur_num_entries: %d\n", - (long)cur_size, cur_num_entries); - } -#endif - } - - /* close the file and delete it */ - if ( pass1 ) { - - if ( H5Fclose(file_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fclose() failed.\n"; - - } else if ( HDremove(filename) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "HDremove() failed.\n"; - } - } - - if ( pass1 ) { PASSED(); } else { H5_FAILED(); } - - if ( ! pass1 ) - HDfprintf(stdout, "%s: failure_mssg1 = \"%s\".\n", - fcn_name, failure_mssg1); - -} /* check_file_mdc_api_calls() */ - - -/*------------------------------------------------------------------------- - * Function: check_and_validate_cache_hit_rate() - * - * Purpose: Use the API functions to get and reset the cache hit rate. - * Verify that the value returned by the API call agrees with - * the cache internal data structures. - * - * If the number of cache accesses exceeds the value provided - * in the min_accesses parameter, and the hit rate is less than - * min_hit_rate, set pass1 to FALSE, and set failure_mssg1 to - * a string indicating that hit rate was unexpectedly low. - * - * Return hit rate in *hit_rate_ptr, and print the data to - * stdout if requested. - * - * If an error is detected, set pass1 to FALSE, and set - * failure_mssg1 to an appropriate value. - * - * Return: void - * - * Programmer: John Mainzer - * 4/18/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static void -check_and_validate_cache_hit_rate(hid_t file_id, - double * hit_rate_ptr, - hbool_t dump_data, - int64_t min_accesses, - double min_hit_rate) -{ - /* const char * fcn_name = "check_and_validate_cache_hit_rate()"; */ - herr_t result; - int64_t cache_hits = 0; - int64_t cache_accesses = 0; - double expected_hit_rate; - double hit_rate; - H5F_t * file_ptr = NULL; - H5C1_t * cache_ptr = NULL; - - /* get a pointer to the files internal data structure */ - if ( pass1 ) { - - file_ptr = H5I_object_verify(file_id, H5I_FILE); - - if ( file_ptr == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "Can't get file_ptr."; - - } else { - - cache_ptr = file_ptr->shared->cache1; - } - } - - /* verify that we can access the cache data structure */ - if ( pass1 ) { - - if ( ( cache_ptr == NULL ) || - ( cache_ptr->magic != H5C1__H5C1_T_MAGIC ) ) { - - pass1 = FALSE; - failure_mssg1 = "Can't access cache resize_ctl."; - } - } - - /* compare the cache's internal configuration with the expected value */ - if ( pass1 ) { - - cache_hits = cache_ptr->cache_hits; - cache_accesses = cache_ptr->cache_accesses; - - if ( cache_accesses > 0 ) { - - expected_hit_rate = ((double)cache_hits) / ((double)cache_accesses); - - } else { - - expected_hit_rate = 0.0; - } - - result = H5Fget_mdc_hit_rate(file_id, &hit_rate); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_hit_rate() failed."; - - } else if ( hit_rate != expected_hit_rate ) { - - pass1 = FALSE; - failure_mssg1 = "unexpected hit rate."; - } - } - - if ( pass1 ) { /* reset the hit rate */ - - result = H5Freset_mdc_hit_rate_stats(file_id); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Freset_mdc_hit_rate_stats() failed."; - } - } - - /* set *hit_rate_ptr if appropriate */ - if ( ( pass1 ) && ( hit_rate_ptr != NULL ) ) { - - *hit_rate_ptr = hit_rate; - } - - /* dump data to stdout if requested */ - if ( ( pass1 ) && ( dump_data ) ) { - - HDfprintf(stdout, - "cache_hits: %ld, cache_accesses: %ld, hit_rate: %lf\n", - (long)cache_hits, (long)cache_accesses, hit_rate); - } - - if ( ( pass1 ) && - ( cache_accesses > min_accesses ) && - ( hit_rate < min_hit_rate ) ) { - - pass1 = FALSE; - failure_mssg1 = "Unexpectedly low hit rate."; - } - - return; - -} /* check_and_validate_cache_hit_rate() */ - - -/*------------------------------------------------------------------------- - * Function: check_and_validate_cache_size() - * - * Purpose: Use the API function to get the cache size data. Verify - * that the values returned by the API call agree with - * the cache internal data structures. - * - * Return size data in the locations specified by the pointer - * parameters if these parameters are not NULL. Print the - * data to stdout if requested. - * - * If an error is detected, set pass1 to FALSE, and set - * failure_mssg1 to an appropriate value. - * - * Return: void - * - * Programmer: John Mainzer - * 4/18/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static void -check_and_validate_cache_size(hid_t file_id, - size_t * max_size_ptr, - size_t * min_clean_size_ptr, - size_t * cur_size_ptr, - int32_t * cur_num_entries_ptr, - hbool_t dump_data) -{ - /* const char * fcn_name = "check_and_validate_cache_size()"; */ - herr_t result; - size_t expected_max_size; - size_t max_size; - size_t expected_min_clean_size; - size_t min_clean_size; - size_t expected_cur_size; - size_t cur_size; - int32_t expected_cur_num_entries; - int cur_num_entries; - H5F_t * file_ptr = NULL; - H5C1_t * cache_ptr = NULL; - - /* get a pointer to the files internal data structure */ - if ( pass1 ) { - - file_ptr = H5I_object_verify(file_id, H5I_FILE); - - if ( file_ptr == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "Can't get file_ptr."; - - } else { - - cache_ptr = file_ptr->shared->cache1; - } - } - - /* verify that we can access the cache data structure */ - if ( pass1 ) { - - if ( ( cache_ptr == NULL ) || - ( cache_ptr->magic != H5C1__H5C1_T_MAGIC ) ) { - - pass1 = FALSE; - failure_mssg1 = "Can't access cache data structure."; - } - } - - /* compare the cache's internal configuration with the expected value */ - if ( pass1 ) { - - expected_max_size = cache_ptr->max_cache_size; - expected_min_clean_size = cache_ptr->min_clean_size; - expected_cur_size = cache_ptr->index_size; - expected_cur_num_entries = cache_ptr->index_len; - - result = H5Fget_mdc_size(file_id, - &max_size, - &min_clean_size, - &cur_size, - &cur_num_entries); - - if ( result < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_size() failed."; - - } else if ( ( max_size != expected_max_size ) || - ( min_clean_size != expected_min_clean_size ) || - ( cur_size != expected_cur_size ) || - ( cur_num_entries != (int)expected_cur_num_entries ) ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_size() returned unexpected value(s)."; - - } - } - - /* return size values if requested */ - if ( ( pass1 ) && ( max_size_ptr != NULL ) ) { - - *max_size_ptr = max_size; - } - - if ( ( pass1 ) && ( min_clean_size_ptr != NULL ) ) { - - *min_clean_size_ptr = min_clean_size; - } - - if ( ( pass1 ) && ( cur_size_ptr != NULL ) ) { - - *cur_size_ptr = cur_size; - } - - if ( ( pass1 ) && ( cur_num_entries_ptr != NULL ) ) { - - *cur_num_entries_ptr = cur_num_entries; - } - - - /* dump data to stdout if requested */ - if ( ( pass1 ) && ( dump_data ) ) { - - HDfprintf(stdout, - "max_sz: %ld, min_clean_sz: %ld, cur_sz: %ld, cur_ent: %ld\n", - (long)max_size, (long)min_clean_size, (long)cur_size, - (long)cur_num_entries); - } - - return; - -} /* check_and_validate_cache_size() */ - - -/*------------------------------------------------------------------------- - * Function: mdc_api_call_smoke_check() - * - * Purpose: - * - * Return: void - * - * Programmer: John Mainzer - * 4/14/04 - * - * Modifications: - * - * JRM -- 7/12/06 - * Added progress reporting code. - * - *------------------------------------------------------------------------- - */ - -#define CHUNK_SIZE 2 -#define DSET_SIZE (200 * CHUNK_SIZE) -#define NUM_DSETS 6 -#define NUM_RANDOM_ACCESSES 200000 - -static void -mdc_api_call_smoke_check(int express_test1) -{ - const char * fcn_name = "mdc_api_call_smoke_check()"; - char filename[512]; - hbool_t valid_chunk; - hbool_t report_progress = FALSE; - hbool_t dump_hit_rate = FALSE; - int64_t min_accesses = 1000; - double min_hit_rate = 0.90; - hbool_t dump_cache_size = FALSE; - hid_t file_id = -1; - hid_t dataspace_id = -1; - hid_t filespace_ids[NUM_DSETS]; - hid_t memspace_id = -1; - hid_t dataset_ids[NUM_DSETS]; - hid_t properties; - char dset_name[64]; - int i, j, k, l, m, n; - int progress_counter; - herr_t status; - hsize_t dims[2]; - hsize_t a_size[2]; - hsize_t offset[2]; - hsize_t chunk_size[2]; - int data_chunk[CHUNK_SIZE][CHUNK_SIZE]; - H5AC1_cache_config_t default_config = H5AC1__DEFAULT_CACHE_CONFIG; - H5AC1_cache_config_t mod_config_1 = - { - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ 500000, - /* double min_clean_fraction = */ 0.1, - /* size_t max_size = */ 16000000, - /* size_t min_size = */ 250000, - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__off, - /* double lower_hr_threshold = */ 0.95, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ FALSE, - /* size_t max_increment = */ 4000000, - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__off, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ FALSE, - /* size_t max_decrement = */ 1000000, - /* int epochs_before_eviction = */ 2, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.05, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - H5AC1_cache_config_t mod_config_2 = - { - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ 12000000, - /* double min_clean_fraction = */ 0.1, - /* size_t max_size = */ 16000000, - /* size_t min_size = */ 250000, - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__off, - /* double lower_hr_threshold = */ 0.95, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ FALSE, - /* size_t max_increment = */ 4000000, - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__off, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ FALSE, - /* size_t max_decrement = */ 1000000, - /* int epochs_before_eviction = */ 2, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.05, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - H5AC1_cache_config_t mod_config_3 = - { - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ 2000000, - /* double min_clean_fraction = */ 0.1, - /* size_t max_size = */ 16000000, - /* size_t min_size = */ 250000, - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__off, - /* double lower_hr_threshold = */ 0.95, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ FALSE, - /* size_t max_increment = */ 4000000, - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__off, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ FALSE, - /* size_t max_decrement = */ 1000000, - /* int epochs_before_eviction = */ 2, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.05, - /* int dirty_bytes_threshold = */ (256 * 1024) - }; - - TESTING("MDC API smoke check"); - - if ( express_test1 > 0 ) { - - SKIPPED(); - - HDfprintf(stdout, " Long tests disabled.\n"); - - return; - } - - pass1 = TRUE; - - /* Open a file with the default FAPL. Verify that the cache is - * configured as per the default both by looking at its internal - * configuration, and via the H5Fget_mdc_config() call. - * - * Then set the cache to mod_config_1, which fixes cache size at - * 500000 bytes, and turns off automatic cache resize. - */ - - /* setup the file name */ - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout,"\nSetting up file ... "); - HDfflush(stdout); - } - - if ( pass1 ) { - - if ( h5_fixname(FILENAME1[0], H5P_DEFAULT, filename, sizeof(filename)) - == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "h5_fixname() failed.\n"; - } - } - - /* create the file using the default FAPL */ - if ( pass1 ) { - - file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if ( file_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fcreate() failed.\n"; - } - } - - /* verify that the cache is set to the default config */ - validate_mdc_config(file_id, &default_config, TRUE, 1); - - /* set alternate config 1 */ - if ( pass1 ) { - - if ( H5Fset_mdc_config(file_id, &mod_config_1) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() failed 1.\n"; - } - } - - /* verify that the cache is now set to the alternate config */ - validate_mdc_config(file_id, &mod_config_1, TRUE, 2); - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout,"Done.\n"); /* setting up file */ - HDfflush(stdout); - } - - - /* create the datasets */ - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout,"Creating datasets ... "); - HDfflush(stdout); - } - - if ( pass1 ) { - - i = 0; - - while ( ( pass1 ) && ( i < NUM_DSETS ) ) - { - /* create a dataspace for the chunked dataset */ - dims[0] = DSET_SIZE; - dims[1] = DSET_SIZE; - dataspace_id = H5Screate_simple(2, dims, NULL); - - if ( dataspace_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Screate_simple() failed."; - } - - /* set the dataset creation plist to specify that the raw data is - * to be partioned into 10X10 element chunks. - */ - - if ( pass1 ) { - - chunk_size[0] = CHUNK_SIZE; - chunk_size[1] = CHUNK_SIZE; - properties = H5Pcreate(H5P_DATASET_CREATE); - - if ( properties < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pcreate() failed."; - } - } - - if ( pass1 ) { - - if ( H5Pset_chunk(properties, 2, chunk_size) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pset_chunk() failed."; - } - } - - /* create the dataset */ - if ( pass1 ) { - - sprintf(dset_name, "/dset%03d", i); - dataset_ids[i] = H5Dcreate2(file_id, dset_name, H5T_STD_I32BE, - dataspace_id, H5P_DEFAULT, properties, H5P_DEFAULT); - - if ( dataset_ids[i] < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Dcreate2() failed."; - } - } - - /* get the file space ID */ - if ( pass1 ) { - - filespace_ids[i] = H5Dget_space(dataset_ids[i]); - - if ( filespace_ids[i] < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Dget_space() failed."; - } - } - - i++; - } - } - - /* create the mem space to be used to read and write chunks */ - if ( pass1 ) { - - dims[0] = CHUNK_SIZE; - dims[1] = CHUNK_SIZE; - memspace_id = H5Screate_simple(2, dims, NULL); - - if ( memspace_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Screate_simple() failed."; - } - } - - /* select in memory hyperslab */ - if ( pass1 ) { - - offset[0] = 0; /*offset of hyperslab in memory*/ - offset[1] = 0; - a_size[0] = CHUNK_SIZE; /*size of hyperslab*/ - a_size[1] = CHUNK_SIZE; - status = H5Sselect_hyperslab(memspace_id, H5S_SELECT_SET, offset, NULL, - a_size, NULL); - - if ( status < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Sselect_hyperslab() failed."; - } - } - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout,"Done.\n"); - HDfflush(stdout); - } - - /* initialize all datasets on a round robin basis */ - i = 0; - progress_counter = 0; - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout, "Initializing datasets "); - HDfflush(stdout); - } - - while ( ( pass1 ) && ( i < DSET_SIZE ) ) - { - j = 0; - while ( ( pass1 ) && ( j < DSET_SIZE ) ) - { - m = 0; - while ( ( pass1 ) && ( m < NUM_DSETS ) ) - { - /* initialize the slab */ - for ( k = 0; k < CHUNK_SIZE; k++ ) - { - for ( l = 0; l < CHUNK_SIZE; l++ ) - { - data_chunk[k][l] = (DSET_SIZE * DSET_SIZE * m) + - (DSET_SIZE * (i + k)) + j + l; - } - } - - /* select on disk hyperslab */ - offset[0] = i; /*offset of hyperslab in file*/ - offset[1] = j; - a_size[0] = CHUNK_SIZE; /*size of hyperslab*/ - a_size[1] = CHUNK_SIZE; - status = H5Sselect_hyperslab(filespace_ids[m], H5S_SELECT_SET, - offset, NULL, a_size, NULL); - - if ( status < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "disk H5Sselect_hyperslab() failed."; - } - - /* write the chunk to file */ - status = H5Dwrite(dataset_ids[m], H5T_NATIVE_INT, memspace_id, - filespace_ids[m], H5P_DEFAULT, data_chunk); - - if ( status < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Dwrite() failed."; - } - m++; - } - j += CHUNK_SIZE; - } - - /* check the cache hit rate, and reset the counters. - * Hit rate should be just about unity here, so we will just - * get the data and (possibly) print it without checking it - * beyond ensuring that it agrees with the cache internal - * data structures. - * - * similarly, check cache size. - */ - - if ( ( pass1 ) && ( i % (DSET_SIZE / 4) == 0 ) ) { - - check_and_validate_cache_hit_rate(file_id, NULL, dump_hit_rate, - min_accesses, min_hit_rate); - - check_and_validate_cache_size(file_id, NULL, NULL, NULL, NULL, - dump_cache_size); - } - - i += CHUNK_SIZE; - - if ( ( pass1 ) && ( report_progress ) ) { - - progress_counter += CHUNK_SIZE; - - if ( progress_counter >= DSET_SIZE / 20 ) { - - progress_counter = 0; - HDfprintf(stdout, "."); - HDfflush(stdout); - } - } - } - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout," Done.\n"); /* initializing data sets */ - HDfflush(stdout); - } - - /* set alternate config 2 */ - if ( pass1 ) { - - if ( H5Fset_mdc_config(file_id, &mod_config_2) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() failed 2.\n"; - } - } - - /* verify that the cache is now set to the alternate config */ - validate_mdc_config(file_id, &mod_config_2, TRUE, 3); - - /* do random reads on all datasets */ - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout, "Doing random reads on all datasets "); - HDfflush(stdout); - } - - n = 0; - progress_counter = 0; - while ( ( pass1 ) && ( n < NUM_RANDOM_ACCESSES ) ) - { - m = rand() % NUM_DSETS; - i = (rand() % (DSET_SIZE / CHUNK_SIZE)) * CHUNK_SIZE; - j = (rand() % (DSET_SIZE / CHUNK_SIZE)) * CHUNK_SIZE; - - /* select on disk hyperslab */ - offset[0] = i; /*offset of hyperslab in file*/ - offset[1] = j; - a_size[0] = CHUNK_SIZE; /*size of hyperslab*/ - a_size[1] = CHUNK_SIZE; - status = H5Sselect_hyperslab(filespace_ids[m], H5S_SELECT_SET, - offset, NULL, a_size, NULL); - - if ( status < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "disk hyperslab create failed."; - } - - /* read the chunk from file */ - if ( pass1 ) { - - status = H5Dread(dataset_ids[m], H5T_NATIVE_INT, memspace_id, - filespace_ids[m], H5P_DEFAULT, data_chunk); - - if ( status < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "disk hyperslab create failed."; - } - } - - /* validate the slab */ - if ( pass1 ) { - - valid_chunk = TRUE; - for ( k = 0; k < CHUNK_SIZE; k++ ) - { - for ( l = 0; l < CHUNK_SIZE; l++ ) - { - if ( data_chunk[k][l] - != - ((DSET_SIZE * DSET_SIZE * m) + - (DSET_SIZE * (i + k)) + j + l) ) { - - valid_chunk = FALSE; -#if 0 /* this will be useful from time to time -- lets keep it*/ - HDfprintf(stdout, - "data_chunk[%0d][%0d] = %0d, expect %0d.\n", - k, l, data_chunk[k][l], - ((DSET_SIZE * DSET_SIZE * m) + - (DSET_SIZE * (i + k)) + j + l)); - HDfprintf(stdout, - "m = %d, i = %d, j = %d, k = %d, l = %d\n", - m, i, j, k, l); -#endif - } - } - } - - if ( ! valid_chunk ) { -#if 1 - pass1 = FALSE; - failure_mssg1 = "slab validation failed."; -#else /* as above */ - fprintf(stdout, "Chunk (%0d, %0d) in /dset%03d is invalid.\n", - i, j, m); -#endif - } - } - - if ( ( pass1 ) && ( n % (NUM_RANDOM_ACCESSES / 4) == 0 ) ) { - - check_and_validate_cache_hit_rate(file_id, NULL, dump_hit_rate, - min_accesses, min_hit_rate); - - check_and_validate_cache_size(file_id, NULL, NULL, NULL, NULL, - dump_cache_size); - } - - n++; - - if ( ( pass1 ) && ( report_progress ) ) { - - progress_counter++; - - if ( progress_counter >= NUM_RANDOM_ACCESSES / 20 ) { - - progress_counter = 0; - HDfprintf(stdout, "."); - HDfflush(stdout); - } - } - } - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout, " Done.\n"); /* random reads on all data sets */ - HDfflush(stdout); - } - - - /* close the file spaces we are done with */ - i = 1; - while ( ( pass1 ) && ( i < NUM_DSETS ) ) - { - if ( H5Sclose(filespace_ids[i]) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Sclose() failed."; - } - i++; - } - - - /* close the datasets we are done with */ - i = 1; - while ( ( pass1 ) && ( i < NUM_DSETS ) ) - { - if ( H5Dclose(dataset_ids[i]) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Dclose() failed."; - } - i++; - } - - /* set alternate config 3 */ - if ( pass1 ) { - - if ( H5Fset_mdc_config(file_id, &mod_config_3) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() failed 3.\n"; - } - } - - /* verify that the cache is now set to the alternate config */ - validate_mdc_config(file_id, &mod_config_3, TRUE, 4); - - /* do random reads on data set 0 only */ - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout, "Doing random reads on dataset 0 "); - HDfflush(stdout); - } - - m = 0; - n = 0; - progress_counter = 0; - while ( ( pass1 ) && ( n < NUM_RANDOM_ACCESSES ) ) - { - i = (rand() % (DSET_SIZE / CHUNK_SIZE)) * CHUNK_SIZE; - j = (rand() % (DSET_SIZE / CHUNK_SIZE)) * CHUNK_SIZE; - - /* select on disk hyperslab */ - offset[0] = i; /*offset of hyperslab in file*/ - offset[1] = j; - a_size[0] = CHUNK_SIZE; /*size of hyperslab*/ - a_size[1] = CHUNK_SIZE; - status = H5Sselect_hyperslab(filespace_ids[m], H5S_SELECT_SET, - offset, NULL, a_size, NULL); - - if ( status < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "disk hyperslab create failed."; - } - - /* read the chunk from file */ - if ( pass1 ) { - - status = H5Dread(dataset_ids[m], H5T_NATIVE_INT, memspace_id, - filespace_ids[m], H5P_DEFAULT, data_chunk); - - if ( status < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "disk hyperslab create failed."; - } - } - - /* validate the slab */ - if ( pass1 ) { - - valid_chunk = TRUE; - for ( k = 0; k < CHUNK_SIZE; k++ ) - { - for ( l = 0; l < CHUNK_SIZE; l++ ) - { - if ( data_chunk[k][l] - != - ((DSET_SIZE * DSET_SIZE * m) + - (DSET_SIZE * (i + k)) + j + l) ) { - - valid_chunk = FALSE; - } -#if 0 /* this will be useful from time to time -- lets keep it */ - HDfprintf(stdout, "data_chunk[%0d][%0d] = %0d, expect %0d.\n", - k, l, data_chunk[k][l], - ((DSET_SIZE * DSET_SIZE * m) + - (DSET_SIZE * (i + k)) + j + l)); -#endif - } - } - - if ( ! valid_chunk ) { - - pass1 = FALSE; - failure_mssg1 = "slab validation failed."; -#if 0 /* as above */ - fprintf(stdout, "Chunk (%0d, %0d) in /dset%03d is invalid.\n", - i, j, m); -#endif - } - } - - if ( ( pass1 ) && ( n % (NUM_RANDOM_ACCESSES / 4) == 0 ) ) { - - check_and_validate_cache_hit_rate(file_id, NULL, dump_hit_rate, - min_accesses, min_hit_rate); - - check_and_validate_cache_size(file_id, NULL, NULL, NULL, NULL, - dump_cache_size); - } - - n++; - - if ( ( pass1 ) && ( report_progress ) ) { - - progress_counter++; - - if ( progress_counter >= NUM_RANDOM_ACCESSES / 20 ) { - - progress_counter = 0; - HDfprintf(stdout, "."); - HDfflush(stdout); - } - } - } - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout, " Done.\n"); /* random reads data set 0 */ - HDfflush(stdout); - } - - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout,"Shutting down ... "); - HDfflush(stdout); - } - - - /* close file space 0 */ - if ( pass1 ) { - - if ( H5Sclose(filespace_ids[0]) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Sclose(filespace_ids[0]) failed."; - } - } - - /* close the data space */ - if ( pass1 ) { - - if ( H5Sclose(dataspace_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Sclose(dataspace) failed."; - } - } - - /* close the mem space */ - if ( pass1 ) { - - if ( H5Sclose(memspace_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Sclose(memspace_id) failed."; - } - } - - /* close dataset 0 */ - if ( pass1 ) { - - if ( H5Dclose(dataset_ids[0]) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Dclose(dataset_ids[0]) failed."; - } - } - - /* close the file and delete it */ - if ( pass1 ) { - - if ( H5Fclose(file_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fclose() failed.\n"; - - } - else if ( HDremove(filename) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "HDremove() failed.\n"; - } - } - - if ( ( pass1 ) && ( report_progress ) ) { - - HDfprintf(stdout,"Done.\n"); /* shutting down */ - HDfflush(stdout); - } - - - if ( pass1 ) { PASSED(); } else { H5_FAILED(); } - - if ( ! pass1 ) - HDfprintf(stdout, "%s: failure_mssg1 = \"%s\".\n", - fcn_name, failure_mssg1); - -} /* mdc_api_call_smoke_check() */ - - -/* The following array of invalid external MDC cache configurations is - * used to test error rejection in the MDC related API calls. - */ - -#define NUM_INVALID_CONFIGS 41 - -H5AC1_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = -{ - { - /* 0 -- bad version */ - /* int version = */ -1, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 1 -- bad rpt_fcn_enabled */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ (hbool_t)-1, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 2 -- bad open_trace_file */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ (hbool_t)-1, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 3 -- bad close_trace_file */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ (hbool_t)-1, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 4 -- open_trace_file == TRUE and empty trace_file_name */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ TRUE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 5 -- bad set_initial_size */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ 2, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 6 -- max_size too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ H5C1__MAX_MAX_CACHE_SIZE + 1, - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 7 -- min_size too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ H5C1__MIN_MAX_CACHE_SIZE - 1, - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 8 -- min_size > max_size */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ FALSE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ (16 * 1024 * 1024 + 1), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 9 -- initial size out of range (too big) */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (16 * 1024 * 1024 + 1), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 10 -- initial_size out of range (too small) */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024 - 1), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 11 -- min_clean_fraction too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 1.000001, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 12 -- min_clean_fraction too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ -0.00000001, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 13 -- epoch_length too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ H5C1__MIN_AR_EPOCH_LENGTH - 1, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 14 -- epoch_length too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ H5C1__MAX_AR_EPOCH_LENGTH + 1, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 15 -- invalid incr_mode */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ -1, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 16 -- lower_hr_threshold too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ -0.000001, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 17 -- lower_hr_threshold too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 1.00000001, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 18 -- increment too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 0.999999999999, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 19 -- bad apply_max_increment */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ (hbool_t)-1, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 20 -- invalid flash_incr_mode */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ -1, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 21 -- flash_multiple too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__add_space, - /* double flash_multiple = */ 0.09, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 22 -- flash_multiple too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__add_space, - /* double flash_multiple = */ 10.001, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 23 -- flash_threshold too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__add_space, - /* double flash_multiple = */ 1.0, - /* double flash_threshold = */ 0.099, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 24 -- flash_threshold too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__add_space, - /* double flash_multiple = */ 1.0, - /* double flash_threshold = */ 1.001, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 25 -- bad decr_mode */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ -1, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 26 -- upper_hr_threshold too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__threshold, - /* double upper_hr_threshold = */ 1.00001, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 27 -- decrement too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ -0.0000000001, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 28 -- decrement too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 1.0000000001, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 29 -- epochs_before_eviction too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 0, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 30 -- epochs_before_eviction too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ H5C1__MAX_EPOCH_MARKERS + 1, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 31 -- invalid apply_empty_reserve */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ 2, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 32 -- empty_reserve too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ -0.0000000001, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 33 -- empty_reserve too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 1.00000000001, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 34 -- upper_hr_threshold too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ -0.000000001, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 35 -- upper_hr_threshold too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 1.00000001, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 36 -- upper_hr_threshold <= lower_hr_threshold */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.9, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 37 -- dirty_bytes_threshold too small */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.999, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (H5C1__MIN_MAX_CACHE_SIZE / 2) - 1 - }, - { - /* 38 -- dirty_bytes_threshold too big */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ TRUE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out_with_threshold, - /* double upper_hr_threshold = */ 0.9, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (H5C1__MAX_MAX_CACHE_SIZE / 4) + 1 - }, - { - /* 39 -- attempt to disable evictions when auto incr enabled */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ FALSE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__off, - /* double upper_hr_threshold = */ 0.9, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - }, - { - /* 40 -- attempt to disable evictions when auto decr enabled */ - /* int version = */ H5C1__CURR_AUTO_SIZE_CTL_VER, - /* hbool_t rpt_fcn_enabled = */ FALSE, - /* hbool_t open_trace_file = */ FALSE, - /* hbool_t close_trace_file = */ FALSE, - /* char trace_file_name[] = */ "", - /* hbool_t evictions_enabled = */ FALSE, - /* hbool_t set_initial_size = */ TRUE, - /* size_t initial_size = */ (1 * 1024 * 1024), - /* double min_clean_fraction = */ 0.25, - /* size_t max_size = */ (16 * 1024 * 1024), - /* size_t min_size = */ ( 1 * 1024 * 1024), - /* long int epoch_length = */ 50000, - /* enum H5C1_cache_incr_mode incr_mode = */ H5C1_incr__threshold, - /* double lower_hr_threshold = */ 0.9, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ TRUE, - /* size_t max_increment = */ (4 * 1024 * 1024), - /* enum H5C1_cache_flash_incr_mode */ - /* flash_incr_mode = */ H5C1_flash_incr__off, - /* double flash_multiple = */ 2.0, - /* double flash_threshold = */ 0.5, - /* enum H5C1_cache_decr_mode decr_mode = */ H5C1_decr__age_out, - /* double upper_hr_threshold = */ 0.9, - /* double decrement = */ 0.9, - /* hbool_t apply_max_decrement = */ TRUE, - /* size_t max_decrement = */ (1 * 1024 * 1024), - /* int epochs_before_eviction = */ 3, - /* hbool_t apply_empty_reserve = */ TRUE, - /* double empty_reserve = */ 0.1, - /* int dirty_bytes_threshold = */ (256 * 1024) - } -}; - - -/*------------------------------------------------------------------------- - * Function: check_fapl_mdc_api_errs() - * - * Purpose: Verify that the FAPL related MDC API calls reject input - * errors gracefully. - * - * Return: void - * - * Programmer: John Mainzer - * 4/19/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static void -check_fapl_mdc_api_errs(void) -{ - const char * fcn_name = "check_fapl_mdc_api_errs()"; - static char msg[128]; - int i; - herr_t result; - hid_t fapl_id = -1; - H5AC1_cache_config_t default_config = H5AC1__DEFAULT_CACHE_CONFIG; - H5AC1_cache_config_t scratch; - - TESTING("MDC/FAPL related API input errors"); - - pass1 = TRUE; - - - /* first test H5Pget_mdc_config(). - */ - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - if ( pass1 ) { - - H5E_BEGIN_TRY { result = H5Pget_mdc_config(-1, &scratch); } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pget_mdc_config() accepted invalid plist_id."; - } - } - - /* Create a FAPL for test purposes, and verify that it contains the - * default MDC configuration. - */ - - if ( pass1 ) { - - fapl_id = H5Pcreate(H5P_FILE_ACCESS); - - if ( fapl_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pcreate(H5P_FILE_ACCESS) failed.\n"; - } - } - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - if ( ( pass1 ) && - ( ( H5Pget_mdc_config(fapl_id, &scratch) < 0 ) || - ( !CACHE_CONFIGS_EQUAL(default_config, scratch, TRUE, TRUE) ) ) ) { - - pass1 = FALSE; - failure_mssg1 = "New FAPL has unexpected metadata cache config?!?!?.\n"; - } - - if ( pass1 ) { - - H5E_BEGIN_TRY { - result = H5Pget_mdc_config(fapl_id, NULL); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pget_mdc_config() accepted NULL config_ptr."; - } - } - - /* one last test for H5Pget_mdc_config() */ - - scratch.version = -1; /* a convenient, invalid value */ - if ( pass1 ) { - - H5E_BEGIN_TRY { - result = H5Pget_mdc_config(fapl_id, &scratch); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pget_mdc_config() accepted bad config version."; - } - } - - - /* now test H5Pset_mdc_config() - */ - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - if ( pass1 ) { - - H5E_BEGIN_TRY { - result = H5Pset_mdc_config(-1, &default_config); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pset_mdc_config() accepted bad invalid plist_id."; - } - } - - if ( pass1 ) { - - H5E_BEGIN_TRY { - result = H5Pset_mdc_config(fapl_id, NULL); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Pset_mdc_config() accepted NULL config_ptr."; - } - } - - i = 0; - while ( ( pass1 ) && ( i < NUM_INVALID_CONFIGS ) ) - { - H5E_BEGIN_TRY { - result = H5Pset_mdc_config(fapl_id, &(invalid_configs[i])); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - HDsnprintf(msg, (size_t)128, - "H5Pset_mdc_config() accepted invalid_configs[%d].", i); - failure_mssg1 = msg; - } - i++; - } - - /* verify that none of the above calls to H5Pset_mdc_config() changed - * the configuration in the FAPL. - */ - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - if ( ( pass1 ) && - ( ( H5Pget_mdc_config(fapl_id, &scratch) < 0 ) || - ( !CACHE_CONFIGS_EQUAL(default_config, scratch, TRUE, TRUE) ) ) ) { - - pass1 = FALSE; - failure_mssg1 = "FAPL metadata cache config changed???.\n"; - } - - if ( pass1 ) { PASSED(); } else { H5_FAILED(); } - - if ( ! pass1 ) - HDfprintf(stdout, "%s: failure_mssg1 = \"%s\".\n", - fcn_name, failure_mssg1); - -} /* check_fapl_mdc_api_errs() */ - - -/*------------------------------------------------------------------------- - * Function: check_file_mdc_api_errs() - * - * Purpose: Verify that the file related MDC API calls reject input - * errors gracefully. - * - * Return: void - * - * Programmer: John Mainzer - * 4/19/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -static void -check_file_mdc_api_errs(void) -{ - const char * fcn_name = "check_file_mdc_api_errs()"; - char filename[512]; - static char msg[128]; - hbool_t show_progress = FALSE; - int i; - herr_t result; - hid_t file_id = -1; - size_t max_size; - size_t min_clean_size; - size_t cur_size; - int cur_num_entries; - double hit_rate; - H5AC1_cache_config_t default_config = H5AC1__DEFAULT_CACHE_CONFIG; - H5AC1_cache_config_t scratch; - - TESTING("MDC/FILE related API input errors"); - - pass1 = TRUE; - - /* Create a file for test purposes, and veify that its metadata cache - * set to the default MDC configuration. - */ - - /* setup the file name */ - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: calling h5_fixname().\n", fcn_name); - } - - if ( h5_fixname(FILENAME1[0], H5P_DEFAULT, filename, sizeof(filename)) - == NULL ) { - - pass1 = FALSE; - failure_mssg1 = "h5_fixname() failed.\n"; - } - } - - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: calling H5Fcreate().\n", fcn_name); - } - - file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - if ( file_id < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fcreate() failed.\n"; - } - } - - validate_mdc_config(file_id, &default_config, TRUE, 1); - - - /* test H5Fget_mdc_config(). */ - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 1.\n", fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fget_mdc_config(-1, &scratch); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_config() accepted invalid file_id."; - } - } - - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 2.\n", fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fget_mdc_config(file_id, NULL); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_config() accepted NULL config_ptr."; - } - } - - scratch.version = -1; /* a convenient, invalid value */ - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 3.\n", fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fget_mdc_config(file_id, &scratch); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_config() accepted bad config version."; - } - } - - - /* test H5Fset_mdc_config() */ - - scratch.version = H5C1__CURR_AUTO_SIZE_CTL_VER; - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fset_mdc_config() 1.\n", fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fset_mdc_config(-1, &default_config); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() accepted bad invalid file_id."; - } - } - - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fset_mdc_config() 2.\n", fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fset_mdc_config(file_id, NULL); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fset_mdc_config() accepted NULL config_ptr."; - } - } - - i = 0; - while ( ( pass1 ) && ( i < NUM_INVALID_CONFIGS ) ) - { - if ( show_progress ) { - - HDfprintf(stdout, - "%s: testing H5Fset_mdc_config() with invalid config %d.\n", - fcn_name, i); - } - - H5E_BEGIN_TRY { - result = H5Fset_mdc_config(file_id, &(invalid_configs[i])); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - HDsnprintf(msg, (size_t)128, - "H5Fset_mdc_config() accepted invalid_configs[%d].", i); - failure_mssg1 = msg; - } - i++; - } - - /* verify that none of the above calls to H5Fset_mdc_config() changed - * the configuration in the FAPL. - */ - validate_mdc_config(file_id, &default_config, TRUE, 2); - - - /* test H5Fget_mdc_hit_rate() */ - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fget_mdc_hit_rate() 1.\n", - fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fget_mdc_hit_rate(-1, &hit_rate); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_hit_rate() accepted bad file_id."; - } - } - - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fget_mdc_hit_rate() 2.\n", - fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fget_mdc_hit_rate(file_id, NULL); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_hit_rate() accepted NULL hit_rate_ptr."; - } - } - - - /* test H5Freset_mdc_hit_rate_stats() */ - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Freset_mdc_hit_rate_stats().\n", - fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Freset_mdc_hit_rate_stats(-1); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = - "H5Freset_mdc_hit_rate_stats() accepted bad file_id."; - } - } - - - /* test H5Fget_mdc_size() */ - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fget_mdc_size() 1.\n", fcn_name); - } - - H5E_BEGIN_TRY { - result = H5Fget_mdc_size(-1, &max_size, &min_clean_size, - &cur_size, &cur_num_entries); - } H5E_END_TRY; - - if ( result >= 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_size() accepted bad file_id."; - } - } - - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: testing H5Fget_mdc_size() 2.\n", fcn_name); - } - - if ( ( H5Fget_mdc_size(file_id, &max_size, NULL, NULL, NULL) < 0 ) || - ( H5Fget_mdc_size(file_id, NULL, &min_clean_size, - NULL, NULL) < 0 ) || - ( H5Fget_mdc_size(file_id, NULL, NULL, &cur_size, NULL) < 0 ) || - ( H5Fget_mdc_size(file_id, NULL, NULL, NULL, - &cur_num_entries) < 0 ) || - ( H5Fget_mdc_size(file_id, NULL, NULL, NULL, NULL) < 0 ) ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fget_mdc_size() failed to handle NULL params."; - } - } - - - /* close the file and delete it */ - if ( pass1 ) { - - if ( show_progress ) { - - HDfprintf(stdout, "%s: cleaning up from tests.\n", fcn_name); - } - - if ( H5Fclose(file_id) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "H5Fclose() failed.\n"; - - } else if ( HDremove(filename) < 0 ) { - - pass1 = FALSE; - failure_mssg1 = "HDremove() failed.\n"; - } - } - - if ( pass1 ) { PASSED(); } else { H5_FAILED(); } - - if ( ! pass1 ) - HDfprintf(stdout, "%s: failure_mssg1 = \"%s\".\n", - fcn_name, failure_mssg1); - -} /* check_file_mdc_api_errs() */ - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: Run tests on the cache code contained in H5C.c - * - * Return: Success: - * - * Failure: - * - * Programmer: John Mainzer - * 6/24/04 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ - -int -main(void) -{ - int express_test1; - - H5open(); - - express_test1 = GetTestExpress(); - -#if 1 - check_fapl_mdc_api_calls(); -#endif -#if 1 - check_file_mdc_api_calls(); -#endif -#if 1 - mdc_api_call_smoke_check(express_test1); -#endif -#if 1 - check_fapl_mdc_api_errs(); -#endif -#if 1 - check_file_mdc_api_errs(); -#endif - - return(0); - -} /* main() */ |