summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/CMakeTests.cmake4
-rw-r--r--test/Makefile.am5
-rw-r--r--test/ShellTests.cmake118
-rw-r--r--test/big.c8
-rw-r--r--test/cache.c1118
-rw-r--r--test/chunk_info.c52
-rw-r--r--test/cmpd_dset.c4
-rw-r--r--test/cve_2020_10810.h5bin0 -> 1808 bytes
-rw-r--r--test/dsets.c378
-rw-r--r--test/dt_arith.c8
-rw-r--r--test/dtransform.c97
-rw-r--r--test/dtypes.c10
-rw-r--r--test/enc_dec_plist.c4
-rw-r--r--test/error_test.c4
-rw-r--r--test/event_set.c66
-rw-r--r--test/fheap.c4
-rw-r--r--test/file_image.c4
-rw-r--r--test/fillval.c6
-rw-r--r--test/gheap.c2
-rw-r--r--test/h5test.c4
-rw-r--r--test/hyperslab.c6
-rw-r--r--test/null_vol_connector.c1
-rw-r--r--test/ohdr.c58
-rw-r--r--test/pool.c2
-rw-r--r--test/set_extent.c6
-rw-r--r--test/swmr_common.c2
-rw-r--r--test/swmr_common.h2
-rw-r--r--test/tattr.c7
-rw-r--r--test/tconfig.c5
-rw-r--r--test/test_usecases.sh.in22
-rw-r--r--test/testcheck_version.sh.in106
-rw-r--r--test/testhdf5.h2
-rw-r--r--test/testswmr.sh.in40
-rw-r--r--test/testvdsswmr.sh.in16
-rw-r--r--test/testvfdswmr.sh.in44
-rw-r--r--test/tfile.c2
-rw-r--r--test/timer.c18
-rw-r--r--test/tmeta.c4
-rw-r--r--test/tmisc.c2
-rw-r--r--test/tsohm.c2
-rw-r--r--test/tunicode.c2
-rw-r--r--test/tvltypes.c8
-rw-r--r--test/vds.c12
-rw-r--r--test/vfd.c12
-rw-r--r--test/vfd_swmr_bigset_writer.c2530
-rw-r--r--test/vfd_swmr_dsetops_writer.c2
-rw-r--r--test/vfd_swmr_gfail_writer.c798
-rw-r--r--test/vfd_swmr_group_writer.c39
-rw-r--r--test/vol.c926
49 files changed, 5107 insertions, 1465 deletions
diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake
index 17931cf..bb5356d 100644
--- a/test/CMakeTests.cmake
+++ b/test/CMakeTests.cmake
@@ -402,6 +402,8 @@ set (test_CLEANFILES
mirror_rw/*
mirror_wo/*
event_set_*.h5
+ h5s_block.h5
+ h5s_plist.h5
)
# Remove any output file left over from previous test run
@@ -647,10 +649,10 @@ set_tests_properties (H5TEST-tcheck_version-minor PROPERTIES
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
WILL_FAIL "true"
)
+# release + 1 should pass
add_test (NAME H5TEST-tcheck_version-release COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:tcheck_version> "-tr")
set_tests_properties (H5TEST-tcheck_version-release PROPERTIES
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
- WILL_FAIL "true"
)
##############################################################################
diff --git a/test/Makefile.am b/test/Makefile.am
index 3ae26bd..87b2925 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -55,6 +55,7 @@ SCRIPT_DEPEND = error_test$(EXEEXT) err_compat$(EXEEXT) links_env$(EXEEXT) \
vfd_swmr_vlstr_reader$(EXEEXT) vfd_swmr_vlstr_writer$(EXEEXT) \
vfd_swmr_zoo_reader$(EXEEXT) vfd_swmr_zoo_writer$(EXEEXT) \
vfd_swmr_gperf_reader$(EXEEXT) vfd_swmr_gperf_writer$(EXEEXT) \
+ vfd_swmr_gfail_reader$(EXEEXT) vfd_swmr_gfail_writer$(EXEEXT) \
vds_env$(EXEEXT) \
vds_swmr_gen$(EXEEXT) vds_swmr_reader$(EXEEXT) vds_swmr_writer$(EXEEXT)
if HAVE_SHARED_CONDITIONAL
@@ -113,6 +114,7 @@ check_PROGRAMS=$(TEST_PROG) error_test err_compat tcheck_version \
vfd_swmr_zoo_reader vfd_swmr_zoo_writer \
vfd_swmr_attrdset_reader vfd_swmr_attrdset_writer \
vfd_swmr_gperf_reader vfd_swmr_gperf_writer \
+ vfd_swmr_gfail_reader vfd_swmr_gfail_writer \
vfd_swmr_check_compat \
vfd_swmr_dsetchks_reader vfd_swmr_dsetchks_writer \
swmr_check_compat_vfd vds_env vds_swmr_gen vds_swmr_reader vds_swmr_writer \
@@ -181,6 +183,7 @@ vfd_swmr_zoo_reader_SOURCES=vfd_swmr_zoo_writer.c genall5.c
vfd_swmr_bigset_reader_SOURCES=vfd_swmr_bigset_writer.c
vfd_swmr_group_reader_SOURCES=vfd_swmr_group_writer.c
vfd_swmr_gperf_reader_SOURCES=vfd_swmr_gperf_writer.c
+vfd_swmr_gfail_reader_SOURCES=vfd_swmr_gfail_writer.c
vfd_swmr_dsetops_reader_SOURCES=vfd_swmr_dsetops_writer.c
vfd_swmr_attrdset_writer_SOURCES=vfd_swmr_attrdset_writer.c
@@ -213,7 +216,7 @@ CHECK_CLEANFILES+=accum.h5 cmpd_dset.h5 compact_dataset.h5 dataset.h5 dset_offse
zero_chunk.h5 chunk_single.h5 swmr_non_latest.h5 \
earray_hdr_fd.h5 farray_hdr_fd.h5 bt2_hdr_fd.h5 \
storage_size.h5 dls_01_strings.h5 power2up.h5 version_bounds.h5 \
- alloc_0sized.h5 \
+ alloc_0sized.h5 h5s_block.h5 h5s_plist.h5 \
extend.h5 istore.h5 extlinks*.h5 frspace.h5 links*.h5 \
sys_file1 tfile[1-7].h5 th5s[1-4].h5 lheap.h5 fheap.h5 ohdr.h5 \
stab.h5 extern_[1-5].h5 extern_[1-4][rw].raw gheap[0-4].h5 \
diff --git a/test/ShellTests.cmake b/test/ShellTests.cmake
index 812121e..9614152 100644
--- a/test/ShellTests.cmake
+++ b/test/ShellTests.cmake
@@ -19,7 +19,8 @@ if (UNIX)
find_program (SH_PROGRAM bash)
if (SH_PROGRAM)
-
+ set (srcdir ${HDF5_TEST_SOURCE_DIR})
+ set (bindir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
##############################################################################
# configure scripts to test dir
##############################################################################
@@ -33,13 +34,8 @@ if (UNIX)
##############################################################################
# copy test programs to test dir
##############################################################################
- add_custom_command (
- TARGET swmr_check_compat_vfd
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_check_compat_vfd>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_check_compat_vfd"
- )
-
+ #shell script creates dir
+ #file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/swmr_test")
add_custom_command (
TARGET swmr_check_compat_vfd
POST_BUILD
@@ -47,118 +43,12 @@ if (UNIX)
ARGS -E copy_if_different "${HDF5_SOURCE_DIR}/bin/output_filter.sh" "${HDF5_TEST_BINARY_DIR}/H5TEST/bin/output_filter.sh"
)
- file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/flushrefresh_test")
- add_custom_command (
- TARGET flushrefresh
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:flushrefresh>" "${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh"
- )
-
#shell script creates dir
#file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/usecases_test")
- add_custom_command (
- TARGET use_append_mchunks
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:use_append_mchunks>" "${HDF5_TEST_BINARY_DIR}/H5TEST/use_append_mchunks"
- )
- add_custom_command (
- TARGET use_disable_mdc_flushes
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:use_disable_mdc_flushes>" "${HDF5_TEST_BINARY_DIR}/H5TEST/use_disable_mdc_flushes"
- )
- add_custom_command (
- TARGET twriteorder
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:twriteorder>" "${HDF5_TEST_BINARY_DIR}/H5TEST/twriteorder"
- )
- add_custom_command (
- TARGET use_append_chunk
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:use_append_chunk>" "${HDF5_TEST_BINARY_DIR}/H5TEST/use_append_chunk"
- )
file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/swmr_test")
- add_custom_command (
- TARGET swmr_generator
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_generator>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_generator"
- )
- add_custom_command (
- TARGET swmr_start_write
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_start_write>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_start_write"
- )
- add_custom_command (
- TARGET swmr_reader
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_reader>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_reader"
- )
- add_custom_command (
- TARGET swmr_writer
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_writer>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_writer"
- )
- add_custom_command (
- TARGET swmr_remove_reader
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_remove_reader>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_remove_reader"
- )
- add_custom_command (
- TARGET swmr_remove_writer
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_remove_writer>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_remove_writer"
- )
- add_custom_command (
- TARGET swmr_addrem_writer
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_addrem_writer>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_addrem_writer"
- )
- add_custom_command (
- TARGET swmr_sparse_reader
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_sparse_reader>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_sparse_reader"
- )
- add_custom_command (
- TARGET swmr_sparse_writer
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:swmr_sparse_writer>" "${HDF5_TEST_BINARY_DIR}/H5TEST/swmr_test/swmr_sparse_writer"
- )
file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/vds_swmr_test")
- add_custom_command (
- TARGET vds_swmr_gen
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:vds_swmr_gen>" "${HDF5_TEST_BINARY_DIR}/H5TEST/vds_swmr_gen"
- )
- add_custom_command (
- TARGET vds_swmr_writer
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:vds_swmr_writer>" "${HDF5_TEST_BINARY_DIR}/H5TEST/vds_swmr_writer"
- )
- add_custom_command (
- TARGET vds_swmr_reader
- POST_BUILD
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy_if_different "$<TARGET_FILE:vds_swmr_reader>" "${HDF5_TEST_BINARY_DIR}/H5TEST/vds_swmr_reader"
- )
-
-
##############################################################################
##############################################################################
diff --git a/test/big.c b/test/big.c
index 36fb27d..6f8ce67 100644
--- a/test/big.c
+++ b/test/big.c
@@ -56,8 +56,8 @@
#define DNAME "big.data"
#define WRT_N 50
-#define WRT_SIZE 4 * 1024
-#define FAMILY_SIZE 1024 * 1024 * 1024
+#define WRT_SIZE (4 * 1024)
+#define FAMILY_SIZE (1024 * 1024 * 1024)
#define GB (HDoff_t)0x40000000L
@@ -277,7 +277,7 @@ error:
* 'name' in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
static int
enough_room(hid_t fapl)
{
@@ -319,7 +319,7 @@ done:
return ret_value;
}
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/*-------------------------------------------------------------------------
* Function: writer
diff --git a/test/cache.c b/test/cache.c
index 6ded559..6989564 100644
--- a/test/cache.c
+++ b/test/cache.c
@@ -1046,7 +1046,7 @@ smoke_check_5(int express_test, unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (2 * 1024 * 1024),
- /* double min_clean_fraction = */ 0.1f,
+ /* double min_clean_fraction = */ 0.1,
/* size_t max_size = */ (32 * 1024 * 1025),
/* size_t min_size = */ (512 * 1024),
@@ -1055,23 +1055,23 @@ smoke_check_5(int express_test, unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.9f,
+ /* double decrement = */ 0.9,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -1079,7 +1079,7 @@ smoke_check_5(int express_test, unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.5f
+ /* double empty_reserve = */ 0.5
};
if (paged)
@@ -1278,7 +1278,7 @@ smoke_check_6(int express_test, unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (2 * 1024 * 1024),
- /* double min_clean_fraction = */ 0.1f,
+ /* double min_clean_fraction = */ 0.1,
/* size_t max_size = */ (32 * 1024 * 1025),
/* size_t min_size = */ (512 * 1024),
@@ -1287,23 +1287,23 @@ smoke_check_6(int express_test, unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.9f,
+ /* double decrement = */ 0.9,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -1311,7 +1311,7 @@ smoke_check_6(int express_test, unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.05f
+ /* double empty_reserve = */ 0.05
};
if (paged)
@@ -1510,7 +1510,7 @@ smoke_check_7(int express_test, unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (2 * 1024 * 1024),
- /* double min_clean_fraction = */ 0.1f,
+ /* double min_clean_fraction = */ 0.1,
/* size_t max_size = */ (32 * 1024 * 1025),
/* size_t min_size = */ (512 * 1024),
@@ -1519,24 +1519,24 @@ smoke_check_7(int express_test, unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* double increment = */ 2.0,
/* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.9f,
+ /* double decrement = */ 0.9,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -1544,7 +1544,7 @@ smoke_check_7(int express_test, unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.1f
+ /* double empty_reserve = */ 0.1
};
if (paged)
@@ -1743,7 +1743,7 @@ smoke_check_8(int express_test, unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (2 * 1024 * 1024),
- /* double min_clean_fraction = */ 0.1f,
+ /* double min_clean_fraction = */ 0.1,
/* size_t max_size = */ (32 * 1024 * 1025),
/* size_t min_size = */ (512 * 1024),
@@ -1752,24 +1752,24 @@ smoke_check_8(int express_test, unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.9f,
+ /* double decrement = */ 0.9,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -1777,7 +1777,7 @@ smoke_check_8(int express_test, unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.1f
+ /* double empty_reserve = */ 0.1
};
if (paged)
@@ -17004,7 +17004,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (512 * 1024),
- /* double min_clean_fraction = */ 0.5f,
+ /* double min_clean_fraction = */ 0.5,
/* size_t max_size = */ (14 * 1024 * 1024),
/* size_t min_size = */ (512 * 1024),
@@ -17013,23 +17013,23 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.1f,
+ /* double decrement = */ 0.1,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -17037,7 +17037,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.05f};
+ /* double empty_reserve = */ 0.05};
if (paged)
TESTING("automatic cache resizing (paged aggregation)")
@@ -17361,7 +17361,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1000 * 1000 + 10;
- auto_size_ctl.min_clean_fraction = 0.1f;
+ auto_size_ctl.min_clean_fraction = 0.1;
auto_size_ctl.max_size = 8 * 1000 * 1000;
auto_size_ctl.min_size = 500 * 1000;
@@ -17370,22 +17370,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1000 * 1000);
@@ -17393,7 +17393,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
if (result != SUCCEED) {
@@ -17676,7 +17676,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -17685,22 +17685,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 4.0f;
+ auto_size_ctl.increment = 4.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.25f;
+ auto_size_ctl.decrement = 0.25;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -17708,7 +17708,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
if (result != SUCCEED) {
@@ -17852,7 +17852,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -17861,22 +17861,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__age_out;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -17884,7 +17884,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
if (result != SUCCEED) {
@@ -18220,7 +18220,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -18229,22 +18229,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__age_out;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -18252,7 +18252,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -18702,7 +18702,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -18711,22 +18711,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__age_out;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -18734,7 +18734,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.5f; /* for ease of testing */
+ auto_size_ctl.empty_reserve = 0.5; /* for ease of testing */
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -19079,7 +19079,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -19088,16 +19088,16 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ 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;
@@ -19106,7 +19106,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
*/
auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -19114,7 +19114,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
if (result != SUCCEED) {
@@ -19326,7 +19326,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1000 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1000 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -19335,22 +19335,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ 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;
- auto_size_ctl.upper_hr_threshold = 0.999f; /* for ease of testing */
+ auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1000 * 1024);
@@ -19358,7 +19358,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.5f; /* for ease of testing */
+ 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) {
@@ -19868,7 +19868,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 64 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 1024 * 1024;
auto_size_ctl.min_size = 5 * 1024;
@@ -19877,22 +19877,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ 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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f; /* for ease of testing */
+ auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1000 * 1024);
@@ -19900,7 +19900,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.5f; /* for ease of testing */
+ 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) {
@@ -20602,7 +20602,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 20 * 1024;
auto_size_ctl.min_size = 4 * 1024;
@@ -20611,22 +20611,22 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ 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.0f;
- auto_size_ctl.flash_threshold = 0.4f;
+ 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.999f; /* for ease of testing */
+ auto_size_ctl.upper_hr_threshold = 0.999; /* for ease of testing */
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (2 * 1024);
@@ -20634,7 +20634,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged)
auto_size_ctl.epochs_before_eviction = 1; /* for ease of testing */
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.5f; /* for ease of testing */
+ 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) {
@@ -20859,7 +20859,7 @@ check_auto_cache_resize_disable(unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (512 * 1024),
- /* double min_clean_fraction = */ 0.5f,
+ /* double min_clean_fraction = */ 0.5,
/* size_t max_size = */ (14 * 1024 * 1024),
/* size_t min_size = */ (512 * 1024),
@@ -20868,23 +20868,23 @@ check_auto_cache_resize_disable(unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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 = */ 1.0f,
- /* double flash_threshold = */ 0.25f,
+ /* double flash_multiple = */ 1.0,
+ /* double flash_threshold = */ 0.25,
/* enum H5C_cache_decr_mode decr_mode = */ H5C_decr__threshold,
- /* double upper_hr_threshold = */ 0.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.1f,
+ /* double decrement = */ 0.1,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -20892,7 +20892,7 @@ check_auto_cache_resize_disable(unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.05f};
+ /* double empty_reserve = */ 0.05};
if (paged)
TESTING("automatic cache resize disable (paged aggregation)")
@@ -20964,7 +20964,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -20973,22 +20973,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 1.0f; /* disable size increases */
+ auto_size_ctl.increment = 1.0; /* disable size increases */
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -20996,7 +20996,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -21116,7 +21116,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -21125,21 +21125,21 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.0f; /* disable size increases */
+ auto_size_ctl.lower_hr_threshold = 0.0; /* disable size increases */
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -21147,7 +21147,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -21267,7 +21267,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -21276,22 +21276,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -21299,7 +21299,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -21418,7 +21418,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -21427,22 +21427,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 1.0f; /* disable size decreases */
+ auto_size_ctl.decrement = 1.0; /* disable size decreases */
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -21450,7 +21450,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -21572,7 +21572,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -21581,22 +21581,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 1.0f; /* disable size decreases */
+ auto_size_ctl.upper_hr_threshold = 1.0; /* disable size decreases */
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -21604,7 +21604,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -21722,7 +21722,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -21731,22 +21731,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__off;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -21754,7 +21754,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -21874,7 +21874,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -21883,22 +21883,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__age_out;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = 0; /* disable decrement */
@@ -21906,7 +21906,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 1;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -22091,7 +22091,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -22100,22 +22100,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__age_out;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -22123,7 +22123,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 1;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 1.0f; /* disable decrement */
+ auto_size_ctl.empty_reserve = 1.0; /* disable decrement */
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -22315,7 +22315,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -22324,22 +22324,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ 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;
- auto_size_ctl.upper_hr_threshold = 1.0f;
+ auto_size_ctl.upper_hr_threshold = 1.0;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -22347,7 +22347,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 1;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -22541,7 +22541,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 2 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -22550,22 +22550,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.0f; /* disable size increases */
+ auto_size_ctl.lower_hr_threshold = 0.0; /* disable size increases */
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 1.0f; /* disable size decreases */
+ auto_size_ctl.upper_hr_threshold = 1.0; /* disable size decreases */
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -22573,7 +22573,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -22661,7 +22661,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.25f;
+ auto_size_ctl.min_clean_fraction = 0.25;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -22670,22 +22670,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 1.0f; /* disable size increment */
+ auto_size_ctl.increment = 1.0; /* disable size increment */
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 1.0f; /* disable size decrement */
+ auto_size_ctl.decrement = 1.0; /* disable size decrement */
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -22693,7 +22693,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -22781,7 +22781,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = FALSE;
auto_size_ctl.initial_size = 2 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 6 * 1024 * 1024; /* no resize */
auto_size_ctl.min_size = 6 * 1024 * 1024; /* no resize */
@@ -22790,22 +22790,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -22813,7 +22813,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -22901,7 +22901,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.25f;
+ auto_size_ctl.min_clean_fraction = 0.25;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -22910,22 +22910,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 1.0f; /* disable size increment */
+ auto_size_ctl.increment = 1.0; /* disable size increment */
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 1.0f; /* disable size decrement */
+ auto_size_ctl.upper_hr_threshold = 1.0; /* disable size decrement */
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -22933,7 +22933,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -23021,7 +23021,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -23030,22 +23030,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.0f; /* disable size increment */
+ auto_size_ctl.lower_hr_threshold = 0.0; /* disable size increment */
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 1.0f; /* disable size decrement */
+ auto_size_ctl.decrement = 1.0; /* disable size decrement */
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -23053,7 +23053,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -23141,7 +23141,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 4 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 16 * 1024 * 1024;
auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -23150,22 +23150,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__off;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -23173,7 +23173,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -23288,7 +23288,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 64 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 256 * 1024;
auto_size_ctl.min_size = 32 * 1024;
@@ -23297,22 +23297,22 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__threshold;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ 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.0f;
- auto_size_ctl.flash_threshold = 0.25f;
+ 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.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = TRUE;
auto_size_ctl.max_decrement = (1 * 1024);
@@ -23320,7 +23320,7 @@ check_auto_cache_resize_disable(unsigned paged)
auto_size_ctl.epochs_before_eviction = 3;
auto_size_ctl.apply_empty_reserve = TRUE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -23458,7 +23458,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (512 * 1024),
- /* double min_clean_fraction = */ 0.5f,
+ /* double min_clean_fraction = */ 0.5,
/* size_t max_size = */ (14 * 1024 * 1024),
/* size_t min_size = */ (512 * 1024),
@@ -23467,23 +23467,23 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.1f,
+ /* double decrement = */ 0.1,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -23491,7 +23491,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.05f};
+ /* double empty_reserve = */ 0.05};
if (paged)
TESTING("automatic cache resize epoch marker management (paged aggr)")
@@ -23545,7 +23545,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -23554,22 +23554,22 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__age_out;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -23577,7 +23577,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.epochs_before_eviction = 10;
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -23709,7 +23709,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -23718,22 +23718,22 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__age_out;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -23741,7 +23741,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.epochs_before_eviction = 1;
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -23827,7 +23827,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -23836,22 +23836,22 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__threshold;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -23859,7 +23859,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.epochs_before_eviction = 1;
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -23905,7 +23905,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -23914,22 +23914,22 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ 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;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -23937,7 +23937,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.epochs_before_eviction = 10;
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -24014,7 +24014,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.set_initial_size = TRUE;
auto_size_ctl.initial_size = 8 * 1024 * 1024;
- auto_size_ctl.min_clean_fraction = 0.5f;
+ auto_size_ctl.min_clean_fraction = 0.5;
auto_size_ctl.max_size = 8 * 1024 * 1024;
auto_size_ctl.min_size = 512 * 1024;
@@ -24023,22 +24023,22 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.incr_mode = H5C_incr__off;
- auto_size_ctl.lower_hr_threshold = 0.75f;
+ auto_size_ctl.lower_hr_threshold = 0.75;
- auto_size_ctl.increment = 2.0f;
+ auto_size_ctl.increment = 2.0;
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.0f;
- auto_size_ctl.flash_threshold = 0.5f;
+ auto_size_ctl.flash_multiple = 2.0;
+ auto_size_ctl.flash_threshold = 0.5;
auto_size_ctl.decr_mode = H5C_decr__off;
- auto_size_ctl.upper_hr_threshold = 0.995f;
+ auto_size_ctl.upper_hr_threshold = 0.995;
- auto_size_ctl.decrement = 0.5f;
+ auto_size_ctl.decrement = 0.5;
auto_size_ctl.apply_max_decrement = FALSE;
auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24046,7 +24046,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged)
auto_size_ctl.epochs_before_eviction = 10;
auto_size_ctl.apply_empty_reserve = FALSE;
- auto_size_ctl.empty_reserve = 0.05f;
+ auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &auto_size_ctl);
@@ -24146,7 +24146,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (512 * 1024),
- /* double min_clean_fraction = */ 0.5f,
+ /* double min_clean_fraction = */ 0.5,
/* size_t max_size = */ (16 * 1024 * 1024),
/* size_t min_size = */ (512 * 1024),
@@ -24155,23 +24155,23 @@ check_auto_cache_resize_input_errs(unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.1f,
+ /* double decrement = */ 0.1,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -24179,7 +24179,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.05f};
+ /* double empty_reserve = */ 0.05};
H5C_auto_size_ctl_t invalid_auto_size_ctl;
H5C_auto_size_ctl_t test_auto_size_ctl;
@@ -24249,7 +24249,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -24258,22 +24258,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.7f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.7;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24281,7 +24281,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(NULL, &invalid_auto_size_ctl);
@@ -24318,7 +24318,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -24327,22 +24327,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.7f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.7;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24350,7 +24350,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24388,7 +24388,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.initial_size = 16 * 1024 * 1024 + 1;
/* INVALID */
- invalid_auto_size_ctl.min_clean_fraction = 0.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -24397,22 +24397,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24420,7 +24420,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24456,7 +24456,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.initial_size = 1 * 1024 * 1024 - 1;
/* INVALID */
- invalid_auto_size_ctl.min_clean_fraction = 0.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -24465,22 +24465,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24488,7 +24488,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24525,7 +24525,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.set_initial_size = TRUE;
invalid_auto_size_ctl.initial_size = 4 * 1024 * 1024;
- invalid_auto_size_ctl.min_clean_fraction = 1.00001f; /* INVALID */
+ invalid_auto_size_ctl.min_clean_fraction = 1.00001; /* INVALID */
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -24534,22 +24534,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24557,7 +24557,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24592,7 +24592,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.00001f; /* INVALID */
+ invalid_auto_size_ctl.min_clean_fraction = -0.00001; /* INVALID */
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -24601,22 +24601,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24624,7 +24624,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24661,7 +24661,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = H5C__MAX_MAX_CACHE_SIZE + 1;
/* INVALID */
@@ -24671,22 +24671,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24694,7 +24694,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24729,7 +24729,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 1 * 1024 * 1024; /* INVALID */
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024 + 1; /*PAIR */
@@ -24738,22 +24738,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24761,7 +24761,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24796,7 +24796,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = H5C__MIN_MAX_CACHE_SIZE - 1;
@@ -24805,22 +24805,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24828,7 +24828,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24865,7 +24865,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -24875,22 +24875,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24898,7 +24898,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -24933,7 +24933,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -24943,22 +24943,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -24966,7 +24966,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25003,7 +25003,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25012,22 +25012,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = (enum H5C_cache_incr_mode) - 1; /* INVALID */
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25035,7 +25035,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25070,7 +25070,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25079,22 +25079,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = (enum H5C_cache_incr_mode)2; /* INVALID */
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25102,7 +25102,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25139,7 +25139,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -25148,22 +25148,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.7f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.7;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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 = 1.01f; /* INVALID */
+ invalid_auto_size_ctl.upper_hr_threshold = 1.01; /* INVALID */
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25171,7 +25171,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25206,7 +25206,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -25215,22 +25215,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.8f; /* INVALID */
+ invalid_auto_size_ctl.lower_hr_threshold = 0.8; /* INVALID */
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.7f; /* INVALID */
+ invalid_auto_size_ctl.upper_hr_threshold = 0.7; /* INVALID */
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25238,7 +25238,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25273,7 +25273,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.5f;
+ invalid_auto_size_ctl.min_clean_fraction = 0.5;
invalid_auto_size_ctl.max_size = 16 * 1024 * 1024;
invalid_auto_size_ctl.min_size = 1 * 1024 * 1024;
@@ -25282,22 +25282,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = -0.0001f; /* INVALID */
+ invalid_auto_size_ctl.lower_hr_threshold = -0.0001; /* INVALID */
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25305,7 +25305,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25342,7 +25342,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25351,22 +25351,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 0.99999f; /* INVALID */
+ invalid_auto_size_ctl.increment = 0.99999; /* INVALID */
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.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.5f;
+ invalid_auto_size_ctl.decrement = 0.5;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25374,7 +25374,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25411,7 +25411,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25420,22 +25420,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25443,7 +25443,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25480,7 +25480,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25489,22 +25489,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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.09f; /* INVALID */
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25512,7 +25512,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25547,7 +25547,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25556,22 +25556,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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.01f; /* INVALID */
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25579,7 +25579,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25616,7 +25616,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25625,22 +25625,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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.0f;
- invalid_auto_size_ctl.flash_threshold = 0.09f; /* INVALID */
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25648,7 +25648,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25683,7 +25683,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25692,22 +25692,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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.0f;
- invalid_auto_size_ctl.flash_threshold = 1.001f; /* INVALID */
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25715,7 +25715,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25752,7 +25752,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25761,22 +25761,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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 */
- invalid_auto_size_ctl.upper_hr_threshold = 0.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25784,7 +25784,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25819,7 +25819,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25828,22 +25828,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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 */
- invalid_auto_size_ctl.upper_hr_threshold = 0.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25851,7 +25851,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25888,7 +25888,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25897,22 +25897,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 1.000001f; /* INVALID */
+ invalid_auto_size_ctl.decrement = 1.000001; /* INVALID */
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25920,7 +25920,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -25955,7 +25955,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -25964,22 +25964,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = -0.000001f; /* INVALID */
+ invalid_auto_size_ctl.decrement = -0.000001; /* INVALID */
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -25987,7 +25987,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -26024,7 +26024,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -26033,22 +26033,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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;
- invalid_auto_size_ctl.upper_hr_threshold = 0.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -26056,7 +26056,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 0; /* INVALID */
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -26091,7 +26091,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -26100,22 +26100,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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;
- invalid_auto_size_ctl.upper_hr_threshold = 0.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -26123,7 +26123,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = H5C__MAX_EPOCH_MARKERS + 1; /* INVALID */
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -26160,7 +26160,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -26169,22 +26169,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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;
- invalid_auto_size_ctl.upper_hr_threshold = 0.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -26192,7 +26192,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = 3;
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = -0.0000001f; /* INVALID */
+ invalid_auto_size_ctl.empty_reserve = -0.0000001; /* INVALID */
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -26227,7 +26227,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
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.1f;
+ 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;
@@ -26236,22 +26236,22 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.incr_mode = H5C_incr__threshold;
- invalid_auto_size_ctl.lower_hr_threshold = 0.75f;
+ invalid_auto_size_ctl.lower_hr_threshold = 0.75;
- invalid_auto_size_ctl.increment = 2.0f;
+ 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__off;
- invalid_auto_size_ctl.flash_multiple = 2.0f;
- invalid_auto_size_ctl.flash_threshold = 0.5f;
+ 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;
- invalid_auto_size_ctl.upper_hr_threshold = 0.999f;
+ invalid_auto_size_ctl.upper_hr_threshold = 0.999;
- invalid_auto_size_ctl.decrement = 0.9f;
+ invalid_auto_size_ctl.decrement = 0.9;
invalid_auto_size_ctl.apply_max_decrement = TRUE;
invalid_auto_size_ctl.max_decrement = (1 * 1024 * 1024);
@@ -26259,7 +26259,7 @@ check_auto_cache_resize_input_errs(unsigned paged)
invalid_auto_size_ctl.epochs_before_eviction = H5C__MAX_EPOCH_MARKERS + 1; /* INVALID */
invalid_auto_size_ctl.apply_empty_reserve = TRUE;
- invalid_auto_size_ctl.empty_reserve = 0.05f;
+ invalid_auto_size_ctl.empty_reserve = 0.05;
result = H5C_set_cache_auto_resize_config(cache_ptr, &invalid_auto_size_ctl);
@@ -26387,7 +26387,7 @@ check_auto_cache_resize_aux_fcns(unsigned paged)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (1 * 1024 * 1024),
- /* double min_clean_fraction = */ 0.5f,
+ /* double min_clean_fraction = */ 0.5,
/* size_t max_size = */ (16 * 1024 * 1025),
/* size_t min_size = */ (512 * 1024),
@@ -26396,23 +26396,23 @@ check_auto_cache_resize_aux_fcns(unsigned paged)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__off,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.9f,
+ /* double decrement = */ 0.9,
/* hbool_t apply_max_decrement = */ TRUE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -26420,7 +26420,7 @@ check_auto_cache_resize_aux_fcns(unsigned paged)
/* int32_t epochs_before_eviction = */ 3,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.5f
+ /* double empty_reserve = */ 0.5
};
if (paged)
@@ -34313,7 +34313,7 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr)
/* hbool_t set_initial_size = */ TRUE,
/* size_t initial_size = */ (2 * 1024 * 1024),
- /* double min_clean_fraction = */ 0.5f,
+ /* double min_clean_fraction = */ 0.5,
/* size_t max_size = */ (8 * 1024 * 1024),
/* size_t min_size = */ (1 * 1024 * 1024),
@@ -34322,23 +34322,23 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr)
/* enum H5C_cache_incr_mode incr_mode = */ H5C_incr__threshold,
- /* double lower_hr_threshold = */ 0.75f,
+ /* double lower_hr_threshold = */ 0.75,
- /* double increment = */ 2.0f,
+ /* 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.0f,
- /* double flash_threshold = */ 0.5f,
+ /* 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.995f,
+ /* double upper_hr_threshold = */ 0.995,
- /* double decrement = */ 0.5f,
+ /* double decrement = */ 0.5,
/* hbool_t apply_max_decrement = */ FALSE,
/* size_t max_decrement = */ (1 * 1024 * 1024),
@@ -34346,7 +34346,7 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr)
/* int32_t epochs_before_eviction = */ 1,
/* hbool_t apply_empty_reserve = */ TRUE,
- /* double empty_reserve = */ 0.05f};
+ /* double empty_reserve = */ 0.05};
if (pass) {
diff --git a/test/chunk_info.c b/test/chunk_info.c
index 7104941..a1c4160 100644
--- a/test/chunk_info.c
+++ b/test/chunk_info.c
@@ -482,10 +482,10 @@ test_get_chunk_info_highest_v18(hid_t fapl)
unsigned flt_msk = 0; /* Filter mask */
unsigned read_flt_msk = 0; /* Filter mask after direct read */
int fillvalue = -1; /* Fill value */
- int aggression = 9; /* Compression aggression setting */
hsize_t offset[2] = {0, 0}; /* Offset coordinates of a chunk */
#ifdef H5_HAVE_FILTER_DEFLATE
- const Bytef *z_src = (const Bytef *)(direct_buf);
+ int aggression = 9; /* Compression aggression setting */
+ const Bytef *z_src = (const Bytef *)(direct_buf);
Bytef * z_dst; /* Destination buffer */
uLongf z_dst_nbytes = (uLongf)DEFLATE_SIZE_ADJUST(CHK_SIZE);
uLong z_src_nbytes = (uLong)CHK_SIZE;
@@ -568,7 +568,8 @@ test_get_chunk_info_highest_v18(hid_t fapl)
}
#else
/* Allocate input (non-compressed) buffer */
- inbuf = HDcalloc(1, CHK_SIZE);
+ if (NULL == (inbuf = HDcalloc(1, CHK_SIZE)))
+ TEST_ERROR
HDmemcpy(inbuf, direct_buf, CHK_SIZE);
#endif /* end H5_HAVE_FILTER_DEFLATE */
@@ -1490,21 +1491,24 @@ typedef struct chunk_iter_info_t {
uint32_t nbytes;
} chunk_iter_info_t;
+typedef struct chunk_iter_udata_t {
+ chunk_iter_info_t *chunk_info;
+ int last_index;
+} chunk_iter_udata_t;
+
static int
iter_cb(const hsize_t *offset, uint32_t filter_mask, haddr_t addr, uint32_t nbytes, void *op_data)
{
- chunk_iter_info_t **chunk_info = (chunk_iter_info_t **)op_data;
+ chunk_iter_udata_t *cidata = (chunk_iter_udata_t *)op_data;
+ int idx = cidata->last_index + 1;
- (*chunk_info)->offset[0] = offset[0];
- (*chunk_info)->offset[1] = offset[1];
- (*chunk_info)->filter_mask = filter_mask;
- (*chunk_info)->addr = addr;
- (*chunk_info)->nbytes = nbytes;
+ cidata->chunk_info[idx].offset[0] = offset[0];
+ cidata->chunk_info[idx].offset[1] = offset[1];
+ cidata->chunk_info[idx].filter_mask = filter_mask;
+ cidata->chunk_info[idx].addr = addr;
+ cidata->chunk_info[idx].nbytes = nbytes;
- /* printf("offset: [%lld, %lld], addr: %ld, size: %d, filter mask: %d\n", offset[0], offset[1], addr,
- * nbytes, filter_mask); */
-
- *chunk_info += 1;
+ cidata->last_index++;
return H5_ITER_CONT;
}
@@ -1564,8 +1568,9 @@ test_basic_query(hid_t fapl)
haddr_t addr = 0; /* Address of an allocated/written chunk */
hsize_t chk_index = 0; /* Index of a chunk */
hsize_t ii, jj; /* Array indices */
- chunk_iter_info_t chunk_infos[2]; /* chunk infos filled up by iterator */
- chunk_iter_info_t *cptr; /* pointer to array of chunks */
+ chunk_iter_info_t chunk_infos[2]; /* Chunk infos filled up by iterator */
+ chunk_iter_info_t *cptr; /* Pointer to array of chunks */
+ chunk_iter_udata_t udata; /* udata for iteration */
herr_t ret; /* Temporary returned value for verifying failure */
TESTING("basic operations");
@@ -1674,12 +1679,13 @@ test_basic_query(hid_t fapl)
if (verify_empty_chunk_info(dset, offset) == FAIL)
FAIL_PUTS_ERROR("Verification of H5Dget_chunk_info_by_coord on empty chunk failed\n");
- /* iterate over all chunks */
- cptr = &(chunk_infos[0]);
- if (H5Dchunk_iter(dset, &iter_cb, &cptr) < 0)
+ /* Iterate over all chunks */
+ udata.chunk_info = chunk_infos;
+ udata.last_index = -1;
+ if (H5Dchunk_iter(dset, H5P_DEFAULT, &iter_cb, &udata) < 0)
TEST_ERROR;
- VERIFY(cptr, &(chunk_infos[2]), "Iterator did not iterate all chunks");
+ VERIFY(udata.last_index, 1, "Iterator did not iterate all chunks");
VERIFY(chunk_infos[0].offset[0], 0, "Offset mismatch");
VERIFY(chunk_infos[0].offset[1], 0, "Offset mismatch");
VERIFY(chunk_infos[0].filter_mask, 0, "Filter mismatch");
@@ -1688,17 +1694,17 @@ test_basic_query(hid_t fapl)
VERIFY(chunk_infos[1].offset[0], 1, "Offset mismatch");
VERIFY(chunk_infos[1].offset[1], 1, "Offset mismatch");
- /* iterate and stop after one iteration */
+ /* Iterate and stop after one iteration */
cptr = &(chunk_infos[0]);
- if (H5Dchunk_iter(dset, &iter_cb_stop, &cptr) < 0)
+ if (H5Dchunk_iter(dset, H5P_DEFAULT, &iter_cb_stop, &cptr) < 0)
TEST_ERROR;
VERIFY(cptr, &(chunk_infos[1]), "Verification of halted iterator failed\n");
- /* iterate and fail after one iteration */
+ /* Iterate and fail after one iteration */
cptr = &(chunk_infos[0]);
H5E_BEGIN_TRY
{
- ret = H5Dchunk_iter(dset, &iter_cb_fail, &cptr);
+ ret = H5Dchunk_iter(dset, H5P_DEFAULT, &iter_cb_fail, &cptr);
}
H5E_END_TRY;
if (ret >= 0)
diff --git a/test/cmpd_dset.c b/test/cmpd_dset.c
index 4c3233d..8777096 100644
--- a/test/cmpd_dset.c
+++ b/test/cmpd_dset.c
@@ -110,8 +110,8 @@ typedef struct {
long long r, s, t;
} stype4;
-#define NX 100u
-#define NY 2000u
+#define NX 100U
+#define NY 2000U
#define PACK_NMEMBS 100
/*-------------------------------------------------------------------------
diff --git a/test/cve_2020_10810.h5 b/test/cve_2020_10810.h5
new file mode 100644
index 0000000..5cface3
--- /dev/null
+++ b/test/cve_2020_10810.h5
Binary files differ
diff --git a/test/dsets.c b/test/dsets.c
index 3a17575..922f370 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -83,6 +83,8 @@ const char *FILENAME[] = {"dataset", /* 0 */
"power2up", /* 24 */
"version_bounds", /* 25 */
"alloc_0sized", /* 26 */
+ "h5s_block", /* 27 */
+ "h5s_plist", /* 28 */
NULL};
#define OHMIN_FILENAME_A "ohdr_min_a"
@@ -1394,10 +1396,10 @@ test_conv_buffer(hid_t fid)
cf->a[j][k][l] = 10 * (j + 1) + l + k;
for (j = 0; j < DIM2; j++)
- cf->b[j] = 100.0f * (float)(j + 1) + 0.01f * (float)j;
+ cf->b[j] = 100.0F * (float)(j + 1) + 0.01F * (float)j;
for (j = 0; j < DIM3; j++)
- cf->c[j] = 100.0f * (float)(j + 1) + 0.02f * (float)j;
+ cf->c[j] = 100.0F * (float)(j + 1) + 0.02F * (float)j;
/* Create data space */
if ((space = H5Screate(H5S_SCALAR)) < 0)
@@ -3322,8 +3324,8 @@ test_nbit_float(hid_t file)
/* orig_data[] are initialized to be within the range that can be represented by
* dataset datatype (no precision loss during datatype conversion)
*/
- float orig_data[2][5] = {{188384.0f, 19.103516f, -1.0831790e9f, -84.242188f, 5.2045898f},
- {-49140.0f, 2350.25f, -3.2110596e-1f, 6.4998865e-5f, -0.0f}};
+ float orig_data[2][5] = {{188384.0F, 19.103516F, -1.0831790e9F, -84.242188F, 5.2045898F},
+ {-49140.0F, 2350.25F, -3.2110596e-1F, 6.4998865e-5F, -0.0F}};
float new_data[2][5];
size_t precision, offset;
size_t i, j;
@@ -11640,7 +11642,7 @@ test_unfiltered_edge_chunks(hid_t fapl)
TEST_ERROR
/* Add "count" filter */
- if (H5Pset_filter(dcpl, H5Z_FILTER_COUNT, 0u, (size_t)0, NULL) < 0)
+ if (H5Pset_filter(dcpl, H5Z_FILTER_COUNT, 0U, (size_t)0, NULL) < 0)
TEST_ERROR
/* Disable filters on partial chunks */
@@ -14971,6 +14973,370 @@ error:
} /* end test_object_header_minimization_dcpl() */
/*-----------------------------------------------------------------------------
+ * Function: test_h5s_block
+ *
+ * Purpose: Test the H5S_BLOCK feature.
+ *
+ * Return: Success/pass: 0
+ * Failure/error: -1
+ *
+ * Programmer: Quincey Koziol
+ * 3 November 2020
+ *
+ *-----------------------------------------------------------------------------
+ */
+static herr_t
+test_h5s_block(void)
+{
+ hid_t file_id = H5I_INVALID_HID; /* File ID */
+ char filename[FILENAME_BUF_SIZE] = "";
+ hid_t dset_id = H5I_INVALID_HID; /* Dataset ID */
+ hsize_t dims[1] = {20}; /* Dataset's dataspace size */
+ hsize_t start = 2; /* Starting offset of hyperslab selection */
+ hsize_t count = 10; /* Count of hyperslab selection */
+ hid_t file_space_id = H5I_INVALID_HID; /* File dataspace ID */
+ int buf[20]; /* Memory buffer for I/O */
+ unsigned u; /* Local index variable */
+ herr_t ret;
+
+ TESTING("contiguous memory buffers with H5S_BLOCK");
+
+ /*********/
+ /* SETUP */
+ /*********/
+ if (NULL == h5_fixname(FILENAME[27], H5P_DEFAULT, filename, sizeof(filename)))
+ TEST_ERROR
+ if (H5I_INVALID_HID == (file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)))
+ FAIL_STACK_ERROR
+ if ((file_space_id = H5Screate_simple(1, dims, NULL)) < 0)
+ FAIL_STACK_ERROR
+ if ((dset_id = H5Dcreate2(file_id, "dset", H5T_NATIVE_INT, file_space_id, H5P_DEFAULT, H5P_DEFAULT,
+ H5P_DEFAULT)) < 0)
+ FAIL_STACK_ERROR
+
+ for (u = 0; u < 20; u++)
+ buf[u] = (int)u;
+
+ /*********/
+ /* TESTS */
+ /*********/
+
+ /* Check error cases */
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_BLOCK, H5P_DEFAULT, buf);
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+
+ /* Write the entire dataset */
+ if (H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_ALL, H5P_DEFAULT, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Reset the memory buffer */
+ HDmemset(buf, 0, sizeof(buf));
+
+ /* Read the entire dataset */
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_ALL, H5P_DEFAULT, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < 20; u++)
+ if (buf[u] != (int)u)
+ TEST_ERROR
+
+ /* Read a hyperslab from the file to the first 10 elements of the buffer */
+ if (H5Sselect_hyperslab(file_space_id, H5S_SELECT_SET, &start, NULL, &count, NULL) < 0)
+ FAIL_STACK_ERROR
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, file_space_id, H5P_DEFAULT, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < count; u++)
+ if (buf[u] != (int)(u + start))
+ TEST_ERROR
+
+ /* Verify that reading 0 elements is handled correctly and doesn't modify buffer */
+ if (H5Sselect_none(file_space_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, file_space_id, H5P_DEFAULT, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < count; u++)
+ if (buf[u] != (int)(u + start))
+ TEST_ERROR
+
+ /************/
+ /* TEARDOWN */
+ /************/
+ if (FAIL == H5Sclose(file_space_id))
+ FAIL_STACK_ERROR
+ if (FAIL == H5Dclose(dset_id))
+ FAIL_STACK_ERROR
+ if (FAIL == H5Fclose(file_id))
+ FAIL_STACK_ERROR
+
+ PASSED();
+
+ return SUCCEED;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Sclose(file_space_id);
+ H5Dclose(dset_id);
+ H5Fclose(file_id);
+ }
+ H5E_END_TRY;
+
+ return FAIL;
+} /* end test_h5s_block() */
+
+/*-----------------------------------------------------------------------------
+ * Function: test_h5s_plist
+ *
+ * Purpose: Test the H5S_PLIST feature.
+ *
+ * Return: Success/pass: 0
+ * Failure/error: -1
+ *
+ * Programmer: Quincey Koziol
+ * 28 January 2021
+ *
+ *-----------------------------------------------------------------------------
+ */
+static herr_t
+test_h5s_plist(void)
+{
+ hid_t file_id = H5I_INVALID_HID; /* File ID */
+ char filename[FILENAME_BUF_SIZE] = "";
+ hid_t dset_id = H5I_INVALID_HID; /* Dataset ID */
+ hsize_t dims[1] = {20}; /* Dataset's dataspace size */
+ hid_t dxpl_id = H5I_INVALID_HID; /* Dataset xfer property list ID */
+ hid_t dxpl_id_copy = H5I_INVALID_HID; /* Copy of dataset xfer property list ID */
+ hsize_t start = 2; /* Starting offset of hyperslab selection */
+ hsize_t stride = 1; /* Stride of hyperslab selection */
+ hsize_t count = 10; /* Count of hyperslab selection */
+ hsize_t start2 = 14; /* Starting offset of hyperslab selection */
+ hsize_t count2 = 4; /* Count of hyperslab selection */
+ hsize_t block = 1; /* Block size of hyperslab selection */
+ hid_t file_space_id = H5I_INVALID_HID; /* File dataspace ID */
+ int buf[20]; /* Memory buffer for I/O */
+ unsigned u; /* Local index variable */
+ herr_t ret;
+
+ TESTING("dataset's dataspace selection for I/O in DXPL with H5S_PLIST");
+
+ /*********/
+ /* SETUP */
+ /*********/
+ if (NULL == h5_fixname(FILENAME[28], H5P_DEFAULT, filename, sizeof(filename)))
+ TEST_ERROR
+ if (H5I_INVALID_HID == (file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)))
+ FAIL_STACK_ERROR
+ if ((file_space_id = H5Screate_simple(1, dims, NULL)) < 0)
+ FAIL_STACK_ERROR
+ if ((dset_id = H5Dcreate2(file_id, "dset", H5T_NATIVE_INT, file_space_id, H5P_DEFAULT, H5P_DEFAULT,
+ H5P_DEFAULT)) < 0)
+ FAIL_STACK_ERROR
+ if ((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0)
+ FAIL_STACK_ERROR
+
+ for (u = 0; u < 20; u++)
+ buf[u] = (int)u;
+
+ /*********/
+ /* TESTS */
+ /*********/
+
+ /* Check error cases */
+ H5E_BEGIN_TRY
+ {
+ /* Bad rank */
+ ret = H5Pset_dataset_io_hyperslab_selection(dxpl_id, 0, H5S_SELECT_SET, &start, &stride, &count,
+ &block);
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+ H5E_BEGIN_TRY
+ {
+ /* Bad selection operator */
+ ret = H5Pset_dataset_io_hyperslab_selection(dxpl_id, 1, H5S_SELECT_NOOP, &start, &stride, &count,
+ &block);
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+ H5E_BEGIN_TRY
+ {
+ /* Bad start pointer */
+ ret =
+ H5Pset_dataset_io_hyperslab_selection(dxpl_id, 1, H5S_SELECT_SET, NULL, &stride, &count, &block);
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+ H5E_BEGIN_TRY
+ {
+ /* Bad stride value (stride of NULL is OK) */
+ stride = 0;
+ ret = H5Pset_dataset_io_hyperslab_selection(dxpl_id, 1, H5S_SELECT_SET, &start, &stride, &count,
+ &block);
+ stride = 1;
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+ H5E_BEGIN_TRY
+ {
+ /* Bad count pointer */
+ ret =
+ H5Pset_dataset_io_hyperslab_selection(dxpl_id, 1, H5S_SELECT_SET, &start, &stride, NULL, &block);
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+
+ /* Block pointer is allowed to be NULL */
+
+ H5E_BEGIN_TRY
+ {
+ /* H5S_PLIST for memory dataspace */
+ ret = H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_PLIST, H5S_ALL, H5P_DEFAULT, buf);
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+
+ /* Write the entire dataset */
+ if (H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_ALL, H5P_DEFAULT, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Reset the memory buffer */
+ HDmemset(buf, 0, sizeof(buf));
+
+ /* Read the entire dataset */
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_ALL, H5P_DEFAULT, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < 20; u++)
+ if (buf[u] != (int)u)
+ TEST_ERROR
+
+ /* Reset the memory buffer */
+ HDmemset(buf, 0, sizeof(buf));
+
+ /* Set valid selection in DXPL */
+ if (H5Pset_dataset_io_hyperslab_selection(dxpl_id, 1, H5S_SELECT_SET, &start, &stride, &count, &block) <
+ 0)
+ FAIL_STACK_ERROR
+
+ /* Read a hyperslab from the file to the first 10 elements of the buffer */
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_PLIST, dxpl_id, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < count; u++)
+ if (buf[u] != (int)(u + start))
+ TEST_ERROR
+
+ /* Reset the memory buffer */
+ HDmemset(buf, 0, sizeof(buf));
+
+ /* Check for copying property list w/selection */
+ if ((dxpl_id_copy = H5Pcopy(dxpl_id)) < 0)
+ FAIL_STACK_ERROR
+
+ /* Read a hyperslab from the file to the first 10 elements of the buffer */
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_PLIST, dxpl_id_copy, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < count; u++)
+ if (buf[u] != (int)(u + start))
+ TEST_ERROR
+
+ /* Attempt to 'OR' block with invalid dimensions into the selection */
+ H5E_BEGIN_TRY
+ {
+ ret = H5Pset_dataset_io_hyperslab_selection(dxpl_id_copy, 2, H5S_SELECT_OR, &start, &stride, &count,
+ &block);
+ }
+ H5E_END_TRY;
+ if (ret == SUCCEED)
+ TEST_ERROR
+
+ /* Set new valid selection in DXPL */
+ if (H5Pset_dataset_io_hyperslab_selection(dxpl_id_copy, 1, H5S_SELECT_SET, &start, &stride, &count,
+ &block) < 0)
+ FAIL_STACK_ERROR
+
+ /* Read a hyperslab from the file to the first 10 elements of the buffer */
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_PLIST, dxpl_id_copy, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < count; u++)
+ if (buf[u] != (int)(u + start))
+ TEST_ERROR
+
+ /* Close the copy */
+ if (FAIL == H5Pclose(dxpl_id_copy))
+ FAIL_STACK_ERROR
+ dxpl_id_copy = H5I_INVALID_HID;
+
+ /* 'OR' valid block into the existing selection in original DXPL */
+ if (H5Pset_dataset_io_hyperslab_selection(dxpl_id, 1, H5S_SELECT_OR, &start2, &stride, &count2, &block) <
+ 0)
+ FAIL_STACK_ERROR
+
+ /* Read a disjoint hyperslab from the file to the first 10 elements of the buffer */
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_BLOCK, H5S_PLIST, dxpl_id, buf) < 0)
+ FAIL_STACK_ERROR
+
+ /* Verify the data read in */
+ for (u = 0; u < count; u++)
+ if (buf[u] != (int)(u + start))
+ TEST_ERROR
+ for (u = 0; u < count2; u++)
+ if (buf[u + count] != (int)(u + start2))
+ TEST_ERROR
+
+ /************/
+ /* TEARDOWN */
+ /************/
+ if (FAIL == H5Pclose(dxpl_id))
+ FAIL_STACK_ERROR
+ if (FAIL == H5Sclose(file_space_id))
+ FAIL_STACK_ERROR
+ if (FAIL == H5Dclose(dset_id))
+ FAIL_STACK_ERROR
+ if (FAIL == H5Fclose(file_id))
+ FAIL_STACK_ERROR
+
+ PASSED();
+
+ return SUCCEED;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(dxpl_id_copy);
+ H5Pclose(dxpl_id);
+ H5Sclose(file_space_id);
+ H5Dclose(dset_id);
+ H5Fclose(file_id);
+ }
+ H5E_END_TRY;
+
+ return FAIL;
+} /* end test_h5s_plist() */
+
+/*-----------------------------------------------------------------------------
* Function: test_0sized_dset_metadata_alloc
*
* Purpose: Tests the metadata allocation for 0-sized datasets.
@@ -15417,6 +15783,8 @@ main(void)
/* Tests that use their own file */
nerrors += (test_object_header_minimization_dcpl() < 0 ? 1 : 0);
+ nerrors += (test_h5s_block() < 0 ? 1 : 0);
+ nerrors += (test_h5s_plist() < 0 ? 1 : 0);
/* Run misc tests */
nerrors += (dls_01_main() < 0 ? 1 : 0);
diff --git a/test/dt_arith.c b/test/dt_arith.c
index 7b79102..91e31d5 100644
--- a/test/dt_arith.c
+++ b/test/dt_arith.c
@@ -53,7 +53,7 @@ const char *FILENAME[] = {"dt_arith1", "dt_arith2", NULL};
* endian. If local variable `endian' is H5T_ORDER_BE then the result will
* be I, otherwise the result will be Z-(I+1).
*/
-#define ENDIAN(Z, I, E) (H5T_ORDER_BE == E ? (I) : (Z) - ((I) + 1))
+#define ENDIAN(Z, I, E) (H5T_ORDER_BE == (E) ? (I) : (Z) - ((I) + 1))
typedef enum dtype_t {
INT_SCHAR,
@@ -3058,10 +3058,10 @@ test_conv_flt_1(const char *name, int run_test, hid_t src, hid_t dst)
/* Check the software results against the hardware */
for (j = 0; j < nelmts; j++) {
underflow = 0;
- hw_f = 911.0f;
- hw_d = 911.0f;
+ hw_f = 911.0F;
+ hw_d = 911.0F;
#if H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
- hw_ld = 911.0f;
+ hw_ld = 911.0L;
#endif
/* The hardware conversion */
diff --git a/test/dtransform.c b/test/dtransform.c
index 9445d83..743103f 100644
--- a/test/dtransform.c
+++ b/test/dtransform.c
@@ -32,30 +32,30 @@ hid_t dset_id_int_chunk = -1;
hid_t dset_id_float_chunk = -1;
const float windchillFfloat[ROWS][COLS] = {
- {36.0f, 31.0f, 25.0f, 19.0f, 13.0f, 7.0f, 1.0f, -5.0f, -11.0f, -16.0f, -22.0f, -28.0f, -34.0f, -40.0f,
- -46.0f, -52.0f, -57.0f, -63.0f},
- {34.0f, 27.0f, 21.0f, 15.0f, 9.0f, 3.0f, -4.0f, -10.0f, -16.0f, -22.0f, -28.0f, -35.0f, -41.0f, -47.0f,
- -53.0f, -59.0f, -66.0f, -72.0f},
- {32.0f, 25.0f, 19.0f, 13.0f, 6.0f, 0.0f, -7.0f, -13.0f, -19.0f, -26.0f, -32.0f, -39.0f, -45.0f, -51.0f,
- -58.0f, -64.0f, -71.0f, -77.0f},
- {30.0f, 24.0f, 17.0f, 11.0f, 4.0f, -2.0f, -9.0f, -15.0f, -22.0f, -29.0f, -35.0f, -42.0f, -48.0f, -55.0f,
- -61.0f, -68.0f, -74.0f, -81.0f},
- {29.0f, 23.0f, 16.0f, 9.0f, 3.0f, -4.0f, -11.0f, -17.0f, -24.0f, -31.0f, -37.0f, -44.0f, -51.0f, -58.0f,
- -64.0f, -71.0f, -78.0f, -84.0f},
- {28.0f, 22.0f, 15.0f, 8.0f, 1.0f, -5.0f, -12.0f, -19.0f, -26.0f, -33.0f, -39.0f, -46.0f, -53.0f, -60.0f,
- -67.0f, -73.0f, -80.0f, -87.0f},
- {28.0f, 21.0f, 14.0f, 7.0f, 0.0f, -7.0f, -14.0f, -21.0f, -27.0f, -34.0f, -41.0f, -48.0f, -55.0f, -62.0f,
- -69.0f, -76.0f, -82.0f, -89.0f},
- {27.0f, 20.0f, 13.0f, 6.0f, -1.0f, -8.0f, -15.0f, -22.0f, -29.0f, -36.0f, -43.0f, -50.0f, -57.0f, -64.0f,
- -71.0f, -78.0f, -84.0f, -91.0f},
- {26.0f, 19.0f, 12.0f, 5.0f, -2.0f, -9.0f, -16.0f, -23.0f, -30.0f, -37.0f, -44.0f, -51.0f, -58.0f, -65.0f,
- -72.0f, -79.0f, -86.0f, -93.0f},
- {26.0f, 19.0f, 12.0f, 4.0f, -3.0f, -10.0f, -17.0f, -24.0f, -31.0f, -38.0f, -45.0f, -52.0f, -60.0f, -67.0f,
- -74.0f, -81.0f, -88.0f, -95.0f},
- {25.0f, 18.0f, 11.0f, 4.0f, -3.0f, -11.0f, -18.0f, -25.0f, -32.0f, -39.0f, -46.0f, -54.0f, -61.0f, -68.0f,
- -75.0f, -82.0f, -89.0f, -97.0f},
- {25.0f, 17.0f, 10.0f, 3.0f, -4.0f, -11.0f, -19.0f, -26.0f, -33.0f, -40.0f, -48.0f, -55.0f, -62.0f, -69.0f,
- -76.0f, -84.0f, -91.0f, -98.0f}};
+ {36.0F, 31.0F, 25.0F, 19.0F, 13.0F, 7.0F, 1.0F, -5.0F, -11.0F, -16.0F, -22.0F, -28.0F, -34.0F, -40.0F,
+ -46.0F, -52.0F, -57.0F, -63.0F},
+ {34.0F, 27.0F, 21.0F, 15.0F, 9.0F, 3.0F, -4.0F, -10.0F, -16.0F, -22.0F, -28.0F, -35.0F, -41.0F, -47.0F,
+ -53.0F, -59.0F, -66.0F, -72.0F},
+ {32.0F, 25.0F, 19.0F, 13.0F, 6.0F, 0.0F, -7.0F, -13.0F, -19.0F, -26.0F, -32.0F, -39.0F, -45.0F, -51.0F,
+ -58.0F, -64.0F, -71.0F, -77.0F},
+ {30.0F, 24.0F, 17.0F, 11.0F, 4.0F, -2.0F, -9.0F, -15.0F, -22.0F, -29.0F, -35.0F, -42.0F, -48.0F, -55.0F,
+ -61.0F, -68.0F, -74.0F, -81.0F},
+ {29.0F, 23.0F, 16.0F, 9.0F, 3.0F, -4.0F, -11.0F, -17.0F, -24.0F, -31.0F, -37.0F, -44.0F, -51.0F, -58.0F,
+ -64.0F, -71.0F, -78.0F, -84.0F},
+ {28.0F, 22.0F, 15.0F, 8.0F, 1.0F, -5.0F, -12.0F, -19.0F, -26.0F, -33.0F, -39.0F, -46.0F, -53.0F, -60.0F,
+ -67.0F, -73.0F, -80.0F, -87.0F},
+ {28.0F, 21.0F, 14.0F, 7.0F, 0.0F, -7.0F, -14.0F, -21.0F, -27.0F, -34.0F, -41.0F, -48.0F, -55.0F, -62.0F,
+ -69.0F, -76.0F, -82.0F, -89.0F},
+ {27.0F, 20.0F, 13.0F, 6.0F, -1.0F, -8.0F, -15.0F, -22.0F, -29.0F, -36.0F, -43.0F, -50.0F, -57.0F, -64.0F,
+ -71.0F, -78.0F, -84.0F, -91.0F},
+ {26.0F, 19.0F, 12.0F, 5.0F, -2.0F, -9.0F, -16.0F, -23.0F, -30.0F, -37.0F, -44.0F, -51.0F, -58.0F, -65.0F,
+ -72.0F, -79.0F, -86.0F, -93.0F},
+ {26.0F, 19.0F, 12.0F, 4.0F, -3.0F, -10.0F, -17.0F, -24.0F, -31.0F, -38.0F, -45.0F, -52.0F, -60.0F, -67.0F,
+ -74.0F, -81.0F, -88.0F, -95.0F},
+ {25.0F, 18.0F, 11.0F, 4.0F, -3.0F, -11.0F, -18.0F, -25.0F, -32.0F, -39.0F, -46.0F, -54.0F, -61.0F, -68.0F,
+ -75.0F, -82.0F, -89.0F, -97.0F},
+ {25.0F, 17.0F, 10.0F, 3.0F, -4.0F, -11.0F, -19.0F, -26.0F, -33.0F, -40.0F, -48.0F, -55.0F, -62.0F, -69.0F,
+ -76.0F, -84.0F, -91.0F, -98.0F}};
const int transformData[ROWS][COLS] = {{36, 31, 25, 19, 13, 7, 1, 5, 11, 16, 22, 28, 34, 40, 46, 52, 57, 63},
{34, 27, 21, 15, 9, 3, 4, 10, 16, 22, 28, 35, 41, 47, 53, 59, 66, 1},
@@ -77,9 +77,9 @@ const int transformData[ROWS][COLS] = {{36, 31, 25, 19, 13, 7, 1, 5, 11, 16, 22,
for (i = 0; i < ROWS; i++) \
for (j = 0; j < COLS; j++) { \
if (!((((VAR1)[i][j] >= (TYPE)((VAR2)[i][j])) && \
- (((VAR1)[i][j] - TOL) < (TYPE)((VAR2)[i][j]))) || \
+ (((VAR1)[i][j] - (TOL)) < (TYPE)((VAR2)[i][j]))) || \
(((VAR1)[i][j] <= (TYPE)((VAR2)[i][j])) && \
- (((VAR1)[i][j] + TOL) > (TYPE)((VAR2)[i][j]))))) { \
+ (((VAR1)[i][j] + (TOL)) > (TYPE)((VAR2)[i][j]))))) { \
H5_FAILED(); \
HDfprintf(stderr, " ERROR: Conversion failed to match computed data\n"); \
goto error; \
@@ -94,8 +94,8 @@ const int transformData[ROWS][COLS] = {{36, 31, 25, 19, 13, 7, 1, 5, 11, 16, 22,
\
for (i = 0; i < ROWS; i++) \
for (j = 0; j < COLS; j++) { \
- if (!(((VAR1)[i][j] <= ((TYPE)(VAR2)[i][j] + TOL)) && \
- ((VAR1)[i][j] >= ((TYPE)(VAR2)[i][j] - TOL)))) { \
+ if (!(((VAR1)[i][j] <= ((TYPE)(VAR2)[i][j] + (TOL))) && \
+ ((VAR1)[i][j] >= ((TYPE)(VAR2)[i][j] - (TOL))))) { \
H5_FAILED(); \
HDfprintf(stderr, " ERROR: Conversion failed to match computed data\n"); \
goto error; \
@@ -540,19 +540,19 @@ test_poly(const hid_t dxpl_id_polynomial)
for (row = 0; row < ROWS; row++)
for (col = 0; col < COLS; col++) {
- windchillC = (int)((5.0f / 9.0f) * (windchillFfloat[row][col] - 32));
- polyflres[row][col] = ((2.0f + (float)windchillC) * (((float)windchillC - 8.0f) / 2.0f));
+ windchillC = (int)((5.0F / 9.0F) * (windchillFfloat[row][col] - 32));
+ polyflres[row][col] = ((2.0F + (float)windchillC) * (((float)windchillC - 8.0F) / 2.0F));
}
TESTING("data transform, polynomial transform (int->float)")
if (H5Dread(dset_id_int, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, dxpl_id_polynomial, polyflread) < 0)
TEST_ERROR
- COMPARE(float, polyflread, polyflres, 2.0f)
+ COMPARE(float, polyflread, polyflres, 2.0F)
for (row = 0; row < ROWS; row++)
for (col = 0; col < COLS; col++) {
- windchillC = (int)((5.0f / 9.0f) * (windchillFfloat[row][col] - 32));
+ windchillC = (int)((5.0F / 9.0F) * (windchillFfloat[row][col] - 32));
polyflres[row][col] = (float)((2 + windchillC) * ((windchillC - 8) / 2));
}
@@ -582,6 +582,7 @@ test_specials(hid_t file)
const char *special4 = "-x";
const char *special5 = "+x";
const char *special6 = "2e+1*x";
+ const char *special7 = "x";
TESTING("data transform of some special cases")
@@ -729,6 +730,32 @@ test_specials(hid_t file)
if (H5Dclose(dset_id) < 0)
TEST_ERROR
+ /*-----------------------------
+ * Operation 7: x
+ * This operation will be
+ * treated if no function has
+ * been specified.
+ *----------------------------*/
+ if (H5Pset_data_transform(dxpl_id, special7) < 0)
+ TEST_ERROR;
+
+ for (row = 0; row < ROWS; row++)
+ for (col = 0; col < COLS; col++)
+ data_res[row][col] = transformData[row][col];
+
+ if ((dset_id = H5Dcreate2(file, "/special7", H5T_NATIVE_INT, dataspace, H5P_DEFAULT, H5P_DEFAULT,
+ H5P_DEFAULT)) < 0)
+ TEST_ERROR
+ if (H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, dxpl_id, transformData) < 0)
+ TEST_ERROR
+ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, read_buf) < 0)
+ TEST_ERROR
+
+ COMPARE_INT(read_buf, data_res)
+
+ if (H5Dclose(dset_id) < 0)
+ TEST_ERROR
+
if (H5Pclose(dxpl_id) < 0)
TEST_ERROR
if (H5Sclose(dataspace) < 0)
@@ -752,7 +779,7 @@ test_copy(const hid_t dxpl_id_c_to_f_copy, const hid_t dxpl_id_polynomial_copy)
for (row = 0; row < ROWS; row++)
for (col = 0; col < COLS; col++) {
- windchillC = (int)((5.0f / 9.0f) * (windchillFfloat[row][col] - 32));
+ windchillC = (int)((5.0F / 9.0F) * (windchillFfloat[row][col] - 32));
polyflres[row][col] = (float)((2 + windchillC) * ((windchillC - 8) / 2));
}
@@ -786,7 +813,7 @@ test_trivial(const hid_t dxpl_id_simple)
TEST_ERROR
for (row = 0; row < ROWS; row++)
for (col = 0; col < COLS; col++) {
- if ((windchillFfloatread[row][col] - 4.8f) > FLOAT_TOL)
+ if ((windchillFfloatread[row][col] - 4.8F) > FLOAT_TOL)
FAIL_PUTS_ERROR(" ERROR: Conversion failed to match computed data\n");
}
@@ -843,7 +870,7 @@ test_getset(const hid_t dxpl_id_c_to_f)
for (row = 0; row < ROWS; row++)
for (col = 0; col < COLS; col++) {
- if ((windchillFfloatread[row][col] - 4.8f) > FLOAT_TOL)
+ if ((windchillFfloatread[row][col] - 4.8F) > FLOAT_TOL)
FAIL_PUTS_ERROR(" ERROR: Conversion failed to match computed data\n")
}
diff --git a/test/dtypes.c b/test/dtypes.c
index 2a18302..8b3101c 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -70,7 +70,7 @@
FAIL_STACK_ERROR \
if ((NMEMBS) != H5I_nmembers(H5I_DATATYPE)) { \
H5_FAILED(); \
- HDprintf(" #dtype ids expected: %lld; found: %lld\n", (long long)NMEMBS, \
+ HDprintf(" #dtype ids expected: %lld; found: %lld\n", (long long)(NMEMBS), \
(long long)H5I_nmembers(H5I_DATATYPE)); \
goto error; \
}
@@ -6683,13 +6683,13 @@ static int
test_int_float_except(void)
{
#if H5_SIZEOF_INT == 4 && H5_SIZEOF_FLOAT == 4
- float buf[CONVERT_SIZE] = {(float)INT_MIN - 172.0f, (float)INT_MAX - 32.0f, (float)INT_MAX - 68.0f,
- (float)4.5f};
+ float buf[CONVERT_SIZE] = {(float)INT_MIN - 172.0F, (float)INT_MAX - 32.0F, (float)INT_MAX - 68.0F,
+ (float)4.5F};
int buf_int[CONVERT_SIZE] = {INT_MIN, INT_MAX, INT_MAX - 127, 4};
- float buf_float[CONVERT_SIZE] = {(float)INT_MIN, (float)INT_MAX + 1.0f, (float)INT_MAX - 127.0f, 4};
+ float buf_float[CONVERT_SIZE] = {(float)INT_MIN, (float)INT_MAX + 1.0F, (float)INT_MAX - 127.0F, 4};
int * intp; /* Pointer to buffer, as integers */
int buf2[CONVERT_SIZE] = {INT_MIN, INT_MAX, INT_MAX - 72, 0};
- float buf2_float[CONVERT_SIZE] = {(float)INT_MIN, (float)INT_MAX, (float)INT_MAX - 127.0f, (float)0.0f};
+ float buf2_float[CONVERT_SIZE] = {(float)INT_MIN, (float)INT_MAX, (float)INT_MAX - 127.0F, (float)0.0F};
int buf2_int[CONVERT_SIZE] = {INT_MIN, INT_MAX, INT_MAX - 127, 0};
float *floatp; /* Pointer to buffer #2, as floats */
hid_t dxpl; /* Dataset transfer property list */
diff --git a/test/enc_dec_plist.c b/test/enc_dec_plist.c
index 9b4879e..60b229a 100644
--- a/test/enc_dec_plist.c
+++ b/test/enc_dec_plist.c
@@ -350,7 +350,7 @@ main(void)
TESTING("DXPL Encoding/Decoding");
- if ((H5Pset_btree_ratios(dxpl, 0.2f, 0.6f, 0.2f)) < 0)
+ if ((H5Pset_btree_ratios(dxpl, 0.2, 0.6, 0.2)) < 0)
FAIL_STACK_ERROR
if ((H5Pset_hyper_vector_size(dxpl, 5)) < 0)
FAIL_STACK_ERROR
@@ -544,7 +544,7 @@ main(void)
FAIL_STACK_ERROR
if ((H5Pset_alignment(fapl, 2, 1024)) < 0)
FAIL_STACK_ERROR
- if ((H5Pset_cache(fapl, 1024, 128, 10485760, 0.3f)) < 0)
+ if ((H5Pset_cache(fapl, 1024, 128, 10485760, 0.3)) < 0)
FAIL_STACK_ERROR
if ((H5Pset_elink_file_cache_size(fapl, 10485760)) < 0)
FAIL_STACK_ERROR
diff --git a/test/error_test.c b/test/error_test.c
index cf1e82c..f4dc340 100644
--- a/test/error_test.c
+++ b/test/error_test.c
@@ -319,7 +319,7 @@ long_desc_cb(unsigned H5_ATTR_UNUSED n, const H5E_error2_t *err_desc, void *clie
* 'full_desc' in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
static herr_t
test_long_desc(void)
{
@@ -375,7 +375,7 @@ error:
return -1;
} /* end test_long_desc() */
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/*-------------------------------------------------------------------------
* Function: dump_error
diff --git a/test/event_set.c b/test/event_set.c
index 6568663..5df49e9 100644
--- a/test/event_set.c
+++ b/test/event_set.c
@@ -94,6 +94,71 @@ error:
}
/*-------------------------------------------------------------------------
+ * Function: test_es_none
+ *
+ * Purpose: Tests for passing H5ES_NONE to H5ES routines
+ *
+ * Return: Success: 0
+ * Failure: number of errors
+ *
+ * Programmer: Quincey Koziol
+ * Friday, February 26, 2021
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_es_none(void)
+{
+ TESTING("event set H5ES_NONE");
+
+ /* Wait */
+ if (H5ESwait(H5ES_NONE, 0, NULL, NULL) < 0)
+ TEST_ERROR;
+
+ /* Cancel */
+ if (H5EScancel(H5ES_NONE, NULL, NULL) < 0)
+ TEST_ERROR;
+
+ /* Get count */
+ if (H5ESget_count(H5ES_NONE, NULL) < 0)
+ TEST_ERROR;
+
+ /* Get op counter */
+ if (H5ESget_op_counter(H5ES_NONE, NULL) < 0)
+ TEST_ERROR;
+
+ /* Get error status */
+ if (H5ESget_err_status(H5ES_NONE, NULL) < 0)
+ TEST_ERROR;
+
+ /* Get error count */
+ if (H5ESget_err_count(H5ES_NONE, NULL) < 0)
+ TEST_ERROR;
+
+ /* Get error info */
+ if (H5ESget_err_info(H5ES_NONE, 0, NULL, NULL) < 0)
+ TEST_ERROR;
+
+ /* Register insert function */
+ if (H5ESregister_insert_func(H5ES_NONE, NULL, NULL) < 0)
+ TEST_ERROR;
+
+ /* Register complete function */
+ if (H5ESregister_complete_func(H5ES_NONE, NULL, NULL) < 0)
+ TEST_ERROR;
+
+ /* Close */
+ if (H5ESclose(H5ES_NONE) < 0)
+ TEST_ERROR;
+
+ PASSED();
+ return 0;
+
+error:
+ return 1;
+}
+
+/*-------------------------------------------------------------------------
* Function: main
*
* Purpose: Tests event sets
@@ -118,6 +183,7 @@ main(void)
/* Tests */
nerrors += test_es_create();
+ nerrors += test_es_none();
/* Cleanup */
h5_cleanup(FILENAME, fapl_id);
diff --git a/test/fheap.c b/test/fheap.c
index cb9c080..86a555d 100644
--- a/test/fheap.c
+++ b/test/fheap.c
@@ -553,7 +553,7 @@ get_fill_size(const fheap_test_param_t *tparam)
* test_desc in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
static int
begin_test(fheap_test_param_t *tparam, const char *base_desc, fheap_heap_ids_t *keep_ids, size_t *fill_size)
{
@@ -581,7 +581,7 @@ begin_test(fheap_test_param_t *tparam, const char *base_desc, fheap_heap_ids_t *
/* Success */
return (0);
} /* end begin_test() */
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/*-------------------------------------------------------------------------
* Function: reopen_file
diff --git a/test/file_image.c b/test/file_image.c
index 0373468..0d031f5 100644
--- a/test/file_image.c
+++ b/test/file_image.c
@@ -712,7 +712,7 @@ error:
* 'member_file_name' in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
static int
test_get_file_image(const char *test_banner, const int file_name_num, hid_t fapl, hbool_t user)
{
@@ -976,7 +976,7 @@ test_get_file_image(const char *test_banner, const int file_name_num, hid_t fapl
error:
return 1;
} /* end test_get_file_image() */
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/******************************************************************************
* Function: test_get_file_image_error_rejection
diff --git a/test/fillval.c b/test/fillval.c
index 4215c89..8de6ef1 100644
--- a/test/fillval.c
+++ b/test/fillval.c
@@ -1050,7 +1050,7 @@ test_rdwr_cases(hid_t file, hid_t dcpl, const char *dname, void *_fillval, H5D_f
for (u = 0; u < nelmts; u++) {
buf_c[u].a = 1111.11F;
buf_c[u].x = 2222;
- buf_c[u].y = 3333.3333F;
+ buf_c[u].y = 3333.3333;
buf_c[u].z = 'd';
}
if (H5Dwrite(dset2, ctype_id, mspace, fspace, H5P_DEFAULT, buf_c) < 0)
@@ -1304,7 +1304,7 @@ test_rdwr(hid_t fapl, const char *base_name, H5D_layout_t layout)
if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0)
goto error;
HDmemset(&fill_ctype, 0, sizeof(fill_ctype));
- fill_ctype.y = 4444.4444F;
+ fill_ctype.y = 4444.4444;
if (H5Pset_fill_value(dcpl, ctype_id, &fill_ctype) < 0)
goto error;
nerrors += test_rdwr_cases(file, dcpl, "dset11", &fill_ctype, H5D_FILL_TIME_ALLOC, layout,
@@ -1370,7 +1370,7 @@ test_rdwr(hid_t fapl, const char *base_name, H5D_layout_t layout)
if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0)
goto error;
HDmemset(&fill_ctype, 0, sizeof(fill_ctype));
- fill_ctype.y = 4444.4444F;
+ fill_ctype.y = 4444.4444;
if (H5Pset_fill_value(dcpl, ctype_id, &fill_ctype) < 0)
goto error;
nerrors += test_rdwr_cases(file, dcpl, "dset12", &fill_ctype, H5D_FILL_TIME_ALLOC, layout, H5T_COMPOUND,
diff --git a/test/gheap.c b/test/gheap.c
index 95594ee..567fd65 100644
--- a/test/gheap.c
+++ b/test/gheap.c
@@ -503,7 +503,7 @@ test_ooo_indices(hid_t fapl)
GHEAP_REPEATED_ERR(" Unable to insert object into global heap")
/* Check that the index is as expected */
- if (obj[j].idx != ((1000 * i) + j - (1000 * ((~i & 1)))) % ((1u << 16) - 1) + 1)
+ if (obj[j].idx != ((1000 * i) + j - (1000 * ((~i & 1)))) % ((1U << 16) - 1) + 1)
GHEAP_REPEATED_ERR(" Unexpected global heap index");
}
diff --git a/test/h5test.c b/test/h5test.c
index 755ae93..09fb5b5 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -1305,7 +1305,7 @@ h5_dump_info_object(MPI_Info info)
* temp in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
h5_stat_size_t
h5_get_file_size(const char *filename, hid_t fapl)
{
@@ -1410,7 +1410,7 @@ h5_get_file_size(const char *filename, hid_t fapl)
return (-1);
} /* end get_file_size() */
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/*
* This routine is designed to provide equivalent functionality to 'printf'
diff --git a/test/hyperslab.c b/test/hyperslab.c
index 1f57e3b..1c55259 100644
--- a/test/hyperslab.c
+++ b/test/hyperslab.c
@@ -585,10 +585,10 @@ test_multifill(size_t nx)
for (i = 0; i < nx; i++) {
src[i].left = 1111111;
- src[i].mid = 12345.6789F;
+ src[i].mid = 12345.6789;
src[i].right = 2222222;
dst[i].left = 3333333;
- dst[i].mid = 98765.4321F;
+ dst[i].mid = 98765.4321;
dst[i].right = 4444444;
} /* end for */
@@ -597,7 +597,7 @@ test_multifill(size_t nx)
* over and over again.
*/
fill.left = 55555555;
- fill.mid = 3.1415927F;
+ fill.mid = 3.1415927;
fill.right = 66666666;
src_stride = 0;
diff --git a/test/null_vol_connector.c b/test/null_vol_connector.c
index 2b375d8..6555763 100644
--- a/test/null_vol_connector.c
+++ b/test/null_vol_connector.c
@@ -116,6 +116,7 @@ static const H5VL_class_t null_vol_g = {
{
/* introspect_cls */
NULL, /* get_conn_cls */
+ NULL, /* get_cap_flags */
NULL, /* opt_query */
},
{
diff --git a/test/ohdr.c b/test/ohdr.c
index b7af77f..d28b11e 100644
--- a/test/ohdr.c
+++ b/test/ohdr.c
@@ -457,6 +457,59 @@ error:
} /* test_ohdr_swmr() */
/*
+ * Tests bad object header messages.
+ *
+ * Currently tests for CVE-2020-10810 fixes but can be expanded to handle
+ * other CVE badness.
+ */
+
+/* This is a generated file that can be obtained from:
+ *
+ * https://nvd.nist.gov/vuln/detail/CVE-2020-10810
+ *
+ * It was formerly named H5AC_unpin_entry_POC
+ */
+#define CVE_2020_10810_FILENAME "cve_2020_10810.h5"
+
+static herr_t
+test_ohdr_badness(hid_t fapl)
+{
+ hid_t fid = H5I_INVALID_HID;
+
+ /* CVE-2020-10810 involved a malformed fsinfo message
+ * This test ensures the fundamental problem is fixed. Running it under
+ * valgrind et al. will ensure that the memory leaks and invalid access
+ * are fixed.
+ */
+ TESTING("Fix for CVE-2020-10810");
+
+ H5E_BEGIN_TRY
+ {
+ /* This should fail due to the malformed fsinfo message. It should
+ * fail gracefully and not segfault.
+ */
+ fid = H5Fopen(CVE_2020_10810_FILENAME, H5F_ACC_RDWR, fapl);
+ }
+ H5E_END_TRY;
+
+ if (fid >= 0)
+ FAIL_PUTS_ERROR("should not have been able to open malformed file");
+
+ PASSED();
+
+ return SUCCEED;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Fclose(fid);
+ }
+ H5E_END_TRY;
+
+ return FAIL;
+}
+
+/*
* To test objects with unknown messages in a file with:
* a) H5O_BOGUS_VALID_ID:
* --the bogus_id is within the range of H5O_msg_class_g[]
@@ -488,7 +541,7 @@ test_unknown(unsigned bogus_id, char *filename, hid_t fapl)
done in the source directory. */
HDstrncpy(testfile, FILE_BOGUS, TESTFILE_LEN);
testfile[TESTFILE_LEN - 1] = '\0';
- HDstrncat(testfile, ".copy", 5);
+ HDstrncat(testfile, ".copy", sizeof(testfile) - HDstrlen(testfile) - 1);
/* Make a copy of the data file from svn. */
if (h5_make_local_copy(FILE_BOGUS, testfile) < 0)
@@ -2047,6 +2100,9 @@ main(void)
} /* high */
} /* low */
+ /* Verify bad ohdr message fixes work */
+ test_ohdr_badness(fapl);
+
/* Verify symbol table messages are cached */
if (h5_verify_cached_stabs(FILENAME, fapl) < 0)
TEST_ERROR
diff --git a/test/pool.c b/test/pool.c
index 9ce1846..c508025 100644
--- a/test/pool.c
+++ b/test/pool.c
@@ -34,7 +34,7 @@
#define MPOOL_LARGE_BLOCK (MPOOL_PAGE_SIZE * 3)
#define MPOOL_NUM_SMALL_BLOCKS 64
#define MPOOL_SMALL_BLOCK 1
-#define MPOOL_NUM_RANDOM 10 * 1024
+#define MPOOL_NUM_RANDOM (10 * 1024)
#define MPOOL_RANDOM_MAX_SIZE (MPOOL_PAGE_SIZE * 2)
/*-------------------------------------------------------------------------
diff --git a/test/set_extent.c b/test/set_extent.c
index 5a07362..3078c2d 100644
--- a/test/set_extent.c
+++ b/test/set_extent.c
@@ -39,7 +39,7 @@ const char *FILENAME[] = {"set_extent1", "set_extent2", "set_extent3", "set_exte
#define CONFIG_EARLY_ALLOC 0x04u
#define CONFIG_UNFILT_EDGE 0x08u
#define CONFIG_ALL (CONFIG_COMPRESS + CONFIG_FILL + CONFIG_EARLY_ALLOC + CONFIG_UNFILT_EDGE)
-#define FILL_VALUE -1
+#define FILL_VALUE (-1)
#define DO_RANKS_PRINT_CONFIG(TEST) \
{ \
HDprintf(" Config:\n"); \
@@ -134,11 +134,11 @@ main(void)
TEST_ERROR
/* Set chunk cache so only part of the chunks can be cached on fapl */
- if (H5Pset_cache(fapl, 0, (size_t)8, 256 * sizeof(int), 0.75F) < 0)
+ if (H5Pset_cache(fapl, 0, (size_t)8, 256 * sizeof(int), 0.75) < 0)
TEST_ERROR
/* Disable chunk caching on fapl2 */
- if (H5Pset_cache(fapl2, 0, (size_t)0, (size_t)0, 0.0F) < 0)
+ if (H5Pset_cache(fapl2, 0, (size_t)0, (size_t)0, 0.0) < 0)
TEST_ERROR
/* Set the "use the latest version of the format" bounds for creating objects in the file */
diff --git a/test/swmr_common.c b/test/swmr_common.c
index 46c80cf..3d35227 100644
--- a/test/swmr_common.c
+++ b/test/swmr_common.c
@@ -111,7 +111,7 @@ choose_dataset(unsigned *levelp, unsigned *offsetp, hbool_t verbose)
++ncalls;
if ((ncalls % 1000) == 0 && verbose) {
- fprintf(stderr, "%s: call %u chose level %u offset %u\n", __func__, ncalls, level, offset);
+ HDfprintf(stderr, "%s: call %u chose level %u offset %u\n", __func__, ncalls, level, offset);
}
if (levelp != NULL)
*levelp = level;
diff --git a/test/swmr_common.h b/test/swmr_common.h
index 3a3f41d..c8c033a 100644
--- a/test/swmr_common.h
+++ b/test/swmr_common.h
@@ -64,7 +64,7 @@ H5TEST_DLLVAR unsigned symbol_count[NLEVELS];
extern "C" {
#endif
-H5TEST_DLL symbol_info_t *choose_dataset(unsigned *, unsigned *, hbool_t);
+H5TEST_DLL symbol_info_t *choose_dataset(unsigned *levelp, unsigned *offsetp, hbool_t verbose);
H5TEST_DLL hid_t create_symbol_datatype(void);
H5TEST_DLL int generate_name(char *name_buf, unsigned level, unsigned count);
H5TEST_DLL int generate_symbols(void);
diff --git a/test/tattr.c b/test/tattr.c
index b602222..756e139 100644
--- a/test/tattr.c
+++ b/test/tattr.c
@@ -95,8 +95,7 @@ int attr_data2[ATTR2_DIM1][ATTR2_DIM2] = {{7614, -416}, {197814, -3}}; /* Test d
#define ATTR3_DIM2 2
#define ATTR3_DIM3 2
double attr_data3[ATTR3_DIM1][ATTR3_DIM2][ATTR3_DIM3] = {
- {{2.3F, -26.1F}, {0.123F, -10.0F}},
- {{973.23F, -0.91827F}, {2.0F, 23.0F}}}; /* Test data for 3rd attribute */
+ {{2.3, -26.1}, {0.123, -10.0}}, {{973.23, -0.91827}, {2.0, 23.0}}}; /* Test data for 3rd attribute */
#define ATTR4_NAME "Attr4"
#define ATTR4_RANK 2
@@ -113,8 +112,8 @@ struct attr4_struct {
double d;
char c;
} attr_data4[ATTR4_DIM1][ATTR4_DIM2] = {
- {{3, -26.1F, 'd'}, {-100000, 0.123F, '3'}},
- {{-23, 981724.2F, 'Q'}, {0, 2.0F, '\n'}}}; /* Test data for 4th attribute */
+ {{3, -26.1, 'd'}, {-100000, 0.123, '3'}},
+ {{-23, 981724.2, 'Q'}, {0, 2.0, '\n'}}}; /* Test data for 4th attribute */
#define ATTR5_NAME "Attr5"
#define ATTR5_RANK 0
diff --git a/test/tconfig.c b/test/tconfig.c
index e3c6a2c..101de9a 100644
--- a/test/tconfig.c
+++ b/test/tconfig.c
@@ -37,8 +37,9 @@
/* verify if the sizeof(type) matches size defined in macro. */
/* Needs this extra step so that we can print the macro name. */
#define vrfy_macrosize(type, macro, macroname) \
- if (sizeof(type) != macro) \
- TestErrPrintf("Error: sizeof(%s) is %zu but %s is %d\n", #type, sizeof(type), macroname, (int)macro);
+ if (sizeof(type) != (macro)) \
+ TestErrPrintf("Error: sizeof(%s) is %zu but %s is %d\n", #type, sizeof(type), macroname, \
+ (int)(macro));
/* local routine prototypes */
void test_config_ctypes(void);
diff --git a/test/test_usecases.sh.in b/test/test_usecases.sh.in
index bb53697..eaa875e 100644
--- a/test/test_usecases.sh.in
+++ b/test/test_usecases.sh.in
@@ -22,10 +22,16 @@
# exit codes are okay (0).
srcdir=@srcdir@
+bindir=@bindir@
+
+# If the bindir directory is not set just use current (.).
+if test -z "$bindir"; then
+ bindir=.
+fi
# Check to see if the VFD specified by the HDF5_DRIVER environment variable
# supports SWMR.
-./swmr_check_compat_vfd
+$bindir/swmr_check_compat_vfd
rc=$?
if [[ $rc != 0 ]] ; then
echo
@@ -85,7 +91,7 @@ TOOLTEST() {
# Run test.
TESTING $program $@
(
- $RUNSERIAL ./$program "$@"
+ $RUNSERIAL $bindir/$program "$@"
) >$actual 2>$actual_err
exit_code=$?
@@ -178,14 +184,14 @@ fi
# main body
for p in $USECASES_PROGRAMS; do
- TOOLTEST ./$p
- TOOLTEST ./$p -z 256
+ TOOLTEST $p
+ TOOLTEST $p -z 256
tmpfile=/tmp/datatfile.$$
- TOOLTEST ./$p -f $tmpfile; rm -f $tmpfile
- TOOLTEST ./$p -l w
- TOOLTEST ./$p -l r
+ TOOLTEST $p -f $tmpfile; rm -f $tmpfile
+ TOOLTEST $p -l w
+ TOOLTEST $p -l r
# use case 1.9, testing with multi-planes chunks
- TOOLTEST ./$p -z 256 -y 5 # 5 planes chunks
+ TOOLTEST $p -z 256 -y 5 # 5 planes chunks
# cleanup temp datafile
if test -z "$HDF5_NOCLEANUP"; then
rm -f $p.h5
diff --git a/test/testcheck_version.sh.in b/test/testcheck_version.sh.in
index 43d1b46..6378ee5 100644
--- a/test/testcheck_version.sh.in
+++ b/test/testcheck_version.sh.in
@@ -15,7 +15,7 @@
# Tests for the H5check_version function.
#
# Programmer: Albert Cheng
-# Sep 28, 2009
+# Sep 28, 2009
srcdir=@srcdir@
@@ -24,7 +24,7 @@ srcdir=@srcdir@
Shared_Lib=@enable_shared@
Static_Lib=@enable_static@
Static_exec=@STATIC_EXEC@
-h5haveexitcode=yes # default is yes
+h5haveexitcode=yes # default is yes
CMP='cmp -s'
DIFF='diff -c'
@@ -103,10 +103,10 @@ WarnMesg2(){
# mismatch).
#
# Expected results:
-# Value of $HDF5_DISABLE_VERSION_CHECK
-# unset "" -1 0 1 2 3
-# Matched OK OK OK OK OK OK OK
-# Mismatched W/A W/A W/A W/A W2/OK OK W2/OK
+# Value of $HDF5_DISABLE_VERSION_CHECK
+# unset "" -1 0 1 2 3
+# Matched OK OK OK OK OK OK OK
+# Mismatched W/A W/A W/A W/A W2/OK OK W2/OK
# Result codes:
# OK: No warning, exit 0.
# W/A: Warning, abort and exit non-0.
@@ -130,42 +130,42 @@ TESTING() {
xxh5versrelease=$h5versrelease
if [ "$h5DisableVersion" = unset ]; then
- envcmd="" # noop
+ envcmd="" # noop
else
- envcmd="env HDF5_DISABLE_VERSION_CHECK=$h5DisableVersion"
+ envcmd="env HDF5_DISABLE_VERSION_CHECK=$h5DisableVersion"
fi
if [ "$wrongversionnumbers" = none ]; then
- # OK: No warning, exit 0
- cp /dev/null $expect
- expect_code=0
+ # OK: No warning, exit 0
+ cp /dev/null $expect
+ expect_code=0
else
- arguments=-t"$wrongversionnumbers"
- # calculate mismatched version numbers by listing.
- case $wrongversionnumbers in
- "M") xxh5versmajor=`expr $h5versmajor + 1`
- ;;
- "m") xxh5versminor=`expr $h5versminor + 1`
- ;;
- "r") xxh5versrelease=`expr $h5versrelease + 1`
- ;;
- esac
- case "$h5DisableVersion" in
- 1)
- # W2/OK: Different Warning, exit 0.
- WarnMesg2 > $expect
- expect_code=0
- ;;
- [2-9]|[1-9][0-9]*)
- # OK: No warning, exit 0
- cp /dev/null $expect
- expect_code=0
- ;;
- *) # W/A: Warning, abort and exit non-0.
- WarnMesg > $expect
- expect_code=6 # Signal Abort exit code (128+6)
- ;;
- esac
+ arguments=-t"$wrongversionnumbers"
+ # calculate mismatched version numbers by listing.
+ case $wrongversionnumbers in
+ "M") xxh5versmajor=`expr $h5versmajor + 1`
+ ;;
+ "m") xxh5versminor=`expr $h5versminor + 1`
+ ;;
+ "r") xxh5versrelease=`expr $h5versrelease + 1`
+ ;;
+ esac
+ case "$h5DisableVersion" in
+ 1)
+ # W2/OK: Different Warning, exit 0.
+ WarnMesg2 > $expect
+ expect_code=0
+ ;;
+ [2-9]|[1-9][0-9]*)
+ # OK: No warning, exit 0
+ cp /dev/null $expect
+ expect_code=0
+ ;;
+ *) # W/A: Warning, abort and exit non-0.
+ WarnMesg > $expect
+ expect_code=6 # Signal Abort exit code (128+6)
+ ;;
+ esac
fi
# Run test.
@@ -177,23 +177,23 @@ TESTING() {
cat $actual_err >> $actual
if [ $h5haveexitcode = 'yes' -a \( $expect_code -ne $ret_code \) ]; then
- echo "*FAILED*"
- echo " Expected exit code ($expect_code) differs from actual code ($ret_code)"
- nerrors="`expr $nerrors + 1`"
+ echo "*FAILED*"
+ echo " Expected exit code ($expect_code) differs from actual code ($ret_code)"
+ nerrors="`expr $nerrors + 1`"
elif $CMP $expect $actual; then
- echo " PASSED"
+ echo " PASSED"
else
- echo "*FAILED*"
- echo " Expected result differs from actual result"
- nerrors="`expr $nerrors + 1`"
- test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /'
+ echo "*FAILED*"
+ echo " Expected result differs from actual result"
+ nerrors="`expr $nerrors + 1`"
+ test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /'
fi
# Clean up output file.
# Also clean the core file generated by H5check_version's abort.
if test -z "$HDF5_NOCLEANUP"; then
- $RM $expect $actual $actual_err
- $RM core
+ $RM $expect $actual $actual_err
+ $RM core
fi
}
@@ -201,15 +201,15 @@ TESTING() {
# Echo parameters for debugging if verbose mode is on.
DEBUGPRINT() {
if [ -n "$debugmode" ]; then
- echo $*
+ echo $*
fi
}
# MAIN Body
nerrors=0
-verbose=yes # default on
-debugmode= # default off
+verbose=yes # default on
+debugmode= # default off
H5_HAVE_EMBEDDED_LIBINFO=`grep '#define H5_HAVE_EMBEDDED_LIBINFO ' ../src/H5pubconf.h`
h5libsettings=../src/libhdf5.settings
@@ -240,13 +240,13 @@ fi
# Three Categories of tests:
# Normal: where the version numbers all matched (wrong_version == none).
# Mismatched version numbers (could be Major or minor version
-# or release numbers or a combination of all three.)
+# or release numbers or a combination of all three.)
# Test all the above with different values of the environment variable,
# HDF5_DISABLE_VERSION_CHECK, as unset, "", -1, 0, 1, 2, 3
for val_disable_version_check in unset "" -1 0 1 2 3; do
- for wrong_version in none M m r; do
- TESTING "$val_disable_version_check" "$wrong_version"
+ for wrong_version in none M m; do
+ TESTING "$val_disable_version_check" "$wrong_version"
done
done
diff --git a/test/testhdf5.h b/test/testhdf5.h
index 5fb01a8..ba5fa71 100644
--- a/test/testhdf5.h
+++ b/test/testhdf5.h
@@ -136,7 +136,7 @@
"%s \n", \
(where), (int)__LINE__, __FILE__, x); \
} \
- if (HDstrcmp(x, val)) { \
+ if (HDstrcmp(x, val) != 0) { \
TestErrPrintf("*** UNEXPECTED VALUE from %s should be %s, but is %s at line %4d " \
"in %s\n", \
where, val, x, (int)__LINE__, __FILE__); \
diff --git a/test/testswmr.sh.in b/test/testswmr.sh.in
index 2df23c6..37e8f9c 100644
--- a/test/testswmr.sh.in
+++ b/test/testswmr.sh.in
@@ -17,6 +17,7 @@
# Albert Cheng, 2009/07/22
srcdir=@srcdir@
+bindir=@bindir@
###############################################################################
## test parameters
@@ -97,9 +98,14 @@ if test -z "$srcdir"; then
srcdir=.
fi
+# If the bindir directory is not set just use current (.).
+if test -z "$bindir"; then
+ bindir=.
+fi
+
# Check to see if the VFD specified by the HDF5_DRIVER environment variable
# supports SWMR.
-./swmr_check_compat_vfd
+$bindir/swmr_check_compat_vfd
rc=$?
if [ $rc -ne 0 ] ; then
echo
@@ -172,7 +178,7 @@ do
echo "###############################################################################"
# Launch the Generator without SWMR_WRITE
echo launch the swmr_generator
- ./swmr_generator $compress $index_type
+ $bindir/swmr_generator $compress $index_type
if test $? -ne 0; then
echo generator had error
nerrors=`expr $nerrors + 1`
@@ -180,7 +186,7 @@ do
# Launch the Generator with SWMR_WRITE
echo launch the swmr_generator with SWMR_WRITE
- ./swmr_generator -s $compress $index_type
+ $bindir/swmr_generator -s $compress $index_type
if test $? -ne 0; then
echo generator had error
nerrors=`expr $nerrors + 1`
@@ -204,7 +210,7 @@ do
# Launch the Writer
echo launch the swmr_start_writer
seed="" # Put -r <random seed> command here
- ./swmr_start_write $compress $index_type $Nrecords $seed 2>&1 |tee swmr_writer.out &
+ $bindir/swmr_start_write $compress $index_type $Nrecords $seed 2>&1 |tee swmr_writer.out &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -220,7 +226,7 @@ do
while [ $n -lt $Nreaders ]; do
#seed="-r ${seeds[$n]}"
seed=""
- ./swmr_reader $Nsecs_add $seed 2>&1 |tee swmr_reader.out.$n &
+ $bindir/swmr_reader $Nsecs_add $seed 2>&1 |tee swmr_reader.out.$n &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
@@ -265,7 +271,7 @@ do
# Launch the Generator
echo launch the swmr_generator
- ./swmr_generator -s $compress $index_type
+ $bindir/swmr_generator -s $compress $index_type
if test $? -ne 0; then
echo generator had error
nerrors=`expr $nerrors + 1`
@@ -277,7 +283,7 @@ do
# Launch the Writer
echo launch the swmr_writer
seed="" # Put -r <random seed> command here
- ./swmr_writer -o $Nrecords $seed 2>&1 |tee swmr_writer.out &
+ $bindir/swmr_writer -o $Nrecords $seed 2>&1 |tee swmr_writer.out &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -292,7 +298,7 @@ do
while [ $n -lt $Nreaders ]; do
#seed="-r ${seeds[$n]}"
seed=""
- ./swmr_reader $Nsecs_add $seed 2>&1 |tee swmr_reader.out.$n &
+ $bindir/swmr_reader $Nsecs_add $seed 2>&1 |tee swmr_reader.out.$n &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
@@ -340,7 +346,7 @@ do
# Launch the Remove Writer
echo launch the swmr_remove_writer
seed="" # Put -r <random seed> command here
- ./swmr_remove_writer -o $Nrecs_rem $seed 2>&1 |tee swmr_writer.out &
+ $bindir/swmr_remove_writer -o $Nrecs_rem $seed 2>&1 |tee swmr_writer.out &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -355,7 +361,7 @@ do
while [ $n -lt $Nreaders ]; do
#seed="-r ${seeds[$n]}"
seed=""
- ./swmr_remove_reader $Nsecs_rem $seed 2>&1 |tee swmr_reader.out.$n &
+ $bindir/swmr_remove_reader $Nsecs_rem $seed 2>&1 |tee swmr_reader.out.$n &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
@@ -400,7 +406,7 @@ do
# Launch the Generator
echo launch the swmr_generator
- ./swmr_generator $compress $index_type
+ $bindir/swmr_generator $compress $index_type
if test $? -ne 0; then
echo generator had error
nerrors=`expr $nerrors + 1`
@@ -409,7 +415,7 @@ do
# Launch the Writer (not in parallel - just to rebuild the datasets)
echo launch the swmr_writer
seed="" # Put -r <random seed> command here
- ./swmr_writer $Nrecords $seed
+ $bindir/swmr_writer $Nrecords $seed
if test $? -ne 0; then
echo writer had error
nerrors=`expr $nerrors + 1`
@@ -421,7 +427,7 @@ do
# Launch the Add/Remove Writer
echo launch the swmr_addrem_writer
seed="" # Put -r <random seed> command here
- ./swmr_addrem_writer $Nrecords $seed 2>&1 |tee swmr_writer.out &
+ $bindir/swmr_addrem_writer $Nrecords $seed 2>&1 |tee swmr_writer.out &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -436,7 +442,7 @@ do
while [ $n -lt $Nreaders ]; do
#seed="-r ${seeds[$n]}"
seed=""
- ./swmr_remove_reader $Nsecs_addrem $seed 2>&1 |tee swmr_reader.out.$n &
+ $bindir/swmr_remove_reader $Nsecs_addrem $seed 2>&1 |tee swmr_reader.out.$n &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
@@ -484,7 +490,7 @@ do
# created by the generator.
echo launch the swmr_generator
seed="" # Put -r <random seed> command here
- ./swmr_generator $compress $index_type $seed
+ $bindir/swmr_generator $compress $index_type $seed
if test $? -ne 0; then
echo generator had error
nerrors=`expr $nerrors + 1`
@@ -494,7 +500,7 @@ do
rm -f $WRITER_MESSAGE
# Launch the Sparse writer
echo launch the swmr_sparse_writer
- nice -n 20 ./swmr_sparse_writer $Nrecs_spa 2>&1 |tee swmr_writer.out &
+ nice -n 20 $bindir/swmr_sparse_writer $Nrecs_spa 2>&1 |tee swmr_writer.out &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -507,7 +513,7 @@ do
echo launch $Nrdrs_spa swmr_sparse_readers
while [ $n -lt $Nrdrs_spa ]; do
# The sparse reader spits out a LOT of data so it's set to 'quiet'
- ./swmr_sparse_reader -q $Nrecs_spa 2>&1 |tee swmr_reader.out.$n &
+ $bindir/swmr_sparse_reader -q $Nrecs_spa 2>&1 |tee swmr_reader.out.$n &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
diff --git a/test/testvdsswmr.sh.in b/test/testvdsswmr.sh.in
index 9673aa3..5399903 100644
--- a/test/testvdsswmr.sh.in
+++ b/test/testvdsswmr.sh.in
@@ -17,6 +17,7 @@
# Dana Robinson, November 2015
srcdir=@srcdir@
+bindir=@bindir@
###############################################################################
## test parameters
@@ -30,7 +31,7 @@ nerrors=0
## definitions for message file to coordinate test runs
###############################################################################
WRITER_MESSAGE=SWMR_WRITER_MESSAGE # The message file created by writer that the open is complete
- # This should be the same as the define in "./swmr_common.h"
+ # This should be the same as the define in "$bindir/swmr_common.h"
MESSAGE_TIMEOUT=300 # Message timeout length in secs
# This should be the same as the define in "./h5test.h"
@@ -83,9 +84,14 @@ if test -z "$srcdir"; then
srcdir=.
fi
+# If the bindir directory is not set just use current (.).
+if test -z "$bindir"; then
+ bindir=.
+fi
+
# Check to see if the VFD specified by the HDF5_DRIVER environment variable
# supports SWMR.
-./swmr_check_compat_vfd
+$bindir/swmr_check_compat_vfd
rc=$?
if [ $rc -ne 0 ] ; then
echo
@@ -148,7 +154,7 @@ echo "##########################################################################
# Launch the file generator
echo launch the generator
-./vds_swmr_gen
+$bindir/vds_swmr_gen
if test $? -ne 0; then
echo generator had error
nerrors=`expr $nerrors + 1`
@@ -166,7 +172,7 @@ echo "launch the $Nwriters SWMR VDS writers (1 per source)"
pid_writers=""
n=0
while [ $n -lt $Nwriters ]; do
- ./vds_swmr_writer $n &
+ $bindir/vds_swmr_writer $n &
pid_writers="$pid_writers $!"
n=`expr $n + 1`
done
@@ -181,7 +187,7 @@ echo launch $Nreaders SWMR readers
pid_readers=""
n=0
while [ $n -lt $Nreaders ]; do
- ./vds_swmr_reader &
+ $bindir/vds_swmr_reader &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
diff --git a/test/testvfdswmr.sh.in b/test/testvfdswmr.sh.in
index bafdc2c..4dc1e82 100644
--- a/test/testvfdswmr.sh.in
+++ b/test/testvfdswmr.sh.in
@@ -1006,7 +1006,6 @@ for options in ${os_grp_op_list[*]}; do
rm -f vfd_swmr_group_reader.*.{out,rc}
done
-
###############################################################################
#
# Setting for "os_groups_seg" test
@@ -1054,8 +1053,8 @@ BIGSET_many_s=100 # -s option: # of datasets (for many_small t
# Setting for exhaustive and quick runs
#
if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run
- BIGSET_n=50
- BIGSET_few_s=40
+ BIGSET_n=200
+ BIGSET_few_s=100
BIGSET_many_s=1000
elif [[ "$HDF5TestExpress" -gt 1 ]]; then # quick run
BIGSET_n=10
@@ -1064,28 +1063,32 @@ elif [[ "$HDF5TestExpress" -gt 1 ]]; then # quick run
fi
#
#
-for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F" "-d 1 -M -F"; do
+for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -t" "-d 1 -t -F" "-d 1 -t -R" "-d 1 -V" "-d 1 -M" "-d 1 -V -F" "-d 1 -M -F"; do
if [ ${do_many_small:-no} = no ]; then
continue
fi
#
# Test many small datasets of one and two dimensions.
#
- # Perform 50 iterations on 1000 extensible datasets configured with
- # 16x16 chunks of 32-bit unsigned integer elements,
- # expanding each dataset by a chunk in one dimension (up to 50x1
+ # Perform 25 iterations on 100 extensible datasets configured with
+ # 2D 16x16 chunks or 3D 8x16x16 chunks of 32-bit unsigned integer elements,
+ # expanding each dataset by a chunk in one dimension (up to 25x1
# 16x16 chunks) on each iteration.
#
# Perform the test again, extending each dataset
- # in *two* dimensions (up to 50x50 16x16 chunks).
+ # in *two* dimensions (up to 25x25 16x16 chunks).
#
+ # If testing 3D datasets (-t option), extending each dataset along the
+ # first dimension (up to 25 8x16x16)
+ #
+
echo launch vfd_swmr_bigset_writer many small, options $options
catch_out_err_and_rc vfd_swmr_bigset_writer \
- ../vfd_swmr_bigset_writer -n $BIGSET_n $options -s $BIGSET_many_s -r 16 -c 16 -q &
+ ../vfd_swmr_bigset_writer -n $BIGSET_n $options -s $BIGSET_many_s -e 8 -r 16 -c 16 -q -l 3 &
pid_writer=$!
catch_out_err_and_rc vfd_swmr_bigset_reader \
- ../vfd_swmr_bigset_reader -n $BIGSET_n $options -s $BIGSET_many_s -r 16 -c 16 -q -W &
+ ../vfd_swmr_bigset_reader -n $BIGSET_n $options -s $BIGSET_many_s -e 8 -r 16 -c 16 -q -l 3 &
pid_reader=$!
# Wait for the reader to finish before signalling the
@@ -1093,7 +1096,6 @@ for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F
# reader will find the shadow file when it opens
# the .h5 file.
wait $pid_reader
- kill -USR1 $(cat vfd_swmr_bigset_writer.pid)
wait $pid_writer
# Collect exit code of the reader
@@ -1113,28 +1115,33 @@ for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F
rm -f vfd_swmr_bigset_reader.*.{out,rc}
done
-for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F" "-d 1 -M -F"; do
+# bigset test for bigger chunks
+for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -t" "-d 1 -t -F" "-d 1 -t -R" "-d 1 -V" "-d 1 -M" "-d 1 -V -F" "-d 1 -M -F"; do
#
# Test a few big datasets of one and two dimensions.
#
- # Perform 50 iterations on 5 extensible datasets configured with
- # 256x256 chunks of 32-bit unsigned integer elements,
- # expanding each dataset by a chunk in one dimension (up to 50x1
+ # Perform 25 iterations on 10 extensible datasets configured with
+ # 2D 256x256 chunks or 3D 64x256x256 of 32-bit unsigned integer elements,
+ # expanding each dataset by a chunk in one dimension (up to 25x1
# 256x256 chunks) on each iteration.
#
# Perform the test again, extending each dataset
- # in *two* dimensions (up to 50x50 256x256 chunks).
+ # in *two* dimensions (up to 25x25 256x256 chunks).
#
+ # If testing 3D datasets (-t option), extending each dataset along the
+ # first dimension (up to 25 64x256x256)
+ #
+
if [ ${do_few_big:-no} = no ]; then
continue
fi
echo launch vfd_swmr_bigset_writer few big, options $options ......may take some time......
catch_out_err_and_rc vfd_swmr_bigset_writer \
- ../vfd_swmr_bigset_writer -n $BIGSET_n $options -s $BIGSET_few_s -r 256 -c 256 -q &
+ ../vfd_swmr_bigset_writer -n $BIGSET_n $options -s $BIGSET_few_s -e 64 -r 256 -c 256 -q -l 3 &
pid_writer=$!
catch_out_err_and_rc vfd_swmr_bigset_reader \
- ../vfd_swmr_bigset_reader -n $BIGSET_n $options -s $BIGSET_few_s -r 256 -c 256 -q -W &
+ ../vfd_swmr_bigset_reader -n $BIGSET_n $options -s $BIGSET_few_s -e 64 -r 256 -c 256 -q -l 3 &
pid_reader=$!
# Wait for the reader to finish before signalling the
@@ -1142,7 +1149,6 @@ for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F
# reader will find the shadow file when it opens
# the .h5 file.
wait $pid_reader
- kill -USR1 $(cat vfd_swmr_bigset_writer.pid)
wait $pid_writer
# Collect exit code of the reader
diff --git a/test/tfile.c b/test/tfile.c
index d85d188..656e956 100644
--- a/test/tfile.c
+++ b/test/tfile.c
@@ -125,7 +125,7 @@
#define TEST_THRESHOLD10 10 /* Free space section threshold */
#define FSP_SIZE_DEF 4096 /* File space page size default */
#define FSP_SIZE512 512 /* File space page size */
-#define FSP_SIZE1G 1024 * 1024 * 1024 /* File space page size */
+#define FSP_SIZE1G (1024 * 1024 * 1024) /* File space page size */
/* Declaration for test_libver_macros2() */
#define FILE6 "tfile6.h5" /* Test file */
diff --git a/test/timer.c b/test/timer.c
index bb474ca..11b7427 100644
--- a/test/timer.c
+++ b/test/timer.c
@@ -43,55 +43,55 @@ test_time_formatting(void)
TESTING("Time string formats");
/* < 0, N/A */
- s = H5_timer_get_time_string(-1.0F);
+ s = H5_timer_get_time_string(-1.0);
if (NULL == s || HDstrcmp(s, "N/A") != 0)
TEST_ERROR;
HDfree(s);
/* 0 0 */
- s = H5_timer_get_time_string(0.0F);
+ s = H5_timer_get_time_string(0.0);
if (NULL == s || HDstrcmp(s, "0.0 s") != 0)
TEST_ERROR;
HDfree(s);
/* < 1 us nanoseconds */
- s = H5_timer_get_time_string(123.0E-9F);
+ s = H5_timer_get_time_string(123.0E-9);
if (NULL == s || HDstrcmp(s, "123 ns") != 0)
TEST_ERROR;
HDfree(s);
/* < 1 ms microseconds */
- s = H5_timer_get_time_string(23.456E-6F);
+ s = H5_timer_get_time_string(23.456E-6);
if (NULL == s || HDstrcmp(s, "23.5 us") != 0)
TEST_ERROR;
HDfree(s);
/* < 1 s milliseconds */
- s = H5_timer_get_time_string(4.56789E-3F);
+ s = H5_timer_get_time_string(4.56789E-3);
if (NULL == s || HDstrcmp(s, "4.6 ms") != 0)
TEST_ERROR;
HDfree(s);
/* < 1 min seconds */
- s = H5_timer_get_time_string(3.14F);
+ s = H5_timer_get_time_string(3.14);
if (NULL == s || HDstrcmp(s, "3.14 s") != 0)
TEST_ERROR;
HDfree(s);
/* < 1 hr mins, secs */
- s = H5_timer_get_time_string(2521.0F);
+ s = H5_timer_get_time_string(2521.0);
if (NULL == s || HDstrcmp(s, "42 m 1 s") != 0)
TEST_ERROR;
HDfree(s);
/* < 1 d hrs, mins, secs */
- s = H5_timer_get_time_string(9756.0F);
+ s = H5_timer_get_time_string(9756.0);
if (NULL == s || HDstrcmp(s, "2 h 42 m 36 s") != 0)
TEST_ERROR;
HDfree(s);
/* > 1 d days, hrs, mins, secs */
- s = H5_timer_get_time_string(280802.0F);
+ s = H5_timer_get_time_string(280802.0);
if (NULL == s || HDstrcmp(s, "3 d 6 h 0 m 2 s") != 0)
TEST_ERROR;
HDfree(s);
diff --git a/test/tmeta.c b/test/tmeta.c
index 2609703..e70db16 100644
--- a/test/tmeta.c
+++ b/test/tmeta.c
@@ -22,9 +22,9 @@
#include "testhdf5.h"
#include "H5Fprivate.h"
-#define TEST_INT16_VALUE -7641
+#define TEST_INT16_VALUE (-7641)
#define TEST_UINT16_VALUE 45002
-#define TEST_INT32_VALUE -981236
+#define TEST_INT32_VALUE (-981236)
#define TEST_UINT32_VALUE 3476589
uint8_t compar_buffer[] = {
diff --git a/test/tmisc.c b/test/tmisc.c
index 302da0d..b267330 100644
--- a/test/tmisc.c
+++ b/test/tmisc.c
@@ -5276,7 +5276,7 @@ test_misc28(void)
* bytes). */
fapl = H5Pcreate(H5P_FILE_ACCESS);
CHECK(fapl, FAIL, "H5Pcreate");
- ret = H5Pset_cache(fapl, MISC28_NSLOTS, MISC28_NSLOTS, MISC28_SIZE, 0.75F);
+ ret = H5Pset_cache(fapl, MISC28_NSLOTS, MISC28_NSLOTS, MISC28_SIZE, 0.75);
CHECK(ret, FAIL, "H5Pset_cache");
/* Create the dcpl and set the chunk size */
diff --git a/test/tsohm.c b/test/tsohm.c
index fcbb06a..b4ece0b 100644
--- a/test/tsohm.c
+++ b/test/tsohm.c
@@ -622,7 +622,7 @@ size1_helper(hid_t file, const char *filename, hid_t fapl_id, hbool_t test_file_
HDprintf("Can't read data\n"); \
goto error; \
} \
- if ((rdata.i1 != wdata.i1) || (rdata.i2 != wdata.i2) || HDstrcmp(rdata.str, wdata.str)) { \
+ if ((rdata.i1 != wdata.i1) || (rdata.i2 != wdata.i2) || HDstrcmp(rdata.str, wdata.str) != 0) { \
H5_FAILED(); \
AT(); \
HDprintf("incorrect read data\n"); \
diff --git a/test/tunicode.c b/test/tunicode.c
index 52341bb..1b696ac 100644
--- a/test/tunicode.c
+++ b/test/tunicode.c
@@ -33,7 +33,7 @@
#define RANK 1
#define COMP_INT_VAL 7
-#define COMP_FLOAT_VAL -42.0F
+#define COMP_FLOAT_VAL (-42.0F)
#define COMP_DOUBLE_VAL 42.0F
/* Test function prototypes */
diff --git a/test/tvltypes.c b/test/tvltypes.c
index 50b2d7a..03a8ad3 100644
--- a/test/tvltypes.c
+++ b/test/tvltypes.c
@@ -2526,10 +2526,10 @@ test_vltypes_fill_value(void)
hsize_t small_dims[] = {SPACE4_DIM_SMALL};
hsize_t large_dims[] = {SPACE4_DIM_LARGE};
size_t dset_elmts = 0; /* Number of elements in a particular dataset */
- const dtype1_struct fill1 = {1, 2, "foobar", "", NULL, "\0", "dead",
- 3, 4.0F, 100.0F, 1.0F, "liquid", "meter"};
- const dtype1_struct wdata = {3, 4, "", NULL, "\0", "foo", "two", 6, 8.0F, 200.0F, 2.0F, "solid", "yard"};
- dtype1_struct * rbuf = NULL; /* Buffer for reading data */
+ const dtype1_struct fill1 = {1, 2, "foobar", "", NULL, "\0", "dead",
+ 3, 4.0, 100.0, 1.0, "liquid", "meter"};
+ const dtype1_struct wdata = {3, 4, "", NULL, "\0", "foo", "two", 6, 8.0, 200.0, 2.0, "solid", "yard"};
+ dtype1_struct * rbuf = NULL; /* Buffer for reading data */
size_t mem_used = 0; /* Memory used during allocation */
H5D_layout_t layout; /* Dataset storage layout */
char dset_name1[64], dset_name2[64]; /* Dataset names */
diff --git a/test/vds.c b/test/vds.c
index 88ac4eb..ac9bb5d 100644
--- a/test/vds.c
+++ b/test/vds.c
@@ -78,12 +78,12 @@ char vds_test_str_g[128] = "";
#endif /* VDS_TEST_VERBOSE */
/* I/O test config flags */
-#define TEST_IO_CLOSE_SRC 0x01u
-#define TEST_IO_DIFFERENT_FILE 0x02u
-#define TEST_IO_REOPEN_VIRT 0x04u
-#define TEST_IO_FCLOSE_SEMI 0x08u
-#define TEST_IO_FCLOSE_STRONG 0x10u
-#define TEST_IO_NTESTS 0x20u
+#define TEST_IO_CLOSE_SRC 0x01U
+#define TEST_IO_DIFFERENT_FILE 0x02U
+#define TEST_IO_REOPEN_VIRT 0x04U
+#define TEST_IO_FCLOSE_SEMI 0x08U
+#define TEST_IO_FCLOSE_STRONG 0x10U
+#define TEST_IO_NTESTS 0x20U
#define LIST_DOUBLE_SIZE (H5D_VIRTUAL_DEF_LIST_SIZE + 1)
diff --git a/test/vfd.c b/test/vfd.c
index 8484bfd..f4cb988 100644
--- a/test/vfd.c
+++ b/test/vfd.c
@@ -859,7 +859,7 @@ error:
* 'first_name' in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
static herr_t
test_family_opens(char *fname, hid_t fa_pl)
{
@@ -924,7 +924,7 @@ test_family_opens(char *fname, hid_t fa_pl)
error:
return -1;
} /* end test_family_opens() */
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/*-------------------------------------------------------------------------
* Function: test_family
@@ -1150,7 +1150,7 @@ error:
* 'newname_individual', etc. in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
static herr_t
test_family_compat(void)
{
@@ -1236,7 +1236,7 @@ error:
return -1;
} /* end test_family_compat() */
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/*-------------------------------------------------------------------------
* Function: test_family_member_fapl
@@ -1376,7 +1376,7 @@ error:
* 'sf_name' in the code below, but early (4.4.7, at least) gcc only
* allows diagnostic pragmas to be toggled outside of functions.
*/
-H5_GCC_DIAG_OFF("format-nonliteral")
+H5_GCC_CLANG_DIAG_OFF("format-nonliteral")
static herr_t
test_multi_opens(char *fname)
{
@@ -1396,7 +1396,7 @@ test_multi_opens(char *fname)
return (fid >= 0 ? FAIL : SUCCEED);
} /* end test_multi_opens() */
-H5_GCC_DIAG_ON("format-nonliteral")
+H5_GCC_CLANG_DIAG_ON("format-nonliteral")
/*-------------------------------------------------------------------------
* Function: test_multi
diff --git a/test/vfd_swmr_bigset_writer.c b/test/vfd_swmr_bigset_writer.c
index 6280af5..956973a 100644
--- a/test/vfd_swmr_bigset_writer.c
+++ b/test/vfd_swmr_bigset_writer.c
@@ -38,9 +38,14 @@
* (or the width and height) of a chunk, and writes a test pattern to
* the dataset on chunk boundaries.
*
+ * For 3D dataset, the extension is always along the first dimension.
+ * e.g. the chunk size is `l` x `m` x `n`, after `i` iterations, the
+ * dataset size becomes `i x l` x `m` x `n`.
+ * It does not test VDS for 3D dataset.
+ *
* The reader should be started with the same user-selectable parameters
* as the writer: iterations, number of datasets, chunk width and
- * height, dimensions.
+ * height and depth, dimensions.
*
* The reader opens the same HDF5 file, reads and re-reads it until all
* `n` datasets appear, and then reads and re-reads the datasets until
@@ -72,7 +77,6 @@
#include "H5Cpkg.h"
#include "H5Fpkg.h"
-// #include "H5Iprivate.h"
#include "H5HGprivate.h"
#include "H5VLprivate.h"
@@ -81,29 +85,40 @@
#ifndef H5_HAVE_WIN32_API
-#include <err.h>
-#include <libgen.h>
-
-#define ROWS 256
-#define COLS 512
-#define RANK 2
-
-static const unsigned int hang_back = 3;
+#define MAX_READ_LEN_IN_SECONDS 2
+#define TICK_LEN 4
+#define MAX_LAG 7
+#define FSP_SIZE 4096
+#define PAGE_BUF_SIZE 4096
+#define ROWS 256
+#define COLS 512
+#define DEPTH 1
+#define RANK2 2
+#define RANK3 3
+#define NUM_ATTEMPTS 100
+#define SKIP_CHUNK 0
+
+/* Calculate the time passed in seconds.
+ * X is the beginning time; Y is the ending time.
+ * Expects X, Y to be struct timespec from the function call HDclock_gettime.
+ */
+#define TIME_PASSED(X, Y) \
+ ((double)((Y.tv_sec - X.tv_sec) * 1000000000 + (Y.tv_nsec - X.tv_nsec))) / 1000000000.0
typedef struct _base {
- hsize_t row, col;
+ hsize_t depth, row, col;
} base_t;
typedef struct _mat {
- unsigned rows, cols;
+ unsigned depth, rows, cols;
uint32_t elt[1];
} mat_t;
typedef struct _quadrant {
- hsize_t start[RANK];
- hsize_t stride[RANK];
- hsize_t block[RANK];
- hsize_t count[RANK];
+ hsize_t start[RANK2];
+ hsize_t stride[RANK2];
+ hsize_t block[RANK2];
+ hsize_t count[RANK2];
hid_t space, src_space;
} quadrant_t;
@@ -114,30 +129,68 @@ typedef struct _sources {
#define MANY_FILES 4
typedef struct {
- hid_t * dataset;
- sources_t * sources;
- hid_t file[MANY_FILES];
- hid_t dapl, filetype, memspace, one_by_one_sid, quadrant_dcpl;
- unsigned ndatasets;
- const char * filename[MANY_FILES];
- char progname[PATH_MAX];
- struct timespec update_interval;
+ hid_t * dataset;
+ sources_t * sources;
+ hid_t file[MANY_FILES];
+ hid_t dapl, filetype, memspace, one_by_one_sid, quadrant_dcpl;
+ unsigned ndatasets;
+ const char *filename[MANY_FILES];
+ char progname[PATH_MAX];
struct {
quadrant_t ul, ur, bl, br, src;
} quadrants;
- unsigned int cols, rows;
+ unsigned int depth, cols, rows;
unsigned int asteps;
unsigned int nsteps;
- bool two_dee;
- bool wait_for_signal;
+ unsigned int part_chunk;
+ unsigned int skip_chunk;
+ unsigned int over_extend;
+ bool expand_2d;
+ bool test_3d;
enum { vds_off, vds_single, vds_multi } vds;
- bool use_vfd_swmr;
- bool writer;
- bool fixed_array;
- hsize_t chunk_dims[RANK];
- hsize_t one_dee_max_dims[RANK];
+ bool use_vfd_swmr;
+ bool use_named_pipe;
+ bool do_perf;
+ bool cross_chunk_read;
+ bool writer;
+ bool fixed_array;
+ bool flush_raw_data;
+ hsize_t chunk_dims[RANK2];
+ hsize_t one_dee_max_dims[RANK2];
+ hsize_t fsp_size;
+ size_t page_buf_size;
+ uint32_t tick_len;
+ uint32_t max_lag;
+ unsigned mdc_init_size;
+ size_t chunk_cache_size;
+ unsigned int deflate_level;
+ struct timespec ival;
} state_t;
+/* Structure to hold info for named pipes */
+typedef struct {
+ const char *fifo_writer_to_reader; /* Name of fifo for writer to reader */
+ const char *fifo_reader_to_writer; /* Name of fifo for reader to writer */
+ int fd_writer_to_reader; /* File ID for fifo from writer to reader */
+ int fd_reader_to_writer; /* File ID for fifo from reader to writer */
+ int notify; /* Value to notify between writer and reader */
+ int verify; /* Value to verify between writer and reader */
+} np_state_t;
+
+typedef struct {
+ unsigned step;
+ struct timespec time;
+} exchange_info_t;
+
+/* Initializations for np_state_t */
+#define NP_INITIALIZER \
+ (np_state_t) \
+ { \
+ .fifo_writer_to_reader = "./fifo_bigset_writer_to_reader", \
+ .fifo_reader_to_writer = "./fifo_bigset_reader_to_writer", .fd_writer_to_reader = -1, \
+ .fd_reader_to_writer = -1, .notify = 0, .verify = 0 \
+ }
+
static inline state_t
state_initializer(void)
{
@@ -147,128 +200,151 @@ state_initializer(void)
.filetype = H5T_NATIVE_UINT32,
.one_by_one_sid = H5I_INVALID_HID,
.quadrant_dcpl = H5I_INVALID_HID,
+ .depth = DEPTH,
.rows = ROWS,
.cols = COLS,
.ndatasets = 5,
.asteps = 10,
.nsteps = 100,
+ .part_chunk = 0,
+ .skip_chunk = SKIP_CHUNK,
+ .over_extend = 1,
.filename = {"", "", "", ""},
- .two_dee = false,
- .wait_for_signal = true,
+ .expand_2d = false,
+ .test_3d = false,
.vds = vds_off,
.use_vfd_swmr = true,
+ .use_named_pipe = true,
+ .do_perf = false,
+ .cross_chunk_read = false,
.writer = true,
.fixed_array = false,
.one_dee_max_dims = {ROWS, H5S_UNLIMITED},
.chunk_dims = {ROWS, COLS},
- .update_interval =
- (struct timespec){.tv_sec = 0, .tv_nsec = 1000000000UL / 30 /* 1/30 second */}};
+ .fsp_size = FSP_SIZE,
+ .page_buf_size = PAGE_BUF_SIZE,
+ .tick_len = TICK_LEN,
+ .max_lag = MAX_LAG,
+ .flush_raw_data = false,
+ .mdc_init_size = 0,
+ .chunk_cache_size = 0,
+ .deflate_level = 0,
+ .ival = (struct timespec){.tv_sec = MAX_READ_LEN_IN_SECONDS, .tv_nsec = 0}};
}
-static void state_init(state_t *, int, char **);
+static bool state_init(state_t *, int, char **);
static const hid_t badhid = H5I_INVALID_HID;
-static hsize_t two_dee_max_dims[RANK];
-
-static uint32_t
-matget(const mat_t *mat, unsigned i, unsigned j)
-{
- assert(i < mat->rows && j < mat->cols);
-
- return mat->elt[i * mat->cols + j];
-}
-
-static void
-matset(mat_t *mat, unsigned i, unsigned j, uint32_t v)
-{
- assert(i < mat->rows && j < mat->cols);
-
- mat->elt[i * mat->cols + j] = v;
-}
-
-static mat_t *
-newmat(unsigned rows, unsigned cols)
-{
- mat_t *mat;
-
- mat = HDmalloc(sizeof(*mat) + (rows * cols - 1) * sizeof(mat->elt[0]));
-
- if (mat == NULL)
- err(EXIT_FAILURE, "%s: HDmalloc", __func__);
-
- mat->rows = rows;
- mat->cols = cols;
-
- return mat;
-}
+static hsize_t two_dee_max_dims[RANK2], three_dee_max_dims[RANK3];
static void
usage(const char *progname)
{
- fprintf(stderr,
- "usage: %s [-F] [-M] [-S] [-V] [-W] [-a steps] [-b] [-c cols]\n"
- " [-d dims]\n"
- " [-n iterations] [-r rows] [-s datasets]\n"
- " [-u milliseconds]\n"
- "\n"
- "-F: fixed maximal dimension for the chunked datasets\n"
- "-M: use virtual datasets and many source\n"
- " files\n"
- "-S: do not use VFD SWMR\n"
- "-V: use virtual datasets and a single\n"
- " source file\n"
- "-W: do not wait for a signal before\n"
- " exiting\n"
- "-a steps: `steps` between adding attributes\n"
- "-b: write data in big-endian byte order\n"
- "-c cols: `cols` columns per chunk\n"
- "-d 1|one|2|two|both: select dataset expansion in one or\n"
- " both dimensions\n"
- "-n iterations: how many times to expand each dataset\n"
- "-r rows: `rows` rows per chunk\n"
- "-s datasets: number of datasets to create\n"
- "-u ms: milliseconds interval between updates\n"
- " to %s.h5\n"
- "\n",
- progname, progname);
+ HDfprintf(
+ stderr,
+ "usage: %s [-C] [-F] [-M] [-P] [-R] [-S] [-V] [-W] [-a steps] [-b] [-c cols]\n"
+ " [-d dims] [-e depth] [-f tick_len] [-g max_lag] [-j skip_chunk] [-k part_chunk]\n"
+ " [-l tick_num] [-n iterations] [-o page_buf_size] [-p fsp_size] [-r rows]\n"
+ " [-s datasets] [-t] [-u over_extend] [-v chunk_cache_size] [-w deflate_level]\n"
+ "\n"
+ "-C: cross-over chunk read during chunk verification\n"
+ "-F: fixed maximal dimension for the chunked datasets\n"
+ "-M: use virtual datasets and many source\n"
+ " files\n"
+ "-N: do not use named pipes\n"
+ "-P: do the performance measurement\n"
+ "-R: flush raw data\n"
+ "-S: do not use VFD SWMR\n"
+ "-V: use virtual datasets and a single\n"
+ " source file\n"
+ "-a steps: `steps` between adding attributes\n"
+ "-b: write data in big-endian byte order\n"
+ "-c cols: `cols` columns of the chunk\n"
+ "-d 1|one|2|two|both: select dataset expansion in one or\n"
+ " both dimensions\n"
+ "-e depth: the first dimension of the 3D chunk\n"
+ "-f tick_len: tick length\n"
+ "-g max_lag: maximal lag\n"
+ "-j skip_chunk: skip the Nth (skip_chunk) chunks during chunk writing\n"
+ "-k part_chunk: the size for partial chunk write (only along the first dimension)\n"
+ "-l tick_num: expected maximal number of ticks from\n"
+ " the writer's finishing creation to the reader's finishing validation\n"
+ "-m mdc_init_size: the initial size of metadata cache in megabytes (must be between 1 and 32MB)\n"
+ "-n iterations: how many times to expand each dataset\n"
+ "-o page_buf_size: page buffer size\n"
+ "-p fsp_size: file space page size\n"
+ "-r rows: `rows` rows of the chunk\n"
+ "-s datasets: number of datasets to create\n"
+ "-t: enable test for 3D datasets (dataset expansion is along one dimension)\n"
+ " currently, 3D datasets isn't tested with VDS\n"
+ "-u over_extend: extend the size of the dataset in multiple chunks or partial chunks\n"
+ "-v chunk_cache_size: the size of raw data chunk cache in bytes\n"
+ "-w deflate_level: the level (0 - 9) of gzip compression\n"
+ "\n",
+ progname);
exit(EXIT_FAILURE);
}
-static void
+static bool
make_quadrant_dataspace(state_t *s, quadrant_t *q)
{
- q->space = H5Screate_simple(NELMTS(s->chunk_dims), s->chunk_dims,
- s->two_dee ? two_dee_max_dims : s->one_dee_max_dims);
+ if ((q->space = H5Screate_simple(NELMTS(s->chunk_dims), s->chunk_dims,
+ s->expand_2d ? two_dee_max_dims : s->one_dee_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
+ }
- if (q->space < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ if (H5Sselect_hyperslab(q->space, H5S_SELECT_SET, q->start, q->stride, q->count, q->block) < 0) {
+ HDfprintf(stderr, "H5Sselect_hyperslab failed\n");
+ TEST_ERROR;
}
- if (H5Sselect_hyperslab(q->space, H5S_SELECT_SET, q->start, q->stride, q->count, q->block) < 0)
- errx(EXIT_FAILURE, "%s: H5Sselect_hyperslab failed", __func__);
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Sclose(q->space);
+ }
+ H5E_END_TRY;
+
+ return false;
}
-static void
+static bool
state_init(state_t *s, int argc, char **argv)
{
unsigned long tmp;
int ch;
unsigned i;
- const hsize_t dims = 1;
- char tfile[PATH_MAX];
+ const hsize_t dims = 1;
+ char * tfile = NULL;
char * end;
- unsigned long millis;
+ size_t rdcc_nslots, rdcc_nbytes;
+ double rdcc_w0;
quadrant_t *const ul = &s->quadrants.ul, *const ur = &s->quadrants.ur, *const bl = &s->quadrants.bl,
*const br = &s->quadrants.br, *const src = &s->quadrants.src;
const char *personality;
*s = state_initializer();
- esnprintf(tfile, sizeof(tfile), "%s", argv[0]);
- esnprintf(s->progname, sizeof(s->progname), "%s", basename(tfile));
- while ((ch = getopt(argc, argv, "FMSVWa:bc:d:n:qr:s:u:")) != -1) {
+ if (H5_basename(argv[0], &tfile) < 0) {
+ HDfprintf(stderr, "H5_basename failed\n");
+ TEST_ERROR;
+ }
+
+ esnprintf(s->progname, sizeof(s->progname), "%s", tfile);
+
+ if (tfile)
+ HDfree(tfile);
+
+ while ((ch = getopt(argc, argv, "CFMNPRSVa:bc:d:e:f:g:j:k:l:m:n:o:p:qr:s:tu:v:w:")) != -1) {
switch (ch) {
+ case 'C':
+ /* This flag indicates cross-over chunk read during data validation */
+ s->cross_chunk_read = true;
+ break;
case 'F':
/* The flag to indicate whether the maximal dimension of the chunked datasets is fixed or
* unlimited */
@@ -277,74 +353,121 @@ state_init(state_t *s, int argc, char **argv)
case 'M':
s->vds = vds_multi;
break;
+ case 'P':
+ s->do_perf = true;
+ break;
+ case 'R':
+ s->flush_raw_data = true;
+ break;
case 'S':
s->use_vfd_swmr = false;
break;
case 'V':
s->vds = vds_single;
break;
- case 'W':
- s->wait_for_signal = false;
+ case 'N':
+ /* Disable named pipes, mainly for running the writer and reader seperately */
+ s->use_named_pipe = false;
break;
case 'd':
if (strcmp(optarg, "1") == 0 || strcmp(optarg, "one") == 0)
- s->two_dee = false;
+ s->expand_2d = false;
else if (strcmp(optarg, "2") == 0 || strcmp(optarg, "two") == 0 ||
strcmp(optarg, "both") == 0)
- s->two_dee = true;
+ s->expand_2d = true;
else {
- errx(EXIT_FAILURE, "bad -d argument \"%s\"", optarg);
+ HDfprintf(stderr, "bad -d argument %s\n", optarg);
+ TEST_ERROR;
}
break;
case 'a':
case 'c':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
case 'n':
+ case 'o':
+ case 'p':
case 'r':
case 's':
+ case 'u':
+ case 'v':
+ case 'w':
errno = 0;
- tmp = strtoul(optarg, &end, 0);
+ tmp = HDstrtoul(optarg, &end, 0);
if (end == optarg || *end != '\0') {
- errx(EXIT_FAILURE, "couldn't parse `-%c` argument `%s`", ch, optarg);
+ HDfprintf(stderr, "couldn't parse -%c argument %s\n", ch, optarg);
+ TEST_ERROR;
}
else if (errno != 0) {
- err(EXIT_FAILURE, "couldn't parse `-%c` argument `%s`", ch, optarg);
+ HDfprintf(stderr, "couldn't parse -%c argument %s\n", ch, optarg);
+ TEST_ERROR;
+ }
+ else if (tmp > UINT_MAX) {
+ HDfprintf(stderr, "-%c argument %lu too large", ch, tmp);
+ TEST_ERROR;
}
- else if (tmp > UINT_MAX)
- errx(EXIT_FAILURE, "`-%c` argument `%lu` too large", ch, tmp);
if ((ch == 'c' || ch == 'r') && tmp == 0) {
- errx(EXIT_FAILURE, "`-%c` argument `%lu` must be >= 1", ch, tmp);
+ HDfprintf(stderr, "-%c argument %lu must be >= 1", ch, tmp);
+ TEST_ERROR;
}
if (ch == 'a')
s->asteps = (unsigned)tmp;
else if (ch == 'c')
s->cols = (unsigned)tmp;
+ else if (ch == 'e')
+ s->depth = (unsigned)tmp;
+ else if (ch == 'f')
+ s->tick_len = (unsigned)tmp;
+ else if (ch == 'g')
+ s->max_lag = (unsigned)tmp;
+ else if (ch == 'j')
+ s->skip_chunk = (unsigned)tmp;
+ else if (ch == 'k')
+ s->part_chunk = (unsigned)tmp;
+ else if (ch == 'l') {
+ /* Translate the tick number to time represented by the timespec struct */
+ float time = (float)(((unsigned)tmp * TICK_LEN) / 10.0);
+ unsigned sec = (unsigned)time;
+ unsigned nsec = (unsigned)((time - sec) * 10 * 1000 * 1000);
+
+ s->ival.tv_sec = sec;
+ s->ival.tv_nsec = nsec;
+ }
+ else if (ch == 'm')
+ s->mdc_init_size = (unsigned)tmp;
else if (ch == 'n')
s->nsteps = (unsigned)tmp;
+ else if (ch == 'o')
+ s->page_buf_size = (unsigned)tmp;
+ else if (ch == 'p')
+ s->fsp_size = (unsigned)tmp;
else if (ch == 'r')
s->rows = (unsigned)tmp;
+ else if (ch == 'u')
+ s->over_extend = (unsigned)tmp;
+ else if (ch == 'v')
+ s->chunk_cache_size = (unsigned)tmp;
+ else if (ch == 'w')
+ s->deflate_level = (unsigned)tmp;
else
s->ndatasets = (unsigned)tmp;
break;
+ case 't':
+ s->test_3d = true;
+ break;
case 'b':
s->filetype = H5T_STD_U32BE;
break;
case 'q':
verbosity = 0;
break;
- case 'u':
- errno = 0;
- millis = strtoul(optarg, &end, 0);
- if (millis == ULONG_MAX && errno == ERANGE) {
- err(EXIT_FAILURE, "option -p argument \"%s\"", optarg);
- }
- else if (*end != '\0') {
- errx(EXIT_FAILURE, "garbage after -p argument \"%s\"", optarg);
- }
- s->update_interval.tv_sec = (time_t)(millis / 1000UL);
- s->update_interval.tv_nsec = (long)((millis * 1000000UL) % 1000000000UL);
- break;
case '?':
default:
usage(s->progname);
@@ -354,29 +477,62 @@ state_init(state_t *s, int argc, char **argv)
argc -= optind;
argv += optind;
- if (argc > 0)
- errx(EXIT_FAILURE, "unexpected command-line arguments");
+ if (argc > 0) {
+ HDfprintf(stderr, "unexpected command-line arguments\n");
+ TEST_ERROR;
+ }
+
+ if (s->vds != vds_off && s->expand_2d) {
+ HDfprintf(stderr, "virtual datasets and 2D datasets are mutually exclusive\n");
+ TEST_ERROR;
+ }
+
+ if (s->test_3d) {
+ if (s->depth < 1) {
+ HDfprintf(stderr, "The depth of 3D dataset can't be less than 1\n");
+ TEST_ERROR;
+ }
+
+ if (s->expand_2d) {
+ HDfprintf(stderr, "3D dataset test doesn't support 2D expansion\n");
+ TEST_ERROR;
+ }
- if (s->vds != vds_off && s->two_dee) {
- errx(EXIT_FAILURE, "virtual datasets and 2D datasets are mutually exclusive");
+ if (s->vds != vds_off) {
+ HDfprintf(stderr, "3D dataset test doesn't support VDS\n");
+ TEST_ERROR;
+ }
}
- s->chunk_dims[0] = s->rows;
- s->chunk_dims[1] = s->cols;
+ s->chunk_dims[0] = s->rows;
+ s->chunk_dims[1] = s->cols;
+
s->one_dee_max_dims[0] = s->rows;
if (s->fixed_array) {
s->one_dee_max_dims[1] = s->cols * s->nsteps;
two_dee_max_dims[0] = s->rows * s->nsteps;
two_dee_max_dims[1] = s->cols * s->nsteps;
+
+ if (s->test_3d) {
+ three_dee_max_dims[0] = s->depth * s->nsteps;
+ three_dee_max_dims[1] = s->rows;
+ three_dee_max_dims[2] = s->cols;
+ }
}
else {
s->one_dee_max_dims[1] = H5S_UNLIMITED;
two_dee_max_dims[0] = two_dee_max_dims[1] = H5S_UNLIMITED;
+
+ if (s->test_3d) {
+ three_dee_max_dims[0] = H5S_UNLIMITED;
+ three_dee_max_dims[1] = s->rows;
+ three_dee_max_dims[2] = s->cols;
+ }
}
if (s->vds != vds_off) {
- const hsize_t half_chunk_dims[RANK] = {s->rows / 2, s->cols / 2};
- hsize_t half_max_dims[RANK];
+ const hsize_t half_chunk_dims[RANK2] = {s->rows / 2, s->cols / 2};
+ hsize_t half_max_dims[RANK2];
if (s->fixed_array) {
half_max_dims[0] = s->rows / 2;
@@ -388,11 +544,14 @@ state_init(state_t *s, int argc, char **argv)
}
if ((s->quadrant_dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Pcreate failed", __func__, __LINE__);
+ HDfprintf(stderr, "H5Pcreate failed\n");
+ TEST_ERROR;
}
- if (H5Pset_chunk(s->quadrant_dcpl, RANK, half_chunk_dims) < 0)
- errx(EXIT_FAILURE, "H5Pset_chunk failed");
+ if (H5Pset_chunk(s->quadrant_dcpl, RANK2, half_chunk_dims) < 0) {
+ HDfprintf(stderr, "H5Pset_chunk failed\n");
+ TEST_ERROR;
+ }
*ul = (quadrant_t){.start = {0, 0},
.stride = {s->rows, s->cols},
@@ -414,72 +573,126 @@ state_init(state_t *s, int argc, char **argv)
.block = {s->rows / 2, s->cols / 2},
.count = {1, H5S_UNLIMITED}};
- make_quadrant_dataspace(s, ul);
- make_quadrant_dataspace(s, ur);
- make_quadrant_dataspace(s, bl);
- make_quadrant_dataspace(s, br);
+ if (!make_quadrant_dataspace(s, ul)) {
+ HDfprintf(stderr, "make_quadrant_dataspace failed\n");
+ TEST_ERROR;
+ }
+
+ if (!make_quadrant_dataspace(s, ur)) {
+ HDfprintf(stderr, "make_quadrant_dataspace failed\n");
+ TEST_ERROR;
+ }
+
+ if (!make_quadrant_dataspace(s, bl)) {
+ HDfprintf(stderr, "make_quadrant_dataspace failed\n");
+ TEST_ERROR;
+ }
+
+ if (!make_quadrant_dataspace(s, br)) {
+ HDfprintf(stderr, "make_quadrant_dataspace failed\n");
+ TEST_ERROR;
+ }
*src = (quadrant_t){.start = {0, 0},
.stride = {s->rows / 2, s->cols / 2},
.block = {s->rows / 2, s->cols / 2},
.count = {1, H5S_UNLIMITED}};
- src->space = H5Screate_simple(RANK, half_chunk_dims, half_max_dims);
-
- if (src->space < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ if ((src->space = H5Screate_simple(RANK2, half_chunk_dims, half_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
}
if (H5Sselect_hyperslab(src->space, H5S_SELECT_SET, src->start, src->stride, src->count, src->block) <
- 0)
- errx(EXIT_FAILURE, "%s: H5Sselect_hyperslab failed", __func__);
-
- ul->src_space = H5Screate_simple(RANK, half_chunk_dims, half_max_dims);
-
- if (ul->src_space < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ 0) {
+ HDfprintf(stderr, "H5Sselect_hyperslab failed\n");
+ TEST_ERROR;
}
- ur->src_space = H5Screate_simple(RANK, half_chunk_dims, half_max_dims);
-
- if (ur->src_space < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ if ((ul->src_space = H5Screate_simple(RANK2, half_chunk_dims, half_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
}
- bl->src_space = H5Screate_simple(RANK, half_chunk_dims, half_max_dims);
-
- if (bl->src_space < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ if ((ur->src_space = H5Screate_simple(RANK2, half_chunk_dims, half_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
}
- br->src_space = H5Screate_simple(RANK, half_chunk_dims, half_max_dims);
+ if ((bl->src_space = H5Screate_simple(RANK2, half_chunk_dims, half_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
+ }
- if (br->src_space < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ if ((br->src_space = H5Screate_simple(RANK2, half_chunk_dims, half_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
}
}
/* space for attributes */
- if ((s->one_by_one_sid = H5Screate_simple(1, &dims, &dims)) < 0)
- errx(EXIT_FAILURE, "H5Screate_simple failed");
+ if ((s->one_by_one_sid = H5Screate_simple(1, &dims, &dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
+ }
- s->dataset = HDmalloc(sizeof(*s->dataset) * s->ndatasets);
- if (s->dataset == NULL)
- err(EXIT_FAILURE, "could not allocate dataset handles");
+ if ((s->dataset = HDmalloc(sizeof(hid_t) * s->ndatasets)) == NULL) {
+ HDfprintf(stderr, "HDmalloc failed\n");
+ TEST_ERROR;
+ }
- s->sources = HDmalloc(sizeof(*s->sources) * s->ndatasets);
- if (s->sources == NULL)
- err(EXIT_FAILURE, "could not allocate quadrant dataset handles");
+ if ((s->sources = HDmalloc(sizeof(*s->sources) * s->ndatasets)) == NULL) {
+ HDfprintf(stderr, "HDmalloc failed\n");
+ TEST_ERROR;
+ }
for (i = 0; i < s->ndatasets; i++) {
s->dataset[i] = badhid;
s->sources[i].ul = s->sources[i].ur = s->sources[i].bl = s->sources[i].br = badhid;
}
- s->memspace = H5Screate_simple(RANK, s->chunk_dims, NULL);
+ if (s->test_3d) {
+ hsize_t dims3[RANK3] = {s->depth, s->chunk_dims[0], s->chunk_dims[1]};
+
+ if (s->part_chunk)
+ dims3[0] = s->part_chunk;
- if (s->memspace < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ if ((s->memspace = H5Screate_simple(RANK3, dims3, NULL)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ hsize_t dims2[RANK2];
+
+ if (s->expand_2d) {
+ dims2[0] = s->chunk_dims[0];
+ dims2[1] = s->chunk_dims[1];
+ }
+ else {
+ dims2[0] = s->chunk_dims[0];
+
+ if (s->part_chunk)
+ dims2[1] = s->part_chunk;
+ else
+ dims2[1] = s->chunk_dims[1];
+ }
+
+ if ((s->memspace = H5Screate_simple(RANK2, dims2, NULL)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ /* The default is zero, meaning no skip */
+ if (s->skip_chunk == 1) {
+ HDfprintf(stderr, "can't skip every chunk\n");
+ TEST_ERROR;
+ }
+
+ if (s->over_extend == 0) {
+ HDfprintf(stderr, "Extension of the dataset can't be zero\n");
+ TEST_ERROR;
}
s->filename[0] = "vfd_swmr_bigset.h5";
@@ -494,52 +707,144 @@ state_init(state_t *s, int argc, char **argv)
s->filename[3] = s->filename[0];
}
- personality = strstr(s->progname, "vfd_swmr_bigset_");
+ personality = HDstrstr(s->progname, "vfd_swmr_bigset_");
- if (personality != NULL && strcmp(personality, "vfd_swmr_bigset_writer") == 0)
+ if (personality != NULL && HDstrcmp(personality, "vfd_swmr_bigset_writer") == 0)
s->writer = true;
- else if (personality != NULL && strcmp(personality, "vfd_swmr_bigset_reader") == 0)
+ else if (personality != NULL && HDstrcmp(personality, "vfd_swmr_bigset_reader") == 0)
s->writer = false;
else {
- errx(EXIT_FAILURE, "unknown personality, expected vfd_swmr_bigset_{reader,writer}");
+ HDfprintf(stderr, "unknown personality, expected vfd_swmr_bigset_{reader,writer}\n");
+ TEST_ERROR;
+ }
+
+ if ((s->dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0) {
+ HDfprintf(stderr, "H5Pcreate failed\n");
+ TEST_ERROR;
+ }
+
+ if (s->chunk_cache_size) {
+ if (H5Pget_chunk_cache(s->dapl, &rdcc_nslots, &rdcc_nbytes, &rdcc_w0) < 0) {
+ HDfprintf(stderr, "H5Pget_chunk_cache failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Pset_chunk_cache(s->dapl, rdcc_nslots, s->chunk_cache_size, rdcc_w0) < 0) {
+ HDfprintf(stderr, "H5Pset_chunk_cache failed\n");
+ TEST_ERROR;
+ }
}
- if ((s->dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
- errx(EXIT_FAILURE, "%s.%d: H5Pcreate failed", __func__, __LINE__);
+ if (s->deflate_level > 9) {
+ HDfprintf(stderr, "deflation level must be between 0 and 9\n");
+ TEST_ERROR;
+ }
+
+ if (s->vds != vds_off && H5Pset_virtual_view(s->dapl, H5D_VDS_FIRST_MISSING) < 0) {
+ HDfprintf(stderr, "H5Pset_virtual_view failed\n");
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(s->quadrant_dcpl);
+ H5Sclose(ul->space);
+ H5Sclose(ur->space);
+ H5Sclose(bl->space);
+ H5Sclose(br->space);
+ H5Sclose(ul->src_space);
+ H5Sclose(ur->src_space);
+ H5Sclose(bl->src_space);
+ H5Sclose(br->src_space);
+ H5Sclose(src->space);
+ H5Sclose(s->one_by_one_sid);
+ H5Sclose(s->memspace);
+ }
+ H5E_END_TRY;
+
+ if (tfile)
+ HDfree(tfile);
+
+ if (s->dataset)
+ HDfree(s->dataset);
- if (H5Pset_chunk_cache(s->dapl, 0, 0, H5D_CHUNK_CACHE_W0_DEFAULT) < 0)
- errx(EXIT_FAILURE, "H5Pset_chunk_cache failed");
+ if (s->sources)
+ HDfree(s->sources);
- if (s->vds != vds_off && H5Pset_virtual_view(s->dapl, H5D_VDS_FIRST_MISSING) < 0)
- errx(EXIT_FAILURE, "H5Pset_virtual_view failed");
+ return false;
}
-static void
+static bool
state_destroy(state_t *s)
{
- size_t i;
-
- if (H5Pclose(s->dapl) < 0)
- errx(EXIT_FAILURE, "H5Pclose(fapl)");
+ size_t i;
+ struct timespec start_time, end_time;
- s->dapl = badhid;
+ if (H5Pclose(s->dapl) < 0) {
+ HDfprintf(stderr, "H5Pclose failed\n");
+ TEST_ERROR;
+ }
if (s->vds != vds_off) {
quadrant_t *const ul = &s->quadrants.ul, *const ur = &s->quadrants.ur, *const bl = &s->quadrants.bl,
*const br = &s->quadrants.br;
if (H5Sclose(ul->src_space) < 0 || H5Sclose(ur->src_space) < 0 || H5Sclose(bl->src_space) < 0 ||
- H5Sclose(br->src_space) < 0)
- errx(EXIT_FAILURE, "H5Sclose failed");
+ H5Sclose(br->src_space) < 0) {
+ HDfprintf(stderr, "H5Sclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Sclose(ul->space) < 0 || H5Sclose(ur->space) < 0 || H5Sclose(bl->space) < 0 ||
+ H5Sclose(br->space) < 0) {
+ HDfprintf(stderr, "H5Sclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Pclose(s->quadrant_dcpl) < 0) {
+ HDfprintf(stderr, "H5Pclose failed\n");
+ TEST_ERROR;
+ }
+ }
- ul->src_space = ur->src_space = bl->src_space = br->src_space = badhid;
+ if (H5Sclose(s->one_by_one_sid) < 0) {
+ HDfprintf(stderr, "H5Sclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Sclose(s->memspace) < 0) {
+ HDfprintf(stderr, "H5Sclose failed\n");
+ TEST_ERROR;
+ }
- if (H5Pclose(s->quadrant_dcpl) < 0)
- errx(EXIT_FAILURE, "H5Pclose(dcpl)");
+ /* The writer ends the tick before closing the file to make the data visible to the reader */
+ if (s->writer && s->use_vfd_swmr) {
+ unsigned long j;
- s->quadrant_dcpl = badhid;
+ if (s->vds != vds_multi) {
+ if (H5Fvfd_swmr_end_tick(s->file[0]) < 0) {
+ HDfprintf(stderr, "H5Fclose failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ for (j = 0; j < NELMTS(s->file); j++)
+ if (H5Fvfd_swmr_end_tick(s->file[j]) < 0) {
+ HDfprintf(stderr, "H5Fclose failed\n");
+ TEST_ERROR;
+ }
+ }
+ }
- /* TBD destroy spaces belonging to quadrants */
+ /* For checking the time spent in file close. It's for running the writer alone */
+ if (s->do_perf) {
+ if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
+ HDfprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
}
for (i = 0; i < NELMTS(s->file); i++) {
@@ -550,12 +855,282 @@ state_destroy(state_t *s)
if (s->vds != vds_multi && i > 0)
continue;
- if (H5Fclose(fid) < 0)
- errx(EXIT_FAILURE, "H5Fclose");
+ if (H5Fclose(fid) < 0) {
+ HDfprintf(stderr, "H5Fclose failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ /* For checking the time spent in file close. It's for running the writer alone */
+ if (s->do_perf) {
+ if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
+ HDfprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
+
+ HDfprintf(stdout, "File close time (for running the writer alone) = %lf seconds\n",
+ TIME_PASSED(start_time, end_time));
+ }
+
+ if (s->dataset)
+ HDfree(s->dataset);
+
+ if (s->sources)
+ HDfree(s->sources);
+
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(s->quadrant_dcpl);
+ H5Sclose(s->one_by_one_sid);
+ H5Sclose(s->memspace);
}
+ H5E_END_TRY;
+
+ if (s->dataset)
+ HDfree(s->dataset);
+
+ if (s->sources)
+ HDfree(s->sources);
+
+ return false;
}
-static void
+/*
+ * Initialize the named pipes for test synchronization.
+ * (This function can go to vfd_swmr_common.c. It's the same as
+ * the one in vfd_swmr_attrdset_writer.c)
+ */
+static bool
+np_init(np_state_t *np, bool writer)
+{
+ *np = NP_INITIALIZER;
+
+ /*
+ * Use two named pipes(FIFO) to coordinate the writer and reader for
+ * two-way communication so that the two sides can move forward together.
+ * One is for the writer to write to the reader.
+ * The other one is for the reader to signal the writer.
+ */
+ if (writer) {
+ /* If the named pipes are present at the start of the test, remove them */
+ if (HDaccess(np->fifo_writer_to_reader, F_OK) == 0)
+ if (HDremove(np->fifo_writer_to_reader) != 0) {
+ HDfprintf(stderr, "HDremove fifo_writer_to_reader failed\n");
+ TEST_ERROR;
+ }
+
+ if (HDaccess(np->fifo_reader_to_writer, F_OK) == 0)
+ if (HDremove(np->fifo_reader_to_writer) != 0) {
+ HDfprintf(stderr, "HDremove fifo_reader_to_writer failed\n");
+ TEST_ERROR;
+ }
+
+ /* Writer creates two named pipes(FIFO) */
+ if (HDmkfifo(np->fifo_writer_to_reader, 0600) < 0) {
+ HDfprintf(stderr, "HDmkfifo fifo_writer_to_reader failed\n");
+ TEST_ERROR;
+ }
+
+ if (HDmkfifo(np->fifo_reader_to_writer, 0600) < 0) {
+ HDfprintf(stderr, "HDmkfifo fifo_reader_to_writer failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ /* Both the writer and reader open the pipes */
+ if ((np->fd_writer_to_reader = HDopen(np->fifo_writer_to_reader, O_RDWR)) < 0) {
+ HDfprintf(stderr, "HDopen fifo_writer_to_reader failed\n");
+ TEST_ERROR;
+ }
+
+ if ((np->fd_reader_to_writer = HDopen(np->fifo_reader_to_writer, O_RDWR)) < 0) {
+ HDfprintf(stderr, "HDopen fifo_reader_to_writer failed\n");
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ return false;
+} /* np_init() */
+
+/*
+ * Close and remove the named pipes.
+ * (This function can go to vfd_swmr_common.c. It's the same as
+ * the one in vfd_swmr_attrdset_writer.c)
+ */
+static bool
+np_close(np_state_t *np, bool writer)
+{
+ /* Both the writer and reader close the named pipes */
+ if (HDclose(np->fd_writer_to_reader) < 0) {
+ HDfprintf(stderr, "HDclose fd_writer_to_reader failed\n");
+ TEST_ERROR;
+ }
+
+ if (HDclose(np->fd_reader_to_writer) < 0) {
+ HDfprintf(stderr, "HDclose fd_reader_to_writer failed\n");
+ TEST_ERROR;
+ }
+
+ /* Reader finishes last and deletes the named pipes */
+ if (!writer) {
+ if (HDremove(np->fifo_writer_to_reader) != 0) {
+ HDfprintf(stderr, "HDremove fifo_writer_to_reader failed\n");
+ TEST_ERROR;
+ }
+
+ if (HDremove(np->fifo_reader_to_writer) != 0) {
+ HDfprintf(stderr, "HDremove fifo_reader_to_writer failed\n");
+ TEST_ERROR;
+ }
+ }
+ return true;
+
+error:
+ return false;
+} /* np_close() */
+
+/* Wait for the writer's notice before starting validation */
+static int
+reader_verify(np_state_t np, int verify)
+{
+ int notify;
+
+ if (HDread(np.fd_writer_to_reader, &notify, sizeof(int)) < 0) {
+ HDfprintf(stderr, "HDread failed\n");
+ TEST_ERROR;
+ }
+
+ if (notify != verify) {
+ HDfprintf(stderr, "expected %d but read %d\n", verify, notify);
+ TEST_ERROR;
+ }
+
+ return 0;
+
+error:
+ return -1;
+}
+
+/* Notify the reader of finishing creation by sending the timestamp
+ * and wait for the reader to finish validation before proceeding */
+static int
+notify_and_wait_for_reader(state_t *s, np_state_t *np)
+{
+ int notify;
+ unsigned int i;
+ struct timespec last = {0, 0};
+
+ /* Get the time when finishing creation */
+ if (HDclock_gettime(CLOCK_MONOTONIC, &last) < 0) {
+ HDfprintf(stderr, "HDclock_gettime failed\n");
+ TEST_ERROR;
+ }
+
+ /* Notify the reader of finishing creation by sending the timestamp */
+ if (HDwrite(np->fd_writer_to_reader, &last, sizeof(last)) < 0) {
+ HDfprintf(stderr, "HDwrite failed\n");
+ TEST_ERROR;
+ }
+
+ /* During the wait, writer makes repeated HDF5 API calls so as to trigger
+ * EOT at approximately the correct time */
+ for (i = 0; i < MAX_LAG + 1; i++) {
+ decisleep(TICK_LEN);
+
+ H5E_BEGIN_TRY
+ {
+ H5Aexists(s->file[0], "nonexistent");
+ }
+ H5E_END_TRY;
+ }
+
+ /* Wait until the reader finishes validating creation */
+ if (HDread(np->fd_reader_to_writer, &notify, sizeof(int)) < 0) {
+ HDfprintf(stderr, "HDread failed\n");
+ TEST_ERROR;
+ }
+
+ if (notify != np->verify) {
+ HDfprintf(stderr, "expected %d but read %d\n", np->verify, notify);
+ TEST_ERROR;
+ }
+
+ return 0;
+
+error:
+ return -1;
+}
+
+/* Receive the notice of the writer finishing dataset creation (timestamp)
+ * Make sure the dataset validation doesn't take longer than the expected time.
+ * This time period is from the writer finishing dataset creation to the reader finishing
+ * the validation of dataset creation */
+static int
+reader_check_time_and_notify_writer(np_state_t *np, state_t s)
+{
+ struct timespec last = {0, 0};
+
+ /* Receive the notice of the writer finishing creation (timestamp) */
+ if (HDread(np->fd_writer_to_reader, &last, sizeof(last)) < 0) {
+ HDfprintf(stderr, "HDread failed\n");
+ TEST_ERROR;
+ }
+
+ /* If the dataset validation takes longer than the expected time, issue a warning.
+ * This time period is from the writer finishing dataset creation to the reader finishing
+ * the validation of dataset creation */
+ if (below_speed_limit(&last, &(s.ival))) {
+ AT();
+ HDfprintf(stderr, "Warning: dataset validation took too long to finish\n");
+ }
+
+ /* Notify the writer that dataset validation is finished */
+ if (HDwrite(np->fd_reader_to_writer, &(np->notify), sizeof(int)) < 0) {
+ HDfprintf(stderr, "HDwrite failed\n");
+ TEST_ERROR;
+ }
+
+ return 0;
+
+error:
+ return -1;
+}
+
+/* Notify the reader by sending the timestamp and the number of chunks written */
+static int
+notify_reader(np_state_t *np, unsigned step)
+{
+ exchange_info_t *last = HDcalloc(1, sizeof(exchange_info_t));
+
+ /* Get the time */
+ if (HDclock_gettime(CLOCK_MONOTONIC, &(last->time)) < 0) {
+ HDfprintf(stderr, "HDclock_gettime failed\n");
+ TEST_ERROR;
+ }
+
+ last->step = step;
+
+ /* Notify the reader by sending the timestamp and the number of chunks written */
+ if (HDwrite(np->fd_writer_to_reader, last, sizeof(exchange_info_t)) < 0) {
+ HDfprintf(stderr, "HDwrite failed");
+ TEST_ERROR;
+ }
+
+ if (last)
+ HDfree(last);
+
+ return 0;
+
+error:
+ return -1;
+}
+
+static bool
create_extensible_dset(state_t *s, unsigned int which)
{
quadrant_t *const ul = &s->quadrants.ul, *const ur = &s->quadrants.ur, *const bl = &s->quadrants.bl,
@@ -563,19 +1138,47 @@ create_extensible_dset(state_t *s, unsigned int which)
char dname[sizeof("/dataset-9999999999")];
char ul_dname[sizeof("/ul-dataset-9999999999")], ur_dname[sizeof("/ur-dataset-9999999999")],
bl_dname[sizeof("/bl-dataset-9999999999")], br_dname[sizeof("/br-dataset-9999999999")];
- hid_t dcpl, ds, filespace;
-
- assert(which < s->ndatasets);
- assert(s->dataset[which] == badhid);
+ hid_t dcpl = H5I_INVALID_HID, dset_id = H5I_INVALID_HID, filespace = H5I_INVALID_HID;
+ hsize_t dims3[3] = {s->depth, s->chunk_dims[0], s->chunk_dims[1]};
esnprintf(dname, sizeof(dname), "/dataset-%d", which);
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Pcreate failed", __func__, __LINE__);
+ HDfprintf(stderr, "H5Pcreate failed\n");
+ TEST_ERROR;
+ }
+
+ if (s->test_3d) {
+ /* The chunk is L x M x N and grows along the first dimension */
+ if (H5Pset_chunk(dcpl, RANK3, dims3) < 0) {
+ HDfprintf(stderr, "H5Pset_chunk for 3D dataset failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ if (H5Pset_chunk(dcpl, RANK2, s->chunk_dims) < 0) {
+ HDfprintf(stderr, "H5Pset_chunk for 2D dataset failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ /* Never write fill value when new chunks are allocated */
+ if (H5Pset_fill_time(dcpl, H5D_FILL_TIME_NEVER) < 0) {
+ HDfprintf(stderr, "H5Pset_fill_time failed\n");
+ TEST_ERROR;
}
- if (H5Pset_chunk(dcpl, RANK, s->chunk_dims) < 0)
- errx(EXIT_FAILURE, "H5Pset_chunk failed");
+ /* Early space allocation */
+ if (H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) {
+ HDfprintf(stderr, "H5Pset_alloc_time failed\n");
+ TEST_ERROR;
+ }
+
+ /* GZIP compression */
+ if (s->deflate_level && H5Pset_deflate(dcpl, s->deflate_level) < 0) {
+ HDfprintf(stderr, "H5Pset_deflate failed\n");
+ TEST_ERROR;
+ }
if (s->vds != vds_off) {
sources_t *const srcs = &s->sources[which];
@@ -585,78 +1188,115 @@ create_extensible_dset(state_t *s, unsigned int which)
esnprintf(bl_dname, sizeof(bl_dname), "/bl-dataset-%d", which);
esnprintf(br_dname, sizeof(br_dname), "/br-dataset-%d", which);
- srcs->ul = H5Dcreate2(s->file[0], ul_dname, s->filetype, ul->src_space, H5P_DEFAULT, s->quadrant_dcpl,
- s->dapl);
-
- if (srcs->ul < 0)
- errx(EXIT_FAILURE, "H5Dcreate(, \"%s\", ) failed", ul_dname);
-
- srcs->ur = H5Dcreate2(s->file[1], ur_dname, s->filetype, ur->src_space, H5P_DEFAULT, s->quadrant_dcpl,
- s->dapl);
-
- if (srcs->ur < 0)
- errx(EXIT_FAILURE, "H5Dcreate(, \"%s\", ) failed", ur_dname);
+ if ((srcs->ul = H5Dcreate2(s->file[0], ul_dname, s->filetype, ul->src_space, H5P_DEFAULT,
+ s->quadrant_dcpl, s->dapl)) < 0) {
+ HDfprintf(stderr, "H5Dcreate2 failed\n");
+ TEST_ERROR;
+ }
- srcs->bl = H5Dcreate2(s->file[2], bl_dname, s->filetype, bl->src_space, H5P_DEFAULT, s->quadrant_dcpl,
- s->dapl);
+ if ((srcs->ur = H5Dcreate2(s->file[1], ur_dname, s->filetype, ur->src_space, H5P_DEFAULT,
+ s->quadrant_dcpl, s->dapl)) < 0) {
+ HDfprintf(stderr, "H5Dcreate2 failed\n");
+ TEST_ERROR;
+ }
- if (srcs->bl < 0)
- errx(EXIT_FAILURE, "H5Dcreate(, \"%s\", ) failed", bl_dname);
+ if ((srcs->bl = H5Dcreate2(s->file[2], bl_dname, s->filetype, bl->src_space, H5P_DEFAULT,
+ s->quadrant_dcpl, s->dapl)) < 0) {
+ HDfprintf(stderr, "H5Dcreate2 failed\n");
+ TEST_ERROR;
+ }
- srcs->br = H5Dcreate2(s->file[3], br_dname, s->filetype, br->src_space, H5P_DEFAULT, s->quadrant_dcpl,
- s->dapl);
+ if ((srcs->br = H5Dcreate2(s->file[3], br_dname, s->filetype, br->src_space, H5P_DEFAULT,
+ s->quadrant_dcpl, s->dapl)) < 0) {
+ HDfprintf(stderr, "H5Dcreate2 failed\n");
+ TEST_ERROR;
+ }
- if (srcs->br < 0)
- errx(EXIT_FAILURE, "H5Dcreate(, \"%s\", ) failed", br_dname);
+ if (H5Pset_virtual(dcpl, ul->space, s->filename[0], ul_dname, src->space) < 0) {
+ HDfprintf(stderr, "H5Pset_virtual failed\n");
+ TEST_ERROR;
+ }
- if (H5Pset_virtual(dcpl, ul->space, s->filename[0], ul_dname, src->space) < 0)
- errx(EXIT_FAILURE, "%s: H5Pset_virtual failed", __func__);
+ if (H5Pset_virtual(dcpl, ur->space, s->filename[1], ur_dname, src->space) < 0) {
+ HDfprintf(stderr, "H5Pset_virtual failed\n");
+ TEST_ERROR;
+ }
- if (H5Pset_virtual(dcpl, ur->space, s->filename[1], ur_dname, src->space) < 0)
- errx(EXIT_FAILURE, "%s: H5Pset_virtual failed", __func__);
+ if (H5Pset_virtual(dcpl, bl->space, s->filename[2], bl_dname, src->space) < 0) {
+ HDfprintf(stderr, "H5Pset_virtual failed\n");
+ TEST_ERROR;
+ }
- if (H5Pset_virtual(dcpl, bl->space, s->filename[2], bl_dname, src->space) < 0)
- errx(EXIT_FAILURE, "%s: H5Pset_virtual failed", __func__);
+ if (H5Pset_virtual(dcpl, br->space, s->filename[3], br_dname, src->space) < 0) {
+ HDfprintf(stderr, "H5Pset_virtual failed\n");
+ TEST_ERROR;
+ }
+ }
- if (H5Pset_virtual(dcpl, br->space, s->filename[3], br_dname, src->space) < 0)
- errx(EXIT_FAILURE, "%s: H5Pset_virtual failed", __func__);
+ if (s->test_3d) {
+ if ((filespace = H5Screate_simple(RANK3, dims3, three_dee_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple 3D dataspace failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ if ((filespace = H5Screate_simple(RANK2, s->chunk_dims,
+ s->expand_2d ? two_dee_max_dims : s->one_dee_max_dims)) < 0) {
+ HDfprintf(stderr, "H5Screate_simple 2D dataspace failed\n");
+ TEST_ERROR;
+ }
}
- filespace = H5Screate_simple(NELMTS(s->chunk_dims), s->chunk_dims,
- s->two_dee ? two_dee_max_dims : s->one_dee_max_dims);
+ if ((dset_id = H5Dcreate2(s->file[0], dname, s->filetype, filespace, H5P_DEFAULT, dcpl, s->dapl)) < 0) {
+ HDfprintf(stderr, "H5Dcreate2 failed\n");
+ TEST_ERROR;
+ }
- if (filespace < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", __func__, __LINE__);
+ if (H5Sclose(filespace) < 0) {
+ HDfprintf(stderr, "H5Sclose failed\n");
+ TEST_ERROR;
}
- ds = H5Dcreate2(s->file[0], dname, s->filetype, filespace, H5P_DEFAULT, dcpl, s->dapl);
+ if (H5Pclose(dcpl) < 0) {
+ HDfprintf(stderr, "H5Pclose failed\n");
+ TEST_ERROR;
+ }
- if (ds < 0)
- errx(EXIT_FAILURE, "H5Dcreate(, \"%s\", ) failed", dname);
+ s->dataset[which] = dset_id;
- if (H5Sclose(filespace) < 0)
- errx(EXIT_FAILURE, "%s: H5Sclose failed", __func__);
+ return true;
- if (H5Pclose(dcpl) < 0)
- errx(EXIT_FAILURE, "%s: H5Pclose failed", __func__);
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Dclose(dset_id);
+ H5Pclose(dcpl);
+ H5Sclose(filespace);
+ }
+ H5E_END_TRY;
- s->dataset[which] = ds;
+ return false;
}
-static void
+static bool
close_extensible_dset(state_t *s, unsigned int which)
{
char dname[sizeof("/dataset-9999999999")];
- hid_t ds;
+ hid_t dset_id = H5I_INVALID_HID;
- assert(which < s->ndatasets);
+ if (which >= s->ndatasets) {
+ HDfprintf(stderr, "index is out of range\n");
+ TEST_ERROR;
+ }
esnprintf(dname, sizeof(dname), "/dataset-%d", which);
- ds = s->dataset[which];
+ dset_id = s->dataset[which];
- if (H5Dclose(ds) < 0)
- errx(EXIT_FAILURE, "H5Dclose failed for \"%s\"", dname);
+ if (H5Dclose(dset_id) < 0) {
+ HDfprintf(stderr, "H5Dclose failed\n");
+ TEST_ERROR;
+ }
s->dataset[which] = badhid;
@@ -664,86 +1304,258 @@ close_extensible_dset(state_t *s, unsigned int which)
sources_t *const srcs = &s->sources[which];
if (H5Dclose(srcs->ul) < 0 || H5Dclose(srcs->ur) < 0 || H5Dclose(srcs->bl) < 0 ||
- H5Dclose(srcs->br) < 0)
- errx(EXIT_FAILURE, "H5Dclose failed");
+ H5Dclose(srcs->br) < 0) {
+ HDfprintf(stderr, "H5Dclose failed\n");
+ TEST_ERROR;
+ }
+ }
- srcs->ul = srcs->ur = srcs->bl = srcs->br = badhid;
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Dclose(dset_id);
}
+ H5E_END_TRY;
+
+ return false;
}
-static void
-open_extensible_dset(state_t *s, unsigned int which)
+static bool
+open_extensible_dset(state_t *s)
{
- hsize_t dims[RANK], maxdims[RANK];
- char dname[sizeof("/dataset-9999999999")];
- hid_t ds, filespace, ty;
- const int tries = 10000;
- int i;
- struct timespec last = {0, 0};
- static const struct timespec ival = {5, 0};
- estack_state_t es;
-
- assert(which < s->ndatasets);
- assert(s->dataset[which] == badhid);
+ hsize_t dims2[RANK2], maxdims2[RANK2];
+ hsize_t dims3[RANK3], maxdims3[RANK3];
+ char dname[sizeof("/dataset-9999999999")];
+ hid_t dset_id, filespace, dtype;
+ int rank;
+ unsigned int which, i;
+
+ for (which = 0; which < s->ndatasets; which++) {
+ esnprintf(dname, sizeof(dname), "/dataset-%d", which);
+
+ /* Tries to open the dataset repeatedly until successful. After trying
+ * NUM_ATTEMPTS times without success, report it as a failure
+ */
+ for (i = 0; i < NUM_ATTEMPTS; i++) {
+ H5E_BEGIN_TRY
+ {
+ dset_id = H5Dopen2(s->file[0], dname, s->dapl);
+ }
+ H5E_END_TRY;
- esnprintf(dname, sizeof(dname), "/dataset-%d", which);
+ if (dset_id >= 0)
+ break;
+ else
+ decisleep(1);
+ }
+
+ if (i == NUM_ATTEMPTS) {
+ HDfprintf(stderr, "chunk verification reached the maximal number of attempts\n");
+ TEST_ERROR;
+ }
- es = disable_estack();
- for (i = 0; i < tries; i++) {
- struct timespec one_tenth = {.tv_sec = 0, .tv_nsec = 1000000000L / 10};
+ if ((dtype = H5Dget_type(dset_id)) < 0) {
+ HDfprintf(stderr, "H5Dget_type failed\n");
+ TEST_ERROR;
+ }
- ds = H5Dopen2(s->file[0], dname, s->dapl);
+ if (H5Tequal(dtype, s->filetype) <= 0) {
+ HDfprintf(stderr, "Unexpected data type\n");
+ TEST_ERROR;
+ }
- if (ds >= 0)
- break;
+ if ((filespace = H5Dget_space(dset_id)) < 0) {
+ HDfprintf(stderr, "H5Dget_space failed\n");
+ TEST_ERROR;
+ }
+
+ if ((rank = H5Sget_simple_extent_ndims(filespace)) < 0) {
+ HDfprintf(stderr, "H5Sget_simple_extent_ndims failed\n");
+ TEST_ERROR;
+ }
+
+ if ((s->test_3d && rank != RANK3) || (!s->test_3d && rank != RANK2)) {
+ HDfprintf(stderr, "Unexpected data rank: %d\n", rank);
+ TEST_ERROR;
+ }
+
+ if (s->test_3d) {
+ if (H5Sget_simple_extent_dims(filespace, dims3, maxdims3) < 0) {
+ HDfprintf(stderr, "H5Sget_simple_extent_dims failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ if (H5Sget_simple_extent_dims(filespace, dims2, maxdims2) < 0) {
+ HDfprintf(stderr, "H5Sget_simple_extent_dims failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ if (H5Sclose(filespace) < 0) {
+ HDfprintf(stderr, "H5Sclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Tclose(dtype) < 0) {
+ HDfprintf(stderr, "H5Tclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (s->test_3d) {
+ if (maxdims3[0] != three_dee_max_dims[0] || maxdims3[1] != three_dee_max_dims[1] ||
+ maxdims3[2] != three_dee_max_dims[2]) {
+ HDfprintf(stderr,
+ "Unexpected maximum dimensions %" PRIuHSIZE " x %" PRIuHSIZE " x %" PRIuHSIZE,
+ maxdims3[0], maxdims3[1], maxdims3[2]);
+ TEST_ERROR;
+ }
+ }
+ else {
+ if (s->expand_2d) {
+ if (maxdims2[0] != two_dee_max_dims[0] || maxdims2[1] != two_dee_max_dims[1] ||
+ maxdims2[0] != maxdims2[1]) {
+ HDfprintf(stderr, "Unexpected maximum dimensions %" PRIuHSIZE " x %" PRIuHSIZE,
+ maxdims2[0], maxdims2[1]);
+ TEST_ERROR;
+ }
+ }
+ else if (maxdims2[0] != s->one_dee_max_dims[0] || maxdims2[1] != s->one_dee_max_dims[1] ||
+ dims2[0] != s->chunk_dims[0]) {
+ HDfprintf(stderr,
+ "Unexpected maximum dimensions %" PRIuHSIZE " x %" PRIuHSIZE
+ " or columns %" PRIuHSIZE,
+ maxdims2[0], maxdims2[1], dims2[1]);
+ }
+ }
- if (below_speed_limit(&last, &ival)) {
- warnx("H5Dopen(, \"%s\", ) transient failure, %d retries remain", dname, tries - i - 1);
+ s->dataset[which] = dset_id;
+ }
+
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Dclose(dset_id);
+ H5Tclose(dtype);
+ H5Sclose(filespace);
+ }
+ H5E_END_TRY;
+
+ return false;
+}
+
+static bool
+create_dsets(state_t s)
+{
+ struct timespec start_time, end_time;
+ unsigned int which;
+
+ /* For checking the time spent in dataset creation. It's for running the writer alone */
+ if (s.do_perf) {
+ if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
+ HDfprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
}
- while (nanosleep(&one_tenth, &one_tenth) == -1 && errno == EINTR)
- ; // do nothing
}
- restore_estack(es);
- if (i == tries) {
- errx(EXIT_FAILURE, "H5Dopen(, \"%s\", ) failed after %d tries", dname, tries);
+ /* Create NDATASETS datasets as the reader is doing verification. So no communication with
+ * the reader during the creation of datasets.
+ */
+ for (which = 0; which < s.ndatasets; which++)
+ if (!create_extensible_dset(&s, which)) {
+ HDfprintf(stderr, "create_extensible_dset failed: number %u\n", which);
+ TEST_ERROR;
+ }
+
+ /* For checking the time spent in dataset creation. It's for running the writer alone */
+ if (s.do_perf) {
+ if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
+ HDfprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
+
+ HDfprintf(stdout, "Dataset creation time (for running the writer alone) = %lf seconds\n",
+ TIME_PASSED(start_time, end_time));
}
- if ((ty = H5Dget_type(ds)) < 0)
- errx(EXIT_FAILURE, "H5Dget_type failed");
+ return true;
- if (H5Tequal(ty, s->filetype) <= 0)
- errx(EXIT_FAILURE, "Unexpected data type");
+error:
+ return false;
+}
- if ((filespace = H5Dget_space(ds)) < 0)
- errx(EXIT_FAILURE, "H5Dget_space failed");
+static uint32_t
+matget(const mat_t *mat, unsigned k, unsigned i, unsigned j)
+{
+ return mat->elt[k * mat->rows * mat->cols + i * mat->cols + j];
+}
- if (H5Sget_simple_extent_ndims(filespace) != RANK)
- errx(EXIT_FAILURE, "Unexpected rank");
+static bool
+matset(mat_t *mat, unsigned k, unsigned i, unsigned j, uint32_t v)
+{
+ if (k >= mat->depth || i >= mat->rows || j >= mat->cols) {
+ HDfprintf(stderr, "index out of boundary\n");
+ TEST_ERROR;
+ }
- if (H5Sget_simple_extent_dims(filespace, dims, maxdims) < 0)
- errx(EXIT_FAILURE, "H5Sget_simple_extent_dims failed");
+ mat->elt[k * mat->rows * mat->cols + i * mat->cols + j] = v;
- if (H5Sclose(filespace) < 0)
- errx(EXIT_FAILURE, "H5Sclose failed");
+ return true;
- filespace = badhid;
+error:
+ return false;
+}
+
+static mat_t *
+newmat(state_t s)
+{
+ mat_t *mat;
+
+ /*
+ * If partial chunk is enabled, the chunk size along the growing dimension
+ * is replaced with the partial size
+ */
+ if (s.test_3d) {
+ if (s.part_chunk) {
+ mat = HDmalloc(sizeof(*mat) + (s.part_chunk * s.rows * s.cols - 1) * sizeof(mat->elt[0]));
+ mat->depth = s.part_chunk;
+ }
+ else {
+ mat = HDmalloc(sizeof(*mat) + (s.depth * s.rows * s.cols - 1) * sizeof(mat->elt[0]));
+ mat->depth = s.depth;
+ }
- if (s->two_dee) {
- if (maxdims[0] != two_dee_max_dims[0] || maxdims[1] != two_dee_max_dims[1] ||
- maxdims[0] != maxdims[1]) {
- errx(EXIT_FAILURE, "Unexpected maximum dimensions %" PRIuHSIZE " x %" PRIuHSIZE, maxdims[0],
- maxdims[1]);
+ mat->rows = s.rows;
+ mat->cols = s.cols;
+ }
+ else {
+ if (s.part_chunk && !s.expand_2d) {
+ mat = HDmalloc(sizeof(*mat) + (s.rows * s.part_chunk - 1) * sizeof(mat->elt[0]));
+ mat->depth = 1;
+ mat->rows = s.rows;
+ mat->cols = s.part_chunk;
+ }
+ else {
+ mat = HDmalloc(sizeof(*mat) + (s.rows * s.cols - 1) * sizeof(mat->elt[0]));
+ mat->depth = 1;
+ mat->rows = s.rows;
+ mat->cols = s.cols;
}
}
- else if (maxdims[0] != s->one_dee_max_dims[0] || maxdims[1] != s->one_dee_max_dims[1] ||
- dims[0] != s->chunk_dims[0]) {
- errx(EXIT_FAILURE,
- "Unexpected maximum dimensions %" PRIuHSIZE " x %" PRIuHSIZE " or columns %" PRIuHSIZE,
- maxdims[0], maxdims[1], dims[1]);
+
+ if (mat == NULL) {
+ HDfprintf(stderr, "HDmalloc failed\n");
+ TEST_ERROR;
}
- s->dataset[which] = ds;
+ return mat;
+
+error:
+ return NULL;
}
/* Write or verify the dataset test pattern in the matrix `mat`.
@@ -752,7 +1564,7 @@ open_extensible_dset(state_t *s, unsigned int which)
*
* If `do_set` is true, write the pattern; otherwise, verify.
*
- * The basic test pattern consists of increasing
+ * For 2D datasets, the basic test pattern consists of increasing
* integers written in nested corners of the dataset
* starting at element (0, 0):
*
@@ -771,101 +1583,254 @@ open_extensible_dset(state_t *s, unsigned int which)
* 15 14 13 12
*
* In an actual pattern, the dataset number, `which`, is added to each integer.
+ *
+ * For 3D datasets, the increment of chunks is along the first dimension.
*/
-static void
+static bool
set_or_verify_matrix(mat_t *mat, unsigned int which, base_t base, bool do_set)
{
- unsigned row, col;
+ unsigned depth, row, col;
+ bool ret = true;
+
+ /* For 2D datasets, `depth` is one */
+ for (depth = 0; depth < mat->depth; depth++) {
+ for (row = 0; row < mat->rows; row++) {
+ for (col = 0; col < mat->cols; col++) {
+ uint32_t v;
+ hsize_t k = base.depth + depth, i = base.row + row, j = base.col + col, u;
+
+ if (j <= i)
+ u = k * 10 + (i + 1) * (i + 1) - 1 - j;
+ else
+ u = k * 10 + j * j + i;
- for (row = 0; row < mat->rows; row++) {
- for (col = 0; col < mat->cols; col++) {
- uint32_t v;
- hsize_t i = base.row + row, j = base.col + col, u;
+ v = (uint32_t)(u + which);
- if (j <= i)
- u = (i + 1) * (i + 1) - 1 - j;
- else
- u = j * j + i;
-
- assert(UINT32_MAX - u >= which);
- v = (uint32_t)(u + which);
- if (do_set)
- matset(mat, row, col, v);
- else if (matget(mat, row, col) != v) {
- errx(EXIT_FAILURE,
- "matrix mismatch "
- "at %" PRIuHSIZE ", %" PRIuHSIZE " (%u, %u), "
- "read %" PRIu32 " expecting %" PRIu32,
- i, j, row, col, matget(mat, row, col), v);
+ if (do_set) {
+ if (!matset(mat, depth, row, col, v)) {
+ HDfprintf(stderr, "data initialization failed\n");
+ ret = false;
+ break;
+ }
+ }
+ else if (matget(mat, depth, row, col) != v) {
+ /* If the data doesn't match, simply return false and
+ * let the caller repeat this step
+ */
+ ret = false;
+ break;
+ }
}
}
}
+
+ return ret;
}
-static void
+static bool
init_matrix(mat_t *mat, unsigned int which, base_t base)
{
- set_or_verify_matrix(mat, which, base, true);
+ return set_or_verify_matrix(mat, which, base, true);
}
-static void
+static bool
verify_matrix(mat_t *mat, unsigned int which, base_t base)
{
- set_or_verify_matrix(mat, which, base, false);
+ return set_or_verify_matrix(mat, which, base, false);
}
-static void
+static unsigned int
+calc_total_steps(state_t s)
+{
+ unsigned int total_steps = 0;
+
+ /* Calculate the number of steps depending on if partial chunk is enabled.
+ * e.g. the original number of steps is 10 and the size of the chunk along
+ * the growing dimension is 6. The number of elements for this dimension is
+ * 60. When the size of the partial chunk along the growing dimension is 5
+ * (treated as the new chunk size), the number of steps becomes 12.
+ */
+ if (s.test_3d) {
+ if (s.part_chunk)
+ total_steps = s.nsteps * s.depth / s.part_chunk;
+ else
+ total_steps = s.nsteps;
+ }
+ else if (s.expand_2d) {
+ total_steps = s.nsteps;
+ }
+ else {
+ if (s.part_chunk)
+ total_steps = s.nsteps * s.cols / s.part_chunk;
+ else
+ total_steps = s.nsteps;
+ }
+
+ return total_steps;
+}
+
+static bool
verify_chunk(state_t *s, hid_t filespace, mat_t *mat, unsigned which, base_t base)
{
- hsize_t offset[RANK] = {base.row, base.col};
- herr_t status;
- hid_t ds;
+ herr_t status;
+ hid_t dset_id;
- assert(which < s->ndatasets);
+ if (which >= s->ndatasets) {
+ HDfprintf(stderr, "the dataset order is bigger than the number of datasets");
+ TEST_ERROR;
+ }
- dbgf(1, "verifying chunk %" PRIuHSIZE ", %" PRIuHSIZE "\n", base.row, base.col);
+ dset_id = s->dataset[which];
- ds = s->dataset[which];
+ if (s->test_3d) {
+ hsize_t offset3[RANK3] = {base.depth, base.row, base.col};
+ hsize_t count3[RANK3] = {s->depth, s->chunk_dims[0], s->chunk_dims[1]};
- status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL, s->chunk_dims, NULL);
+ if (s->part_chunk)
+ count3[0] = s->part_chunk;
- if (status < 0)
- errx(EXIT_FAILURE, "H5Sselect_hyperslab failed");
+ if (H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset3, NULL, count3, NULL) < 0) {
+ HDfprintf(stderr, "H5Sselect_hyperslab failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ hsize_t offset2[RANK2] = {base.row, base.col};
+ hsize_t count2[RANK2];
+
+ if (s->expand_2d) {
+ count2[0] = s->chunk_dims[0];
+ count2[1] = s->chunk_dims[1];
+ }
+ else {
+ count2[0] = s->chunk_dims[0];
+
+ if (s->part_chunk)
+ count2[1] = s->part_chunk;
+ else
+ count2[1] = s->chunk_dims[1];
+ }
- status = H5Dread(ds, H5T_NATIVE_UINT32, s->memspace, filespace, H5P_DEFAULT, mat->elt);
+ if (H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset2, NULL, count2, NULL) < 0) {
+ HDfprintf(stderr, "H5Sselect_hyperslab failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ /* A failure to read the data may indicate the data isn't ready yet. Instead of displaying the error
+ * stack, simply return false and let the caller repeat this step.
+ */
+ H5E_BEGIN_TRY
+ {
+ status = H5Dread(dset_id, H5T_NATIVE_UINT32, s->memspace, filespace, H5P_DEFAULT, mat->elt);
+ }
+ H5E_END_TRY;
if (status < 0)
- errx(EXIT_FAILURE, "H5Dread failed");
+ TEST_ERROR;
+
+ return verify_matrix(mat, which, base);
- verify_matrix(mat, which, base);
+error:
+ return false;
}
-static void
+/* Try to verify a chunk NUM_ATTEMPTS times until the data is correct */
+static bool
+repeat_verify_chunk(state_t *s, hid_t filespace, mat_t *mat, unsigned which, base_t base)
+{
+ hid_t dset_id = s->dataset[which];
+ unsigned i;
+
+ /* If the chunk data isn't good after reading it NUM_ATTEMPTS times, report it as a failure */
+ for (i = 0; i < NUM_ATTEMPTS; i++) {
+ if (verify_chunk(s, filespace, mat, which, base))
+ break;
+ else {
+ decisleep(1);
+
+ /* Refresh the dataset and try it again */
+ if (H5Drefresh(dset_id) < 0) {
+ HDfprintf(stderr, "H5Drefresh failed\n");
+ TEST_ERROR;
+ }
+ }
+ }
+
+ if (i == NUM_ATTEMPTS) {
+ HDfprintf(stderr, "chunk verification reached the maximal number of attempts\n");
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ return false;
+}
+
+static bool
init_and_write_chunk(state_t *s, hid_t filespace, mat_t *mat, unsigned which, base_t base)
{
- hsize_t offset[RANK] = {base.row, base.col};
- herr_t status;
- hid_t ds;
+ hid_t dset_id;
- assert(which < s->ndatasets);
+ dset_id = s->dataset[which];
- ds = s->dataset[which];
+ if (!init_matrix(mat, which, base)) {
+ HDfprintf(stderr, "data initialization failed\n");
+ TEST_ERROR;
+ }
- init_matrix(mat, which, base);
+ if (s->test_3d) {
+ hsize_t offset3[RANK3] = {base.depth, base.row, base.col};
+ hsize_t count3[RANK3] = {s->depth, s->chunk_dims[0], s->chunk_dims[1]};
- status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL, s->chunk_dims, NULL);
+ /* Handling partial chunk */
+ if (s->part_chunk)
+ count3[0] = s->part_chunk;
- if (status < 0)
- errx(EXIT_FAILURE, "H5Sselect_hyperslab failed");
+ /* The chunk dimensions are L x M x N. It grows along the first dimension */
+ if (H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset3, NULL, count3, NULL) < 0) {
+ HDfprintf(stderr, "H5Sselect_hyperslab for 2D dataset failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ hsize_t offset2[RANK2] = {base.row, base.col};
+ hsize_t count2[RANK2];
- status = H5Dwrite(ds, H5T_NATIVE_UINT32, s->memspace, filespace, H5P_DEFAULT, mat->elt);
+ if (s->expand_2d) {
+ count2[0] = s->chunk_dims[0];
+ count2[1] = s->chunk_dims[1];
+ }
+ else {
+ count2[0] = s->chunk_dims[0];
- if (status < 0)
- errx(EXIT_FAILURE, "H5Dwrite failed");
+ /* Handling partial chunk */
+ if (s->part_chunk)
+ count2[1] = s->part_chunk;
+ else
+ count2[1] = s->chunk_dims[1];
+ }
+
+ if (H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset2, NULL, count2, NULL) < 0) {
+ HDfprintf(stderr, "H5Sselect_hyperslab for 2D dataset failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ if (H5Dwrite(dset_id, H5T_NATIVE_UINT32, s->memspace, filespace, H5P_DEFAULT, mat->elt) < 0) {
+ HDfprintf(stderr, "H5Dwrite failed\n");
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ return false;
}
-static void
-verify_dset_attribute(hid_t ds, unsigned int which, unsigned int step)
+static bool
+verify_dset_attribute(hid_t dset_id, unsigned int which, unsigned int step)
{
unsigned int read_step;
hid_t aid;
@@ -875,100 +1840,284 @@ verify_dset_attribute(hid_t ds, unsigned int which, unsigned int step)
dbgf(1, "verifying attribute %s on dataset %u equals %u\n", name, which, step);
- if ((aid = H5Aopen(ds, name, H5P_DEFAULT)) < 0)
- errx(EXIT_FAILURE, "H5Aopen failed");
+ if ((aid = H5Aopen(dset_id, name, H5P_DEFAULT)) < 0) {
+ HDfprintf(stderr, "H5Aopen failed\n");
+ TEST_ERROR;
+ }
- if (H5Aread(aid, H5T_NATIVE_UINT, &read_step) < 0)
- errx(EXIT_FAILURE, "H5Aread failed");
+ if (H5Aread(aid, H5T_NATIVE_UINT, &read_step) < 0) {
+ HDfprintf(stderr, "H5Aread failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Aclose(aid) < 0) {
+ HDfprintf(stderr, "H5Aclose failed\n");
+ TEST_ERROR;
+ }
- if (H5Aclose(aid) < 0)
- errx(EXIT_FAILURE, "H5Aclose failed");
+ if (read_step != step) {
+ HDfprintf(stderr, "expected %u read %u\n", step, read_step);
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Aclose(aid);
+ }
+ H5E_END_TRY;
- if (read_step != step)
- errx(EXIT_FAILURE, "expected %u read %u", step, read_step);
+ return false;
}
-static void
-verify_extensible_dset(state_t *s, unsigned int which, mat_t *mat, unsigned *stepp)
+static bool
+verify_extensible_dset(state_t *s, unsigned int which, mat_t *mat, unsigned finished_step, unsigned last_step)
{
- hid_t ds, filespace;
- hsize_t size[RANK];
+ hid_t dset_id = H5I_INVALID_HID, filespace = H5I_INVALID_HID;
+ hsize_t size2[RANK2], size3[RANK3];
base_t base, last;
- unsigned int ncols, last_step, step;
+ unsigned int nchunks, step, ofs;
+ int i;
- assert(which < s->ndatasets);
+ if (which >= s->ndatasets) {
+ HDfprintf(stderr, "the dataset order is bigger than the number of datasets");
+ TEST_ERROR;
+ }
- ds = s->dataset[which];
+ dset_id = s->dataset[which];
- if (H5Drefresh(ds) < 0)
- errx(EXIT_FAILURE, "H5Drefresh failed");
+ /* Attempt to check the availablity of the chunks for a number times
+ * (NUM_ATTEMPTS) before reporting it as a failure */
+ for (i = 0; i < NUM_ATTEMPTS; i++) {
+ if (H5Drefresh(dset_id) < 0) {
+ HDfprintf(stderr, "H5Drefresh failed\n");
+ TEST_ERROR;
+ }
- filespace = H5Dget_space(ds);
+ if ((filespace = H5Dget_space(dset_id)) < 0) {
+ HDfprintf(stderr, "H5Dget_space failed\n");
+ TEST_ERROR;
+ }
- if (filespace == badhid)
- errx(EXIT_FAILURE, "H5Dget_space failed");
+ if (s->test_3d) {
+ if (H5Sget_simple_extent_dims(filespace, size3, NULL) < 0) {
+ HDfprintf(stderr, "H5Sget_simple_extent_dims failed\n");
+ TEST_ERROR;
+ }
- if (H5Sget_simple_extent_dims(filespace, size, NULL) < 0)
- errx(EXIT_FAILURE, "H5Sget_simple_extent_dims failed");
+ /* Handling partial chunks */
+ if (s->part_chunk)
+ nchunks = (unsigned)size3[0] / s->part_chunk;
+ else
+ nchunks = (unsigned)size3[0] / s->depth;
+ }
+ else {
+ if (H5Sget_simple_extent_dims(filespace, size2, NULL) < 0) {
+ HDfprintf(stderr, "H5Sget_simple_extent_dims failed\n");
+ TEST_ERROR;
+ }
- ncols = (unsigned)(size[1] / s->chunk_dims[1]);
- if (ncols < hang_back)
- goto out;
+ /* Handling partial chunks */
+ if (s->part_chunk)
+ nchunks = (unsigned)(size2[1] / s->part_chunk);
+ else
+ nchunks = (unsigned)(size2[1] / s->chunk_dims[1]);
+ }
- last_step = ncols - hang_back;
+ /* Make sure the chunks show up on the reader side. Otherwise sleep a while and try again */
+ if (nchunks >= last_step)
+ break;
+ else
+ decisleep(1);
+ }
- for (step = *stepp; step <= last_step; step++) {
- const unsigned ofs = step % 2;
+ if (i == NUM_ATTEMPTS) {
+ HDfprintf(stderr, "chunk verification reached the maximal number of attempts");
+ TEST_ERROR;
+ }
+ for (step = finished_step; step < last_step; step++) {
dbgf(1, "%s: which %u step %u\n", __func__, which, step);
- if (s->two_dee) {
- size[0] = s->chunk_dims[0] * (1 + step);
- size[1] = s->chunk_dims[1] * (1 + step);
- last.row = s->chunk_dims[0] * step + ofs;
- last.col = s->chunk_dims[1] * step + ofs;
+ if (s->skip_chunk && step % s->skip_chunk == 0)
+ continue;
+
+ /* Read data that randomly crosses over chunks. But it should not happen to
+ * the last chunk being written
+ */
+ if (s->cross_chunk_read) {
+ if (step == last_step - 1)
+ ofs = 0;
+ else
+ ofs = step % 2;
}
- else {
- size[0] = s->chunk_dims[0];
- size[1] = s->chunk_dims[1] * (1 + step);
+ else
+ ofs = 0;
+
+ if (s->test_3d) {
+ if (s->part_chunk) {
+ last.depth = s->part_chunk * step + ofs;
+ }
+ else {
+ last.depth = s->depth * step + ofs;
+ }
+
last.row = 0;
- last.col = s->chunk_dims[1] * step + ofs;
+ last.col = 0;
}
+ else {
+ last.depth = 0;
- dbgf(1, "new size %" PRIuHSIZE ", %" PRIuHSIZE "\n", size[0], size[1]);
- dbgf(1, "last row %" PRIuHSIZE " col %" PRIuHSIZE "\n", last.row, last.col);
+ if (s->expand_2d) {
+ last.row = s->chunk_dims[0] * step + ofs;
+ last.col = s->chunk_dims[1] * step + ofs;
+ }
+ else {
+ last.row = 0;
+
+ if (s->part_chunk) {
+ last.col = s->part_chunk * step + ofs;
+ }
+ else {
+ last.col = s->chunk_dims[1] * step + ofs;
+ }
+ }
+ }
- if (s->two_dee) {
+ if (s->test_3d)
+ dbgf(1, "last row %" PRIuHSIZE " col %" PRIuHSIZE " depth %" PRIuHSIZE "\n", last.row, last.col,
+ last.depth);
+ else
+ dbgf(1, "last row %" PRIuHSIZE " col %" PRIuHSIZE "\n", last.row, last.col);
+ if (s->test_3d || !s->expand_2d) {
+ if (!repeat_verify_chunk(s, filespace, mat, which, last)) {
+ HDfprintf(stderr, "chunk verification failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
/* Down the right side, intersecting the bottom row. */
- base.col = last.col;
- for (base.row = ofs; base.row <= last.row; base.row += s->chunk_dims[0]) {
- verify_chunk(s, filespace, mat, which, base);
+ base.col = last.col;
+ base.depth = 0;
+ for (base.row = 0; base.row <= last.row; base.row += s->chunk_dims[0]) {
+ if (!repeat_verify_chunk(s, filespace, mat, which, base)) {
+ HDfprintf(stderr, "chunk verification failed\n");
+ TEST_ERROR;
+ }
}
/* Across the bottom, stopping before the last column to
* avoid re-reading the bottom-right chunk.
*/
base.row = last.row;
- for (base.col = ofs; base.col < last.col; base.col += s->chunk_dims[1]) {
- verify_chunk(s, filespace, mat, which, base);
+ for (base.col = 0; base.col < last.col; base.col += s->chunk_dims[1]) {
+ if (!repeat_verify_chunk(s, filespace, mat, which, base)) {
+ HDfprintf(stderr, "chunk verification failed\n");
+ TEST_ERROR;
+ }
}
}
- else {
- verify_chunk(s, filespace, mat, which, last);
+
+ if (s->asteps != 0 && step % s->asteps == 0) {
+ if (!verify_dset_attribute(dset_id, which, step)) {
+ HDfprintf(stderr, "verify_dset_attribute failed\n");
+ TEST_ERROR;
+ }
}
- if (s->asteps != 0 && step % s->asteps == 0)
- verify_dset_attribute(ds, which, step);
}
- *stepp = step;
+ return true;
-out:
- if (H5Sclose(filespace) < 0)
- errx(EXIT_FAILURE, "H5Sclose failed");
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Sclose(filespace);
+ }
+ H5E_END_TRY;
+
+ return false;
}
-static void
+static bool
+verify_dsets(state_t s, np_state_t *np, mat_t *mat)
+{
+ unsigned finished_step = 0;
+ unsigned which;
+ unsigned counter = 0;
+ unsigned total_steps = 0;
+ double passed_time = 0.0, total_time = 0.0, min_time = 1000000.0, max_time = 0.0;
+ exchange_info_t last;
+ struct timespec end_time;
+
+ total_steps = calc_total_steps(s);
+
+ do {
+ /* Receive the notice of the writer finishing creation,
+ * including the number of chunks finished and the timestamp
+ */
+ if (s.use_named_pipe && HDread(np->fd_writer_to_reader, &last, sizeof(last)) < 0) {
+ HDfprintf(stderr, "HDread failed\n");
+ TEST_ERROR;
+ }
+
+ for (which = 0; which < s.ndatasets; which++) {
+ /* Verify the chunks starting from the finished one in last round
+ * to the ones written in this round
+ */
+ if (!verify_extensible_dset(&s, which, mat, finished_step, last.step)) {
+ HDfprintf(stderr, "verify_extensible_dset failed\n");
+ TEST_ERROR;
+ }
+
+ /* Reset the finished one */
+ finished_step = last.step;
+ }
+
+ /* Make sure the chunk verification doesn't take longer than the expected time.
+ * This time period is from the writer finishing chunks to the reader finishing
+ * the validation of the chunks */
+ if (s.use_named_pipe && below_speed_limit(&(last.time), &(s.ival))) {
+ AT();
+ HDfprintf(stderr, "verify_extensible_dset took too long to finish\n");
+ }
+
+ /* For checking the time lapse between the writer's finishing writing a batch of chunks
+ * within a tick and the reader's finishing verifying those chunks
+ */
+ if (s.use_named_pipe && s.do_perf) {
+ if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
+ HDfprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
+
+ counter++;
+ passed_time = TIME_PASSED(last.time, end_time);
+
+ total_time += passed_time;
+
+ if (passed_time > max_time)
+ max_time = passed_time;
+
+ if (passed_time < min_time)
+ min_time = passed_time;
+ }
+ } while (finished_step < total_steps);
+
+ /* Print out the performance information */
+ if (s.use_named_pipe && s.do_perf && counter)
+ HDfprintf(stdout, "Dataset verification: mean time = %lf, max time = %lf, min time = %lf\n",
+ total_time / (double)counter, max_time, min_time);
+
+ return true;
+
+error:
+ return false;
+}
+
+static bool
add_dset_attribute(const state_t *s, hid_t ds, hid_t sid, unsigned int which, unsigned int step)
{
hid_t aid;
@@ -978,115 +2127,325 @@ add_dset_attribute(const state_t *s, hid_t ds, hid_t sid, unsigned int which, un
dbgf(1, "setting attribute %s on dataset %u to %u\n", name, which, step);
- if ((aid = H5Acreate2(ds, name, s->filetype, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- errx(EXIT_FAILURE, "H5Acreate2 failed");
+ if ((aid = H5Acreate2(ds, name, s->filetype, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
+ HDfprintf(stderr, "H5Acreate2 failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Awrite(aid, H5T_NATIVE_UINT, &step) < 0) {
+ HDfprintf(stderr, "H5Awrite failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Aclose(aid) < 0) {
+ HDfprintf(stderr, "H5Aclose failed\n");
+ TEST_ERROR;
+ }
- if (H5Awrite(aid, H5T_NATIVE_UINT, &step) < 0)
- errx(EXIT_FAILURE, "H5Awrite failed");
- if (H5Aclose(aid) < 0)
- errx(EXIT_FAILURE, "H5Aclose failed");
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Aclose(aid);
+ }
+ H5E_END_TRY;
+
+ return false;
}
-static void
+static bool
write_extensible_dset(state_t *s, unsigned int which, unsigned int step, mat_t *mat)
{
- hid_t ds, filespace;
- hsize_t size[RANK];
+ hid_t dset_id = H5I_INVALID_HID, filespace = H5I_INVALID_HID;
+ hsize_t size2[RANK2], size3[RANK3];
base_t base, last;
+ char dname[sizeof("/dataset-9999999999")];
+
+ esnprintf(dname, sizeof(dname), "/dataset-%d", which);
dbgf(1, "%s: which %u step %u\n", __func__, which, step);
- assert(which < s->ndatasets);
+ if (which >= s->ndatasets) {
+ HDfprintf(stderr, "index is out of range\n");
+ TEST_ERROR;
+ }
- ds = s->dataset[which];
+ dset_id = s->dataset[which];
- if (s->asteps != 0 && step % s->asteps == 0)
- add_dset_attribute(s, ds, s->one_by_one_sid, which, step);
+ if (s->asteps != 0 && step % s->asteps == 0) {
+ if (!add_dset_attribute(s, dset_id, s->one_by_one_sid, which, step)) {
+ HDfprintf(stderr, "add_dset_attribute failed\n");
+ TEST_ERROR;
+ }
+ }
- if (s->two_dee) {
- size[0] = s->chunk_dims[0] * (1 + step);
- size[1] = s->chunk_dims[1] * (1 + step);
- last.row = s->chunk_dims[0] * step;
- last.col = s->chunk_dims[1] * step;
+ /* Handling both over extension of the datasets and partial chunks. Datasets
+ * can be extended multiple chunks instead of one chunk at a time.
+ * e.g. if the over extension is set to 10 chunks, the datasets are extended
+ * 10 chunks along the growing dimension after every 10 chunks are written.
+ */
+ if (s->test_3d) {
+ if (s->part_chunk) {
+ size3[0] = s->over_extend * s->part_chunk * (1 + step / s->over_extend);
+ last.depth = s->part_chunk * step;
+ }
+ else {
+ size3[0] = s->over_extend * s->depth * (1 + step / s->over_extend);
+ last.depth = s->depth * step;
+ }
+
+ size3[1] = s->chunk_dims[0];
+ size3[2] = s->chunk_dims[1];
+
+ last.row = 0;
+ last.col = 0;
}
else {
- size[0] = s->chunk_dims[0];
- size[1] = s->chunk_dims[1] * (1 + step);
- last.row = 0;
- last.col = s->chunk_dims[1] * step;
+ if (s->expand_2d) {
+ size2[0] = s->over_extend * s->chunk_dims[0] * (1 + step / s->over_extend);
+ size2[1] = s->over_extend * s->chunk_dims[1] * (1 + step / s->over_extend);
+
+ last.row = s->chunk_dims[0] * step;
+ last.col = s->chunk_dims[1] * step;
+ }
+ else {
+ size2[0] = s->chunk_dims[0];
+ last.row = 0;
+
+ if (s->part_chunk) {
+ size2[1] = s->over_extend * s->part_chunk * (1 + step / s->over_extend);
+ last.col = s->part_chunk * step;
+ }
+ else {
+ size2[1] = s->over_extend * s->chunk_dims[1] * (1 + step / s->over_extend);
+ last.col = s->chunk_dims[1] * step;
+ }
+ }
+ last.depth = 0;
}
- dbgf(1, "new size %" PRIuHSIZE ", %" PRIuHSIZE "\n", size[0], size[1]);
+ if (s->test_3d)
+ dbgf(1, "new size %" PRIuHSIZE ", %" PRIuHSIZE ", %" PRIuHSIZE "\n", size3[0], size3[1], size3[2]);
+ else
+ dbgf(1, "new size %" PRIuHSIZE ", %" PRIuHSIZE "\n", size2[0], size2[1]);
if (s->vds != vds_off) {
- const hsize_t half_size[RANK] = {size[0] / 2, size[1] / 2};
- sources_t *const srcs = &s->sources[which];
+ const hsize_t half_size[RANK2] = {size2[0] / 2, size2[1] / 2};
+ sources_t *const srcs = &s->sources[which];
if (H5Dset_extent(srcs->ul, half_size) < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Dset_extent failed", __func__, __LINE__);
+ HDfprintf(stderr, "H5Dset_extent failed\n");
+ TEST_ERROR;
}
+
if (H5Dset_extent(srcs->ur, half_size) < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Dset_extent failed", __func__, __LINE__);
+ HDfprintf(stderr, "H5Dset_extent failed\n");
+ TEST_ERROR;
}
+
if (H5Dset_extent(srcs->bl, half_size) < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Dset_extent failed", __func__, __LINE__);
+ HDfprintf(stderr, "H5Dset_extent failed\n");
+ TEST_ERROR;
}
+
if (H5Dset_extent(srcs->br, half_size) < 0) {
- errx(EXIT_FAILURE, "%s.%d: H5Dset_extent failed", __func__, __LINE__);
+ HDfprintf(stderr, "H5Dset_extent failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ /* Handling over extension. Making sure the dataset size doesn't exceed the fixed maximal size */
+ if (step % s->over_extend == 0) {
+ if (s->test_3d) {
+ if (size3[0] <= three_dee_max_dims[0] && H5Dset_extent(dset_id, size3) < 0) {
+ HDfprintf(stderr, "H5Dset_extent for 3D dataset failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ if ((s->expand_2d && size2[0] <= two_dee_max_dims[0] && size2[0] <= two_dee_max_dims[0]) ||
+ (!s->expand_2d && size2[1] <= two_dee_max_dims[1])) {
+ if (H5Dset_extent(dset_id, size2) < 0) {
+ HDfprintf(stderr, "H5Dset_extent for 2D dataset failed\n");
+ TEST_ERROR;
+ }
+ }
+ }
}
}
- else if (H5Dset_extent(ds, size) < 0)
- errx(EXIT_FAILURE, "H5Dset_extent failed");
-
- filespace = H5Dget_space(ds);
- if (filespace == badhid)
- errx(EXIT_FAILURE, "H5Dget_space failed");
+ if ((filespace = H5Dget_space(dset_id)) < 0) {
+ HDfprintf(stderr, "H5Dget_space failed\n");
+ TEST_ERROR;
+ }
- if (s->two_dee) {
- base.col = last.col;
+ if (s->test_3d || !s->expand_2d) {
+ if (!init_and_write_chunk(s, filespace, mat, which, last)) {
+ HDfprintf(stderr, "init_and_write_chunk failed\n");
+ TEST_ERROR;
+ }
+ }
+ else if (s->expand_2d) {
+ base.col = last.col;
+ base.depth = 0;
for (base.row = 0; base.row <= last.row; base.row += s->chunk_dims[0]) {
dbgf(1, "writing chunk %" PRIuHSIZE ", %" PRIuHSIZE "\n", base.row, base.col);
- init_and_write_chunk(s, filespace, mat, which, base);
+ if (!init_and_write_chunk(s, filespace, mat, which, base)) {
+ HDfprintf(stderr, "init_and_write_chunk failed\n");
+ TEST_ERROR;
+ }
}
base.row = last.row;
for (base.col = 0; base.col < last.col; base.col += s->chunk_dims[1]) {
dbgf(1, "writing chunk %" PRIuHSIZE ", %" PRIuHSIZE "\n", base.row, base.col);
- init_and_write_chunk(s, filespace, mat, which, base);
+ if (!init_and_write_chunk(s, filespace, mat, which, base)) {
+ HDfprintf(stderr, "init_and_write_chunk failed\n");
+ TEST_ERROR;
+ }
}
}
- else {
- init_and_write_chunk(s, filespace, mat, which, last);
+
+ if (H5Sclose(filespace) < 0) {
+ HDfprintf(stderr, "H5Sclose failed\n");
+ TEST_ERROR;
}
- if (H5Sclose(filespace) < 0)
- errx(EXIT_FAILURE, "H5Sclose failed");
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Sclose(filespace);
+ }
+ H5E_END_TRY;
+
+ return false;
+}
+
+static bool
+write_dsets(state_t s, np_state_t *np, mat_t *mat)
+{
+ unsigned last_step, step, total_steps, which;
+ unsigned long long old_tick_num;
+ H5F_t * f = NULL;
+ struct timespec start_time, end_time;
+
+ if (NULL == (f = (H5F_t *)H5VL_object(s.file[0]))) {
+ HDfprintf(stderr, "H5VL_object failed\n");
+ TEST_ERROR;
+ }
+
+ /* For checking the time spent in writing data. It's for running the writer alone */
+ if (s.do_perf) {
+ if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
+ HDfprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
+ }
+
+ old_tick_num = f->shared->tick_num;
+
+ /* Write as many as chunks within the same tick number before notifying
+ * the reader to verify them. Take account of partial chunk write
+ * here by multiplying the dividing factor for partial chunk. Treat each
+ * partial chunk as if it's a chunk.
+ */
+ total_steps = calc_total_steps(s);
+
+ for (step = 0; step < total_steps; step++) {
+ /* Write as many as chunks before the tick number changes */
+ if (f->shared->tick_num == old_tick_num) {
+ if (!s.skip_chunk || (s.skip_chunk && step % s.skip_chunk != 0)) {
+ for (which = 0; which < s.ndatasets; which++) {
+ dbgf(2, "step %d which %d\n", step, which);
+ if (!write_extensible_dset(&s, which, step, mat)) {
+ HDfprintf(stderr, "write_extensible_dset failed\n");
+ TEST_ERROR;
+ }
+ }
+ }
+ }
+
+ /* Notify the reader to start verification by
+ * sending the timestamp and the number of chunks written
+ */
+ if (f->shared->tick_num > old_tick_num || step == (total_steps - 1)) {
+ last_step = step + 1;
+ if (s.use_named_pipe && notify_reader(np, last_step) < 0) {
+ HDfprintf(stderr, "notify_reader failed\n");
+ TEST_ERROR;
+ }
+
+ old_tick_num = f->shared->tick_num;
+ }
+ }
+
+ /* For checking the time spent in writing data. It's for running the writer alone */
+ if (s.do_perf) {
+ double throughput;
+ double time_passed;
+
+ if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
+ HDfprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
+
+ time_passed = TIME_PASSED(start_time, end_time);
+
+ /* Calculate the write speed */
+ if (s.test_3d)
+ throughput =
+ ((double)(sizeof(unsigned int) * s.depth * s.rows * s.cols * s.nsteps * s.ndatasets)) /
+ time_passed;
+ else
+ throughput =
+ ((double)(sizeof(unsigned int) * s.rows * s.cols * s.nsteps * s.ndatasets)) / time_passed;
+
+ /* Print out the performance information */
+ HDfprintf(stdout,
+ "Dataset write time (for running the writer alone) = %lf seconds, write speed = %.2lf "
+ "bytes/second\n",
+ time_passed, throughput);
+ }
+
+ return true;
+
+error:
+ return false;
}
int
main(int argc, char **argv)
{
- mat_t * mat;
- hid_t fcpl;
- sigset_t oldsigs;
- herr_t ret;
- unsigned step, which;
- state_t s;
- size_t i;
-
- state_init(&s, argc, argv);
+ mat_t * mat;
+ hid_t fcpl = H5I_INVALID_HID;
+ unsigned which;
+ state_t s;
+ np_state_t np;
+ size_t i;
+
+ if (!state_init(&s, argc, argv)) {
+ HDfprintf(stderr, "state_init failed\n");
+ TEST_ERROR;
+ }
- if ((mat = newmat(s.rows, s.cols)) == NULL)
- err(EXIT_FAILURE, "%s: could not allocate matrix", __func__);
+ if ((mat = newmat(s)) == NULL) {
+ HDfprintf(stderr, "could not allocate matrix\n");
+ TEST_ERROR;
+ }
/* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
- if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, 4096)) < 0)
- errx(EXIT_FAILURE, "H5Pcreate");
+ if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.fsp_size)) < 0) {
+ HDfprintf(stderr, "vfd_swmr_create_fcpl failed\n");
+ TEST_ERROR;
+ }
for (i = 0; i < NELMTS(s.file); i++) {
hid_t fapl;
H5F_vfd_swmr_config_t config;
+ H5AC_cache_config_t mdc_config;
if (s.vds != vds_multi && i > 0) {
s.file[i] = s.file[0];
@@ -1094,94 +2453,191 @@ main(int argc, char **argv)
}
/* config, tick_len, max_lag, writer, flush_raw_data, md_pages_reserved, md_file_path */
- init_vfd_swmr_config(&config, 4, 7, s.writer, TRUE, 128, "./bigset-shadow-%zu", i);
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, s.writer, s.flush_raw_data, 128,
+ "./bigset-shadow-%zu", i);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
- fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, 4096, &config);
+ if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, s.page_buf_size, &config)) < 0) {
+ HDfprintf(stderr, "vfd_swmr_create_fapl failed");
+ TEST_ERROR;
+ }
+
+ /* Set the initial size for the metadata cache between 1 and 32 in megabytes.
+ * Zero means using the default value, which is no-op.
+ */
+ if (s.mdc_init_size) {
+ mdc_config.version = H5AC__CURR_CACHE_CONFIG_VERSION;
- if (fapl < 0)
- errx(EXIT_FAILURE, "vfd_swmr_create_fapl");
+ if (H5Pget_mdc_config(fapl, &mdc_config) < 0) {
+ HDfprintf(stderr, "H5Pget_mdc_config failed");
+ TEST_ERROR;
+ }
+
+ /* Convert the value to megabytes */
+ mdc_config.set_initial_size = TRUE;
+ mdc_config.initial_size = s.mdc_init_size * 1024 * 1024;
+
+ if (H5Pset_mdc_config(fapl, &mdc_config) < 0) {
+ HDfprintf(stderr, "H5Pset_mdc_config failed");
+ TEST_ERROR;
+ }
+ }
s.file[i] = s.writer ? H5Fcreate(s.filename[i], H5F_ACC_TRUNC, fcpl, fapl)
: H5Fopen(s.filename[i], H5F_ACC_RDONLY, fapl);
- if (s.file[i] == badhid)
- errx(EXIT_FAILURE, s.writer ? "H5Fcreate" : "H5Fopen");
+ if (s.file[i] == badhid) {
+ HDfprintf(stderr, s.writer ? "H5Fcreate failed" : "H5Fopen failed");
+ TEST_ERROR;
+ }
- if (H5Pclose(fapl) < 0)
- errx(EXIT_FAILURE, "H5Pclose(fapl)");
+ if (H5Pclose(fapl) < 0) {
+ HDfprintf(stderr, "H5Pclose failed\n");
+ TEST_ERROR;
+ }
}
- block_signals(&oldsigs);
+ /* Initiailze named pipes */
+ if (s.use_named_pipe && !np_init(&np, s.writer)) {
+ HDfprintf(stderr, "np_init() failed\n");
+ TEST_ERROR;
+ }
if (s.writer) {
- for (which = 0; which < s.ndatasets; which++)
- create_extensible_dset(&s, which);
-
- for (step = 0; step < s.nsteps; step++) {
- for (which = 0; which < s.ndatasets; which++) {
- dbgf(2, "step %d which %d\n", step, which);
- write_extensible_dset(&s, which, step, mat);
- if (s.ndatasets <= s.nsteps)
- nanosleep(&s.update_interval, NULL);
+ /* Writer tells reader to start */
+ np.notify = 1;
+ if (s.use_named_pipe && HDwrite(np.fd_writer_to_reader, &np.notify, sizeof(int)) < 0) {
+ HDfprintf(stderr, "HDwrite failed\n");
+ TEST_ERROR;
+ }
+
+ /* Creates multiple datasets */
+ if (!create_dsets(s)) {
+ HDfprintf(stderr, "create_dsets failed");
+ TEST_ERROR;
+ }
+
+ /* Call H5Fvfd_swmr_end_tick to end the tick. No communication with the reader in this step */
+ if (s.use_vfd_swmr && s.use_named_pipe) {
+ unsigned long j;
+
+ if (s.vds != vds_multi) {
+ if (H5Fvfd_swmr_end_tick(s.file[0]) < 0) {
+ HDfprintf(stderr, "H5Fvfd_swmr_end_tick failed\n");
+ TEST_ERROR;
+ }
+ }
+ else {
+ for (j = 0; j < NELMTS(s.file); j++)
+ if (H5Fvfd_swmr_end_tick(s.file[j]) < 0) {
+ HDfprintf(stderr, "H5Fvfd_swmr_end_tick failed\n");
+ TEST_ERROR;
+ }
}
- if (s.ndatasets > s.nsteps)
- nanosleep(&s.update_interval, NULL);
+ }
+
+ /* Notify the reader of finishing dataset creation by sending the timestamp
+ * and wait for the reader to finish validation before proceeding */
+ np.verify = 2;
+ if (s.use_named_pipe && notify_and_wait_for_reader(&s, &np) < 0) {
+ HDfprintf(stderr, "notify_and_wait_for_reader failed\n");
+ TEST_ERROR;
+ }
+
+ /* Start to write chunks. The writer writes as many chunks as possible within a tick, then
+ * notify the reader. But it doesn't receive back the reader's notice. */
+ if (!write_dsets(s, &np, mat)) {
+ fprintf(stderr, "write_dsets failed");
+ TEST_ERROR;
}
}
else {
- unsigned *nextstep = calloc(s.ndatasets, sizeof(*nextstep));
- unsigned finished_step;
-
- if (nextstep == NULL)
- err(EXIT_FAILURE, "could not allocate `nextstep` array");
-
- for (which = s.ndatasets; which > 0; which--)
- open_extensible_dset(&s, which - 1);
-
- do {
- finished_step = UINT_MAX; /* the greatest step finished on
- * *all* datasets
- */
-
- for (which = s.ndatasets; which-- > 0;) {
- dbgf(2, "step %d which %d\n", nextstep[which], which);
- verify_extensible_dset(&s, which, mat, &nextstep[which]);
- if (nextstep[which] < finished_step)
- finished_step = nextstep[which];
- if (s.ndatasets <= s.nsteps)
- nanosleep(&s.update_interval, NULL);
- }
- if (s.ndatasets > s.nsteps)
- nanosleep(&s.update_interval, NULL);
- } while (hang_back + finished_step < s.nsteps);
+ /* Wait for the writer's notice before starting the validation of dataset creation */
+ np.verify = 1;
+ if (s.use_named_pipe && reader_verify(np, np.verify) < 0) {
+ HDfprintf(stderr, "reader_verify failed\n");
+ TEST_ERROR;
+ }
+
+ /* Open all the datasets as the writer is creating them. No communication with
+ * the writer during this step.
+ */
+ if (!open_extensible_dset(&s)) {
+ HDfprintf(stderr, "open_extensible_dset failed\n");
+ TEST_ERROR;
+ }
+
+ /* Receive the notice of the writer finishing dataset creation (timestamp)
+ * Make sure the dataset creation doesn't take longer than the expected time.
+ * This time period is from the writer finishing dataset creation to the reader finishing
+ * the validation of dataset creation */
+ np.notify = 2;
+ if (s.use_named_pipe && reader_check_time_and_notify_writer(&np, s) < 0) {
+ HDfprintf(stderr, "reader_check_time_and_notify_writer failed\n");
+ TEST_ERROR;
+ }
- free(nextstep);
+ /* Once the reader starts to verify the datasets, it doesn't notify the writer any info.
+ * Both the reader and writer finish by themselves.
+ */
+ if (!verify_dsets(s, &np, mat)) {
+ HDfprintf(stderr, "verify_dsets failed\n");
+ TEST_ERROR;
+ }
}
for (which = 0; which < s.ndatasets; which++)
- close_extensible_dset(&s, which);
+ if (!close_extensible_dset(&s, which)) {
+ HDfprintf(stderr, "close_extensible_dset failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Pclose(fcpl) < 0) {
+ HDfprintf(stderr, "H5Pclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (s.use_named_pipe && !np_close(&np, s.writer)) {
+ HDfprintf(stderr, "np_close() failed\n");
+ TEST_ERROR;
+ }
- if (s.use_vfd_swmr && s.wait_for_signal)
- await_signal(s.file[0]);
+ if (!state_destroy(&s)) {
+ HDfprintf(stderr, "state_destroy failed\n");
+ TEST_ERROR;
+ }
- restore_signals(&oldsigs);
+ if (mat)
+ HDfree(mat);
- if (H5Pclose(fcpl) < 0)
- errx(EXIT_FAILURE, "H5Pclose(fcpl)");
+ return EXIT_SUCCESS;
- state_destroy(&s);
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(fcpl);
- free(mat);
+ for (i = 0; i < NELMTS(s.file); i++)
+ H5Fclose(s.file[i]);
+ }
+ H5E_END_TRY;
- if (s.dataset)
- HDfree(s.dataset);
- if (s.sources)
- HDfree(s.sources);
+ if (s.use_named_pipe && np.fd_writer_to_reader >= 0)
+ HDclose(np.fd_writer_to_reader);
- return EXIT_SUCCESS;
-}
+ if (s.use_named_pipe && np.fd_reader_to_writer >= 0)
+ HDclose(np.fd_reader_to_writer);
+ if (s.use_named_pipe && !s.writer) {
+ HDremove(np.fifo_writer_to_reader);
+ HDremove(np.fifo_reader_to_writer);
+ }
+
+ if (mat)
+ HDfree(mat);
+
+ return EXIT_FAILURE;
+}
#else /* H5_HAVE_WIN32_API */
int
diff --git a/test/vfd_swmr_dsetops_writer.c b/test/vfd_swmr_dsetops_writer.c
index f98843d..3704c44 100644
--- a/test/vfd_swmr_dsetops_writer.c
+++ b/test/vfd_swmr_dsetops_writer.c
@@ -149,7 +149,7 @@ static bool verify_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_
static bool verify_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which,
bool fileclosed);
static bool verify_dset(hid_t did, hid_t tid, hid_t mem_sid, hid_t file_sid, hsize_t *start, hsize_t *stride,
- size_t *count, hsize_t *block, unsigned int *vbuf, bool fileclosed,
+ hsize_t *count, hsize_t *block, unsigned int *vbuf, bool fileclosed,
bool flush_raw_data);
static bool verify_dset_compact(const state_t *s, const dsets_state_t *ds, bool fileclosed,
bool flush_raw_data);
diff --git a/test/vfd_swmr_gfail_writer.c b/test/vfd_swmr_gfail_writer.c
new file mode 100644
index 0000000..430ed89
--- /dev/null
+++ b/test/vfd_swmr_gfail_writer.c
@@ -0,0 +1,798 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Purpose: To demostrate the four issues uncovered during the test plan
+ * 1.4 part 1.
+ *
+ * Setup:
+ * Writer:
+ * 1) Create an HDF5 file
+ * 2) Create many groups
+ * 3) Use the named pipe to send the reader a message to start verifying
+ * 4) Call H5Fvfd_swmr_end_tick immeidately after sending out the message to the reader
+ * 5) Sleep for two ticks before receiving a message from the reader that informs the reader
+ * started verifying
+ * 6) If the option to delete the group is off(by default), just sleep for a relatively long time,
+ * then close the HDF5 file.
+ * Else delete the last 1000 groups that are just created if the total number of
+ * created groups is greater than 1000.
+ * Call H5Fvfd_swmr_end_tick sleep for a relatively long time,
+ * then close HDF5 file.
+ * Reader:
+ * 1) Open the HDF5 file
+ * 2) Wait for the writer's message that informs the writer finished creating groups.
+ * 3) After receiving the message from the writer, send a message back to the writer,
+ * then call H5Literate to iterate through all the groups. The callback function just checks if
+ * the group name's prefix is valid.
+ * An #if 0 #endif block can help the user easily tune to check the iterated group names.
+ * 4) HDclock_gettime is used to check the total time of H5Literate call.
+ * 5) Close the HDF5 file.
+ *
+ * The number of groups, the tick length, the max lag, the page buffer size, the page size and the
+ * sleep duration on the writer side before closing the file are configurable.
+ * Users can also choose an option to delete 1000 groups after creating a larger number of groups.
+ * We only test to creat the groups with the latest file format. The option to create a
+ * group via the earliest file format is still there.
+ *
+ * Issues and expected design fail
+ *
+ * The parameter numbers that can reproduce the issues are tested at jelly.
+ * To duplicate the issues at other machines, the number of groups to be created should be different.
+ *
+ * Issue 1: HDassert(oent->length == nent->length) error.
+ * Need to UNCOMMENT out the HDassert(oent->length == nent->length) at ../src/H5Fvfd_swmr.c.
+ * May also modify the group number a bit to see the assertion error.
+ *
+ * GROUP_n=340000
+ * ./vfd_swmr_gfail_writer -q -n $GROUP_n &
+ * ./vfd_swmr_gfail_reader -n $GROUP_n &
+ *
+ * Issue 2: H5C__load_entry(): incorrect metadata checksum after all read attempts addr
+ * Sometimes the expected
+ * "Reader's API time exceeds max_lag of ticks, may increase the value of max_lag." may appear
+ * You may need to modify the group number a bit to see the unexpected error message.
+ *
+ * GROUP_n=420000
+ * ./vfd_swmr_gfail_writer -q -n $GROUP_n &
+ * ./vfd_swmr_gfail_reader -n $GROUP_n &
+ *
+ * Issue 3: Assertion `length == cache_ptr->page_size || page ......' failed
+ * This failure occurs when page size and page buffer size change from 4K to 8K.
+ * This issue seems to be always repeatable with the following number of groups.
+ *
+ * GROUP_n=320000
+ * ./vfd_swmr_gfail_writer -q -B 8192 -s 8192 -n $GROUP_n &
+ * ./vfd_swmr_gfail_reader -B 8192 -s 8192 -n $GROUP_n &
+
+ * Issue 4: not enough space to copy index
+ * To duplicate this failure, the number of groups should be much larger, 2 millions.
+ * The max_lag and tick_len should also be set to big numbers.
+ * This issue seems to be always repeatable with the following number of groups.
+ *
+ * GROUP_n=2000000
+ * ./vfd_swmr_gfail_writer -q -m 40 -t 10 -n $GROUP_n &
+ * ./vfd_swmr_gfail_reader -m 40 -t 10 -n $GROUP_n &
+
+ * Expected design fail
+ *
+ * Writer creates a large number of groups, then deletes the last 1000 groups,
+ * With the following settings, the expected
+ * "Reader's API time exceeds max_lag of ticks, may increase the value of max_lag."
+ * should appear. If not, increases the GROUP_n.
+ *
+ * GROUP_n=320000
+ * ./vfd_swmr_gfail_writer -q -d -n $GROUP_n &
+ * ./vfd_swmr_gfail_reader -n $GROUP_n &
+ *
+ * When increasing the max_lag, we may see the program run normally since
+ * the reader can finish iterating all the groups within the max_lag of ticks.
+ * The following program should end normally. If not, increase the max_lag.
+ * ./vfd_swmr_gfail_writer -m 9 -q -d -n $GROUP_n &
+ * ./vfd_swmr_gfail_reader -m 9 -n $GROUP_n &
+
+ */
+
+#define H5F_FRIEND /*suppress error about including H5Fpkg */
+
+#include "hdf5.h"
+
+#include "H5Fpkg.h"
+#include "H5HGprivate.h"
+#include "H5VLprivate.h"
+
+#include "testhdf5.h"
+#include "vfd_swmr_common.h"
+
+#ifndef H5_HAVE_WIN32_API
+
+#define TIME_PASSED(X, Y) \
+ ((double)((Y.tv_sec - X.tv_sec) * 1000000000 + (Y.tv_nsec - X.tv_nsec))) / 1000000000.0
+
+typedef struct {
+ hid_t file, filetype, one_by_one_sid;
+ char filename[PATH_MAX];
+ char progname[PATH_MAX];
+ unsigned int nsteps;
+ bool use_vfd_swmr;
+ bool old_style_grp;
+ bool use_named_pipes;
+ uint32_t w_sleep_len;
+ uint32_t max_lag;
+ uint32_t tick_len;
+ unsigned int ps;
+ unsigned int pbs;
+ bool del_grp;
+ int np_fd_w_to_r;
+ int np_fd_r_to_w;
+ int np_notify;
+ int np_verify;
+} state_t;
+
+#define ALL_HID_INITIALIZER \
+ (state_t) \
+ { \
+ .file = H5I_INVALID_HID, .one_by_one_sid = H5I_INVALID_HID, .filename = "", \
+ .filetype = H5T_NATIVE_UINT32, .nsteps = 10000, .use_vfd_swmr = true, .old_style_grp = false, \
+ .use_named_pipes = true, .w_sleep_len = 112, .tick_len = 4, .max_lag = 7, .ps = 4096, .pbs = 4096, \
+ .del_grp = false, .np_fd_w_to_r = -1, .np_fd_r_to_w = -1, .np_notify = 0, .np_verify = 0 \
+ }
+
+/*
+ * Operator function to be called by H5Literate.
+ */
+herr_t op_func(hid_t loc_id, const char *name, const H5L_info_t *info, void *operator_data);
+
+static void
+usage(const char *progname)
+{
+ HDfprintf(stderr,
+ "usage: %s [-S] [-G] [-n number_of_groups] \n"
+ " [-N] [-d] [-q] [-T w_sleep_len] [-t tick_len] [-m max_lag][-B pbs] [-s ps]\n"
+ "\n"
+ "-S: do not use VFD SWMR\n"
+ "-G: old-style type of group\n"
+ "-n ngroups: the number of groups\n"
+ "-N: do not use named pipes, \n"
+ " mainly for running the writer and reader seperately\n"
+ "-t tick_len: length of a tick in tenths of a second.\n"
+ "-m max_lag: maximum expected lag(in ticks) between writer and readers\n"
+ "-B pbs: page buffer size in bytes:\n"
+ " The default value is 4K(4096).\n"
+ "-s ps: page size used by page aggregation, page buffer and \n"
+ " the metadata file. The default value is 4K(4096).\n"
+ "-T w_sleep_len: Before closing the file, the sleep length in tenths of a second \n"
+ " on the writer side. The default is 112 tenths of a second \n"
+ " That is 4*max_lag*tick_len if tick_len is 4 and max_lag is 7. \n"
+ "-d del_grp: true: delete 1000 groups after creating >1000 groups. \n"
+ "-q: silence printouts, few messages\n"
+ "\n",
+ progname);
+ HDexit(EXIT_FAILURE);
+}
+
+static bool
+state_init(state_t *s, int argc, char **argv)
+{
+ unsigned long tmp;
+ int ch;
+ const hsize_t dims = 1;
+ char * tfile = NULL;
+ char * end;
+
+ *s = ALL_HID_INITIALIZER;
+
+ if (H5_basename(argv[0], &tfile) < 0) {
+ HDprintf("H5_basename failed\n");
+ TEST_ERROR;
+ }
+
+ esnprintf(s->progname, sizeof(s->progname), "%s", tfile);
+
+ if (tfile) {
+ HDfree(tfile);
+ tfile = NULL;
+ }
+
+ while ((ch = getopt(argc, argv, "SGNn:T:t:m:B:s:dq")) != -1) {
+ switch (ch) {
+ case 'S':
+ s->use_vfd_swmr = false;
+ break;
+ case 'G':
+ s->old_style_grp = true;
+ break;
+ case 'N':
+ s->use_named_pipes = false;
+ break;
+ case 'd':
+ s->del_grp = true;
+ break;
+ case 'n':
+ case 'T':
+ case 't':
+ case 'm':
+ case 'B':
+ case 's':
+
+ errno = 0;
+ tmp = HDstrtoul(optarg, &end, 0);
+ if (end == optarg || *end != '\0') {
+ HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg);
+ TEST_ERROR;
+ }
+ else if (errno != 0) {
+ HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg);
+ TEST_ERROR;
+ }
+ else if (tmp > UINT_MAX) {
+ HDprintf("`-%c` argument `%lu` too large\n", ch, tmp);
+ TEST_ERROR;
+ }
+
+ if (ch == 'n')
+ s->nsteps = (unsigned)tmp;
+ else if (ch == 'T')
+ s->w_sleep_len = (unsigned)tmp;
+ else if (ch == 't')
+ s->tick_len = (unsigned)tmp;
+ else if (ch == 'm')
+ s->max_lag = (unsigned)tmp;
+ else if (ch == 'B')
+ s->pbs = (unsigned)tmp;
+ else if (ch == 's')
+ s->ps = (unsigned)tmp;
+ break;
+ case 'q':
+ verbosity = 0;
+ break;
+ case '?':
+ default:
+ usage(s->progname);
+ break;
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argc > 0) {
+ HDprintf("unexpected command-line arguments\n");
+ TEST_ERROR;
+ }
+
+ /* space for attributes */
+ if ((s->one_by_one_sid = H5Screate_simple(1, &dims, &dims)) < 0) {
+ HDprintf("H5Screate_simple failed\n");
+ TEST_ERROR;
+ }
+
+ esnprintf(s->filename, sizeof(s->filename), "vfd_swmr_group.h5");
+
+ return true;
+
+error:
+ if (tfile)
+ HDfree(tfile);
+ return false;
+}
+
+/* Named Pipe Subroutine: np_wr_send_receive
+ * Description:
+ * The writer sends a message to the reader,
+ * then waits for max_lag ticks,
+ * then checks the returned message from the reader.
+ * Return:
+ * True if succeed
+ * False if an error occurs in any step above.
+ * An error is mostly caused by an unexpected
+ * notification number from the message sent
+ * by the reader.
+ */
+static bool
+np_wr_send_receive(state_t *s)
+{
+
+ /* Bump up the value of notify to notice the reader to start to read */
+ s->np_notify++;
+ if (HDwrite(s->np_fd_w_to_r, &(s->np_notify), sizeof(int)) < 0) {
+ HDprintf("HDwrite failed\n");
+ TEST_ERROR;
+ }
+
+ /* Call the end tick */
+ if (H5Fvfd_swmr_end_tick(s->file) < 0)
+ TEST_ERROR;
+
+ /* Sleep for two ticks to wait for the reader's message */
+ decisleep(2 * s->tick_len);
+
+ /* Receive the same value from the reader and verify it before
+ * going to the next step */
+ (s->np_verify)++;
+ if (HDread(s->np_fd_r_to_w, &(s->np_notify), sizeof(int)) < 0) {
+ HDprintf("HDread failed\n");
+ TEST_ERROR;
+ }
+
+ if (s->np_notify == -1) {
+ HDprintf("reader failed to verify group or attribute operation.\n");
+ TEST_ERROR;
+ }
+
+ if (s->np_notify != s->np_verify) {
+ HDprintf("received message %d, expecting %d\n", s->np_notify, s->np_verify);
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ return false;
+}
+
+/* Named Pipe Subroutine: np_rd_receive
+ * Description:
+ * The reader receives a message from the writer,
+ * then checks if the notification number from
+ * the writer is expected.
+ * Return:
+ * True if succeed
+ * False if an error occurs in any step above.
+ * An error is mostly caused by an unexpected
+ * notification number from the message sent
+ * by the writer.
+ */
+static bool
+np_rd_receive(state_t *s)
+{
+
+ /* The writer should have bumped up the value of notify.
+ * Do the same with verify and confirm it */
+ s->np_verify++;
+
+ /* Receive the notify that the writer bumped up the value */
+ if (HDread(s->np_fd_w_to_r, &(s->np_notify), sizeof(int)) < 0) {
+ HDprintf("HDread failed\n");
+ TEST_ERROR;
+ }
+
+ if (s->np_notify == -1) {
+ HDprintf("writer failed to create group or carry out an attribute operation.\n");
+ TEST_ERROR;
+ }
+
+ if (s->np_notify != s->np_verify) {
+ HDprintf("received message %d, expecting %d\n", s->np_notify, s->np_verify);
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ return false;
+}
+
+/* Named Pipe Subroutine: np_rd_send
+ * Description:
+ * The reader sends an acknowledgement to the writer
+ * Return:
+ * True if succeed
+ * False if an error occurs in sending the message.
+ */
+static bool
+np_rd_send(state_t *s)
+{
+
+ if (HDwrite(s->np_fd_r_to_w, &(s->np_notify), sizeof(int)) < 0) {
+ H5_FAILED();
+ AT();
+ HDprintf("HDwrite failed\n");
+ return false;
+ }
+ else
+ return true;
+}
+
+/* Named Pipe Subroutine: np_send_error
+ * Description:
+ * An error (notification number is 1) message is sent
+ * either from the reader or the writer.
+ * A boolean input parameter is used to choose
+ * either reader or writer.
+ * Return:
+ * None
+ */
+static void
+np_send_error(state_t *s, bool writer)
+{
+ s->np_notify = -1;
+ if (writer)
+ HDwrite(s->np_fd_w_to_r, &(s->np_notify), sizeof(int));
+ else
+ HDwrite(s->np_fd_r_to_w, &(s->np_notify), sizeof(int));
+}
+
+/*-------------------------------------------------------------------------
+ * Function: create_group
+ *
+ * Purpose: Create a group and then close it.
+ *
+ * Parameters: state_t *s
+ * The struct that stores information of HDF5 file, named pipe
+ * and some VFD SWMR configuration parameters
+ *
+ * unsigned int which
+ * The number of iterations for group creation
+ *
+ *
+ * Return: Success: true
+ * Failure: false
+ *
+ * Note: This is called by the main() function.
+ *-------------------------------------------------------------------------
+ */
+
+static bool
+create_group(state_t *s, unsigned int which)
+{
+ char name[sizeof("/group-9999999999")];
+ hid_t g = H5I_INVALID_HID;
+
+ esnprintf(name, sizeof(name), "/group-%u", which);
+
+ if ((g = H5Gcreate2(s->file, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
+ HDprintf("H5Gcreate2 failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Gclose(g) < 0) {
+ HDprintf("H5Gclose failed\n");
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Gclose(g);
+ }
+ H5E_END_TRY;
+
+ return false;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: delete_group
+ *
+ * Purpose: Delete a group
+ *
+ * Parameters: state_t *s
+ * The struct that stores information of HDF5 file, named pipe
+ * and some VFD SWMR configuration parameters
+ *
+ * unsigned int which
+ * The number of iterations for group creation
+ *
+ *
+ * Return: Success: true
+ * Failure: false
+ *
+ * Note: This is called by the main() function.
+ *-------------------------------------------------------------------------
+ */
+
+static bool
+delete_group(state_t *s, unsigned int which)
+{
+ char name[sizeof("/group-9999999999")];
+
+ esnprintf(name, sizeof(name), "/group-%u", which);
+
+ if (H5Ldelete(s->file, name, H5P_DEFAULT) < 0) {
+ HDprintf("H5Ldelete failed\n");
+ TEST_ERROR;
+ }
+
+ return true;
+
+error:
+
+ return false;
+}
+
+int
+main(int argc, char **argv)
+{
+ hid_t fapl = H5I_INVALID_HID, fcpl = H5I_INVALID_HID;
+ unsigned step;
+ bool writer = false;
+ state_t s;
+ const char * personality;
+ H5F_vfd_swmr_config_t config;
+ const char * fifo_writer_to_reader = "./fifo_group_writer_to_reader";
+ const char * fifo_reader_to_writer = "./fifo_group_reader_to_writer";
+ int fd_writer_to_reader = -1, fd_reader_to_writer = -1;
+ int notify = 0, verify = 0;
+ bool wg_ret = false;
+
+ struct timespec start_time, end_time;
+ double temp_time;
+
+ if (!state_init(&s, argc, argv)) {
+ HDprintf("state_init failed\n");
+ TEST_ERROR;
+ }
+
+ personality = HDstrstr(s.progname, "vfd_swmr_gfail_");
+
+ if (personality != NULL && HDstrcmp(personality, "vfd_swmr_gfail_writer") == 0)
+ writer = true;
+ else if (personality != NULL && HDstrcmp(personality, "vfd_swmr_gfail_reader") == 0)
+ writer = false;
+ else {
+ HDprintf("unknown personality, expected vfd_swmr_gfail_{reader,writer}\n");
+ TEST_ERROR;
+ }
+
+ /* config, tick_len, max_lag, writer, flush_raw_data, md_pages_reserved, md_file_path */
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, writer, TRUE, 128, "./group-shadow");
+
+ /* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST)
+ * as the second parameter of H5Pset_libver_bound() that is called by
+ * vfd_swmr_create_fapl. Otherwise, the latest file format(H5F_LIBVER_LATEST)
+ * should be used as the second parameter of H5Pset_libver_bound().
+ * Also pass the use_vfd_swmr, only_meta_page, page_buf_size, config to vfd_swmr_create_fapl().*/
+ if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, true, s.pbs, &config)) < 0) {
+ HDprintf("vfd_swmr_create_fapl failed\n");
+ TEST_ERROR;
+ }
+
+ /* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
+ if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.ps)) < 0) {
+ HDprintf("vfd_swmr_create_fcpl() failed");
+ TEST_ERROR;
+ }
+
+ if (writer)
+ s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl);
+ else
+ s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl);
+
+ if (s.file < 0) {
+ HDprintf("H5Fcreate/open failed\n");
+ TEST_ERROR;
+ }
+
+ /* Use two named pipes(FIFO) to coordinate the writer and reader for
+ * two-way communication.
+ * One is for the writer to write to the reader.
+ * The other one is for the reader to signal the writer. */
+ if (s.use_named_pipes && writer) {
+ /* Writer creates two named pipes(FIFO) */
+ if (HDmkfifo(fifo_writer_to_reader, 0600) < 0) {
+ HDprintf("HDmkfifo failed\n");
+ TEST_ERROR;
+ }
+
+ if (HDmkfifo(fifo_reader_to_writer, 0600) < 0) {
+ HDprintf("HDmkfifo failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ /* Both the writer and reader open the pipes */
+ if (s.use_named_pipes && (fd_writer_to_reader = HDopen(fifo_writer_to_reader, O_RDWR)) < 0) {
+ HDprintf("HDopen failed\n");
+ TEST_ERROR;
+ }
+
+ if (s.use_named_pipes && (fd_reader_to_writer = HDopen(fifo_reader_to_writer, O_RDWR)) < 0) {
+ HDprintf("HDopen failed\n");
+ TEST_ERROR;
+ }
+
+ /* Pass the named pipe information to the struct of state_t s, for attribute tests.*/
+ if (s.use_named_pipes) {
+ s.np_fd_w_to_r = fd_writer_to_reader;
+ s.np_fd_r_to_w = fd_reader_to_writer;
+ s.np_notify = notify;
+ s.np_verify = verify;
+ }
+
+ if (writer) {
+
+ for (step = 0; step < s.nsteps; step++) {
+ dbgf(2, "writer: step %d\n", step);
+
+ wg_ret = create_group(&s, step);
+ if (wg_ret == false) {
+ if (s.use_named_pipes)
+ np_send_error(&s, true);
+ HDprintf("create groups failed\n");
+ TEST_ERROR;
+ }
+ }
+ if (s.use_named_pipes && np_wr_send_receive(&s) == false) {
+ HDprintf("writer: write group - verification failed.\n");
+ TEST_ERROR;
+ }
+
+ /* Delete 1000 groups if the del_grp option is true. */
+ if (s.del_grp && s.nsteps > 1000) {
+ printf("Deleting groups. \n");
+ for (step = s.nsteps - 1; step >= (s.nsteps - 1000); step--) {
+ dbgf(2, "writer: deleting step %d\n", step);
+
+ wg_ret = delete_group(&s, step);
+ if (wg_ret == false) {
+ HDprintf("delete group_operations failed\n");
+ TEST_ERROR;
+ }
+ }
+ /* end tick,may be not necessary. */
+ if (H5Fvfd_swmr_end_tick(s.file) < 0)
+ TEST_ERROR;
+ }
+
+ /* May be necessary for the writer to wait a longer time before
+ closing the file.
+ The default value is 112 tenths of a second(4*s.tick_len*s.max_lag)
+ if tick_len is 4 and max_lag is 7.
+ */
+ decisleep(s.w_sleep_len);
+ }
+ else { /*Reader */
+ if (s.use_named_pipes) {
+ if (false == np_rd_receive(&s)) {
+ TEST_ERROR;
+ }
+
+ dbgf(2, "reader receives the message.\n");
+ if (np_rd_send(&s) == false) {
+ TEST_ERROR;
+ }
+ dbgf(2, "reader sends the message.\n ");
+ }
+
+ if (HDclock_gettime(CLOCK_MONOTONIC, &start_time) == -1) {
+ fprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
+
+ printf("Reader: call back function: check group names.\n");
+ if (H5Literate(s.file, H5_INDEX_NAME, H5_ITER_NATIVE, NULL, op_func, NULL) < 0) {
+ printf("H5Literate failed \n");
+ TEST_ERROR;
+ }
+ if (HDclock_gettime(CLOCK_MONOTONIC, &end_time) == -1) {
+ fprintf(stderr, "HDclock_gettime failed");
+ TEST_ERROR;
+ }
+ temp_time = TIME_PASSED(start_time, end_time);
+ fprintf(stdout, "H5Literate: temp time = %lf\n", temp_time);
+ }
+
+ if (H5Pclose(fapl) < 0) {
+ HDprintf("H5Pclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Pclose(fcpl) < 0) {
+ HDprintf("H5Pclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Sclose(s.one_by_one_sid) < 0) {
+ HDprintf("H5Sclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (H5Fclose(s.file) < 0) {
+ HDprintf("H5Fclose failed\n");
+ TEST_ERROR;
+ }
+
+ /* Both the writer and reader close the named pipes */
+ if (s.use_named_pipes && HDclose(fd_writer_to_reader) < 0) {
+ HDprintf("HDclose failed\n");
+ TEST_ERROR;
+ }
+
+ if (s.use_named_pipes && HDclose(fd_reader_to_writer) < 0) {
+ HDprintf("HDclose failed\n");
+ TEST_ERROR;
+ }
+
+ /* Reader finishes last and deletes the named pipes */
+ if (s.use_named_pipes && !writer) {
+ if (HDremove(fifo_writer_to_reader) != 0) {
+ HDprintf("HDremove failed\n");
+ TEST_ERROR;
+ }
+
+ if (HDremove(fifo_reader_to_writer) != 0) {
+ HDprintf("HDremove failed\n");
+ TEST_ERROR;
+ }
+ }
+
+ return EXIT_SUCCESS;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(fapl);
+ H5Pclose(fcpl);
+ H5Sclose(s.one_by_one_sid);
+ H5Fclose(s.file);
+ }
+ H5E_END_TRY;
+
+ if (s.use_named_pipes && fd_writer_to_reader >= 0)
+ HDclose(fd_writer_to_reader);
+
+ if (s.use_named_pipes && fd_reader_to_writer >= 0)
+ HDclose(fd_reader_to_writer);
+
+ if (s.use_named_pipes && !writer) {
+ HDremove(fifo_writer_to_reader);
+ HDremove(fifo_reader_to_writer);
+ }
+
+ return EXIT_FAILURE;
+}
+/************************************************************
+
+ Operator function. Prints the name and type of the object
+ being examined.
+
+ ************************************************************/
+herr_t
+op_func(hid_t loc_id, const char *name, const H5L_info_t *info, void *operator_data)
+{
+
+ /* avoid compiler warnings */
+ (void)loc_id;
+ (void)info;
+ (void)operator_data;
+
+#if 0 /* Kent for debugging purpose. */
+ char * subname;
+ int grp_num;
+#endif
+
+ if (strncmp(name, "group", (size_t)5) != 0) {
+ printf("Iteration failed: group name is %s\n", name);
+ return -1;
+ }
+ else {
+#if 0 /* Kent for debugging purpose. */
+ subname = name + 6;
+ grp_num = atoi((const char *)subname);
+ if (grp_num > 1450000 && grp_num % 5000 == 0)
+ dbgf(2, "Group name is %s\n", name);
+#endif
+ return 0;
+ }
+}
+
+#else /* H5_HAVE_WIN32_API */
+
+int
+main(void)
+{
+ HDfprintf(stderr, "Non-POSIX platform. Skipping.\n");
+ return EXIT_SUCCESS;
+} /* end main() */
+
+#endif /* H5_HAVE_WIN32_API */
diff --git a/test/vfd_swmr_group_writer.c b/test/vfd_swmr_group_writer.c
index c240ee5..5881300 100644
--- a/test/vfd_swmr_group_writer.c
+++ b/test/vfd_swmr_group_writer.c
@@ -43,6 +43,8 @@ typedef struct {
bool attr_test;
uint32_t max_lag;
uint32_t tick_len;
+ uint32_t ps;
+ uint32_t pbs;
int np_fd_w_to_r;
int np_fd_r_to_w;
int np_notify;
@@ -56,8 +58,8 @@ typedef struct {
.filetype = H5T_NATIVE_UINT32, .asteps = 10, .csteps = 10, .nsteps = 100, \
.update_interval = READER_WAIT_TICKS, .use_vfd_swmr = true, .old_style_grp = false, \
.use_named_pipes = true, .grp_op_pattern = ' ', .grp_op_test = false, .at_pattern = ' ', \
- .attr_test = false, .tick_len = 4, .max_lag = 7, .np_fd_w_to_r = -1, .np_fd_r_to_w = -1, \
- .np_notify = 0, .np_verify = 0 \
+ .attr_test = false, .tick_len = 4, .max_lag = 7, .ps = 4096, .pbs = 4096, .np_fd_w_to_r = -1, \
+ .np_fd_r_to_w = -1, .np_notify = 0, .np_verify = 0 \
}
static void
@@ -66,6 +68,7 @@ usage(const char *progname)
HDfprintf(stderr,
"usage: %s [-S] [-G] [-a steps] [-b] [-c] [-n iterations]\n"
" [-N] [-q] [-u numb_ticks] [-A at_pattern] [-O grp_op_pattern]\n"
+ " [-t tick_len] [-m max_lag][-B pbs] [-s ps] \n"
"\n"
"-S: do not use VFD SWMR\n"
"-G: old-style type of group\n"
@@ -76,6 +79,12 @@ usage(const char *progname)
"-N: do not use named pipes, \n"
" mainly for running the writer and reader seperately\n"
"-u numb_ticks: `numb_ticks` for the reader to wait before verification\n"
+ "-t tick_len: length of a tick in tenths of a second.\n"
+ "-m max_lag: maximum expected lag(in ticks) between writer and readers\n"
+ "-B pbs: page buffer size in bytes:\n"
+ " The default value is 4K(4096).\n"
+ "-s ps: page size used by page aggregation, page buffer and \n"
+ " the metadata file. The default value is 4K(4096).\n"
"-A at_pattern: `at_pattern' for different attribute tests\n"
" The value of `at_pattern` is one of the following:\n"
" `compact` - Attributes added in compact storage\n"
@@ -158,7 +167,7 @@ state_init(state_t *s, int argc, char **argv)
tfile = NULL;
}
- while ((ch = getopt(argc, argv, "SGa:bc:n:Nqu:A:O:")) != -1) {
+ while ((ch = getopt(argc, argv, "SGa:bc:n:Nqu:t:m:B:s:A:O:")) != -1) {
switch (ch) {
case 'S':
s->use_vfd_swmr = false;
@@ -170,6 +179,10 @@ state_init(state_t *s, int argc, char **argv)
case 'c':
case 'n':
case 'u':
+ case 't':
+ case 'm':
+ case 'B':
+ case 's':
errno = 0;
tmp = HDstrtoul(optarg, &end, 0);
if (end == optarg || *end != '\0') {
@@ -193,6 +206,14 @@ state_init(state_t *s, int argc, char **argv)
s->nsteps = (unsigned)tmp;
else if (ch == 'u')
s->update_interval = (unsigned)tmp;
+ else if (ch == 't')
+ s->tick_len = (unsigned)tmp;
+ else if (ch == 'm')
+ s->max_lag = (unsigned)tmp;
+ else if (ch == 'B')
+ s->pbs = (unsigned)tmp;
+ else if (ch == 's')
+ s->ps = (unsigned)tmp;
break;
case 'b':
s->filetype = H5T_STD_U32BE;
@@ -284,6 +305,10 @@ state_init(state_t *s, int argc, char **argv)
TEST_ERROR;
}
+ if (s->pbs < s->ps) {
+ HDprintf("Page buffer size cannot be smaller than the page size.s\n");
+ TEST_ERROR;
+ }
if (argc > 0) {
HDprintf("unexpected command-line arguments\n");
TEST_ERROR;
@@ -4987,20 +5012,20 @@ main(int argc, char **argv)
}
/* config, tick_len, max_lag, writer, flush_raw_data, md_pages_reserved, md_file_path */
- init_vfd_swmr_config(&config, 4, 7, writer, TRUE, 128, "./group-shadow");
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, writer, TRUE, 128, "./group-shadow");
/* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST)
* as the second parameter of H5Pset_libver_bound() that is called by
* vfd_swmr_create_fapl. Otherwise, the latest file format(H5F_LIBVER_LATEST)
* should be used as the second parameter of H5Pset_libver_bound().
* Also pass the use_vfd_swmr, only_meta_page, page_buf_size, config to vfd_swmr_create_fapl().*/
- if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, true, 4096, &config)) < 0) {
+ if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, true, s.pbs, &config)) < 0) {
HDprintf("vfd_swmr_create_fapl failed\n");
TEST_ERROR;
}
/* Set fs_strategy (file space strategy) and fs_page_size (file space page size) */
- if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, 4096)) < 0) {
+ if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, s.ps)) < 0) {
HDprintf("vfd_swmr_create_fcpl() failed");
TEST_ERROR;
}
@@ -5049,8 +5074,6 @@ main(int argc, char **argv)
s.np_fd_r_to_w = fd_reader_to_writer;
s.np_notify = notify;
s.np_verify = verify;
- s.tick_len = config.tick_len;
- s.max_lag = config.max_lag;
}
/* For attribute test, force the named pipe to communicate in every step.
diff --git a/test/vol.c b/test/vol.c
index d975243..c7586d5 100644
--- a/test/vol.c
+++ b/test/vol.c
@@ -20,6 +20,12 @@
/* Headers needed */
#include "h5test.h"
+#include "H5Iprivate.h" /* IDs */
+#define H5T_FRIEND /* Suppress error about including H5Tpkg */
+#include "H5Tpkg.h" /* Datatypes */
+#define H5VL_FRIEND /* Suppress error about including H5VLpkg */
+#define H5VL_TESTING
+#include "H5VLpkg.h" /* Virtual Object Layer */
/* Filename */
const char *FILENAME[] = {"native_vol_test", NULL};
@@ -35,6 +41,136 @@ const char *FILENAME[] = {"native_vol_test", NULL};
#define N_ELEMENTS 10
+/* A VOL class struct to verify registering optional operations */
+static int reg_opt_curr_op_val;
+static herr_t reg_opt_op_optional(void *obj, H5VL_optional_args_t *args, hid_t dxpl_id, void **req);
+static herr_t reg_opt_link_optional(void *obj, const H5VL_loc_params_t *loc_params,
+ H5VL_optional_args_t *args, hid_t dxpl_id, void **req);
+static herr_t reg_opt_datatype_get(void *obj, H5VL_datatype_get_args_t *args, hid_t dxpl_id, void **req);
+#define REG_OPT_VOL_NAME "reg_opt"
+#define REG_OPT_VOL_VALUE ((H5VL_class_value_t)502)
+static const H5VL_class_t reg_opt_vol_g = {
+ H5VL_VERSION, /* VOL class struct version */
+ REG_OPT_VOL_VALUE, /* value */
+ REG_OPT_VOL_NAME, /* name */
+ 0, /* version */
+ 0, /* capability flags */
+ NULL, /* initialize */
+ NULL, /* terminate */
+ {
+ /* info_cls */
+ (size_t)0, /* size */
+ NULL, /* copy */
+ NULL, /* compare */
+ NULL, /* free */
+ NULL, /* to_str */
+ NULL, /* from_str */
+ },
+ {
+ /* wrap_cls */
+ NULL, /* get_object */
+ NULL, /* get_wrap_ctx */
+ NULL, /* wrap_object */
+ NULL, /* unwrap_object */
+ NULL, /* free_wrap_ctx */
+ },
+ {
+ /* attribute_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* read */
+ NULL, /* write */
+ NULL, /* get */
+ NULL, /* specific */
+ reg_opt_op_optional, /* optional */
+ NULL /* close */
+ },
+ {
+ /* dataset_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* read */
+ NULL, /* write */
+ NULL, /* get */
+ NULL, /* specific */
+ reg_opt_op_optional, /* optional */
+ NULL /* close */
+ },
+ {
+ /* datatype_cls */
+ NULL, /* commit */
+ NULL, /* open */
+ reg_opt_datatype_get, /* get */
+ NULL, /* specific */
+ reg_opt_op_optional, /* optional */
+ NULL /* close */
+ },
+ {
+ /* file_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* get */
+ NULL, /* specific */
+ reg_opt_op_optional, /* optional */
+ NULL /* close */
+ },
+ {
+ /* group_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* get */
+ NULL, /* specific */
+ reg_opt_op_optional, /* optional */
+ NULL /* close */
+ },
+ {
+ /* link_cls */
+ NULL, /* create */
+ NULL, /* copy */
+ NULL, /* move */
+ NULL, /* get */
+ NULL, /* specific */
+ reg_opt_link_optional /* optional */
+ },
+ {
+ /* object_cls */
+ NULL, /* open */
+ NULL, /* copy */
+ NULL, /* get */
+ NULL, /* specific */
+ reg_opt_link_optional /* optional */
+ },
+ {
+ /* introspect_cls */
+ NULL, /* get_conn_cls */
+ NULL, /* get_cap_flags */
+ NULL, /* opt_query */
+ },
+ {
+ /* request_cls */
+ NULL, /* wait */
+ NULL, /* notify */
+ NULL, /* cancel */
+ NULL, /* specific */
+ NULL, /* optional */
+ NULL /* free */
+ },
+ {
+ /* blob_cls */
+ NULL, /* put */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL /* optional */
+ },
+ {
+ /* token_cls */
+ NULL, /* cmp */
+ NULL, /* to_str */
+ NULL /* from_str */
+ },
+ NULL /* optional */
+};
+
#define FAKE_VOL_NAME "fake"
#define FAKE_VOL_VALUE ((H5VL_class_value_t)501)
@@ -90,6 +226,136 @@ static const H5VL_class_t fake_vol_g = {
},
{
/* datatype_cls */
+ NULL, /* commit */
+ NULL, /* open */
+ reg_opt_datatype_get, /* get */
+ NULL, /* specific */
+ NULL, /* optional */
+ NULL /* close */
+ },
+ {
+ /* file_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL, /* optional */
+ NULL /* close */
+ },
+ {
+ /* group_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL, /* optional */
+ NULL /* close */
+ },
+ {
+ /* link_cls */
+ NULL, /* create */
+ NULL, /* copy */
+ NULL, /* move */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL /* optional */
+ },
+ {
+ /* object_cls */
+ NULL, /* open */
+ NULL, /* copy */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL /* optional */
+ },
+ {
+ /* introspect_cls */
+ NULL, /* get_conn_cls */
+ NULL, /* get_cap_flags */
+ NULL, /* opt_query */
+ },
+ {
+ /* request_cls */
+ NULL, /* wait */
+ NULL, /* notify */
+ NULL, /* cancel */
+ NULL, /* specific */
+ NULL, /* optional */
+ NULL /* free */
+ },
+ {
+ /* blob_cls */
+ NULL, /* put */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL /* optional */
+ },
+ {
+ /* token_cls */
+ NULL, /* cmp */
+ NULL, /* to_str */
+ NULL /* from_str */
+ },
+ NULL /* optional */
+};
+
+static herr_t fake_async_get_cap_flags(const void *info, unsigned *cap_flags);
+
+#define FAKE_ASYNC_VOL_NAME "fake_async"
+#define FAKE_ASYNC_VOL_VALUE ((H5VL_class_value_t)503)
+
+/* A VOL class struct that describes a VOL class with no
+ * functionality except to set the async capability flag.
+ */
+static const H5VL_class_t fake_async_vol_g = {
+ H5VL_VERSION, /* VOL class struct version */
+ FAKE_ASYNC_VOL_VALUE, /* value */
+ FAKE_ASYNC_VOL_NAME, /* name */
+ 0, /* connector version */
+ H5VL_CAP_FLAG_ASYNC, /* capability flags */
+ NULL, /* initialize */
+ NULL, /* terminate */
+ {
+ /* info_cls */
+ (size_t)0, /* size */
+ NULL, /* copy */
+ NULL, /* compare */
+ NULL, /* free */
+ NULL, /* to_str */
+ NULL, /* from_str */
+ },
+ {
+ /* wrap_cls */
+ NULL, /* get_object */
+ NULL, /* get_wrap_ctx */
+ NULL, /* wrap_object */
+ NULL, /* unwrap_object */
+ NULL, /* free_wrap_ctx */
+ },
+ {
+ /* attribute_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* read */
+ NULL, /* write */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL, /* optional */
+ NULL /* close */
+ },
+ {
+ /* dataset_cls */
+ NULL, /* create */
+ NULL, /* open */
+ NULL, /* read */
+ NULL, /* write */
+ NULL, /* get */
+ NULL, /* specific */
+ NULL, /* optional */
+ NULL /* close */
+ },
+ {
+ /* datatype_cls */
NULL, /* commit */
NULL, /* open */
NULL, /* get */
@@ -134,8 +400,9 @@ static const H5VL_class_t fake_vol_g = {
},
{
/* introspect_cls */
- NULL, /* get_conn_cls */
- NULL, /* opt_query */
+ NULL, /* get_conn_cls */
+ fake_async_get_cap_flags, /* get_cap_flags */
+ NULL, /* opt_query */
},
{
/* request_cls */
@@ -163,6 +430,146 @@ static const H5VL_class_t fake_vol_g = {
};
/*-------------------------------------------------------------------------
+ * Function: reg_opt_op_optional_verify
+ *
+ * Purpose: Common verification routine for dynamic optional operations
+ *
+ * Return: Success: 0
+ * Failure: -1
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+reg_opt_op_optional_verify(void *obj, H5VL_optional_args_t *args)
+{
+ int *o = (int *)obj;
+ int *op_args;
+
+ /* Check for receiving correct operation value */
+ if (args->op_type != reg_opt_curr_op_val)
+ return -1;
+
+ /* Check that the object is correct */
+ if ((-1) != *o)
+ return -1;
+
+ /* Update the object, with the operation value */
+ *o = args->op_type;
+
+ /* Check that the argument is correct */
+ op_args = args->args;
+ if (NULL == op_args)
+ return -1;
+ if ((-1) != *op_args)
+ return -1;
+
+ /* Update the argument return parameter */
+ *op_args = args->op_type;
+
+ return 0;
+} /* end reg_opt_op_optional_verify() */
+
+/*-------------------------------------------------------------------------
+ * Function: reg_opt_op_optional
+ *
+ * Purpose: Common callback to perform a connector-specific operation
+ * on an object
+ *
+ * Return: Success: 0
+ * Failure: -1
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+reg_opt_op_optional(void *obj, H5VL_optional_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id,
+ void H5_ATTR_UNUSED **req)
+{
+ /* Invoke the common value verification routine */
+ return reg_opt_op_optional_verify(obj, args);
+} /* end reg_opt_op_optional() */
+
+/*-------------------------------------------------------------------------
+ * Function: reg_opt_link_optional
+ *
+ * Purpose: Callback to perform a connector-specific operation
+ * on a link
+ *
+ * Return: Success: 0
+ * Failure: -1
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+reg_opt_link_optional(void *obj, const H5VL_loc_params_t *loc_params, H5VL_optional_args_t *args,
+ hid_t H5_ATTR_UNUSED dxpl_id, void H5_ATTR_UNUSED **req)
+{
+ /* Check for receiving correct loc_params info */
+ if (loc_params->type != H5VL_OBJECT_BY_NAME)
+ return -1;
+ if (loc_params->obj_type != H5I_GROUP)
+ return -1;
+ if (HDstrcmp(loc_params->loc_data.loc_by_name.name, ".") != 0)
+ return -1;
+ if (loc_params->loc_data.loc_by_name.lapl_id != H5P_LINK_ACCESS_DEFAULT)
+ return -1;
+
+ /* Invoke the common value verification routine */
+ return reg_opt_op_optional_verify(obj, args);
+} /* end reg_opt_link_optional() */
+
+/*-------------------------------------------------------------------------
+ * Function: reg_opt_datatype_get
+ *
+ * Purpose: Handles the datatype get callback
+ *
+ * Note: This is _strictly_ a testing fixture to support the
+ * exercise_reg_opt_oper() testing routine. It fakes just
+ * enough of the named datatype VOL callback for the
+ * H5VL_register_using_vol_id() call in that test routine to
+ * succeed.
+ *
+ * Return: SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+reg_opt_datatype_get(void H5_ATTR_UNUSED *obj, H5VL_datatype_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id,
+ void H5_ATTR_UNUSED **req)
+{
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ if (H5VL_DATATYPE_GET_BINARY_SIZE == args->op_type) {
+ if (H5Tencode(H5T_NATIVE_INT, NULL, args->args.get_binary_size.size) < 0)
+ ret_value = FAIL;
+ } /* end if */
+ else if (H5VL_DATATYPE_GET_BINARY == args->op_type) {
+ if (H5Tencode(H5T_NATIVE_INT, args->args.get_binary.buf, &args->args.get_binary.buf_size) < 0)
+ ret_value = FAIL;
+ } /* end if */
+ else
+ ret_value = FAIL;
+
+ return ret_value;
+} /* end reg_opt_datatype_get() */
+
+/*-------------------------------------------------------------------------
+ * Function: fake_async_get_cap_flags
+ *
+ * Purpose: Return the capability flags for the 'fake async' connector
+ *
+ * Return: SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+fake_async_get_cap_flags(const void H5_ATTR_UNUSED *info, unsigned *cap_flags)
+{
+ *cap_flags = fake_async_vol_g.cap_flags;
+
+ return SUCCEED;
+} /* end fake_async_get_cap_flags() */
+
+/*-------------------------------------------------------------------------
* Function: test_vol_registration()
*
* Purpose: Tests if we can load, register, and close a simple
@@ -1176,6 +1583,519 @@ error:
} /* end test_basic_datatype_operation() */
+typedef herr_t (*reg_opt_obj_oper_t)(const char *app_file, const char *app_func, unsigned app_line,
+ hid_t obj_id, H5VL_optional_args_t *args, hid_t dxpl_id, hid_t es_id);
+typedef herr_t (*reg_opt_link_oper_t)(const char *app_file, const char *app_func, unsigned app_line,
+ hid_t obj_id, const char *name, hid_t lapl_id,
+ H5VL_optional_args_t *args, hid_t dxpl_id, hid_t es_id);
+typedef union {
+ reg_opt_obj_oper_t obj_op;
+ reg_opt_link_oper_t link_op;
+} reg_opt_oper_t;
+
+/*-------------------------------------------------------------------------
+ * Function: exercise_reg_opt_oper()
+ *
+ * Purpose: Exercise a particular optional operation for a type.
+ *
+ * Return: SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+exercise_reg_opt_oper(hid_t fake_vol_id, hid_t reg_opt_vol_id, H5VL_subclass_t subcls,
+ const char *subcls_name, H5I_type_t id_type, reg_opt_oper_t reg_opt_op)
+{
+ char op_name[256]; /* Operation name to register */
+ hid_t obj_id = H5I_INVALID_HID;
+ H5VL_object_t * vol_obj;
+ H5VL_optional_args_t vol_cb_args;
+ int fake_obj, fake_arg;
+ int op_val = -1, op_val2 = -1;
+ int find_op_val;
+ herr_t ret = SUCCEED;
+
+ /* Test registering optional operation */
+ HDsnprintf(op_name, sizeof(op_name), "%s-op1", subcls_name);
+ if (H5VLregister_opt_operation(subcls, op_name, &op_val) < 0)
+ TEST_ERROR;
+
+ /* Verify that the reserved amount of optional operations is obeyed */
+ /* (The first optional operation registered should be at the lower limit) */
+ if (op_val != H5VL_RESERVED_NATIVE_OPTIONAL)
+ TEST_ERROR;
+
+ /* Look up 1st registered optional operation */
+ find_op_val = 0;
+ if (H5VLfind_opt_operation(subcls, op_name, &find_op_val) < 0)
+ TEST_ERROR;
+
+ /* Verify that the operation was looked up successfully */
+ if (op_val != find_op_val)
+ TEST_ERROR;
+
+ /* Test registering second optional operation */
+ HDsnprintf(op_name, sizeof(op_name), "%s-op2", subcls_name);
+ if (H5VLregister_opt_operation(subcls, op_name, &op_val2) < 0)
+ TEST_ERROR;
+
+ /* Verify that the reserved amount of optional operations is obeyed */
+ /* (The 2nd optional operation registered should be at the lower limit + 1) */
+ if (op_val2 != (H5VL_RESERVED_NATIVE_OPTIONAL + 1))
+ TEST_ERROR;
+
+ /* Look up 2nd registered optional operation */
+ find_op_val = 0;
+ if (H5VLfind_opt_operation(subcls, op_name, &find_op_val) < 0)
+ TEST_ERROR;
+
+ /* Verify that the operation was looked up successfully */
+ if (op_val2 != find_op_val)
+ TEST_ERROR;
+
+ /* Push a new API context on the stack */
+ /* (Necessary for the named datatype construction routines) */
+ if (H5VL_SUBCLS_DATATYPE == subcls)
+ H5CX_push();
+
+ /* Create fake object on fake VOL connector */
+ if (H5I_INVALID_HID == (obj_id = H5VL_register_using_vol_id(id_type, &fake_obj, fake_vol_id, TRUE)))
+ TEST_ERROR;
+
+ /* Pop the API context off the stack */
+ if (H5VL_SUBCLS_DATATYPE == subcls)
+ H5CX_pop(FALSE);
+
+ /* Attempt to issue operation on fake VOL connector */
+ fake_obj = -1;
+ fake_arg = -1;
+ vol_cb_args.op_type = op_val;
+ vol_cb_args.args = &fake_arg;
+ H5E_BEGIN_TRY
+ {
+ if (H5VL_SUBCLS_LINK == subcls || H5VL_SUBCLS_OBJECT == subcls)
+ ret = (*reg_opt_op.link_op)(__FILE__, __func__, __LINE__, obj_id, ".", H5P_DEFAULT, &vol_cb_args,
+ H5P_DEFAULT, H5ES_NONE);
+ else
+ ret = (*reg_opt_op.obj_op)(__FILE__, __func__, __LINE__, obj_id, &vol_cb_args, H5P_DEFAULT,
+ H5ES_NONE);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to perform an optional operation with a NULL callback");
+ if ((-1) != fake_obj)
+ FAIL_PUTS_ERROR("'fake_obj' changed during failed operation?");
+ if ((-1) != fake_arg)
+ FAIL_PUTS_ERROR("'fake_arg' changed during failed operation?");
+
+ /* Named datatypes must be destroyed differently */
+ if (H5VL_SUBCLS_DATATYPE == subcls) {
+ H5T_t *dt;
+
+ /* Destroy fake datatype object */
+ if (NULL == (dt = H5I_remove(obj_id)))
+ TEST_ERROR;
+ if (H5VL_free_object(dt->vol_obj) < 0)
+ TEST_ERROR;
+ dt->vol_obj = NULL;
+ if (H5T_close(dt) < 0)
+ TEST_ERROR;
+ } /* end if */
+ else {
+ /* Destroy fake object */
+ if (NULL == (vol_obj = H5I_remove(obj_id)))
+ TEST_ERROR;
+ if (H5VL_free_object(vol_obj) < 0)
+ TEST_ERROR;
+ } /* end else */
+
+ /* Push a new API context on the stack */
+ /* (Necessary for the named datatype construction routines) */
+ if (H5VL_SUBCLS_DATATYPE == subcls)
+ H5CX_push();
+
+ /* Create fake object on reg_opt VOL connector */
+ if (H5I_INVALID_HID == (obj_id = H5VL_register_using_vol_id(id_type, &fake_obj, reg_opt_vol_id, TRUE)))
+ TEST_ERROR;
+
+ /* Pop the API context off the stack */
+ if (H5VL_SUBCLS_DATATYPE == subcls)
+ H5CX_pop(FALSE);
+
+ /* Issue first operation */
+ fake_obj = -1;
+ fake_arg = -1;
+ reg_opt_curr_op_val = op_val;
+ vol_cb_args.op_type = op_val;
+ vol_cb_args.args = &fake_arg;
+ if (H5VL_SUBCLS_LINK == subcls || H5VL_SUBCLS_OBJECT == subcls)
+ ret = (*reg_opt_op.link_op)(__FILE__, __func__, __LINE__, obj_id, ".", H5P_DEFAULT, &vol_cb_args,
+ H5P_DEFAULT, H5ES_NONE);
+ else
+ ret =
+ (*reg_opt_op.obj_op)(__FILE__, __func__, __LINE__, obj_id, &vol_cb_args, H5P_DEFAULT, H5ES_NONE);
+ if (ret < 0)
+ TEST_ERROR;
+
+ /* Verify that fake object & argument were modified correctly */
+ if (op_val != fake_obj)
+ FAIL_PUTS_ERROR("'fake_obj' not updated");
+ if (op_val != fake_arg)
+ FAIL_PUTS_ERROR("'fake_arg' not updated");
+
+ /* Issue second operation */
+ fake_obj = -1;
+ fake_arg = -1;
+ reg_opt_curr_op_val = op_val2;
+ vol_cb_args.op_type = op_val2;
+ vol_cb_args.args = &fake_arg;
+ if (H5VL_SUBCLS_LINK == subcls || H5VL_SUBCLS_OBJECT == subcls)
+ ret = (*reg_opt_op.link_op)(__FILE__, __func__, __LINE__, obj_id, ".", H5P_DEFAULT, &vol_cb_args,
+ H5P_DEFAULT, H5ES_NONE);
+ else
+ ret =
+ (*reg_opt_op.obj_op)(__FILE__, __func__, __LINE__, obj_id, &vol_cb_args, H5P_DEFAULT, H5ES_NONE);
+ if (ret < 0)
+ TEST_ERROR;
+
+ /* Verify that fake object & argument were modified correctly */
+ if (op_val2 != fake_obj)
+ FAIL_PUTS_ERROR("'fake_obj' not updated");
+ if (op_val2 != fake_arg)
+ FAIL_PUTS_ERROR("'fake_arg' not updated");
+
+ /* Named datatypes must be destroyed differently */
+ if (H5VL_SUBCLS_DATATYPE == subcls) {
+ H5T_t *dt;
+
+ /* Destroy fake datatype object */
+ if (NULL == (dt = H5I_remove(obj_id)))
+ TEST_ERROR;
+ if (H5VL_free_object(dt->vol_obj) < 0)
+ TEST_ERROR;
+ dt->vol_obj = NULL;
+ if (H5T_close(dt) < 0)
+ TEST_ERROR;
+ } /* end if */
+ else {
+ /* Destroy fake object */
+ if (NULL == (vol_obj = H5I_remove(obj_id)))
+ TEST_ERROR;
+ if (H5VL_free_object(vol_obj) < 0)
+ TEST_ERROR;
+ } /* end else */
+
+ /* Unregister 2nd registered optional operation */
+ if (H5VLunregister_opt_operation(subcls, op_name) < 0)
+ TEST_ERROR;
+
+ return SUCCEED;
+
+error:
+ return FAIL;
+} /* end exercise_reg_opt_oper() */
+
+/*-------------------------------------------------------------------------
+ * Function: test_register_opt_operation()
+ *
+ * Purpose: Tests if we can load, register, and close a simple
+ * VOL connector.
+ *
+ * Return: SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+test_register_opt_operation(void)
+{
+ hid_t fake_vol_id = H5I_INVALID_HID;
+ hid_t reg_opt_vol_id = H5I_INVALID_HID;
+ struct {
+ H5VL_subclass_t subcls;
+ const char * subcls_name;
+ H5I_type_t id_type;
+ reg_opt_oper_t reg_opt_op;
+ } test_params[] = {{H5VL_SUBCLS_ATTR, "attr", H5I_ATTR, {.obj_op = H5VLattr_optional_op}},
+ {H5VL_SUBCLS_DATASET, "dataset", H5I_DATASET, {.obj_op = H5VLdataset_optional_op}},
+ {H5VL_SUBCLS_DATATYPE, "datatype", H5I_DATATYPE, {.obj_op = H5VLdatatype_optional_op}},
+ {H5VL_SUBCLS_FILE, "file", H5I_FILE, {.obj_op = H5VLfile_optional_op}},
+ {H5VL_SUBCLS_GROUP, "group", H5I_GROUP, {.obj_op = H5VLgroup_optional_op}},
+ {H5VL_SUBCLS_LINK, "link", H5I_GROUP, {.link_op = H5VLlink_optional_op}},
+ {H5VL_SUBCLS_OBJECT, "object", H5I_GROUP, {.link_op = H5VLobject_optional_op}}};
+ int op_val = -1;
+ unsigned u;
+ herr_t ret = SUCCEED;
+
+ TESTING("dynamically registering optional operations");
+
+ /* Register the VOL connectors for testing */
+ if ((fake_vol_id = H5VLregister_connector(&fake_vol_g, H5P_DEFAULT)) < 0)
+ TEST_ERROR;
+ if ((reg_opt_vol_id = H5VLregister_connector(&reg_opt_vol_g, H5P_DEFAULT)) < 0)
+ TEST_ERROR;
+
+ /* Test registering invalid optional VOL subclass operations */
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLregister_opt_operation(H5VL_SUBCLS_NONE, "fail", &op_val);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to register an optional operation for the 'NONE' VOL subclass");
+ if ((-1) != op_val)
+ FAIL_PUTS_ERROR("'op_val' changed during failed operation?");
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLregister_opt_operation(H5VL_SUBCLS_INFO, "fail2", &op_val);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to register an optional operation for the 'INFO' VOL subclass");
+ if ((-1) != op_val)
+ FAIL_PUTS_ERROR("'op_val' changed during failed operation?");
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLregister_opt_operation(H5VL_SUBCLS_WRAP, "fail3", &op_val);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to register an optional operation for the 'WRAP' VOL subclass");
+ if ((-1) != op_val)
+ FAIL_PUTS_ERROR("'op_val' changed during failed operation?");
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLregister_opt_operation(H5VL_SUBCLS_BLOB, "fail4", &op_val);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to register an optional operation for the 'BLOB' VOL subclass");
+ if ((-1) != op_val)
+ FAIL_PUTS_ERROR("'op_val' changed during failed operation?");
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLregister_opt_operation(H5VL_SUBCLS_TOKEN, "fail5", &op_val);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to register an optional operation for the 'TOKEN' VOL subclass");
+ if ((-1) != op_val)
+ FAIL_PUTS_ERROR("'op_val' changed during failed operation?");
+
+ /* Test registering valid optional VOL subclass operation with NULL op_val ptr*/
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLregister_opt_operation(H5VL_SUBCLS_FILE, "fail6", NULL);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to register an optional operation with a NULL 'op_val'");
+
+ /* Try finding a non-existent optional VOL subclass operation */
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLfind_opt_operation(H5VL_SUBCLS_DATASET, "fail", &op_val);
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to find a non-existent optional operation");
+
+ /* Try unregistering a non-existent optional VOL subclass operation */
+ H5E_BEGIN_TRY
+ {
+ ret = H5VLunregister_opt_operation(H5VL_SUBCLS_DATASET, "fail");
+ }
+ H5E_END_TRY;
+ if (FAIL != ret)
+ FAIL_PUTS_ERROR("should not be able to unregister a non-existent optional operation");
+
+ /* Optional operations on requests are supported (but difficult to test further) */
+ if (H5VLregister_opt_operation(H5VL_SUBCLS_REQUEST, "req_op", &op_val) < 0)
+ TEST_ERROR;
+
+ /* Register & test calling optional operations for each valid VOL subclass */
+ /* (Table-driven, with test_params array) */
+ for (u = 0; u < NELMTS(test_params); u++)
+ /* Exercise appropriate callback, for each VOL subclass */
+ if (exercise_reg_opt_oper(fake_vol_id, reg_opt_vol_id, test_params[u].subcls,
+ test_params[u].subcls_name, test_params[u].id_type,
+ test_params[u].reg_opt_op) < 0)
+ TEST_ERROR;
+
+ /* Unregister the VOL connectors */
+ if (H5VLunregister_connector(fake_vol_id) < 0)
+ TEST_ERROR;
+ if (H5VLunregister_connector(reg_opt_vol_id) < 0)
+ TEST_ERROR;
+
+ PASSED();
+
+ return SUCCEED;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5VLunregister_connector(fake_vol_id);
+ H5VLunregister_connector(reg_opt_vol_id);
+ }
+ H5E_END_TRY;
+
+ return FAIL;
+} /* end test_register_opt_operation() */
+
+/*-------------------------------------------------------------------------
+ * Function: test_async_vol_props()
+ *
+ * Purpose: Test properties related to asynchronous VOL connector operation
+ *
+ * Note: Overrides the HDF5_VOL_CONNECTOR environment variable, to
+ * provide stable testing environment.
+ *
+ * Return: SUCCEED/FAIL
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+test_async_vol_props(void)
+{
+ hid_t fapl_id = H5I_INVALID_HID;
+ hid_t vol_id = H5I_INVALID_HID;
+ H5VL_pass_through_info_t passthru_info;
+ unsigned cap_flags = 0;
+ char * conn_env_str = NULL;
+
+ TESTING("Async VOL props");
+
+ /* Retrieve the file access property for testing */
+ fapl_id = h5_fileaccess();
+
+ /* Test 'capability flags' property */
+
+ /* Test query w/NULL for cap_flags parameter */
+ if (H5Pget_vol_cap_flags(fapl_id, NULL) < 0)
+ FAIL_STACK_ERROR;
+
+ /* Override possible environment variable & re-initialize default VOL connector */
+ conn_env_str = HDgetenv("HDF5_VOL_CONNECTOR");
+ if (conn_env_str) {
+ if (NULL == (conn_env_str = HDstrdup(conn_env_str)))
+ TEST_ERROR
+ if (HDunsetenv("HDF5_VOL_CONNECTOR") < 0)
+ TEST_ERROR
+ if (H5VL__reparse_def_vol_conn_variable_test() < 0)
+ TEST_ERROR
+ } /* end if */
+
+ /* Test query w/default VOL, which should indicate no async, since native connector
+ * doesn't support async.
+ */
+ if (H5Pget_vol_cap_flags(fapl_id, &cap_flags) < 0)
+ FAIL_STACK_ERROR;
+ if ((cap_flags & H5VL_CAP_FLAG_ASYNC) > 0)
+ TEST_ERROR
+ if ((cap_flags & H5VL_CAP_FLAG_NATIVE_FILES) == 0)
+ TEST_ERROR
+
+ /* Close FAPL */
+ if (H5Pclose(fapl_id) < 0)
+ FAIL_STACK_ERROR;
+
+ /* Register a fake VOL connector that sets the async capability flag */
+ if ((vol_id = H5VLregister_connector(&fake_async_vol_g, H5P_DEFAULT)) < 0)
+ FAIL_STACK_ERROR;
+
+ /* Set environment variable to use 'fake async' connector & re-init default connector */
+ if (HDsetenv("HDF5_VOL_CONNECTOR", "fake_async", TRUE) < 0)
+ TEST_ERROR
+ if (H5VL__reparse_def_vol_conn_variable_test() < 0)
+ TEST_ERROR
+
+ /* Retrieve the file access property again */
+ fapl_id = h5_fileaccess();
+
+ /* Test query w/fake async VOL, which should succeed */
+ cap_flags = 0;
+ if (H5Pget_vol_cap_flags(fapl_id, &cap_flags) < 0)
+ FAIL_STACK_ERROR;
+ if ((cap_flags & H5VL_CAP_FLAG_ASYNC) == 0)
+ TEST_ERROR
+ if ((cap_flags & H5VL_CAP_FLAG_NATIVE_FILES) > 0)
+ TEST_ERROR
+
+ /* Reset environment variable & re-init default connector */
+ if (HDunsetenv("HDF5_VOL_CONNECTOR") < 0)
+ TEST_ERROR
+ if (H5VL__reparse_def_vol_conn_variable_test() < 0)
+ TEST_ERROR
+
+ /* Close FAPL */
+ if (H5Pclose(fapl_id) < 0)
+ FAIL_STACK_ERROR;
+
+ /* Retrieve the file access property again */
+ fapl_id = h5_fileaccess();
+
+ /* Set the VOL connector for the FAPL to the fake async connector */
+ if (H5Pset_vol(fapl_id, vol_id, NULL) < 0)
+ FAIL_STACK_ERROR;
+
+ /* Test query w/fake async VOL, which should succeed */
+ cap_flags = 0;
+ if (H5Pget_vol_cap_flags(fapl_id, &cap_flags) < 0)
+ FAIL_STACK_ERROR;
+ if ((cap_flags & H5VL_CAP_FLAG_ASYNC) == 0)
+ TEST_ERROR
+ if ((cap_flags & H5VL_CAP_FLAG_NATIVE_FILES) > 0)
+ TEST_ERROR
+
+ /* Stack the [internal] passthrough VOL connector on top of the fake async connector */
+ passthru_info.under_vol_id = vol_id;
+ passthru_info.under_vol_info = NULL;
+ if (H5Pset_vol(fapl_id, H5VL_PASSTHRU, &passthru_info) < 0)
+ FAIL_STACK_ERROR;
+
+ /* Test query w/passthru -> fake async VOL, which should succeed */
+ cap_flags = 0;
+ if (H5Pget_vol_cap_flags(fapl_id, &cap_flags) < 0)
+ FAIL_STACK_ERROR;
+ if ((cap_flags & H5VL_CAP_FLAG_ASYNC) == 0)
+ TEST_ERROR
+ if ((cap_flags & H5VL_CAP_FLAG_NATIVE_FILES) > 0)
+ TEST_ERROR
+
+ /* Unregister the fake async VOL ID */
+ if (H5VLunregister_connector(vol_id) < 0)
+ TEST_ERROR;
+
+ /* Close FAPL */
+ if (H5Pclose(fapl_id) < 0)
+ FAIL_STACK_ERROR;
+
+ /* Restore environment variable, if there was one */
+ if (conn_env_str) {
+ if (HDsetenv("HDF5_VOL_CONNECTOR", conn_env_str, TRUE) < 0)
+ TEST_ERROR
+ HDfree(conn_env_str);
+
+ if (H5VL__reparse_def_vol_conn_variable_test() < 0)
+ TEST_ERROR
+ } /* end if */
+
+ PASSED();
+
+ return SUCCEED;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(fapl_id);
+ H5VLunregister_connector(vol_id);
+ }
+ H5E_END_TRY;
+ HDfree(conn_env_str);
+
+ return FAIL;
+} /* end test_async_vol_props() */
+
/*-------------------------------------------------------------------------
* Function: main
*
@@ -1201,6 +2121,7 @@ main(void)
HDputs("Testing basic Virtual Object Layer (VOL) functionality.");
nerrors += test_vol_registration() < 0 ? 1 : 0;
+ nerrors += test_register_opt_operation() < 0 ? 1 : 0;
nerrors += test_native_vol_init() < 0 ? 1 : 0;
nerrors += test_basic_file_operation(env_h5_drvr) < 0 ? 1 : 0;
nerrors += test_basic_group_operation() < 0 ? 1 : 0;
@@ -1209,6 +2130,7 @@ main(void)
nerrors += test_basic_object_operation() < 0 ? 1 : 0;
nerrors += test_basic_link_operation() < 0 ? 1 : 0;
nerrors += test_basic_datatype_operation() < 0 ? 1 : 0;
+ nerrors += test_async_vol_props() < 0 ? 1 : 0;
if (nerrors) {
HDprintf("***** %d Virtual Object Layer TEST%s FAILED! *****\n", nerrors, nerrors > 1 ? "S" : "");