diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/cache.c | 1957 | ||||
-rw-r--r-- | test/cache2.c | 1958 | ||||
-rw-r--r-- | test/cache2_api.c | 785 | ||||
-rw-r--r-- | test/cache2_common.c | 107 | ||||
-rw-r--r-- | test/cache2_common.h | 5 | ||||
-rw-r--r-- | test/cache_api.c | 416 | ||||
-rw-r--r-- | test/cache_common.c | 107 | ||||
-rw-r--r-- | test/cache_common.h | 5 | ||||
-rw-r--r-- | test/tbogus.h5 | bin | 1944 -> 1944 bytes |
9 files changed, 5055 insertions, 285 deletions
diff --git a/test/cache.c b/test/cache.c index a0bc5b1..6ea92ef 100644 --- a/test/cache.c +++ b/test/cache.c @@ -965,6 +965,11 @@ smoke_check_5(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, @@ -1200,6 +1205,11 @@ smoke_check_6(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, @@ -1435,6 +1445,11 @@ smoke_check_7(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (8 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, @@ -1671,6 +1686,11 @@ smoke_check_8(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, @@ -17295,6 +17315,10 @@ check_check_evictions_enabled_err(void) * * Modifications: * + * John Mainzer 1/8/08 + * Added a basic set of tests for the flash cache size + * increment code. + * *------------------------------------------------------------------------- */ @@ -17304,7 +17328,7 @@ enum H5C_resize_status rpt_status; static void test_rpt_fcn(UNUSED H5C_t * cache_ptr, UNUSED int32_t version, UNUSED double hit_rate, - UNUSED enum H5C_resize_status status, + enum H5C_resize_status status, UNUSED size_t old_max_cache_size, UNUSED size_t new_max_cache_size, UNUSED size_t old_min_clean_size, @@ -17348,6 +17372,11 @@ check_auto_cache_resize(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, @@ -17708,7 +17737,7 @@ check_auto_cache_resize(void) if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); - /* the current cache configuration is unconvenient for testing cache + /* the current cache configuration is inconvenient for testing cache * size reduction, so lets change it some something easier to work * with. */ @@ -17738,6 +17767,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1000 * 1000); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -18088,6 +18121,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -18276,6 +18313,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -18699,6 +18740,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -19239,6 +19284,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -19663,6 +19712,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; @@ -19929,6 +19982,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; @@ -20465,6 +20522,1110 @@ check_auto_cache_resize(void) takedown_cache(cache_ptr, FALSE, FALSE); } + /* now test the flash cache size increment code. At least at present, + * there should be no interaction between the regular auto-resize + * code and the flash cache size increment code other than a reset + * of the counter and stats collection used by the regular auto-resize + * code. Thus we do only limited tests of the two pieces of code + * operating together. + * + * Start with simple test to verify that the flash cache increment + * code increases the cache size when and as expected. + */ + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* allocate a cache, enable the flash cache size increase code, and + * then force the flash size increase code through all its operational + * modes. Verify that all performs as expected. + */ + + if ( pass ) { + + reset_entries(); + + cache_ptr = setup_cache((size_t)(2 * 1024), + (size_t)(1 * 1024)); + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* now repeat the above tests using the add space flash cache size + * increment algorithm. + */ + + if ( pass ) { + + auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + auto_size_ctl.rpt_fcn = test_rpt_fcn; + + auto_size_ctl.set_initial_size = TRUE; + auto_size_ctl.initial_size = 64 * 1024; + + auto_size_ctl.min_clean_fraction = 0.5; + + auto_size_ctl.max_size = 1024 * 1024; + auto_size_ctl.min_size = 5 * 1024; + + auto_size_ctl.epoch_length = 100; + + + auto_size_ctl.incr_mode = H5C_incr__threshold; + + auto_size_ctl.lower_hr_threshold = 0.75; + + auto_size_ctl.increment = 2.0; + + auto_size_ctl.apply_max_increment = TRUE; + auto_size_ctl.max_increment = (32 * 1024); + + auto_size_ctl.flash_incr_mode = H5C_flash_incr__add_space; + auto_size_ctl.flash_multiple = 1.0; + auto_size_ctl.flash_threshold = 0.5; + + + auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; + + auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */ + + auto_size_ctl.decrement = 0.5; + + auto_size_ctl.apply_max_decrement = TRUE; + auto_size_ctl.max_decrement = (1 * 1000 * 1024); + + auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */ + + auto_size_ctl.apply_empty_reserve = TRUE; + auto_size_ctl.empty_reserve = 0.5; /* for ease of testing */ + + result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_set_cache_auto_resize_config failed 12.\n"; + } + } + + if ( pass ) { + + if ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (0).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Load a huge entry into the cache */ + if ( pass ) { + + protect_entry(cache_ptr, HUGE_ENTRY_TYPE, 0); + + if ( pass ) { + unprotect_entry(cache_ptr, HUGE_ENTRY_TYPE, 0, + NO_CHANGE, H5C__NO_FLAGS_SET); + } + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != HUGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (1).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now load a monster entry. Since a monster entry is larger than + * half the size of the cache, and there is not sufficient space + * for a monster entry in the cache, we will add space to the + * cache to make room for the entry. + */ + if ( pass ) { + + protect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 0); + + if ( pass ) { + unprotect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 0, + NO_CHANGE, H5C__NO_FLAGS_SET); + } + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (80 * 1024) ) || + ( cache_ptr->min_clean_size != (40 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != (HUGE_ENTRY_SIZE + + MONSTER_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (2).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Load a second moster entry. Since the monster entry is larger + * than half the size of the cache yet again, and there is not + * sufficient space for the monster entry in the cache, we again + * add space to the cache to make space for the entry. + */ + if ( pass ) { + + protect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 1); + + unprotect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 1, + NO_CHANGE, H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 3 ) || + ( cache_ptr->index_size != ((2 * MONSTER_ENTRY_SIZE) + + HUGE_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (3).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Load a third moster entry. Should be no cache size increase this + * time. + */ + if ( pass ) { + + protect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 2); + + unprotect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 2, + NO_CHANGE, H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != (2 * MONSTER_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 2 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (4).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* delete existing entries to prepare for next test, and reset + * the size of the cache. + */ + if ( pass ) { + + expunge_entry(cache_ptr, MONSTER_ENTRY_TYPE, 1); + expunge_entry(cache_ptr, MONSTER_ENTRY_TYPE, 2); + + if ( pass ) { + + result = H5C_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_set_cache_auto_resize_config failed 13.\n"; + } + } + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (5).\n"; + } + } + + /* repeat the above basic test, only this time, use inserts to add + * entries to the cache, not protects. + */ + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* insert a huge entry into the cache */ + if ( pass ) { + + insert_entry(cache_ptr, HUGE_ENTRY_TYPE, 1, TRUE, + H5C__NO_FLAGS_SET); + /* protect and unprotect a couple times to increment cache_accesses */ + protect_entry(cache_ptr, HUGE_ENTRY_TYPE, 1); + unprotect_entry(cache_ptr, HUGE_ENTRY_TYPE, 1, + NO_CHANGE, H5C__NO_FLAGS_SET); + protect_entry(cache_ptr, HUGE_ENTRY_TYPE, 1); + unprotect_entry(cache_ptr, HUGE_ENTRY_TYPE, 1, + NO_CHANGE, H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != HUGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 2 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (6).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now insert a monster entry. Since a monster entry is larger than + * half the size of the cache, and there is not sufficient space + * for a monster entry in the cache, we will add space to the + * cache to make room for the entry. + */ + if ( pass ) { + + insert_entry(cache_ptr, MONSTER_ENTRY_TYPE, 4, TRUE, + H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (80 * 1024) ) || + ( cache_ptr->min_clean_size != (40 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != + HUGE_ENTRY_SIZE + MONSTER_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (7).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Insert a second monster entry. Cache size should increase again. + */ + if ( pass ) { + + insert_entry(cache_ptr, MONSTER_ENTRY_TYPE, 5, TRUE, + H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 3 ) || + ( cache_ptr->index_size != + 2 * MONSTER_ENTRY_SIZE + HUGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (8).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Insert a third monster entry. Should be no cache size increase this + * time. + */ + if ( pass ) { + + protect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 6); + + unprotect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 6, + NO_CHANGE, H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != (2 * MONSTER_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (9).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* delete existing entries to prepare for next test, and reset + * the size of the cache. We must also change the size of the needed + * variable entries before we run the test, so will protect and + * unprotect them now so as to get the correct initial size. + */ + if ( pass ) { + + expunge_entry(cache_ptr, MONSTER_ENTRY_TYPE, 5); + expunge_entry(cache_ptr, MONSTER_ENTRY_TYPE, 6); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1024); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1024); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1024); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 13); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 13, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1024); + + flush_cache(cache_ptr, TRUE, FALSE, FALSE); + + + if ( pass ) { + + auto_size_ctl.initial_size = 6 * 1024; + result = H5C_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_set_cache_auto_resize_config failed 13.\n"; + } + } + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (10).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now load the variable entries into the cache */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C__NO_FLAGS_SET); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C__NO_FLAGS_SET); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C__NO_FLAGS_SET); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 13); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 13, NO_CHANGE, + H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 4 * 1024 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (11).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect a variable entry, and re-size it to 3K. Should be + * no effect on the size of the cache. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 3 * 1024); + + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 6 * 1024 ) || + ( cache_ptr->cache_accesses != 5 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (12).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect the variable entry again, and re-size it to 10K. Should + * resize the cache to 13 KB. Note that cache_accesses will be 0 + * in this case, since cache_accesses is incremented on the protect. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 10 * 1024); + + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (13 * 1024) ) || + ( cache_ptr->min_clean_size != (13 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 13 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (13).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect a second variable entry, and re-size it to 10K. Should + * resize to 22 KB. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 10 * 1024); + + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 22 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (14).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect a third variable entry, and re-size it to 10K. Should + * be no change in cache size. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 10 * 1024); + + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (15).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* re-size the variable entries back down to their initial size, and + * restore the cache to its initial size as well, in preparation + * for the next test. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1 * 1024); + + if ( pass ) { + + auto_size_ctl.initial_size = 6 * 1024; + result = H5C_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_set_cache_auto_resize_config failed 14.\n"; + } + } + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 4 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (16).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now test flash cache resizes with pinned entries... + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C__PIN_ENTRY_FLAG); + resize_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 2 * 1024, TRUE); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (6 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 5 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (17).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass ) { + + resize_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 10 * 1024, TRUE); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (13 * 1024) ) || + ( cache_ptr->min_clean_size != (13 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 13 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (18).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C__PIN_ENTRY_FLAG); + resize_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11, 10 * 1024, TRUE); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 22 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (19).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C__PIN_ENTRY_FLAG); + resize_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12, 10 * 1024, TRUE); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (20).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Unpin the entries. Note that no entries are evicted as we don't + * load any entries. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C__UNPIN_ENTRY_FLAG); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C__UNPIN_ENTRY_FLAG); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C__UNPIN_ENTRY_FLAG); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (21).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* re-size the variable entries back down to their initial size, and + * restore the cache to its initial size as well, in preparation + * for the next test. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C__DIRTIED_FLAG|H5C__SIZE_CHANGED_FLAG, 1 * 1024); + + if ( pass ) { + + auto_size_ctl.initial_size = 6 * 1024; + result = H5C_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_set_cache_auto_resize_config failed 15.\n"; + } + } + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 4 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (22).\n"; + } + } + + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C__PIN_ENTRY_FLAG); + resize_pinned_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 2 * 1024); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (6 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 5 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (23).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass ) { + + resize_pinned_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 10 * 1024); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (13 * 1024) ) || + ( cache_ptr->min_clean_size != (13 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 13 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (24).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C__PIN_ENTRY_FLAG); + resize_pinned_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11, 10 * 1024); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 22 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (25).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C__PIN_ENTRY_FLAG); + resize_pinned_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12, 10 * 1024); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (26).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Unpin the entries. Note that no entries are evicted as we don't + * load any entries. + */ + if ( pass ) { + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C__UNPIN_ENTRY_FLAG); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C__UNPIN_ENTRY_FLAG); + + protect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C__UNPIN_ENTRY_FLAG); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (27).\n"; + } + } + + /* We have finished a basic check of the flash cache size increment + * code. Tidy up for a more extensive test... + */ + if ( pass ) { + + expunge_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + expunge_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + expunge_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + expunge_entry(cache_ptr, VARIABLE_ENTRY_TYPE, 13); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (28).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* ...and then reconfigure. Note that we change the flash_multiple + * and flash_threshold just to make sure that such changed perform + * as expected. + */ + if ( pass ) { + + auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + auto_size_ctl.rpt_fcn = test_rpt_fcn; + + auto_size_ctl.set_initial_size = TRUE; + auto_size_ctl.initial_size = 4 * 1024; + + auto_size_ctl.min_clean_fraction = 0.5; + + auto_size_ctl.max_size = 20 * 1024; + auto_size_ctl.min_size = 4 * 1024; + + auto_size_ctl.epoch_length = 100; + + + auto_size_ctl.incr_mode = H5C_incr__threshold; + + auto_size_ctl.lower_hr_threshold = 0.75; + + auto_size_ctl.increment = 2.0; + + auto_size_ctl.apply_max_increment = TRUE; + auto_size_ctl.max_increment = (4 * 1024); + + auto_size_ctl.flash_incr_mode = H5C_flash_incr__add_space; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.4; + + + auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; + + auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */ + + auto_size_ctl.decrement = 0.5; + + auto_size_ctl.apply_max_decrement = TRUE; + auto_size_ctl.max_decrement = (2 * 1024); + + auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */ + + auto_size_ctl.apply_empty_reserve = TRUE; + auto_size_ctl.empty_reserve = 0.5; /* for ease of testing */ + + result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_set_cache_auto_resize_config failed 15.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass ) { + + if ( ( cache_ptr->max_cache_size != (4 * 1024) ) || + ( cache_ptr->min_clean_size != (4 * 512) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) { + + pass = FALSE; + failure_mssg = "bad cache after initialization 15.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect and unprotect a large entry -- no change in cache size since + * a large entry will just fill the available space in the cache. + */ + if ( pass ) { + + rpt_fcn_called = FALSE; + + protect_entry(cache_ptr, LARGE_ENTRY_TYPE, 0); + unprotect_entry(cache_ptr, LARGE_ENTRY_TYPE, 0, NO_CHANGE, + H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (4 * 1024) ) || + ( cache_ptr->min_clean_size != (4 * 512) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != LARGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) || + ( rpt_fcn_called == TRUE ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (29).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect and unprotect another a large entry -- should trigger a + * flash cache size increase to 12 KB (remember that flash_multiple is + * set to 2.0). + */ + if ( pass ) { + + rpt_fcn_called = FALSE; + + protect_entry(cache_ptr, LARGE_ENTRY_TYPE, 1); + unprotect_entry(cache_ptr, LARGE_ENTRY_TYPE, 1, NO_CHANGE, + H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (12 * 1024) ) || + ( cache_ptr->min_clean_size != (12 * 512) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != 2 * LARGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) || + ( rpt_fcn_called != TRUE ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (30).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect and unprotect two more large entries -- shouldnt trigger a + * flash cache size increase. + */ + if ( pass ) { + + rpt_fcn_called = FALSE; + + protect_entry(cache_ptr, LARGE_ENTRY_TYPE, 2); + unprotect_entry(cache_ptr, LARGE_ENTRY_TYPE, 2, NO_CHANGE, + H5C__NO_FLAGS_SET); + protect_entry(cache_ptr, LARGE_ENTRY_TYPE, 3); + unprotect_entry(cache_ptr, LARGE_ENTRY_TYPE, 3, NO_CHANGE, + H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (12 * 1024) ) || + ( cache_ptr->min_clean_size != (12 * 512) ) || + ( cache_ptr->index_len != 3 ) || + ( cache_ptr->index_size != 3 * LARGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 3 ) || + ( rpt_fcn_called != FALSE ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (31).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* do many accesses of a single entry to talk the cache into reducing + * its size to the minimum. + */ + if ( pass ) { + + rpt_fcn_called = FALSE; + i = 0; + while ( ( pass ) && ( i < 1000 ) ) + { + protect_entry(cache_ptr, TINY_ENTRY_TYPE, 0); + + if ( pass ) { + unprotect_entry(cache_ptr, TINY_ENTRY_TYPE, 0, + NO_CHANGE, H5C__NO_FLAGS_SET); + } + i++; + } + + if ( ( ! rpt_fcn_called ) || + ( cache_ptr->max_cache_size != (4 * 1024) ) || + ( cache_ptr->min_clean_size != (2 * 1024) ) || + ( cache_ptr->index_size != (1 * TINY_ENTRY_SIZE) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (32).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Force another flash increase */ + if ( pass ) { + + rpt_fcn_called = FALSE; + + protect_entry(cache_ptr, LARGE_ENTRY_TYPE, 0); + unprotect_entry(cache_ptr, LARGE_ENTRY_TYPE, 0, NO_CHANGE, + H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (4 * 1024 + 128) ) || + ( cache_ptr->min_clean_size != (2 * 1024 + 64) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != + LARGE_ENTRY_SIZE + TINY_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) || + ( rpt_fcn_called == FALSE ) || + ( rpt_status != flash_increase ) ) ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (33).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* force regular size increase up to maximum */ + if ( pass ) { + + rpt_fcn_called = FALSE; + i = 0; + while ( ( pass ) && ( i < 500 ) ) + { + protect_entry(cache_ptr, TINY_ENTRY_TYPE, i); + + if ( pass ) { + unprotect_entry(cache_ptr, TINY_ENTRY_TYPE, i, + NO_CHANGE, H5C__NO_FLAGS_SET); + } + i++; + } + + if ( ( cache_ptr->max_cache_size != (20 * 1024) ) || + ( cache_ptr->min_clean_size != (10 * 1024) ) || + ( rpt_fcn_called == FALSE ) || + ( rpt_status != at_max_size ) ) { + + pass = FALSE; + failure_mssg = "Unexpected cache config (34).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + + if ( pass ) { + + takedown_cache(cache_ptr, FALSE, FALSE); + } + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); if ( pass ) { PASSED(); } else { H5_FAILED(); } @@ -20493,6 +21654,10 @@ check_auto_cache_resize(void) * * Modifications: * + * Added code to include the flash cache size increment + * code in this test. + * JRM -- 1/10/08 + * *------------------------------------------------------------------------- */ @@ -20530,6 +21695,11 @@ check_auto_cache_resize_disable(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 1.0, + /* double flash_threshold = */ 0.25, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, @@ -20621,6 +21791,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -20778,6 +21952,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -20935,6 +22113,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -21091,6 +22273,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -21247,6 +22433,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -21402,6 +22592,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__off; @@ -21559,6 +22753,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -21783,6 +22981,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -22014,6 +23216,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; @@ -22249,6 +23455,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -22374,6 +23584,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -22499,6 +23713,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -22624,6 +23842,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -22749,6 +23971,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -22875,6 +24101,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__off; @@ -22976,6 +24206,175 @@ check_auto_cache_resize_disable(void) if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + /* Now test the flash cache size increment code to verify that it + * is disabled when it should be. + * + * Since the flash size increase code doesn't look at hit rate, or + * use epochs (other than to start a new epoch if a flash cache size + * increase is triggered), we go about these tests somewhat differently + * than the rest of the tests in this function. + * + * As of this writing, there is only one flash cache size increment + * mode (add space), which is triggered whenever the size of a newly + * loaded or inserted entry, or the delta between old and new entry + * sizes exceeds some fraction of the current maximum cache size, and + * the cache doesn't have enough free space to accomodate the new/ + * resize entry without performing evictions. The range of permissible + * values for the flash_threshold (0.1 to 1.0 as of this writing), and + * for the flash_multiple (0.1 to 10.0) do not permit the facility to + * be turned off by configuration. Thus, flash cache size increases + * can be disabled only via the flash_incr_mode, and by setting the + * current max_cache_size equal to max_size. + * + * We have already tested the latter in check_auto_cache_resize(), so + * we need only thest the former here. Do this by disabling flash + * cache size increments via the flash_incr_mode, and then creating + * situations that would trigger flash cache size increases were that + * code enabled. + */ + + + if ( pass ) { + + auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + auto_size_ctl.rpt_fcn = test_rpt_fcn; + + auto_size_ctl.set_initial_size = TRUE; + auto_size_ctl.initial_size = 64 * 1024; + + auto_size_ctl.min_clean_fraction = 0.5; + + auto_size_ctl.max_size = 256 * 1024; + auto_size_ctl.min_size = 32 * 1024; + + auto_size_ctl.epoch_length = 1000; + + + auto_size_ctl.incr_mode = H5C_incr__threshold; + + auto_size_ctl.lower_hr_threshold = 0.75; + + auto_size_ctl.increment = 2.0; + + auto_size_ctl.apply_max_increment = TRUE; + auto_size_ctl.max_increment = (2 * 1024); + + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 1.0; + auto_size_ctl.flash_threshold = 0.25; + + + auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; + + auto_size_ctl.upper_hr_threshold = 0.995; + + auto_size_ctl.decrement = 0.5; + + auto_size_ctl.apply_max_decrement = TRUE; + auto_size_ctl.max_decrement = (1 * 1024); + + auto_size_ctl.epochs_before_eviction = 3; + + auto_size_ctl.apply_empty_reserve = TRUE; + auto_size_ctl.empty_reserve = 0.05; + + + result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_set_cache_auto_resize_config failed 17.\n"; + } + } + + if ( pass ) { + + if ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) ) { + + pass = FALSE; + failure_mssg = "bad cache size after set resize re-config 16.\n"; + } + } + + /* We have reduced the max cache size to well below the current index + * size. Protect and unprotect an entry to allow the cache to evict + * entries and get within bounds + */ + if ( pass ) { + + rpt_fcn_called = FALSE; + + protect_entry(cache_ptr, LARGE_ENTRY_TYPE, 0); + unprotect_entry(cache_ptr, LARGE_ENTRY_TYPE, 0, + NO_CHANGE, H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != LARGE_ENTRY_SIZE ) || + ( rpt_fcn_called != FALSE ) ) ) ) { + + HDfprintf(stdout, "\nmax_cache_size = %ld.\n", + (long)(cache_ptr->max_cache_size)); + HDfprintf(stdout, "min_clean_size = %ld.\n", + (long)(cache_ptr->min_clean_size)); + HDfprintf(stdout, "index_len = %ld.\n", + (long)(cache_ptr->index_len)); + HDfprintf(stdout, "index_size = %ld.\n", + (long)(cache_ptr->index_size)); + HDfprintf(stdout, "rpt_fcn_called = %ld.\n", + (long)(rpt_fcn_called)); + + pass = FALSE; + failure_mssg = "Unexpected cache size change results 46.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now protect and unprotect a monster entry. If the flash cache + * size increment code was active, this would trigger an increase. + * Verify that it doesn't. + * + * This finishes the additional tests needed for the flash cache + * size increase code. + */ + if ( pass ) { + + rpt_fcn_called = FALSE; + + protect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 0); + unprotect_entry(cache_ptr, MONSTER_ENTRY_TYPE, 0, + NO_CHANGE, H5C__NO_FLAGS_SET); + + if ( ( pass ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != MONSTER_ENTRY_SIZE ) || + ( rpt_fcn_called != FALSE ) ) ) ) { + + HDfprintf(stdout, "\nmax_cache_size = %ld.\n", + (long)(cache_ptr->max_cache_size)); + HDfprintf(stdout, "min_clean_size = %ld.\n", + (long)(cache_ptr->min_clean_size)); + HDfprintf(stdout, "index_len = %ld.\n", + (long)(cache_ptr->index_len)); + HDfprintf(stdout, "index_size = %ld.\n", + (long)(cache_ptr->index_size)); + HDfprintf(stdout, "rpt_fcn_called = %ld.\n", + (long)(rpt_fcn_called)); + + pass = FALSE; + failure_mssg = "Unexpected cache size change results 47.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + if ( pass ) { takedown_cache(cache_ptr, FALSE, FALSE); @@ -23047,6 +24446,11 @@ check_auto_cache_resize_epoch_markers(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, @@ -23129,6 +24533,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -23302,6 +24710,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -23420,6 +24832,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -23495,6 +24911,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; @@ -23605,6 +25025,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C_decr__off; @@ -23692,6 +25116,11 @@ check_auto_cache_resize_epoch_markers(void) * * Modifications: * + * Added code to verify that errors in the flash cache size + * increment related fields are caught as well. + * + * JRM -- 1/17/08 + * *------------------------------------------------------------------------- */ @@ -23711,8 +25140,14 @@ check_auto_cache_resize_epoch_markers(void) ( (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).flash_incr_mode == (b).flash_incr_mode ) && \ + ( (a).flash_multiple == (b).flash_multiple ) && \ + ( (a).flash_threshold == (b).flash_threshold ) && \ ( (a).decrement == (b).decrement ) && \ ( (a).apply_max_decrement == (b).apply_max_decrement ) && \ ( (a).max_decrement == (b).max_decrement ) && \ @@ -23751,6 +25186,11 @@ check_auto_cache_resize_input_errs(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, @@ -23853,6 +25293,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -23925,6 +25369,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -23998,6 +25446,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24068,6 +25520,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24140,6 +25596,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24209,6 +25669,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24282,6 +25746,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24351,6 +25819,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24420,6 +25892,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24492,6 +25968,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24561,6 +26041,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24634,6 +26118,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24704,6 +26192,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24776,6 +26268,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24845,6 +26341,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24914,6 +26414,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -24986,6 +26490,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -25032,6 +26540,382 @@ check_auto_cache_resize_input_errs(void) } + /* test for bad flash_incr_mode rejection */ + + if ( pass ) { + + invalid_auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + (enum H5C_cache_flash_incr_mode) -1; /* INVALID */ + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + + + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass = FALSE; + failure_mssg = + "H5C_set_cache_auto_resize_config accepted bad flash_incr_mode.\n"; + } + } + + if ( pass ) { + + result = H5C_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_get_cache_auto_resize_config failed 19."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass = FALSE; + failure_mssg = "Unexpected auto resize config 19."; + } + } + + /* test for bad flash_multiple rejection */ + + if ( pass ) { + + invalid_auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 0.09; /* INVALID */ + invalid_auto_size_ctl.flash_threshold = 0.5; + + + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass = FALSE; + failure_mssg = + "H5C_set_cache_auto_resize_config accepted bad flash_multiple(1).\n"; + } + } + + if ( pass ) { + + result = H5C_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_get_cache_auto_resize_config failed 20."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass = FALSE; + failure_mssg = "Unexpected auto resize config 20."; + } + } + + if ( pass ) { + + invalid_auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 10.01; /* INVALID */ + invalid_auto_size_ctl.flash_threshold = 0.5; + + + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass = FALSE; + failure_mssg = + "H5C_set_cache_auto_resize_config accepted bad flash_multiple(2).\n"; + } + } + + if ( pass ) { + + result = H5C_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_get_cache_auto_resize_config failed 21."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass = FALSE; + failure_mssg = "Unexpected auto resize config 21."; + } + } + + /* test for bad flash_threshold rejection */ + + if ( pass ) { + + invalid_auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 1.0; + invalid_auto_size_ctl.flash_threshold = 0.09; /* INVALID */ + + + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass = FALSE; + failure_mssg = + "H5C_set_cache_auto_resize_config accepted bad flash_threshold(1).\n"; + } + } + + if ( pass ) { + + result = H5C_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_get_cache_auto_resize_config failed 22."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass = FALSE; + failure_mssg = "Unexpected auto resize config 22."; + } + } + + if ( pass ) { + + invalid_auto_size_ctl.version = H5C__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 1.0; + invalid_auto_size_ctl.flash_threshold = 1.001; /* INVALID */ + + + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass = FALSE; + failure_mssg = + "H5C_set_cache_auto_resize_config accepted bad flash_threshold(2).\n"; + } + } + + if ( pass ) { + + result = H5C_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "H5C_get_cache_auto_resize_config failed 23."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass = FALSE; + failure_mssg = "Unexpected auto resize config 23."; + } + } + /* test for bad decr_mode rejection */ if ( pass ) { @@ -25059,6 +26943,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = (enum H5C_cache_decr_mode) -1; /* INVALID */ @@ -25094,13 +26982,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 19."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 24."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 19."; + failure_mssg = "Unexpected auto resize config 24."; } } @@ -25129,6 +27017,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = (enum H5C_cache_decr_mode) 4; /* INVALID */ @@ -25164,13 +27056,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 20."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 25."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 20."; + failure_mssg = "Unexpected auto resize config 25."; } } @@ -25202,6 +27094,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -25236,13 +27132,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 21."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 26."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 21."; + failure_mssg = "Unexpected auto resize config 26."; } } @@ -25271,6 +27167,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__threshold; @@ -25305,13 +27205,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 22."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 27."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 22."; + failure_mssg = "Unexpected auto resize config 27."; } } @@ -25343,6 +27243,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -25376,13 +27280,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 23."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 28."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 23."; + failure_mssg = "Unexpected auto resize config 28."; } } @@ -25411,6 +27315,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; @@ -25445,13 +27353,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 24."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 29."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 24."; + failure_mssg = "Unexpected auto resize config 29."; } } @@ -25483,6 +27391,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__age_out; @@ -25516,13 +27428,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 25."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 30."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 25."; + failure_mssg = "Unexpected auto resize config 30."; } } @@ -25551,6 +27463,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C_decr__age_out_with_threshold; @@ -25585,13 +27501,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass = FALSE; - failure_mssg = "H5C_get_cache_auto_resize_config failed 26."; + failure_mssg = "H5C_get_cache_auto_resize_config failed 31."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass = FALSE; - failure_mssg = "Unexpected auto resize config 26."; + failure_mssg = "Unexpected auto resize config 31."; } } @@ -25716,6 +27632,11 @@ check_auto_cache_resize_aux_fcns(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__off, diff --git a/test/cache2.c b/test/cache2.c index 118838b..32ca9b4 100644 --- a/test/cache2.c +++ b/test/cache2.c @@ -965,6 +965,11 @@ smoke_check_5(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, @@ -1200,6 +1205,11 @@ smoke_check_6(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, @@ -1435,6 +1445,11 @@ smoke_check_7(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (8 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, @@ -1671,6 +1686,11 @@ smoke_check_8(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, @@ -9343,7 +9363,7 @@ check_flush_cache__flush_op_test(H5C2_t * cache_ptr, int check_size, struct fo_flush_entry_check check[]) { - const char * fcn_name = "check_flush_cache__flush_op_test"; + /* const char * fcn_name = "check_flush_cache__flush_op_test"; */ static char msg[128]; herr_t result; int i; @@ -9836,7 +9856,7 @@ check_flush_cache__flush_op_test(H5C2_t * cache_ptr, static void check_flush_cache__flush_op_eviction_test(H5C2_t * cache_ptr) { - const char * fcn_name = "check_flush_cache__flush_op_eviction_test"; + /* const char * fcn_name = "check_flush_cache__flush_op_eviction_test"; */ int i; int num_variable_entries = 10; int num_monster_entries = 31; @@ -16856,7 +16876,7 @@ check_pin_entry_errs(void) * * Modifications: * - * - Modified call to H5C2_protect() to pass H5C2__NO_FLAGS_SET in the + * - Modified call to H5C2_protect() to pass2 H5C2__NO_FLAGS_SET in the * the new flags parameter. * * JRM -- 3/28/07 @@ -17747,6 +17767,10 @@ check_check_evictions_enabled_err(void) * * Modifications: * + * John Mainzer 1/8/08 + * Added a basic set of tests for the flash cache size + * increment code. + * *------------------------------------------------------------------------- */ @@ -17756,7 +17780,7 @@ enum H5C2_resize_status rpt_status; static void test_rpt_fcn(UNUSED H5C2_t * cache_ptr, UNUSED int32_t version, UNUSED double hit_rate, - UNUSED enum H5C2_resize_status status, + enum H5C2_resize_status status, UNUSED size_t old_max_cache_size, UNUSED size_t new_max_cache_size, UNUSED size_t old_min_clean_size, @@ -17800,6 +17824,11 @@ check_auto_cache_resize(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, @@ -18160,7 +18189,7 @@ check_auto_cache_resize(void) if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); - /* the current cache configuration is unconvenient for testing cache + /* the current cache configuration is inconvenient for testing cache * size reduction, so lets change it some something easier to work * with. */ @@ -18190,6 +18219,9 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1000 * 1000); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -18540,6 +18572,9 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -18728,6 +18763,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -19000,7 +19039,7 @@ check_auto_cache_resize(void) } } - if ( show_progress ) HDfprintf(stderr, "*check point %d\n", checkpoint++); + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); /* now just bang on one entry -- after three epochs, this should * get all entries other than the one evicted, and the cache size @@ -19151,6 +19190,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -19691,6 +19734,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -20115,6 +20162,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; @@ -20381,6 +20432,10 @@ check_auto_cache_resize(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; @@ -20912,6 +20967,1105 @@ check_auto_cache_resize(void) if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* now test the flash cache size increment code. At least at present, + * there should be no interaction between the regular auto-resize + * code and the flash cache size increment code other than a reset + * of the counter and stats collection used by the regular auto-resize + * code. Thus we do only limited tests of the two pieces of code + * operating together. + * + * Start with simple test to verify that the flash cache increment + * code increases the cache size when and as expected. + */ + + /* Place the cache in a know state via a flush destroy on the cache + * to clear out all entries, and then a reset on all the entries. + * Then configure the cache for the flash cache size increase tests, + * and force the flash size increase code through all its operational + * modes. Verify that all perform as expected. + */ + + if ( pass2 ) { + + flush_cache2(cache_ptr, TRUE, FALSE, FALSE); + + reset_entries2(); + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + auto_size_ctl.rpt_fcn = test_rpt_fcn; + + auto_size_ctl.set_initial_size = TRUE; + auto_size_ctl.initial_size = 64 * 1024; + + auto_size_ctl.min_clean_fraction = 0.5; + + auto_size_ctl.max_size = 1024 * 1024; + auto_size_ctl.min_size = 5 * 1024; + + auto_size_ctl.epoch_length = 100; + + + auto_size_ctl.incr_mode = H5C2_incr__threshold; + + auto_size_ctl.lower_hr_threshold = 0.75; + + auto_size_ctl.increment = 2.0; + + auto_size_ctl.apply_max_increment = TRUE; + auto_size_ctl.max_increment = (32 * 1024); + + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__add_space; + auto_size_ctl.flash_multiple = 1.0; + auto_size_ctl.flash_threshold = 0.5; + + + auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; + + auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */ + + auto_size_ctl.decrement = 0.5; + + auto_size_ctl.apply_max_decrement = TRUE; + auto_size_ctl.max_decrement = (1 * 1000 * 1024); + + auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */ + + auto_size_ctl.apply_empty_reserve = TRUE; + auto_size_ctl.empty_reserve = 0.5; /* for ease of testing */ + + result = H5C2_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_set_cache_auto_resize_config failed 12.\n"; + } + } + + if ( pass2 ) { + + if ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (0).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Load a huge entry into the cache */ + if ( pass2 ) { + + protect_entry2(cache_ptr, HUGE_ENTRY_TYPE, 0); + + if ( pass2 ) { + unprotect_entry2(cache_ptr, HUGE_ENTRY_TYPE, 0, + NO_CHANGE, H5C2__NO_FLAGS_SET); + } + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != HUGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (1).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now load a monster entry. Since a monster entry is larger than + * half the size of the cache, and there is not sufficient space + * for a monster entry in the cache, we will add space to the + * cache to make room for the entry. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 0); + + if ( pass2 ) { + unprotect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 0, + NO_CHANGE, H5C2__NO_FLAGS_SET); + } + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (80 * 1024) ) || + ( cache_ptr->min_clean_size != (40 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != (HUGE_ENTRY_SIZE + + MONSTER_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (2).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Load a second monster entry. Since the monster entry is larger + * than half the size of the cache yet again, and there is not + * sufficient space for the monster entry in the cache, we again + * add space to the cache to make space for the entry. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 1); + + unprotect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 1, + NO_CHANGE, H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 3 ) || + ( cache_ptr->index_size != ((2 * MONSTER_ENTRY_SIZE) + + HUGE_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (3).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Load a third moster entry. Should be no cache size increase this + * time. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 2); + + unprotect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 2, + NO_CHANGE, H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != (2 * MONSTER_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 2 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (4).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* delete existing entries to prepare for next test, and reset + * the size of the cache. + */ + if ( pass2 ) { + + expunge_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 1); + expunge_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 2); + + if ( pass2 ) { + + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config failed 13.\n"; + } + } + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (5).\n"; + } + } + + /* repeat the above basic test, only this time, use inserts to add + * entries to the cache, not protects. + */ + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* insert a huge entry into the cache */ + if ( pass2 ) { + + insert_entry2(cache_ptr, HUGE_ENTRY_TYPE, 1, TRUE, + H5C2__NO_FLAGS_SET); + /* protect and unprotect a couple times to increment cache_accesses */ + protect_entry2(cache_ptr, HUGE_ENTRY_TYPE, 1); + unprotect_entry2(cache_ptr, HUGE_ENTRY_TYPE, 1, + NO_CHANGE, H5C2__NO_FLAGS_SET); + protect_entry2(cache_ptr, HUGE_ENTRY_TYPE, 1); + unprotect_entry2(cache_ptr, HUGE_ENTRY_TYPE, 1, + NO_CHANGE, H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != HUGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 2 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (6).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now insert a monster entry. Since a monster entry is larger than + * half the size of the cache, and there is not sufficient space + * for a monster entry in the cache, we will add space to the + * cache to make room for the entry. + */ + if ( pass2 ) { + + insert_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 4, TRUE, + H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (80 * 1024) ) || + ( cache_ptr->min_clean_size != (40 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != + HUGE_ENTRY_SIZE + MONSTER_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (7).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Insert a second monster entry. Cache size should increase again. + */ + if ( pass2 ) { + + insert_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 5, TRUE, + H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 3 ) || + ( cache_ptr->index_size != + 2 * MONSTER_ENTRY_SIZE + HUGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (8).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Insert a third monster entry. Should be no cache size increase this + * time. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 6); + + unprotect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 6, + NO_CHANGE, H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (144 * 1024) ) || + ( cache_ptr->min_clean_size != ( 72 * 1024) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != (2 * MONSTER_ENTRY_SIZE) ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (9).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* delete existing entries to prepare for next test, and reset + * the size of the cache. We must also change the size of the needed + * variable entries before we run the test, so will protect and + * unprotect them now so as to get the correct initial size. + */ + if ( pass2 ) { + + expunge_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 5); + expunge_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 6); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1024); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1024); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1024); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 13); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 13, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1024); + + flush_cache2(cache_ptr, TRUE, FALSE, FALSE); + + + if ( pass2 ) { + + auto_size_ctl.initial_size = 6 * 1024; + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config failed 13.\n"; + } + } + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (10).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now load the variable entries into the cache */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 13); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 13, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 4 * 1024 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (11).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect a variable entry, and re-size it to 3K. Should be + * no effect on the size of the cache. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 3 * 1024); + + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 6 * 1024 ) || + ( cache_ptr->cache_accesses != 5 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (12).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect the variable entry again, and re-size it to 10K. Should + * resize the cache to 13 KB. Note that cache_accesses will be 0 + * in this case, since cache_accesses is incremented on the protect. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 10 * 1024); + + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (13 * 1024) ) || + ( cache_ptr->min_clean_size != (13 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 13 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (13).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect a second variable entry, and re-size it to 10K. Should + * resize to 22 KB. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 10 * 1024); + + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 22 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (14).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect a third variable entry, and re-size it to 10K. Should + * be no change in cache size. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 10 * 1024); + + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (15).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* re-size the variable entries back down to their initial size, and + * restore the cache to its initial size as well, in preparation + * for the next test. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1 * 1024); + + if ( pass2 ) { + + auto_size_ctl.initial_size = 6 * 1024; + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config failed 14.\n"; + } + } + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 4 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (16).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now test flash cache resizes with pinned entries... + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C2__PIN_ENTRY_FLAG); + resize_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 2 * 1024, TRUE); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (6 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 5 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (17).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + resize_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 10 * 1024, TRUE); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (13 * 1024) ) || + ( cache_ptr->min_clean_size != (13 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 13 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (18).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C2__PIN_ENTRY_FLAG); + resize_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, 10 * 1024, TRUE); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 22 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (19).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C2__PIN_ENTRY_FLAG); + resize_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, 10 * 1024, TRUE); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (20).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Unpin the entries. Note that no entries are evicted as we don't + * load any entries. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C2__UNPIN_ENTRY_FLAG); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C2__UNPIN_ENTRY_FLAG); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C2__UNPIN_ENTRY_FLAG); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (21).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* re-size the variable entries back down to their initial size, and + * restore the cache to its initial size as well, in preparation + * for the next test. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1 * 1024); + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry_with_size_change2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, + H5C2__DIRTIED_FLAG|H5C2__SIZE_CHANGED_FLAG, 1 * 1024); + + if ( pass2 ) { + + auto_size_ctl.initial_size = 6 * 1024; + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config failed 15.\n"; + } + } + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (3 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 4 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (22).\n"; + } + } + + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C2__PIN_ENTRY_FLAG); + resize_pinned_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 2 * 1024); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (6 * 1024) ) || + ( cache_ptr->min_clean_size != (6 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 5 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (23).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + resize_pinned_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, 10 * 1024); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (13 * 1024) ) || + ( cache_ptr->min_clean_size != (13 * 512) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 13 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (24).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C2__PIN_ENTRY_FLAG); + resize_pinned_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, 10 * 1024); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 22 * 1024 ) || + ( cache_ptr->cache_accesses != 0 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (25).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C2__PIN_ENTRY_FLAG); + resize_pinned_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, 10 * 1024); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 1 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (26).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Unpin the entries. Note that no entries are evicted as we don't + * load any entries. + */ + if ( pass2 ) { + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10, NO_CHANGE, + H5C2__UNPIN_ENTRY_FLAG); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11, NO_CHANGE, + H5C2__UNPIN_ENTRY_FLAG); + + protect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + unprotect_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12, NO_CHANGE, + H5C2__UNPIN_ENTRY_FLAG); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 4 ) || + ( cache_ptr->index_size != 31 * 1024 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (27).\n"; + } + } + + /* We have finished a basic check of the flash cache size increment + * code. Tidy up for a more extensive test... + */ + if ( pass2 ) { + + expunge_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 10); + expunge_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 11); + expunge_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 12); + expunge_entry2(cache_ptr, VARIABLE_ENTRY_TYPE, 13); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (22 * 1024) ) || + ( cache_ptr->min_clean_size != (11 * 1024) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 4 ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (28).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* ...and then reconfigure. Note that we change the flash_multiple + * and flash_threshold just to make sure that such changed perform + * as expected. + */ + if ( pass2 ) { + + auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + auto_size_ctl.rpt_fcn = test_rpt_fcn; + + auto_size_ctl.set_initial_size = TRUE; + auto_size_ctl.initial_size = 4 * 1024; + + auto_size_ctl.min_clean_fraction = 0.5; + + auto_size_ctl.max_size = 20 * 1024; + auto_size_ctl.min_size = 4 * 1024; + + auto_size_ctl.epoch_length = 100; + + + auto_size_ctl.incr_mode = H5C2_incr__threshold; + + auto_size_ctl.lower_hr_threshold = 0.75; + + auto_size_ctl.increment = 2.0; + + auto_size_ctl.apply_max_increment = TRUE; + auto_size_ctl.max_increment = (4 * 1024); + + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__add_space; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.4; + + + auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; + + auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */ + + auto_size_ctl.decrement = 0.5; + + auto_size_ctl.apply_max_decrement = TRUE; + auto_size_ctl.max_decrement = (2 * 1024); + + auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */ + + auto_size_ctl.apply_empty_reserve = TRUE; + auto_size_ctl.empty_reserve = 0.5; /* for ease of testing */ + + result = H5C2_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_set_cache_auto_resize_config failed 15.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { + + if ( ( cache_ptr->max_cache_size != (4 * 1024) ) || + ( cache_ptr->min_clean_size != (4 * 512) ) || + ( cache_ptr->index_len != 0 ) || + ( cache_ptr->index_size != 0 ) || + ( cache_ptr->cache_accesses != 0 ) ) { + + pass2 = FALSE; + failure_mssg2 = "bad cache after initialization 15.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect and unprotect a large entry -- no change in cache size since + * a large entry will just fill the available space in the cache. + */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + + protect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 0); + unprotect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 0, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (4 * 1024) ) || + ( cache_ptr->min_clean_size != (4 * 512) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != LARGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) || + ( rpt_fcn_called == TRUE ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (29).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect and unprotect another a large entry -- should trigger a + * flash cache size increase to 12 KB (remember that flash_multiple is + * set to 2.0). + */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + + protect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 1); + unprotect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 1, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (12 * 1024) ) || + ( cache_ptr->min_clean_size != (12 * 512) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != 2 * LARGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) || + ( rpt_fcn_called != TRUE ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (30).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* protect and unprotect two more large entries -- shouldnt trigger a + * flash cache size increase. + */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + + protect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 2); + unprotect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 2, NO_CHANGE, + H5C2__NO_FLAGS_SET); + protect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 3); + unprotect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 3, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (12 * 1024) ) || + ( cache_ptr->min_clean_size != (12 * 512) ) || + ( cache_ptr->index_len != 3 ) || + ( cache_ptr->index_size != 3 * LARGE_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 3 ) || + ( rpt_fcn_called != FALSE ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (31).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* do many accesses of a single entry to talk the cache into reducing + * its size to the minimum. + */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + i = 0; + while ( ( pass2 ) && ( i < 1000 ) ) + { + protect_entry2(cache_ptr, TINY_ENTRY_TYPE, 0); + + if ( pass2 ) { + unprotect_entry2(cache_ptr, TINY_ENTRY_TYPE, 0, + NO_CHANGE, H5C2__NO_FLAGS_SET); + } + i++; + } + + if ( ( ! rpt_fcn_called ) || + ( cache_ptr->max_cache_size != (4 * 1024) ) || + ( cache_ptr->min_clean_size != (2 * 1024) ) || + ( cache_ptr->index_size != (1 * TINY_ENTRY_SIZE) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (32).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Force another flash increase */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + + protect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 0); + unprotect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 0, NO_CHANGE, + H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (4 * 1024 + 128) ) || + ( cache_ptr->min_clean_size != (2 * 1024 + 64) ) || + ( cache_ptr->index_len != 2 ) || + ( cache_ptr->index_size != + LARGE_ENTRY_SIZE + TINY_ENTRY_SIZE ) || + ( cache_ptr->cache_accesses != 1 ) || + ( rpt_fcn_called == FALSE ) || + ( rpt_status != flash_increase ) ) ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (33).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* force regular size increase up to maximum */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + i = 0; + while ( ( pass2 ) && ( i < 500 ) ) + { + protect_entry2(cache_ptr, TINY_ENTRY_TYPE, i); + + if ( pass2 ) { + unprotect_entry2(cache_ptr, TINY_ENTRY_TYPE, i, + NO_CHANGE, H5C2__NO_FLAGS_SET); + } + i++; + } + + if ( ( cache_ptr->max_cache_size != (20 * 1024) ) || + ( cache_ptr->min_clean_size != (10 * 1024) ) || + ( rpt_fcn_called == FALSE ) || + ( rpt_status != at_max_size ) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache config (34).\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + if ( pass2 ) { takedown_cache2(cache_ptr, FALSE, FALSE); @@ -20945,6 +22099,10 @@ check_auto_cache_resize(void) * * Modifications: * + * Added code to include the flash cache size increment + * code in this test. + * JRM -- 1/10/08 + * *------------------------------------------------------------------------- */ @@ -20982,6 +22140,11 @@ check_auto_cache_resize_disable(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, @@ -21073,6 +22236,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -21230,11 +22397,14 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; auto_size_ctl.upper_hr_threshold = 0.995; - auto_size_ctl.decrement = 0.5; auto_size_ctl.apply_max_decrement = FALSE; @@ -21387,6 +22557,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = FALSE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -21543,6 +22717,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -21699,6 +22877,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -21854,6 +23036,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__off; @@ -22011,6 +23197,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -22235,6 +23425,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -22466,6 +23660,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; @@ -22701,6 +23899,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -22826,6 +24028,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -22951,6 +24157,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -23076,6 +24286,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -23201,6 +24415,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -23327,6 +24545,10 @@ check_auto_cache_resize_disable(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (2 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__off; @@ -23428,6 +24650,175 @@ check_auto_cache_resize_disable(void) if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now test the flash cache size increment code to verify that it + * is disabled when it should be. + * + * Since the flash size increase code doesn't look at hit rate, or + * use epochs (other than to start a new epoch if a flash cache size + * increase is triggered), we go about these tests somewhat differently + * than the rest of the tests in this function. + * + * As of this writing, there is only one flash cache size increment + * mode (add space), which is triggered whenever the size of a newly + * loaded or inserted entry, or the delta between old and new entry + * sizes exceeds some fraction of the current maximum cache size, and + * the cache doesn't have enough free space to accomodate the new/ + * resize entry without performing evictions. The range of permissible + * values for the flash_threshold (0.1 to 1.0 as of this writing), and + * for the flash_multiple (0.1 to 10.0) do not permit the facility to + * be turned off by configuration. Thus, flash cache size increases + * can be disabled only via the flash_incr_mode, and by setting the + * current max_cache_size equal to max_size. + * + * We have already tested the latter in check_auto_cache_resize(), so + * we need only thest the former here. Do this by disabling flash + * cache size increments via the flash_incr_mode, and then creating + * situations that would trigger flash cache size increases were that + * code enabled. + */ + + if ( pass2 ) { + + auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + auto_size_ctl.rpt_fcn = test_rpt_fcn; + + auto_size_ctl.set_initial_size = TRUE; + auto_size_ctl.initial_size = 64 * 1024; + + auto_size_ctl.min_clean_fraction = 0.5; + + auto_size_ctl.max_size = 256 * 1024; + auto_size_ctl.min_size = 32 * 1024; + + auto_size_ctl.epoch_length = 1000; + + + auto_size_ctl.incr_mode = H5C2_incr__threshold; + + auto_size_ctl.lower_hr_threshold = 0.75; + + auto_size_ctl.increment = 2.0; + + auto_size_ctl.apply_max_increment = TRUE; + auto_size_ctl.max_increment = (2 * 1024); + + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 1.0; + auto_size_ctl.flash_threshold = 0.25; + + + auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; + + auto_size_ctl.upper_hr_threshold = 0.995; + + auto_size_ctl.decrement = 0.5; + + auto_size_ctl.apply_max_decrement = TRUE; + auto_size_ctl.max_decrement = (1 * 1024); + + auto_size_ctl.epochs_before_eviction = 3; + + auto_size_ctl.apply_empty_reserve = TRUE; + auto_size_ctl.empty_reserve = 0.05; + + + result = H5C2_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_set_cache_auto_resize_config failed 17.\n"; + } + } + + if ( pass2 ) { + + if ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) ) { + + pass2 = FALSE; + failure_mssg2 = "bad cache size after set resize re-config 16.\n"; + } + } + + /* We have reduced the max cache size to well below the current index + * size. Protect and unprotect an entry to allow the cache to evict + * entries and get within bounds + */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + + protect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 0); + unprotect_entry2(cache_ptr, LARGE_ENTRY_TYPE, 0, + NO_CHANGE, H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != LARGE_ENTRY_SIZE ) || + ( rpt_fcn_called != FALSE ) ) ) ) { + + HDfprintf(stdout, "\nmax_cache_size = %ld.\n", + (long)(cache_ptr->max_cache_size)); + HDfprintf(stdout, "min_clean_size = %ld.\n", + (long)(cache_ptr->min_clean_size)); + HDfprintf(stdout, "index_len = %ld.\n", + (long)(cache_ptr->index_len)); + HDfprintf(stdout, "index_size = %ld.\n", + (long)(cache_ptr->index_size)); + HDfprintf(stdout, "rpt_fcn_called = %ld.\n", + (long)(rpt_fcn_called)); + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache size change results 46.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + + /* Now protect and unprotect a monster entry. If the flash cache + * size increment code was active, this would trigger an increase. + * Verify that it doesn't. + * + * This finishes the additional tests needed for the flash cache + * size increase code. + */ + if ( pass2 ) { + + rpt_fcn_called = FALSE; + + protect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 0); + unprotect_entry2(cache_ptr, MONSTER_ENTRY_TYPE, 0, + NO_CHANGE, H5C2__NO_FLAGS_SET); + + if ( ( pass2 ) && + ( ( ( cache_ptr->max_cache_size != (64 * 1024) ) || + ( cache_ptr->min_clean_size != (32 * 1024) ) || + ( cache_ptr->index_len != 1 ) || + ( cache_ptr->index_size != MONSTER_ENTRY_SIZE ) || + ( rpt_fcn_called != FALSE ) ) ) ) { + + HDfprintf(stdout, "\nmax_cache_size = %ld.\n", + (long)(cache_ptr->max_cache_size)); + HDfprintf(stdout, "min_clean_size = %ld.\n", + (long)(cache_ptr->min_clean_size)); + HDfprintf(stdout, "index_len = %ld.\n", + (long)(cache_ptr->index_len)); + HDfprintf(stdout, "index_size = %ld.\n", + (long)(cache_ptr->index_size)); + HDfprintf(stdout, "rpt_fcn_called = %ld.\n", + (long)(rpt_fcn_called)); + + pass2 = FALSE; + failure_mssg2 = "Unexpected cache size change results 47.\n"; + } + } + + if ( show_progress ) HDfprintf(stderr, "check point %d\n", checkpoint++); + if ( pass2 ) { takedown_cache2(cache_ptr, FALSE, FALSE); @@ -23499,6 +24890,11 @@ check_auto_cache_resize_epoch_markers(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, @@ -23581,6 +24977,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -23754,6 +25154,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -23872,6 +25276,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -23947,6 +25355,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; @@ -24057,6 +25469,10 @@ check_auto_cache_resize_epoch_markers(void) auto_size_ctl.apply_max_increment = TRUE; auto_size_ctl.max_increment = (4 * 1024 * 1024); + auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + auto_size_ctl.flash_multiple = 2.0; + auto_size_ctl.flash_threshold = 0.5; + auto_size_ctl.decr_mode = H5C2_decr__off; @@ -24144,6 +25560,11 @@ check_auto_cache_resize_epoch_markers(void) * * Modifications: * + * Added code to verify that errors in the flash cache size + * increment related fields are caught as well. + * + * JRM -- 1/17/08 + * *------------------------------------------------------------------------- */ @@ -24163,6 +25584,9 @@ check_auto_cache_resize_epoch_markers(void) ( (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 ) && \ @@ -24203,6 +25627,11 @@ check_auto_cache_resize_input_errs(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, @@ -24305,6 +25734,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24377,6 +25810,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24450,6 +25887,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24520,6 +25961,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24592,6 +26037,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24661,6 +26110,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24734,6 +26187,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24803,6 +26260,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24872,6 +26333,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -24944,6 +26409,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25013,6 +26482,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25086,6 +26559,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25156,6 +26633,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25228,6 +26709,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25297,6 +26782,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25366,6 +26855,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25438,6 +26931,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25483,6 +26980,382 @@ check_auto_cache_resize_input_errs(void) } } + /* test for bad flash_incr_mode rejection */ + + if ( pass2 ) { + + invalid_auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C2_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + (enum H5C2_cache_flash_incr_mode) -1; /* INVALID */ + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + + + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config accepted bad flash_incr_mode.\n"; + } + } + + if ( pass2 ) { + + result = H5C2_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 19."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected auto resize config 19."; + } + } + + /* test for bad flash_multiple rejection */ + + if ( pass2 ) { + + invalid_auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C2_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C2_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 0.09; /* INVALID */ + invalid_auto_size_ctl.flash_threshold = 0.5; + + + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config accepted bad flash_multiple(1).\n"; + } + } + + if ( pass2 ) { + + result = H5C2_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 20."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected auto resize config 20."; + } + } + + if ( pass2 ) { + + invalid_auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C2_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C2_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 10.01; /* INVALID */ + invalid_auto_size_ctl.flash_threshold = 0.5; + + + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config accepted bad flash_multiple(2).\n"; + } + } + + if ( pass2 ) { + + result = H5C2_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 21."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected auto resize config 21."; + } + } + + /* test for bad flash_threshold rejection */ + + if ( pass2 ) { + + invalid_auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C2_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C2_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 1.0; + invalid_auto_size_ctl.flash_threshold = 0.09; /* INVALID */ + + + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config accepted bad flash_threshold(1).\n"; + } + } + + if ( pass2 ) { + + result = H5C2_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 22."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected auto resize config 22."; + } + } + + if ( pass2 ) { + + invalid_auto_size_ctl.version = H5C2__CURR_AUTO_SIZE_CTL_VER; + invalid_auto_size_ctl.rpt_fcn = NULL; + + invalid_auto_size_ctl.set_initial_size = TRUE; + invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024; + + invalid_auto_size_ctl.min_clean_fraction = 0.1; + + invalid_auto_size_ctl.max_size = 16 * 1024 * 1024; + invalid_auto_size_ctl.min_size = 1 * 1024 * 1024; + + invalid_auto_size_ctl.epoch_length = 5000; + + + invalid_auto_size_ctl.incr_mode = H5C2_incr__threshold; + + invalid_auto_size_ctl.lower_hr_threshold = 0.75; + + invalid_auto_size_ctl.increment = 2.0; + + invalid_auto_size_ctl.apply_max_increment = TRUE; + invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + + invalid_auto_size_ctl.flash_incr_mode = + H5C2_flash_incr__add_space; + invalid_auto_size_ctl.flash_multiple = 1.0; + invalid_auto_size_ctl.flash_threshold = 1.001; /* INVALID */ + + + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; + + invalid_auto_size_ctl.upper_hr_threshold = 0.999; + + invalid_auto_size_ctl.decrement = 0.9; + + invalid_auto_size_ctl.apply_max_decrement = TRUE; + invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024); + + invalid_auto_size_ctl.epochs_before_eviction = 3; + + invalid_auto_size_ctl.apply_empty_reserve = TRUE; + invalid_auto_size_ctl.empty_reserve = 0.05; + + result = H5C2_set_cache_auto_resize_config(cache_ptr, + &invalid_auto_size_ctl); + + if ( result != FAIL ) { + + pass2 = FALSE; + failure_mssg2 = + "H5C2_set_cache_auto_resize_config accepted bad flash_threshold(2).\n"; + } + } + + if ( pass2 ) { + + result = H5C2_get_cache_auto_resize_config(cache_ptr, + &test_auto_size_ctl); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 23."; + + } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ + ref_auto_size_ctl, FALSE) ) { + + pass2 = FALSE; + failure_mssg2 = "Unexpected auto resize config 23."; + } + } + /* test for bad decr_mode rejection */ @@ -25511,6 +27384,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = (enum H5C2_cache_decr_mode) -1; /* INVALID */ @@ -25546,13 +27423,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 19."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 24."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 19."; + failure_mssg2 = "Unexpected auto resize config 24."; } } @@ -25581,6 +27458,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = (enum H5C2_cache_decr_mode) 4; /* INVALID */ @@ -25616,13 +27497,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 20."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 25."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 20."; + failure_mssg2 = "Unexpected auto resize config 25."; } } @@ -25654,6 +27535,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25688,13 +27573,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 21."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 26."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 21."; + failure_mssg2 = "Unexpected auto resize config 26."; } } @@ -25723,6 +27608,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__threshold; @@ -25757,13 +27646,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 22."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 27."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 22."; + failure_mssg2 = "Unexpected auto resize config 27."; } } @@ -25795,6 +27684,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -25828,13 +27721,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 23."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 28."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 23."; + failure_mssg2 = "Unexpected auto resize config 28."; } } @@ -25863,6 +27756,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; @@ -25897,13 +27794,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 24."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 29."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 24."; + failure_mssg2 = "Unexpected auto resize config 29."; } } @@ -25935,6 +27832,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__age_out; @@ -25968,13 +27869,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 25."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 30."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 25."; + failure_mssg2 = "Unexpected auto resize config 30."; } } @@ -26003,6 +27904,10 @@ check_auto_cache_resize_input_errs(void) invalid_auto_size_ctl.apply_max_increment = TRUE; invalid_auto_size_ctl.max_increment = (2 * 1024 * 1024); + invalid_auto_size_ctl.flash_incr_mode = H5C2_flash_incr__off; + invalid_auto_size_ctl.flash_multiple = 2.0; + invalid_auto_size_ctl.flash_threshold = 0.5; + invalid_auto_size_ctl.decr_mode = H5C2_decr__age_out_with_threshold; @@ -26037,13 +27942,13 @@ check_auto_cache_resize_input_errs(void) if ( result != SUCCEED ) { pass2 = FALSE; - failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 26."; + failure_mssg2 = "H5C2_get_cache_auto_resize_config failed 31."; } else if ( ! RESIZE_CONFIGS_ARE_EQUAL(test_auto_size_ctl, \ ref_auto_size_ctl, FALSE) ) { pass2 = FALSE; - failure_mssg2 = "Unexpected auto resize config 26."; + failure_mssg2 = "Unexpected auto resize config 31."; } } @@ -26168,7 +28073,12 @@ check_auto_cache_resize_aux_fcns(void) /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__off, /* double upper_hr_threshold = */ 0.995, @@ -26714,7 +28624,7 @@ main(void) run_full_test2 = FALSE; #endif /* NDEBUG */ -#if 0 +#if 1 run_full_test2 = TRUE; #endif diff --git a/test/cache2_api.c b/test/cache2_api.c index 31a836a..0e78e25 100644 --- a/test/cache2_api.c +++ b/test/cache2_api.c @@ -52,6 +52,9 @@ const char *FILENAMES[] = { ( (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 ) && \ @@ -145,6 +148,9 @@ static void check_file_mdc_api_errs(void); ( (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 ) && \ @@ -172,6 +178,9 @@ static void check_file_mdc_api_errs(void); (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).decrement = (e).decrement; \ @@ -198,31 +207,35 @@ check_fapl_mdc_api_calls(void) { /* int version = */ H5AC2__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, + /* 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 H5C2_cache_incr_mode incr_mode = */ H5C2_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), + /* 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 H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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) }; H5AC2_cache_config_t scratch; H5C2_auto_size_ctl_t default_auto_size_ctl; @@ -732,7 +745,7 @@ validate_mdc_config(hid_t file_id, /* 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 pass2ed in. Thus we - * always resume that this field need not match that of + * 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 @@ -794,120 +807,136 @@ check_file_mdc_api_calls(void) H5AC2_cache_config_t default_config = H5AC2__DEFAULT_CACHE_CONFIG; H5AC2_cache_config_t mod_config_1 = { - /* int version = */ H5C2__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, + /* int version = */ H5C2__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 H5C2_cache_incr_mode incr_mode = */ H5C2_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), + /* 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 H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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) }; H5AC2_cache_config_t mod_config_2 = { - /* int version = */ H5C2__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, + /* int version = */ H5C2__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 H5C2_cache_incr_mode incr_mode = */ H5C2_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), + /* double lower_hr_threshold = */ 0.9, + /* double increment = */ 2.0, + /* hbool_t apply_max_increment = */ TRUE, + /* size_t max_increment = */ (2 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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) }; H5AC2_cache_config_t mod_config_3 = { - /* int version = */ H5C2__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, + /* int version = */ H5C2__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 H5C2_cache_incr_mode incr_mode = */ H5C2_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), + /* double lower_hr_threshold = */ 0.90, + /* double increment = */ 2.0, + /* hbool_t apply_max_increment = */ TRUE, + /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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) }; H5AC2_cache_config_t mod_config_4 = { - /* int version = */ H5C2__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, + /* int version = */ H5C2__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 H5C2_cache_incr_mode incr_mode = */ H5C2_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), + /* double lower_hr_threshold = */ 0.9, + /* double increment = */ 2.0, + /* hbool_t apply_max_increment = */ TRUE, + /* size_t max_increment = */ (2 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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"); @@ -1420,94 +1449,115 @@ mdc_api_call_smoke_check(void) H5AC2_cache_config_t default_config = H5AC2__DEFAULT_CACHE_CONFIG; H5AC2_cache_config_t mod_config_1 = { - /* int version = */ H5C2__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, + /* int version = */ H5C2__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 H5C2_cache_incr_mode incr_mode = */ H5C2_incr__off, - /* double lower_hr_threshold = */ 0.95, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ FALSE, - /* size_t max_increment = */ 4000000, + /* double lower_hr_threshold = */ 0.95, + /* double increment = */ 2.0, + /* hbool_t apply_max_increment = */ FALSE, + /* size_t max_increment = */ 4000000, + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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) }; H5AC2_cache_config_t mod_config_2 = { - /* int version = */ H5C2__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, + /* int version = */ H5C2__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 H5C2_cache_incr_mode incr_mode = */ H5C2_incr__off, - /* double lower_hr_threshold = */ 0.95, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ FALSE, - /* size_t max_increment = */ 4000000, + /* double lower_hr_threshold = */ 0.95, + /* double increment = */ 2.0, + /* hbool_t apply_max_increment = */ FALSE, + /* size_t max_increment = */ 4000000, + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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) }; H5AC2_cache_config_t mod_config_3 = { - /* int version = */ H5C2__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, + /* int version = */ H5C2__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 H5C2_cache_incr_mode incr_mode = */ H5C2_incr__off, - /* double lower_hr_threshold = */ 0.95, - /* double increment = */ 2.0, - /* hbool_t apply_max_increment = */ FALSE, - /* size_t max_increment = */ 4000000, + /* double lower_hr_threshold = */ 0.95, + /* double increment = */ 2.0, + /* hbool_t apply_max_increment = */ FALSE, + /* size_t max_increment = */ 4000000, + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_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) + /* 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_test > 0 ) { + + SKIPPED(); + + HDfprintf(stdout, " Long tests disabled.\n"); + + return; + } + pass2 = TRUE; /* Open a file with the default FAPL. Verify that the cache is @@ -2145,7 +2195,7 @@ mdc_api_call_smoke_check(void) * used to test error rejection in the MDC related API calls. */ -#define NUM_INVALID_CONFIGS 36 +#define NUM_INVALID_CONFIGS 41 H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = { @@ -2168,6 +2218,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2197,6 +2251,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2226,6 +2284,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2255,6 +2317,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2284,6 +2350,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2313,6 +2383,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2342,6 +2416,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2371,6 +2449,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2400,6 +2482,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2429,6 +2515,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2458,6 +2548,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2487,6 +2581,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2516,6 +2614,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2545,6 +2647,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2574,6 +2680,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2603,6 +2713,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2632,6 +2746,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2661,6 +2779,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2690,6 +2812,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 0.999999999999, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2719,6 +2845,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ (hbool_t)-1, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2730,7 +2860,172 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 20 -- bad decr_mode */ + /* 20 -- invalid flash_incr_mode */ + /* int version = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ -1, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 0.09, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 10.001, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 1.0, + /* double flash_threshold = */ 0.099, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 1.0, + /* double flash_threshold = */ 1.001, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2748,6 +3043,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ -1, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2759,7 +3058,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 21 -- upper_hr_threshold too big */ + /* 26 -- upper_hr_threshold too big */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2777,6 +3076,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, /* double upper_hr_threshold = */ 1.00001, /* double decrement = */ 0.9, @@ -2788,7 +3091,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 22 -- decrement too small */ + /* 27 -- decrement too small */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2806,6 +3109,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ -0.0000000001, @@ -2817,7 +3124,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 23 -- decrement too big */ + /* 28 -- decrement too big */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2835,6 +3142,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 1.0000000001, @@ -2846,7 +3157,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 24 -- epochs_before_eviction too small */ + /* 29 -- epochs_before_eviction too small */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2864,6 +3175,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2875,7 +3190,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 24 -- epochs_before_eviction too big */ + /* 30 -- epochs_before_eviction too big */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2893,6 +3208,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2904,7 +3223,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 26 -- invalid apply_empty_reserve */ + /* 31 -- invalid apply_empty_reserve */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2922,6 +3241,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2933,7 +3256,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 27 -- empty_reserve too small */ + /* 32 -- empty_reserve too small */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2951,6 +3274,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2962,7 +3289,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 28 -- empty_reserve too big */ + /* 33 -- empty_reserve too big */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2980,6 +3307,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2991,7 +3322,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 29 -- upper_hr_threshold too small */ + /* 34 -- upper_hr_threshold too small */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3009,6 +3340,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ -0.000000001, /* double decrement = */ 0.9, @@ -3020,7 +3355,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 30 -- upper_hr_threshold too big */ + /* 35 -- upper_hr_threshold too big */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3038,6 +3373,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 1.00000001, /* double decrement = */ 0.9, @@ -3049,7 +3388,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 31 -- upper_hr_threshold <= lower_hr_threshold */ + /* 36 -- upper_hr_threshold <= lower_hr_threshold */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3067,6 +3406,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3078,7 +3421,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 32 -- dirty_bytes_threshold too small */ + /* 37 -- dirty_bytes_threshold too small */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3096,6 +3439,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -3107,7 +3454,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (H5C2__MIN_MAX_CACHE_SIZE / 2) - 1 }, { - /* 33 -- dirty_bytes_threshold too big */ + /* 38 -- dirty_bytes_threshold too big */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3125,6 +3472,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3136,7 +3487,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (H5C2__MAX_MAX_CACHE_SIZE / 4) + 1 }, { - /* 34 -- attempt to disable evictions when auto incr enabled */ + /* 39 -- attempt to disable evictions when auto incr enabled */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3154,6 +3505,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__off, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3165,7 +3520,7 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 35 -- attempt to disable evictions when auto decr enabled */ + /* 40 -- attempt to disable evictions when auto decr enabled */ /* int version = */ H5C2__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3183,6 +3538,10 @@ H5AC2_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C2_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C2_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C2_cache_decr_mode decr_mode = */ H5C2_decr__age_out, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3759,15 +4118,13 @@ check_file_mdc_api_errs(void) int main(void) { + int express_test; + H5open(); skip_long_tests2 = FALSE; -#ifdef NDEBUG - run_full_test2 = TRUE; -#else /* NDEBUG */ - run_full_test2 = FALSE; -#endif /* NDEBUG */ + express_test = GetTestExpress(); #if 1 check_fapl_mdc_api_calls(); diff --git a/test/cache2_common.c b/test/cache2_common.c index be9429b..2ac6dfd 100644 --- a/test/cache2_common.c +++ b/test/cache2_common.c @@ -2101,6 +2101,91 @@ resize_entry2(H5C2_t * cache_ptr, } /* resize_entry2() */ + /*------------------------------------------------------------------------- + * Function: resize_pinned_entry2 + * + * Purpose: Given a pointer to a cache, an entry type, an index, and + * a new size, change the size of the target pinned entry + * to match the supplied new size. + * + * Do nothing if pass is false on entry. + * + * Return: void + * + * Programmer: John Mainzer + * 1/11/08 + * + * Modifications: + * + * None. + * + *------------------------------------------------------------------------- + */ + +void +resize_pinned_entry2(H5C2_t * cache_ptr, + int32_t type, + int32_t idx, + size_t new_size) +{ + herr_t result; + test_entry_t * base_addr; + test_entry_t * entry_ptr; + + HDassert( cache_ptr ); + HDassert( ( 0 <= type ) && ( type < NUMBER_OF_ENTRY_TYPES ) ); + HDassert( ( 0 <= idx ) && ( idx <= max_indices2[type] ) ); + HDassert( type = VARIABLE_ENTRY_TYPE ) ; + HDassert( ( 0 < new_size ) && ( new_size <= entry_sizes2[type] ) ); + + if ( pass2 ) { + + if ( ! entry_in_cache2(cache_ptr, type, idx) ) { + + pass2 = FALSE; + failure_mssg2 = "entry not in cache."; + + } else { + + base_addr = entries2[type]; + entry_ptr = &(base_addr[idx]); + + HDassert( entry_ptr->index == idx ); + HDassert( entry_ptr->type == type ); + HDassert( entry_ptr == entry_ptr->self ); + + if ( ! ( (entry_ptr->header).is_pinned ) ) { + + pass2 = FALSE; + failure_mssg2 = "entry to be resized is not pinned."; + + } else { + + entry_ptr->size = new_size; + + result = H5C2_resize_pinned_entry(cache_ptr, + (void *)entry_ptr, + new_size); + + if ( result != SUCCEED ) { + + pass2 = FALSE; + failure_mssg2 = "error(s) in H5C2_resize_pinned_entry()."; + + } else { + + HDassert( entry_ptr->size = (entry_ptr->header).size ); + + } + } + } + } + + return; + +} /* resize_pinned_entry() */ + + /*------------------------------------------------------------------------- * Function: verify_clean2 * @@ -3114,6 +3199,12 @@ mark_pinned_entry_dirty2(H5C2_t * cache_ptr, entry_ptr->is_dirty = TRUE; + if ( size_changed ) { + + /* update entry size now to keep the sanity checks happy */ + entry_ptr->size = new_size; + } + result = H5C2_mark_pinned_entry_dirty(cache_ptr, (void *)entry_ptr, size_changed, @@ -3126,6 +3217,22 @@ mark_pinned_entry_dirty2(H5C2_t * cache_ptr, ( entry_ptr->size != entry_ptr->header.size ) || ( entry_ptr->addr != entry_ptr->header.addr ) ) { +#if 0 /* This is useful debugging code -- keep it around */ + HDfprintf(stdout, "result = %ld.\n", (long)result); + HDfprintf(stdout, "entry_ptr->header.is_dirty = %d.\n", + (int)(entry_ptr->header.is_dirty)); + HDfprintf(stdout, "entry_ptr->header.is_pinned = %d.\n", + (int)(entry_ptr->header.is_pinned)); + HDfprintf(stdout, + "(entry_ptr->header.type != &(types[type])) = %d.\n", + (int)(entry_ptr->header.type != &(types[type]))); + HDfprintf(stdout, + "entry_ptr->size = %ld, entry_ptr->header.size = %ld.\n", + (long)(entry_ptr->size), (long)(entry_ptr->header.size)); + HDfprintf(stdout, + "entry_ptr->addr = %ld, entry_ptr->header.addr = %ld.\n", + (long)(entry_ptr->addr), (long)(entry_ptr->header.addr)); +#endif pass2 = FALSE; failure_mssg2 = "error in H5C2_mark_pinned_entry_dirty()."; diff --git a/test/cache2_common.h b/test/cache2_common.h index 351f7e8..627b8c6 100644 --- a/test/cache2_common.h +++ b/test/cache2_common.h @@ -697,6 +697,11 @@ void resize_entry2(H5C2_t * cache_ptr, size_t new_size, hbool_t resize_pin); +void resize_pinned_entry2(H5C2_t * cache_ptr, + int32_t type, + int32_t idx, + size_t new_size); + H5C2_t * setup_cache2(size_t max_cache_size, size_t min_clean_size); void row_major_scan_forward2(H5C2_t * cache_ptr, diff --git a/test/cache_api.c b/test/cache_api.c index a1da62f..fcc4664 100644 --- a/test/cache_api.c +++ b/test/cache_api.c @@ -50,6 +50,9 @@ const char *FILENAME[] = { ( (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 ) && \ @@ -84,7 +87,7 @@ static void check_and_validate_cache_size(hid_t file_id, int32_t * cur_num_entries_ptr, hbool_t dump_data); -static void mdc_api_call_smoke_check(void); +static void mdc_api_call_smoke_check(int express_test); static void check_fapl_mdc_api_errs(void); @@ -139,6 +142,9 @@ static void check_file_mdc_api_errs(void); ( (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 ) && \ @@ -166,8 +172,14 @@ static void check_file_mdc_api_errs(void); (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; \ @@ -208,6 +220,10 @@ check_fapl_mdc_api_calls(void) /* double increment = */ 2.1, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024 + 1), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out, /* double upper_hr_threshold = */ 0.998, /* double decrement = */ 0.91, @@ -695,7 +711,7 @@ validate_mdc_config(hid_t file_id, /* 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 passed in. Thus we - * always resume that this field need not match that of + * 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 @@ -773,6 +789,10 @@ check_file_mdc_api_calls(void) /* double increment = */ 2.1, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024 + 1), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out, /* double upper_hr_threshold = */ 0.998, /* double decrement = */ 0.91, @@ -802,6 +822,10 @@ check_file_mdc_api_calls(void) /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (2 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 1.5, + /* double flash_threshold = */ 0.4, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, /* double upper_hr_threshold = */ 0.9995, /* double decrement = */ 0.95, @@ -831,6 +855,10 @@ check_file_mdc_api_calls(void) /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.1, + /* double flash_threshold = */ 0.6, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__off, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -860,6 +888,10 @@ check_file_mdc_api_calls(void) /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (2 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 1.1, + /* double flash_threshold = */ 0.3, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, @@ -1344,7 +1376,7 @@ check_and_validate_cache_size(hid_t file_id, #define NUM_RANDOM_ACCESSES 200000 static void -mdc_api_call_smoke_check(void) +mdc_api_call_smoke_check(int express_test) { const char * fcn_name = "mdc_api_call_smoke_check()"; char filename[512]; @@ -1389,6 +1421,10 @@ mdc_api_call_smoke_check(void) /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ FALSE, /* size_t max_increment = */ 4000000, + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__off, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -1418,6 +1454,10 @@ mdc_api_call_smoke_check(void) /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ FALSE, /* size_t max_increment = */ 4000000, + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__off, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -1447,6 +1487,10 @@ mdc_api_call_smoke_check(void) /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ FALSE, /* size_t max_increment = */ 4000000, + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__off, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -1460,6 +1504,15 @@ mdc_api_call_smoke_check(void) TESTING("MDC API smoke check"); + if ( express_test > 0 ) { + + SKIPPED(); + + HDfprintf(stdout, " Long tests disabled.\n"); + + return; + } + pass = TRUE; /* Open a file with the default FAPL. Verify that the cache is @@ -2092,7 +2145,7 @@ mdc_api_call_smoke_check(void) * used to test error rejection in the MDC related API calls. */ -#define NUM_INVALID_CONFIGS 36 +#define NUM_INVALID_CONFIGS 41 H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = { @@ -2115,6 +2168,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2143,6 +2200,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double lower_hr_threshold = */ 0.9, /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* size_t max_increment = */ (4 * 1024 * 1024), /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, @@ -2173,6 +2234,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2202,6 +2267,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2231,6 +2300,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2260,6 +2333,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2289,6 +2366,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2318,6 +2399,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2347,6 +2432,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2376,6 +2465,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2405,6 +2498,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2434,6 +2531,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2463,6 +2564,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2492,6 +2597,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2521,6 +2630,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2550,6 +2663,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2579,6 +2696,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2608,6 +2729,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2637,6 +2762,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 0.999999999999, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2666,6 +2795,142 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ (hbool_t)-1, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ -1, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 0.09, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 10.001, + /* double flash_threshold = */ 0.5, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 1.0, + /* double flash_threshold = */ 0.099, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2677,7 +2942,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 20 -- bad decr_mode */ + /* 24 -- flash_threshold too big */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2695,6 +2960,43 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__add_space, + /* double flash_multiple = */ 1.0, + /* double flash_threshold = */ 1.001, + /* enum H5C_cache_decr_mode decr_mode = */ H5C_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 = */ H5C__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 H5C_cache_incr_mode incr_mode = */ H5C_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 H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ -1, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2706,7 +3008,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 21 -- upper_hr_threshold too big */ + /* 26 -- upper_hr_threshold too big */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2724,6 +3026,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, /* double upper_hr_threshold = */ 1.00001, /* double decrement = */ 0.9, @@ -2735,7 +3041,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 22 -- decrement too small */ + /* 27 -- decrement too small */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2753,6 +3059,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ -0.0000000001, @@ -2764,7 +3074,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 23 -- decrement too big */ + /* 28 -- decrement too big */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2782,6 +3092,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 1.0000000001, @@ -2793,7 +3107,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 24 -- epochs_before_eviction too small */ + /* 29 -- epochs_before_eviction too small */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2811,6 +3125,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2822,7 +3140,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 24 -- epochs_before_eviction too big */ + /* 30 -- epochs_before_eviction too big */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2840,6 +3158,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2851,7 +3173,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 26 -- invalid apply_empty_reserve */ + /* 31 -- invalid apply_empty_reserve */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2869,6 +3191,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2880,7 +3206,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 27 -- empty_reserve too small */ + /* 32 -- empty_reserve too small */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2898,6 +3224,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2909,7 +3239,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 28 -- empty_reserve too big */ + /* 33 -- empty_reserve too big */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2927,6 +3257,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -2938,7 +3272,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 29 -- upper_hr_threshold too small */ + /* 34 -- upper_hr_threshold too small */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2956,6 +3290,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ -0.000000001, /* double decrement = */ 0.9, @@ -2967,7 +3305,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 30 -- upper_hr_threshold too big */ + /* 35 -- upper_hr_threshold too big */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -2985,6 +3323,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 1.00000001, /* double decrement = */ 0.9, @@ -2996,7 +3338,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 31 -- upper_hr_threshold <= lower_hr_threshold */ + /* 36 -- upper_hr_threshold <= lower_hr_threshold */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3014,6 +3356,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3025,7 +3371,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 32 -- dirty_bytes_threshold too small */ + /* 37 -- dirty_bytes_threshold too small */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3043,6 +3389,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.999, /* double decrement = */ 0.9, @@ -3054,7 +3404,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (H5C__MIN_MAX_CACHE_SIZE / 2) - 1 }, { - /* 33 -- dirty_bytes_threshold too big */ + /* 38 -- dirty_bytes_threshold too big */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3072,6 +3422,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out_with_threshold, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3083,7 +3437,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (H5C__MAX_MAX_CACHE_SIZE / 4) + 1 }, { - /* 34 -- attempt to disable evictions when auto incr enabled */ + /* 39 -- attempt to disable evictions when auto incr enabled */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3101,6 +3455,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__off, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3112,7 +3470,7 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* int dirty_bytes_threshold = */ (256 * 1024) }, { - /* 35 -- attempt to disable evictions when auto decr enabled */ + /* 40 -- attempt to disable evictions when auto decr enabled */ /* int version = */ H5C__CURR_AUTO_SIZE_CTL_VER, /* hbool_t rpt_fcn_enabled = */ FALSE, /* hbool_t open_trace_file = */ FALSE, @@ -3130,6 +3488,10 @@ H5AC_cache_config_t invalid_configs[NUM_INVALID_CONFIGS] = /* double increment = */ 2.0, /* hbool_t apply_max_increment = */ TRUE, /* size_t max_increment = */ (4 * 1024 * 1024), + /* enum H5C_cache_flash_incr_mode */ + /* flash_incr_mode = */ H5C_flash_incr__off, + /* double flash_multiple = */ 2.0, + /* double flash_threshold = */ 0.5, /* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__age_out, /* double upper_hr_threshold = */ 0.9, /* double decrement = */ 0.9, @@ -3669,15 +4031,11 @@ check_file_mdc_api_errs(void) int main(void) { - H5open(); + int express_test; - skip_long_tests = FALSE; + H5open(); -#ifdef NDEBUG - run_full_test = TRUE; -#else /* NDEBUG */ - run_full_test = FALSE; -#endif /* NDEBUG */ + express_test = GetTestExpress(); #if 1 check_fapl_mdc_api_calls(); @@ -3685,8 +4043,8 @@ main(void) #if 1 check_file_mdc_api_calls(); #endif -#if 0 - mdc_api_call_smoke_check(); +#if 1 + mdc_api_call_smoke_check(express_test); #endif #if 1 check_fapl_mdc_api_errs(); diff --git a/test/cache_common.c b/test/cache_common.c index d2be959..25eb988 100644 --- a/test/cache_common.c +++ b/test/cache_common.c @@ -1722,6 +1722,91 @@ resize_entry(H5C_t * cache_ptr, /*------------------------------------------------------------------------- + * Function: resize_pinned_entry + * + * Purpose: Given a pointer to a cache, an entry type, an index, and + * a new size, change the size of the target pinned entry + * to match the supplied new size. + * + * Do nothing if pass is false on entry. + * + * Return: void + * + * Programmer: John Mainzer + * 1/11/08 + * + * Modifications: + * + * None. + * + *------------------------------------------------------------------------- + */ + +void +resize_pinned_entry(H5C_t * cache_ptr, + int32_t type, + int32_t idx, + size_t new_size) +{ + herr_t result; + test_entry_t * base_addr; + test_entry_t * entry_ptr; + + HDassert( cache_ptr ); + HDassert( ( 0 <= type ) && ( type < NUMBER_OF_ENTRY_TYPES ) ); + HDassert( ( 0 <= idx ) && ( idx <= max_indices[type] ) ); + HDassert( type = VARIABLE_ENTRY_TYPE ) ; + HDassert( ( 0 < new_size ) && ( new_size <= entry_sizes[type] ) ); + + if ( pass ) { + + if ( ! entry_in_cache(cache_ptr, type, idx) ) { + + pass = FALSE; + failure_mssg = "entry not in cache."; + + } else { + + base_addr = entries[type]; + entry_ptr = &(base_addr[idx]); + + HDassert( entry_ptr->index == idx ); + HDassert( entry_ptr->type == type ); + HDassert( entry_ptr == entry_ptr->self ); + + if ( ! ( (entry_ptr->header).is_pinned ) ) { + + pass = FALSE; + failure_mssg = "entry to be resized is not pinned."; + + } else { + + entry_ptr->size = new_size; + + result = H5C_resize_pinned_entry(cache_ptr, + (void *)entry_ptr, + new_size); + + if ( result != SUCCEED ) { + + pass = FALSE; + failure_mssg = "error(s) in H5C_resize_pinned_entry()."; + + } else { + + HDassert( entry_ptr->size = (entry_ptr->header).size ); + + } + } + } + } + + return; + +} /* resize_pinned_entry() */ + + +/*------------------------------------------------------------------------- * Function: verify_clean * * Purpose: Verify that all cache entries are marked as clean. If any @@ -2460,6 +2545,12 @@ mark_pinned_entry_dirty(H5C_t * cache_ptr, entry_ptr->is_dirty = TRUE; + if ( size_changed ) { + + /* update entry size now to keep the sanity checks happy */ + entry_ptr->size = new_size; + } + result = H5C_mark_pinned_entry_dirty(cache_ptr, (void *)entry_ptr, size_changed, @@ -2472,6 +2563,22 @@ mark_pinned_entry_dirty(H5C_t * cache_ptr, ( entry_ptr->size != entry_ptr->header.size ) || ( entry_ptr->addr != entry_ptr->header.addr ) ) { +#if 0 /* This is useful debugging code -- keep it around */ + HDfprintf(stdout, "result = %ld.\n", (long)result); + HDfprintf(stdout, "entry_ptr->header.is_dirty = %d.\n", + (int)(entry_ptr->header.is_dirty)); + HDfprintf(stdout, "entry_ptr->header.is_pinned = %d.\n", + (int)(entry_ptr->header.is_pinned)); + HDfprintf(stdout, + "(entry_ptr->header.type != &(types[type])) = %d.\n", + (int)(entry_ptr->header.type != &(types[type]))); + HDfprintf(stdout, + "entry_ptr->size = %ld, entry_ptr->header.size = %ld.\n", + (long)(entry_ptr->size), (long)(entry_ptr->header.size)); + HDfprintf(stdout, + "entry_ptr->addr = %ld, entry_ptr->header.addr = %ld.\n", + (long)(entry_ptr->addr), (long)(entry_ptr->header.addr)); +#endif pass = FALSE; failure_mssg = "error in H5C_mark_pinned_entry_dirty()."; diff --git a/test/cache_common.h b/test/cache_common.h index 23832dc..e1d33f2 100644 --- a/test/cache_common.h +++ b/test/cache_common.h @@ -655,6 +655,11 @@ void resize_entry(H5C_t * cache_ptr, size_t new_size, hbool_t resize_pin); +void resize_pinned_entry(H5C_t * cache_ptr, + int32_t type, + int32_t idx, + size_t new_size); + H5C_t * setup_cache(size_t max_cache_size, size_t min_clean_size); void row_major_scan_forward(H5C_t * cache_ptr, diff --git a/test/tbogus.h5 b/test/tbogus.h5 Binary files differindex 2b8b1dd..6d6f15f 100644 --- a/test/tbogus.h5 +++ b/test/tbogus.h5 |