summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@lbl.gov>2020-12-14 00:02:17 (GMT)
committerGitHub <noreply@github.com>2020-12-14 00:02:17 (GMT)
commita2524671caef27446e531a6eb9e20fcc1a2ff708 (patch)
treef500db8cc087b52b3b7739c0334b08b14def28f6 /test
parentf6dce729e8cf3d6d8675fbbfe1d66ac044ba02fb (diff)
downloadhdf5-a2524671caef27446e531a6eb9e20fcc1a2ff708.zip
hdf5-a2524671caef27446e531a6eb9e20fcc1a2ff708.tar.gz
hdf5-a2524671caef27446e531a6eb9e20fcc1a2ff708.tar.bz2
Bring async branch to develop (#166)
* Add H5Fwait, H5Dwait, and other changes for async vol connector * Revert temporary testing changes * Add H5Fwait to header file * Add H5VLreset_lib_state() routine. * Correct VOL wrap context when retrieving library state for file open & create. * Manage the API context's VOL connector state as part of the library state. * Set the 'VOL connector property valid' flag when restoring the library state. * Don't push new API context on stack when retrieving "current" one. * Check for NULL VOL wrap context before decrementing refcount on it, when freeing the API context state. * Manage recount of underlying connector for VOL wrap context. * Add H5TSmutex_acquire() and H5TSmutex_release() routines to acquire and release the global lock on the HDF5 library. * Update library with new functions related to library global lock * Add asynchronous token API * Add new lightweight FUNC_ENTER / LEAVE macros for helping to structure the threadsafety (H5TS*) routines. * Sync w/develop * Initial event set code framework. * Elaborate on the H5ES routines, starting to add API routines. Update the "close ID" callbacks to allow asynchronous request tokens to be passed in from an asynchronous close API call. Refactor current asynchronous API routines (H5Fopen/H5Fclose and H5Dread/H5Dread) to use event sets instead of directly working with request tokens from the application. Clean up a few other minor warnings & code style issues. * Implement H5EScreate, H5ESget_count, and H5ESclose. It should be possible to write a simple application that creates an event set and uses it with H5Fopen_async, H5Dread_async, H5Dwrite_async, and H5Fclose_async, then calls H5ESclose (which waits for all async events to complete). * Add source file for event set test. * Refactor sync & async API routines to call common routine. Move dataset API read / write routines to src/H5D.c, along with all the other API routines. Progress on "fake" async VOL connector, for testing. * Modify async implementation to wrap async requests in a H5VL_object_t struct so the VOL layer can find the connector when accessing the request at a later point. * Free the requests is H5ESclose. Remove comments implying that request wait, notify, and cancel callbacks should free the request. * Fix bug in error handling in H5Fclose. * Fix bugs in async file routines. Rename H5VL_create_object_generic to H5VL_create_object. * Add explicit async version of H5Fcreate. * Add more _async routines * Correct typo for return value from H5Awrite changes * Add H5EStest and H5ESwait routines * Updated with API tracing info * Fix NULL pointer dereference in H5ES__wait * Add H5is_library_terminating() routine, so that VOL connectors can detect when the library is shutting down. * Fix typo * Remove event from event set's linked list * Move block of code so that vol_obj is valid * Avoid setting properties in the DXPL when reseting the library state (and in the test code). * Refactor argument tracing to implement new capability for tracing arguments of non-API routines, with the H5ARG_TRACE macro. This macro is updated automatically with the bin/trace script that runs as part of the autogen.sh process. Major changes were in src/H5trace.c and bin/trace, with the other changes being cleanups to the argument lists, to improve their presentation in the tracing output. Also - added the "managed string" routines, which can dynamically allocate strings, appending printf-formatted output to the string efficiently. * Release memory for managed strings * Fix printf() formats. * More printf() format fixes. * Add H5Eappend_stack routine and regression tests * Clean up a few missed merge conflicts and update the error stacks. * Remove unnecessary fork() operations and ten second sleep(). * Restore commented out attribute out, to better enable tracking down the previous failure * Allow multiple H5ARG_TRACE macros within a routine to be updated * Switch to using "new" H5ES_insert (which takes the arguments for the caller routine) for all event set operations. Renames H5ES_insert_new to H5ES_insert and removes the previous H5ES_insert. * Merge "managed" string routines into "ref-counted" strings, and refactor code to use them. * Add missing file. * Add caller's name and arguments to event, for error reporting * Refactor event set setup for "API common" internal routines * Checkin async API routines for H5A* and H5G* modules as listed in ID-283. Fix couple h5dump expected output files due to the changes. * Add some of the error query routines needed for event sets. * Refactor to make async setup / teardown and "common" routines cleaner * (1) Add async APIs to H5L, H5F, and H5D modules (2) Fix errors in previous checkins of async APIs in H5A and H5G modules (3) h5dump expected output changes * Enhance event info, for better error handling * Change name of temporary vol_obj variable, to help reduce coding errors * Fix oversight with vol_obj pointer * Minor code cleanup * Add missing \'valid\' flag for VOL wrapper context, when restoring the library\'s state * Run source formatter * Change H5TSmutex lock and release to include a lock count * Update error reporting ideas * Minor updates to improve sanity checking for retrieving / restoring library state * Updated with feedback from h5py team members * Refactor internal event set list and event handling, add implementation for H5ESget_err_info * Change the VOL request subclass callbacks that switch from using "H5ES_status_t" to "H5VL_request_status_t", and also add a H5VL_request_status_t* parameter to the 'cancel' callback in the request subclass. Also more code quality cleanups to add iterator callbacks to internal event set routines. * Update API tracing for new H5VL_request_status_t typedef * Finish converting internal event set operations to use list iterator callbacks, instead of directly accessing the list structure * Add H5VL_REQUEST_GET_ERR_STACK operation to request subclass, for retrieving a copy of the error stack for a failed asynchronous operation * Remove 'canceled' event status from Java constants * Be safer about releasing resources when inserting a newly opened/created object or file into an event set * Remove H5EStest, add H5ES_WAIT_NONE for 0 timeout, and revise parameters to H5ESwait, to make it more "aggregate". * Remove H5ES_STATUS_CANCELED from Java wrappers also * (a) Add async APIs for H5O module as listed in jira issue ID-283. (b) Remove verification of name parameter in async related routines for H55A and H5L modules because it is checked in H5VL_setup* routine. (c) Modify h5dump expected output due to the async changes. * Corrections based on PR feedback. * Further changes to make based on PR feedback. * Fix missed merge marker, and reformatted line * Clean up some warnings * Correct level of indirection * Relocate prototype (and doxygen info) for H5Aclose * Change non-static function declarations to be static * Ensure that H5TSpublic.h header gets installed (#129) * Add 'wrapper' versions of async calls, to allow language wrappers and layers on top of HDF5 to pass in their application information. * Switch H5Aexists\*_async and H5Lexists\*_async to use flag to return status, instead of return value. Make the corresponding changes through most of the v1 and v2 B-tree code. Clean up warnings in H5public.h and cmpd_dtransform.c. * Add H5Iregister_future routine and tests. * Correct return value for H5Lexists_async * Add H5_DLL macro to public H5ES API routines * Update supported -> flags parameter for introspect_query callback * Remove my email address. Update passthrough VOL connector ID. * Fix comment for post_open_api_common * Remove unused non-blocking VOL connector * Minor cleanup in async branch in preparation for merge to develop * Update CMake and the Autotools to use the new pass-through VOL ID * Fix for SWMR daily test failures (#160) The H5I_register_using_existing_id() call did not initialize the future ID callbacks, causing the library to segfault when it tried to resolve those function pointers. * Added selective async APIs (#150) * Added selective async APIs Description: Added the following APIs: H5Ropen_attr_async H5Ropen_object_async H5Ropen_region_async H5Mcreate_async H5Mopen_async H5Mput_async H5Mget_async H5Mclose_async H5Tcommit_async H5Topen_async H5Tcopy_async H5Tclose_async - Updated an expected output file to include a new internal function in the error stack for the failure case. * Updated async APIs per reviews, including removing async version of H5Tcopy. * Removed statements that were added by mistake in the previous commit. * Fix compile issues in H5M and warnings elsewhere * Reformat code * Brings VOL_LIST changes from develop. (#163) Co-authored-by: Houjun Tang <htang4@lbl.gov> Co-authored-by: Neil Fortner <nfortne2@hdfgroup.org> Co-authored-by: vchoi <vchoi@jelly.ad.hdfgroup.org> Co-authored-by: vchoi-hdfgroup <55293060+vchoi-hdfgroup@users.noreply.github.com> Co-authored-by: jhendersonHDF <jhenderson@hdfgroup.org> Co-authored-by: Dana Robinson <derobins@hdfgroup.org> Co-authored-by: Dana Robinson <43805+derobins@users.noreply.github.com> Co-authored-by: bmribler <39579120+bmribler@users.noreply.github.com>
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt26
-rw-r--r--test/CMakeTests.cmake1
-rw-r--r--test/Makefile.am5
-rw-r--r--test/accum.c2
-rw-r--r--test/btree2.c287
-rw-r--r--test/cache_common.h3
-rw-r--r--test/cache_tagging.c54
-rw-r--r--test/chunk_info.c2
-rw-r--r--test/cmpd_dtransform.c146
-rw-r--r--test/dsets.c8
-rw-r--r--test/error_test.c109
-rw-r--r--test/event_set.c132
-rw-r--r--test/fheap.c53
-rw-r--r--test/h5test.c2
-rw-r--r--test/hdfs.c3
-rw-r--r--test/links.c10
-rw-r--r--test/s3comms.c2
-rw-r--r--test/swmr_generator.c2
-rw-r--r--test/swmr_sparse_writer.c4
-rw-r--r--test/tattr.c8
-rw-r--r--test/testfiles/err_compat_149
-rw-r--r--test/testfiles/error_test_131
-rw-r--r--test/th5o.c4
-rw-r--r--test/th5s.c4
-rw-r--r--test/tid.c540
-rw-r--r--test/tmisc.c42
-rw-r--r--test/tsohm.c8
-rw-r--r--test/ttsafe_error.c25
-rw-r--r--test/use_disable_mdc_flushes.c6
-rw-r--r--test/vfd.c12
-rw-r--r--test/vol.c19
31 files changed, 1313 insertions, 286 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 697ce8d..dbc7e55 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -260,6 +260,10 @@ set (ttsafe_SOURCES
${HDF5_TEST_SOURCE_DIR}/ttsafe_attr_vlen.c
)
+set (event_set_SOURCES
+ ${HDF5_TEST_SOURCE_DIR}/event_set.c
+)
+
set (H5_TESTS
testhdf5 # multiple source
cache
@@ -333,6 +337,7 @@ set (H5_TESTS
vol
timer
cmpd_dtransform
+ event_set # multiple source
)
macro (ADD_H5_EXE file)
@@ -364,6 +369,7 @@ set (H5_TESTS_MULTIPLE
ttsafe
thread_id # special link
mirror_vfd
+ event_set
)
# Only build single source tests here
foreach (h5_test ${H5_TESTS})
@@ -527,6 +533,26 @@ if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_TEST_mirror_vfd_FORMAT mirror_vfd)
endif ()
+#-- Adding test for event_set
+add_executable (event_set ${event_set_SOURCES})
+target_compile_options(event_set PRIVATE "${HDF5_CMAKE_C_FLAGS}")
+target_include_directories (event_set PRIVATE "${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
+if (NOT BUILD_SHARED_LIBS)
+ TARGET_C_PROPERTIES (event_set STATIC)
+ target_link_libraries (event_set PRIVATE ${HDF5_TEST_LIB_TARGET})
+else ()
+ TARGET_C_PROPERTIES (event_set SHARED)
+ target_link_libraries (event_set PRIVATE ${HDF5_TEST_LIBSH_TARGET})
+endif ()
+set_target_properties (event_set PROPERTIES FOLDER test)
+
+#-----------------------------------------------------------------------------
+# Add Target to clang-format
+#-----------------------------------------------------------------------------
+if (HDF5_ENABLE_FORMATTERS)
+ clang_format (HDF5_TEST_event_set_FORMAT event_set)
+endif ()
+
##############################################################################
### A D D I T I O N A L T E S T S ###
##############################################################################
diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake
index 013189c..b7f3e80 100644
--- a/test/CMakeTests.cmake
+++ b/test/CMakeTests.cmake
@@ -409,6 +409,7 @@ set (test_CLEANFILES
splitter.log
mirror_rw/*
mirror_wo/*
+ event_set_*.h5
)
# Remove any output file left over from previous test run
diff --git a/test/Makefile.am b/test/Makefile.am
index 6bc340a..2301a7a 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -66,7 +66,7 @@ TEST_PROG= testhdf5 \
flush1 flush2 app_ref enum set_extent ttsafe enc_dec_plist \
enc_dec_plist_cross_platform getname vfd ros3 s3comms hdfs ntypes \
dangle dtransform reserved cross_read freespace mf vds file_image \
- unregister cache_logging cork swmr thread_id vol timer
+ unregister cache_logging cork swmr thread_id vol timer event_set
# List programs to be built when testing here.
# error_test and err_compat are built at the same time as the other tests, but executed by testerror.sh.
@@ -150,6 +150,7 @@ ttsafe_SOURCES=ttsafe.c ttsafe_dcreate.c ttsafe_error.c ttsafe_cancel.c \
ttsafe_acreate.c ttsafe_attr_vlen.c
cache_image_SOURCES=cache_image.c genall5.c
mirror_vfd_SOURCES=mirror_vfd.c genall5.c
+event_set_SOURCES=event_set.c
# Additional target for running timing test
timings _timings: testmeta
@@ -211,7 +212,7 @@ CHECK_CLEANFILES+=accum.h5 cmpd_dset.h5 compact_dataset.h5 dataset.h5 dset_offse
test_swmr*.h5 cache_logging.h5 cache_logging.out vds_swmr.h5 vds_swmr_src_*.h5 \
swmr[0-2].h5 swmr_writer.out swmr_writer.log.* swmr_reader.out.* swmr_reader.log.* \
tbogus.h5.copy cache_image_test.h5 direct_chunk.h5 native_vol_test.h5 \
- splitter*.h5 splitter.log mirror_rw mirror_ro
+ splitter*.h5 splitter.log mirror_rw mirror_ro event_set_[0-9].h5
# Sources for testhdf5 executable
testhdf5_SOURCES=testhdf5.c tarray.c tattr.c tchecksum.c tconfig.c tfile.c \
diff --git a/test/accum.c b/test/accum.c
index 7561cd0..b1e4baa 100644
--- a/test/accum.c
+++ b/test/accum.c
@@ -2100,7 +2100,7 @@ test_swmr_write_big(hbool_t newest_format)
uint8_t wbuf[1024]; /* Buffer for reading & writing */
unsigned u; /* Local index variable */
#ifdef H5_HAVE_UNISTD_H
- pid_t pid; /* Process ID */
+ pid_t pid; /* Process ID */
#endif /* H5_HAVE_UNISTD_H */
int status; /* Status returned from child process */
char * driver = NULL; /* VFD string (from env variable) */
diff --git a/test/btree2.c b/test/btree2.c
index 613d8d5..21b821b 100644
--- a/test/btree2.c
+++ b/test/btree2.c
@@ -631,6 +631,7 @@ test_insert_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
haddr_t bt2_addr; /* Address of B-tree created */
hsize_t record; /* Record to insert into tree */
hsize_t idx; /* Index within B-tree, for iterator */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/*
@@ -666,8 +667,11 @@ test_insert_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
TEST_ERROR
/* Attempt to find record in B-tree with no records */
- idx = 0;
- if (H5B2_find(bt2, &idx, find_cb, NULL) != FALSE)
+ idx = 0;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, NULL) < 0)
+ TEST_ERROR
+ if (found)
TEST_ERROR
/* Attempt to index record in B-tree with no records */
@@ -695,22 +699,34 @@ test_insert_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
/* Attempt to find non-existant record in B-tree with 1 record */
/* (Should not be found, but not fail) */
- idx = 41;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != FALSE)
+ idx = 41;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
+ TEST_ERROR
+ if (found)
TEST_ERROR
/* Try again with NULL 'op' */
/* (Should not be found, but not fail) */
- if (H5B2_find(bt2, &idx, NULL, NULL) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, NULL, NULL) < 0)
+ TEST_ERROR
+ if (found)
TEST_ERROR
/* Attempt to find existant record in B-tree with 1 record */
- idx = 42;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ idx = 42;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
+ TEST_ERROR
+ if (!found)
TEST_ERROR
/* Try again with NULL 'op' */
- if (H5B2_find(bt2, &idx, NULL, NULL) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, NULL, NULL) < 0)
+ TEST_ERROR
+ if (!found)
TEST_ERROR
/* Attempt to index non-existant record in B-tree with 1 record */
@@ -760,13 +776,19 @@ test_insert_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
/* Attempt to find non-existant record in level-0 B-tree with several records */
/* (Should not be found, but not fail) */
- idx = 41;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != FALSE)
+ idx = 41;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
+ TEST_ERROR
+ if (found)
TEST_ERROR
/* Attempt to find existant record in level-0 B-tree with several record */
- idx = 56;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ idx = 56;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
+ TEST_ERROR
+ if (!found)
TEST_ERROR
/* Attempt to index non-existant record in B-tree with several records */
@@ -843,6 +865,7 @@ test_insert_split_root(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_p
hsize_t idx; /* Index within B-tree, for iterator */
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
unsigned u; /* Local index variable */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/*
@@ -928,19 +951,28 @@ test_insert_split_root(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_p
/* Attempt to find non-existant record in level-1 B-tree */
/* (Should not be found, but not fail) */
- idx = INSERT_SPLIT_ROOT_NREC + 10;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != FALSE)
+ idx = INSERT_SPLIT_ROOT_NREC + 10;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
+ TEST_ERROR
+ if (found)
TEST_ERROR
/* Attempt to find existant record in root of level-1 B-tree */
- idx = 33;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ idx = 33;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
FAIL_STACK_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to find existant record in leaf of level-1 B-tree */
- idx = 56;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ idx = 56;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
FAIL_STACK_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to index non-existant record in level-1 B-tree */
idx = 0;
@@ -1593,6 +1625,7 @@ test_insert_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
hsize_t idx; /* Index within B-tree, for iterator */
unsigned u; /* Local index variable */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/*
@@ -1664,14 +1697,20 @@ test_insert_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* Attempt to find non-existant record in level-2 B-tree */
/* (Should not be found, but not fail) */
- idx = INSERT_SPLIT_ROOT_NREC * 30;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != FALSE)
+ idx = INSERT_SPLIT_ROOT_NREC * 30;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
+ TEST_ERROR
+ if (found)
TEST_ERROR
/* Attempt to find existant record in root of level-2 B-tree */
- idx = 948;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ idx = 948;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
FAIL_STACK_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record = 948;
@@ -1679,9 +1718,12 @@ test_insert_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
TEST_ERROR
/* Attempt to find existant record in internal node of level-2 B-tree */
- idx = 505;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ idx = 505;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
FAIL_STACK_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record = 505;
@@ -1689,9 +1731,12 @@ test_insert_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
TEST_ERROR
/* Attempt to find existant record in leaf of level-2 B-tree */
- idx = 555;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ idx = 555;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
FAIL_STACK_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record = 555;
@@ -2948,6 +2993,7 @@ test_insert_lots(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_t
hsize_t temp_rec; /* Temporary record */
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
hsize_t nrec; /* Number of records in B-tree */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/* Initialize random number seed */
@@ -3053,8 +3099,11 @@ HDfprintf(stderr,"curr_time=%lu\n",(unsigned long)curr_time);
/* Attempt to find non-existant record in level-4 B-tree */
/* (Should not be found, but not fail) */
- idx = INSERT_MANY * 2;
- if (H5B2_find(bt2, &idx, find_cb, &idx) != FALSE)
+ idx = INSERT_MANY * 2;
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
+ TEST_ERROR
+ if (found)
TEST_ERROR
/* Find random records */
@@ -3063,8 +3112,11 @@ HDfprintf(stderr,"curr_time=%lu\n",(unsigned long)curr_time);
idx = (hsize_t)(HDrandom() % INSERT_MANY);
/* Attempt to find existant record in root of level-4 B-tree */
- if (H5B2_find(bt2, &idx, find_cb, &idx) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &idx, &found, find_cb, &idx) < 0)
FAIL_STACK_ERROR
+ if (!found)
+ TEST_ERROR
} /* end for */
/* Attempt to index non-existant record in level-4 B-tree, in increasing & decreasing order */
@@ -3168,6 +3220,7 @@ test_update_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
H5B2_test_rec_t record; /* Record to insert into tree */
H5B2_test_rec_t modify; /* Modified value */
H5B2_test_rec_t find; /* Record to find */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/* Create the file for the test */
@@ -3196,31 +3249,43 @@ test_update_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
/* (Should not be found, but not fail) */
find.key = 10;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Try again with NULL 'op' */
/* (Should not be found, but not fail) */
- if (H5B2_find(bt2, &find, NULL, NULL) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, NULL, NULL) < 0)
FAIL_STACK_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find existant record in B-tree with 1 record */
find.key = 42;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != 72)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Try again with NULL 'op' */
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, NULL, NULL) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, NULL, NULL) < 0)
FAIL_STACK_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to index non-existant record in B-tree with 1 record */
H5E_BEGIN_TRY { ret = H5B2_index(bt2, H5_ITER_INC, (hsize_t)1, index_rec_cb, NULL); }
@@ -3258,31 +3323,43 @@ test_update_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
/* (Should not be found, but not fail) */
find.key = 10;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Try again with NULL 'op' */
/* (Should not be found, but not fail) */
- if (H5B2_find(bt2, &find, NULL, NULL) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, NULL, NULL) < 0)
FAIL_STACK_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find modified record in B-tree with 1 record */
find.key = 42;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != 43)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Try again with NULL 'op' */
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, NULL, NULL) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, NULL, NULL) < 0)
FAIL_STACK_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to index non-existant record in B-tree with 1 record */
H5E_BEGIN_TRY { ret = H5B2_index(bt2, H5_ITER_INC, (hsize_t)1, index_rec_cb, NULL); }
@@ -3340,17 +3417,23 @@ test_update_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
/* (Should not be found, but not fail) */
find.key = 10;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find existant record in level-0 B-tree with several records */
find.key = 56;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != 12)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to index non-existant record in B-tree with several records */
H5E_BEGIN_TRY { ret = H5B2_index(bt2, H5_ITER_INC, (hsize_t)4, index_rec_cb, NULL); }
@@ -3425,17 +3508,23 @@ test_update_basic(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_
/* (Should not be found, but not fail) */
find.key = 41;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find existant record in level-0 B-tree with several record */
find.key = 56;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != 22)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to index non-existant record in B-tree with several records */
H5E_BEGIN_TRY { ret = H5B2_index(bt2, H5_ITER_INC, (hsize_t)4, index_rec_cb, NULL); }
@@ -3532,6 +3621,7 @@ test_update_split_root(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_p
H5B2_test_rec_t idx; /* Index within B-tree, for iterator */
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
unsigned u; /* Local index variable */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/*
@@ -3666,30 +3756,39 @@ test_update_split_root(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_p
/* (Should not be found, but not fail) */
find.key = 800;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find existant record in root of level-1 B-tree */
find.key = 33;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.key != 33)
TEST_ERROR
if (find.val != 67)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to find existant record in leaf of level-1 B-tree */
find.key = 56;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.key != 56)
TEST_ERROR
if (find.val != 113)
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Attempt to index non-existant record in level-1 B-tree */
H5E_BEGIN_TRY
@@ -4372,6 +4471,7 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
H5B2_test_rec_t idx; /* Index within B-tree, for iterator */
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
unsigned u; /* Local index variable */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/*
@@ -4452,18 +4552,24 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* (Should not be found, but not fail) */
find.key = INSERT_SPLIT_ROOT_NREC_REC * 42;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find existant record in root of level-2 B-tree */
find.key = 1347;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (1347 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 1347;
@@ -4473,10 +4579,13 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* Attempt to find existant record in internal node of level-2 B-tree */
find.key = 513;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (513 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 513;
@@ -4486,10 +4595,13 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* Attempt to find existant record in leaf of level-2 B-tree */
find.key = 555;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (555 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 555;
@@ -4617,18 +4729,24 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* (Should not be found, but not fail) */
find.key = INSERT_SPLIT_ROOT_NREC_REC * 42;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find existant record in root of level-2 B-tree */
find.key = 1344;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (1344 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 1344;
@@ -4638,10 +4756,13 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* Attempt to find existant record in internal node of level-2 B-tree */
find.key = 512;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (512 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 512;
@@ -4651,10 +4772,13 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* Attempt to find existant record in leaf of level-2 B-tree */
find.key = 555;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (555 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 555;
@@ -4792,18 +4916,24 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* (Should not be found, but not fail) */
find.key = INSERT_SPLIT_ROOT_NREC_REC * 42;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Attempt to find existant record in root of level-2 B-tree */
find.key = 1345;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (1345 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 1345;
@@ -4813,10 +4943,13 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* Attempt to find existant record in internal node of level-2 B-tree */
find.key = 513;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (513 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 513;
@@ -4826,10 +4959,13 @@ test_update_make_level2(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_
/* Attempt to find existant record in leaf of level-2 B-tree */
find.key = 555;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (555 * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
/* Check with B-tree */
record.key = 555;
@@ -4930,6 +5066,7 @@ test_update_lots(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_t
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
hsize_t nrec; /* Number of records in B-tree */
unsigned u; /* Local index variable */
+ hbool_t found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/* Initialize random number seed */
@@ -5025,10 +5162,13 @@ HDfprintf(stderr, "curr_time = %lu\n", (unsigned long)curr_time);
/* (Should not be found, but not fail) */
find.key = INSERT_MANY_REC * 2;
find.val = (hsize_t)-1;
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != FALSE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
TEST_ERROR
if (find.val != (hsize_t)-1)
TEST_ERROR
+ if (found)
+ TEST_ERROR
/* Find random records */
for (u = 0; u < FIND_MANY_REC; u++) {
@@ -5037,10 +5177,13 @@ HDfprintf(stderr, "curr_time = %lu\n", (unsigned long)curr_time);
find.val = (hsize_t)-1;
/* Attempt to find existant record in level-4 B-tree */
- if (H5B2_find(bt2, &find, find_rec_cb, &find) != TRUE)
+ found = FALSE;
+ if (H5B2_find(bt2, &find, &found, find_rec_cb, &find) < 0)
FAIL_STACK_ERROR
if (find.val != (find.key * 2))
TEST_ERROR
+ if (!found)
+ TEST_ERROR
} /* end for */
/* Attempt to index non-existant record in level-4 B-tree, in increasing & decreasing order */
@@ -9546,6 +9689,7 @@ test_modify(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_t *tpa
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
H5B2_node_info_test_t ninfo; /* B-tree node info */
unsigned u; /* Local index variable */
+ hbool_t rec_found; /* Whether record was found */
herr_t ret; /* Generic error return value */
/*
@@ -9612,12 +9756,15 @@ test_modify(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_t *tpa
TEST_ERROR
/* Attempt to find modified record */
- record = 4331;
- found = 4331;
- if (H5B2_find(bt2, &record, find_cb, &found) != TRUE)
+ record = 4331;
+ found = 4331;
+ rec_found = FALSE;
+ if (H5B2_find(bt2, &record, &rec_found, find_cb, &found) < 0)
FAIL_STACK_ERROR
if (found != 4331)
TEST_ERROR
+ if (!rec_found)
+ TEST_ERROR
/* Attempt to find original record */
record = 4330;
@@ -9657,12 +9804,15 @@ test_modify(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_t *tpa
TEST_ERROR
/* Attempt to find modified record */
- record = 5352;
- found = 5352;
- if (H5B2_find(bt2, &record, find_cb, &found) != TRUE)
+ record = 5352;
+ found = 5352;
+ rec_found = FALSE;
+ if (H5B2_find(bt2, &record, &rec_found, find_cb, &found) < 0)
STACK_ERROR
if (found != 5352)
TEST_ERROR
+ if (!rec_found)
+ TEST_ERROR
/* Attempt to find original record */
record = 5350;
@@ -9702,12 +9852,15 @@ test_modify(hid_t fapl, const H5B2_create_t *cparam, const bt2_test_param_t *tpa
TEST_ERROR
/* Attempt to find modified record */
- record = 9448;
- found = 9448;
- if (H5B2_find(bt2, &record, find_cb, &found) != TRUE)
+ record = 9448;
+ found = 9448;
+ rec_found = FALSE;
+ if (H5B2_find(bt2, &record, &rec_found, find_cb, &found) < 0)
STACK_ERROR
if (found != 9448)
TEST_ERROR
+ if (!rec_found)
+ TEST_ERROR
/* Attempt to find original record */
record = 9445;
diff --git a/test/cache_common.h b/test/cache_common.h
index 87fab72..455acfb 100644
--- a/test/cache_common.h
+++ b/test/cache_common.h
@@ -392,7 +392,8 @@ typedef struct test_entry_t {
int flush_dep_par_idx[MAX_FLUSH_DEP_PARS]; /* Indices of flush dependency parents */
unsigned flush_dep_npar; /* Number of flush dependency parents */
unsigned flush_dep_nchd; /* Number of flush dependency children */
- unsigned flush_dep_ndirty_chd; /* Number of dirty flush dependency children (including granchildren, etc.) */
+ unsigned
+ flush_dep_ndirty_chd; /* Number of dirty flush dependency children (including granchildren, etc.) */
hbool_t pinned_from_client; /* entry was pinned by client call */
hbool_t pinned_from_cache; /* entry was pinned by cache internally */
unsigned flush_order; /* Order that entry was flushed in */
diff --git a/test/cache_tagging.c b/test/cache_tagging.c
index 5f94f8a..eab5d18 100644
--- a/test/cache_tagging.c
+++ b/test/cache_tagging.c
@@ -443,7 +443,7 @@ check_file_creation_tags(hid_t fcpl_id, int type)
/* Variable Declarations */
hid_t fid = -1; /* File Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose test outout */
+ int verbose = FALSE; /* verbose test outout */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = 0;
@@ -549,9 +549,9 @@ check_file_open_tags(hid_t fcpl, int type)
#ifndef NDEBUG
int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
- hid_t fapl = -1; /* File access prop list */
- haddr_t root_tag; /* Root Group Tag */
- haddr_t sbe_tag; /* Sblock Extension Tag */
+ hid_t fapl = -1; /* File access prop list */
+ haddr_t root_tag; /* Root Group Tag */
+ haddr_t sbe_tag; /* Sblock Extension Tag */
/* Testing Macro */
TESTING("tag application during file open");
@@ -677,7 +677,7 @@ check_group_creation_tags(void)
hid_t fid = -1; /* File Identifier */
hid_t gid = -1; /* Group Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = HADDR_UNDEF; /* Root Group Tag */
@@ -800,7 +800,7 @@ check_multi_group_creation_tags(void)
hid_t fid = -1; /* File Identifier */
hid_t gid = -1; /* Group Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
char gname[16]; /* group name buffer */
int i = 0; /* iterator */
@@ -952,7 +952,7 @@ check_link_iteration_tags(void)
hid_t sid = -1; /* Group Identifier */
hid_t did = -1; /* Group Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
int i = 0; /* iterator */
haddr_t root_tag = 0; /* Root Group Tag Value */
@@ -1094,7 +1094,7 @@ check_dense_attribute_tags(void)
hid_t did = -1; /* Group Identifier */
hid_t dcpl = -1; /* Group Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
int i = 0; /* iterator */
hid_t fapl = -1; /* File access property list */
@@ -1324,7 +1324,7 @@ check_group_open_tags(void)
hid_t fid = -1; /* File Identifier */
hid_t gid = -1; /* Group Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file output */
+ int verbose = FALSE; /* verbose file output */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = HADDR_UNDEF;
@@ -1455,7 +1455,7 @@ check_attribute_creation_tags(hid_t fcpl, int type)
hid_t gid = -1; /* Group Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = 0; /* Root group tag */
@@ -1620,7 +1620,7 @@ check_attribute_open_tags(hid_t fcpl, int type)
hid_t gid = -1; /* Group Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = 0;
@@ -1787,7 +1787,7 @@ check_attribute_rename_tags(hid_t fcpl, int type)
hid_t aid = -1; /* Attribute Identifier */
hid_t sid = -1; /* Dataset Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
int * data = NULL; /* data buffer */
int i, j, k = 0; /* iterators */
@@ -2000,7 +2000,7 @@ check_attribute_delete_tags(hid_t fcpl, int type)
hid_t aid = -1; /* Attribute Identifier */
hid_t sid = -1; /* Dataset Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
int * data = NULL; /* data buffer */
int i, j, k = 0; /* iterators */
@@ -2191,7 +2191,7 @@ check_dataset_creation_tags(hid_t fcpl, int type)
hid_t did = -1; /* Dataset Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -2351,7 +2351,7 @@ check_dataset_creation_earlyalloc_tags(hid_t fcpl, int type)
hid_t did = -1; /* Dataset Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -2517,7 +2517,7 @@ check_dataset_open_tags(void)
hid_t did = -1; /* Dataset Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -2669,7 +2669,7 @@ check_dataset_write_tags(void)
hid_t did = -1; /* Dataset Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -2836,7 +2836,7 @@ check_attribute_write_tags(hid_t fcpl, int type)
hid_t aid = -1; /* Attribute Identifier */
hid_t sid = -1; /* Dataset Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
int * data = NULL; /* data buffer */
int i, j, k = 0; /* iterators */
@@ -3022,7 +3022,7 @@ check_dataset_read_tags(void)
hid_t did = -1; /* Dataset Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -3184,7 +3184,7 @@ check_dataset_size_retrieval(void)
hid_t did = -1; /* Dataset Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -3348,7 +3348,7 @@ check_dataset_extend_tags(void)
hid_t did = -1; /* Dataset Identifier */
hid_t sid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -3510,7 +3510,7 @@ check_object_info_tags(void)
hid_t fid = -1; /* File Identifier */
hid_t gid = -1; /* Group Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file output */
+ int verbose = FALSE; /* verbose file output */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = HADDR_UNDEF;
@@ -3645,7 +3645,7 @@ check_object_copy_tags(void)
hid_t fid = -1; /* File Identifier */
hid_t gid = -1; /* Group Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file output */
+ int verbose = FALSE; /* verbose file output */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = HADDR_UNDEF;
@@ -3795,7 +3795,7 @@ check_link_removal_tags(hid_t fcpl, int type)
hid_t sid = -1; /* Dataspace Identifier */
hid_t gid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -3984,7 +3984,7 @@ check_link_getname_tags(void)
hid_t sid = -1; /* Dataspace Identifier */
hid_t gid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t dcpl = -1; /* dataset creation pl */
hsize_t cdims[2] = {1, 1}; /* chunk dimensions */
@@ -4161,7 +4161,7 @@ check_external_link_creation_tags(void)
hid_t fid2 = -1; /* File Identifier */
hid_t gid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
hid_t fapl = -1; /* File access prop list */
haddr_t root_tag = 0;
@@ -4288,7 +4288,7 @@ check_external_link_open_tags(void)
hid_t gid = -1; /* Dataspace Identifier */
hid_t xid = -1; /* Dataspace Identifier */
#ifndef NDEBUG
- int verbose = FALSE; /* verbose file outout */
+ int verbose = FALSE; /* verbose file outout */
#endif /* NDEBUG */
H5O_native_info_t ninfo; /* Native object info struct */
hid_t fapl = -1; /* File access prop list */
diff --git a/test/chunk_info.c b/test/chunk_info.c
index 37fbe60..04b3ad0 100644
--- a/test/chunk_info.c
+++ b/test/chunk_info.c
@@ -67,7 +67,7 @@ const char *FILENAME[] = {"tchunk_info_earliest", "tchunk_info_v18", "tchunk_in
#define V2_BTREE_INDEX_DSET_NAME "Version 2 B-Tree Index Dataset"
#define SKIP_FILTER_DSET_NAME "Dataset with Skipping One Filter"
#define FILENAME_BUF_SIZE 256 /* Size for file names */
-#define RANK 2 /* Rank for datasets */
+#define RANK 2 /* Rank for datasets */
/* Dimension of the dataset */
#define NX 24
diff --git a/test/cmpd_dtransform.c b/test/cmpd_dtransform.c
index 2e1acaa..76ff287 100644
--- a/test/cmpd_dtransform.c
+++ b/test/cmpd_dtransform.c
@@ -24,95 +24,111 @@
#define LENGTH 11
typedef struct {
- char name[64];
- char unit[64];
+ char name[64];
+ char unit[64];
} att_t;
int
main(void)
{
- hsize_t dima[] = { 1 };
- hsize_t dims[] = { LENGTH };
- hid_t str_dtyp_id, att_dtyp_id, file_id, fspace_id, dset_id, att_dspc_id, att_attr_id, dxpl_id;
+ hsize_t dima[] = {1};
+ hsize_t dims[] = {LENGTH};
+ hid_t str_dtyp_id = H5I_INVALID_HID, att_dtyp_id = H5I_INVALID_HID;
+ hid_t file_id = H5I_INVALID_HID;
+ hid_t fspace_id = H5I_INVALID_HID;
+ hid_t dset_id = H5I_INVALID_HID;
+ hid_t att_dspc_id = H5I_INVALID_HID;
+ hid_t att_attr_id = H5I_INVALID_HID;
+ hid_t dxpl_id = H5I_INVALID_HID;
+ const char *expr = "2*x";
+ int * data = NULL;
+ int * data_res = NULL;
+ att_t * atts = NULL;
+ att_t * atts_res = NULL;
/* Compound datatype */
- att_t *atts = HDmalloc(sizeof(att_t));
+ if (NULL == (atts = HDmalloc(sizeof(att_t))))
+ TEST_ERROR;
HDstrcpy(atts[0].name, "Name");
HDstrcpy(atts[0].unit, "Unit");
/* String type */
if ((str_dtyp_id = H5Tcopy(H5T_C_S1)) < 0)
- TEST_ERROR;
- H5Tset_size(str_dtyp_id, 64);
+ FAIL_STACK_ERROR
+ if (H5Tset_size(str_dtyp_id, 64) < 0)
+ FAIL_STACK_ERROR
/* Attribute type */
if ((att_dtyp_id = H5Tcreate(H5T_COMPOUND, sizeof(att_t))) < 0)
- TEST_ERROR;
- H5Tinsert(att_dtyp_id, "NAME", HOFFSET(att_t, name), str_dtyp_id);
- H5Tinsert(att_dtyp_id, "UNIT", HOFFSET(att_t, unit), str_dtyp_id);
+ FAIL_STACK_ERROR
+ if (H5Tinsert(att_dtyp_id, "NAME", HOFFSET(att_t, name), str_dtyp_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Tinsert(att_dtyp_id, "UNIT", HOFFSET(att_t, unit), str_dtyp_id) < 0)
+ FAIL_STACK_ERROR
/* Create file. */
if ((file_id = H5Fcreate(FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- TEST_ERROR;
+ FAIL_STACK_ERROR
/* Create file dataspace. */
if ((fspace_id = H5Screate_simple(1, dims, NULL)) < 0)
- TEST_ERROR;
+ FAIL_STACK_ERROR
/* Create dataset. */
- if ((dset_id = H5Dcreate2(file_id, "test_dset", H5T_NATIVE_INT, fspace_id,
- H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- TEST_ERROR;
+ if ((dset_id = H5Dcreate2(file_id, "test_dset", H5T_NATIVE_INT, fspace_id, H5P_DEFAULT, H5P_DEFAULT,
+ H5P_DEFAULT)) < 0)
+ FAIL_STACK_ERROR
/* Write the attribute (compound) to the dataset */
if ((att_dspc_id = H5Screate_simple(1, dima, NULL)) < 0)
- TEST_ERROR;
- if ((att_attr_id = H5Acreate2(dset_id, "ATTRIBUTES", att_dtyp_id, att_dspc_id,
- H5P_DEFAULT, H5P_DEFAULT)) < 0)
- TEST_ERROR;
+ FAIL_STACK_ERROR
+ if ((att_attr_id =
+ H5Acreate2(dset_id, "ATTRIBUTES", att_dtyp_id, att_dspc_id, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ FAIL_STACK_ERROR
if (H5Awrite(att_attr_id, att_dtyp_id, atts) < 0)
- TEST_ERROR;
+ FAIL_STACK_ERROR
/* Create dataset transfer property list */
- const char *expr = "2*x";
if ((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0)
- TEST_ERROR;
+ FAIL_STACK_ERROR
if (H5Pset_data_transform(dxpl_id, expr) < 0) {
- HDprintf("**** ERROR: H5Pset_data_transform (expression: %s) ****\n", expr);
- TEST_ERROR;
+ HDprintf("**** ERROR: H5Pset_data_transform (expression: %s) ****\n", expr);
+ FAIL_STACK_ERROR
}
- int *data = HDmalloc(LENGTH * sizeof(int));
- int *data_res = HDmalloc(LENGTH * sizeof(int));
+ if (NULL == (data = HDmalloc(LENGTH * sizeof(int))))
+ TEST_ERROR;
+ if (NULL == (data_res = HDmalloc(LENGTH * sizeof(int))))
+ TEST_ERROR;
for (unsigned i = 0; i < LENGTH; i++) {
- data[i] = 10;
- data_res[i] = 2 * data[i];
+ data[i] = 10;
+ data_res[i] = 2 * data[i];
}
/* Write the data */
if (H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, dxpl_id, data) < 0)
- TEST_ERROR;
-
+ FAIL_STACK_ERROR
+
/* Read attribute */
- att_t *atts_res =HDmalloc(sizeof(att_t));
+ if (NULL == (atts_res = HDmalloc(sizeof(att_t))))
+ TEST_ERROR;
if (H5Aread(att_attr_id, att_dtyp_id, atts_res) < 0)
- TEST_ERROR;
-
+ FAIL_STACK_ERROR
+
/* Verify attribute */
if (HDstrcmp(atts_res[0].name, atts[0].name) != 0)
- TEST_ERROR;
+ TEST_ERROR;
if (HDstrcmp(atts_res[0].unit, atts[0].unit) != 0)
- TEST_ERROR;
+ TEST_ERROR;
/* Read the data */
if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0)
- TEST_ERROR;
+ FAIL_STACK_ERROR
/* Verify data */
- for (unsigned idx = 0; idx < LENGTH; idx++) {
- if (data[idx] != data_res[idx])
- TEST_ERROR;
- }
+ for (unsigned idx = 0; idx < LENGTH; idx++)
+ if (data[idx] != data_res[idx])
+ TEST_ERROR;
HDfree(atts);
HDfree(atts_res);
@@ -120,17 +136,47 @@ main(void)
HDfree(data_res);
/* Close all identifiers. */
- H5Pclose(dxpl_id);
- H5Aclose(att_attr_id);
- H5Sclose(att_dspc_id);
- H5Dclose(dset_id);
- H5Sclose(fspace_id);
- H5Fclose(file_id);
- H5Tclose(att_dtyp_id);
- H5Tclose(str_dtyp_id);
+ if (H5Pclose(dxpl_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Aclose(att_attr_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Sclose(att_dspc_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Dclose(dset_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Sclose(fspace_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Fclose(file_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Tclose(att_dtyp_id) < 0)
+ FAIL_STACK_ERROR
+ if (H5Tclose(str_dtyp_id) < 0)
+ FAIL_STACK_ERROR
return 0;
- error:
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Pclose(dxpl_id);
+ H5Aclose(att_attr_id);
+ H5Sclose(att_dspc_id);
+ H5Dclose(dset_id);
+ H5Sclose(fspace_id);
+ H5Fclose(file_id);
+ H5Tclose(att_dtyp_id);
+ H5Tclose(str_dtyp_id);
+ }
+ H5E_END_TRY
+
+ if (atts)
+ HDfree(atts);
+ if (atts_res)
+ HDfree(atts_res);
+ if (data)
+ HDfree(data);
+ if (data_res)
+ HDfree(data_res);
+
return 1;
}
diff --git a/test/dsets.c b/test/dsets.c
index 9efc151..4f2f75a 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -193,15 +193,15 @@ const char *FILENAME[] = {"dataset", /* 0 */
#define DATA_NOT_CORRUPTED 0
/* Parameters for the "set local" test */
-#define BOGUS2_PERM_NPARMS 2 /* Number of "permanent" parameters */
+#define BOGUS2_PERM_NPARMS 2 /* Number of "permanent" parameters */
#define BOGUS2_PARAM_1 13 /* (No particular meaning, just for checking value) */
#define BOGUS2_PARAM_2 35 /* (No particular meaning, just for checking value) */
-#define BOGUS2_ALL_NPARMS 4 /* Total number of parameter = permanent + "local" parameters */
+#define BOGUS2_ALL_NPARMS 4 /* Total number of parameter = permanent + "local" parameters */
/* Dimensionality for conversion buffer test */
-#define DIM1 100 /* Dim. Size of data member # 1 */
+#define DIM1 100 /* Dim. Size of data member # 1 */
#define DIM2 5000 /* Dim. Size of data member # 2 */
-#define DIM3 10 /* Dim. Size of data member # 3 */
+#define DIM3 10 /* Dim. Size of data member # 3 */
/* Parameters for internal filter test */
#define FILTER_CHUNK_DIM1 2
diff --git a/test/error_test.c b/test/error_test.c
index a47fa85..ba5a917 100644
--- a/test/error_test.c
+++ b/test/error_test.c
@@ -575,6 +575,111 @@ error:
} /* end test_copy() */
/*-------------------------------------------------------------------------
+ * Function: test_append
+ *
+ * Purpose: Test appending one error stack to another
+ *
+ * Return: Success: 0
+ * Failure: -1
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+test_append(void)
+{
+ const char *err_func = "test_append"; /* Function name for pushing error */
+ const char *err_msg1 = "Error message #1"; /* Error message #1 for pushing error */
+ const char *err_msg2 = "Error message #2"; /* Error message #2 for pushing error */
+ ssize_t err_num; /* Number of errors on stack */
+ hid_t estack_id1 = -1; /* Error stack ID */
+ hid_t estack_id2 = -1; /* Error stack ID */
+ herr_t ret; /* Generic return value */
+
+ /* Push an error */
+ if (H5Epush(H5E_DEFAULT, __FILE__, err_func, __LINE__, ERR_CLS, ERR_MAJ_TEST, ERR_MIN_SUBROUTINE, "%s",
+ err_msg1) < 0)
+ TEST_ERROR;
+
+ /* Copy error stack, which clears the original */
+ if ((estack_id1 = H5Eget_current_stack()) < 0)
+ TEST_ERROR
+
+ /* Check the number of errors on stack #1 */
+ err_num = H5Eget_num(estack_id1);
+ if (err_num != 1)
+ TEST_ERROR
+
+ /* Create another stack, from scratch */
+ if ((estack_id2 = H5Ecreate_stack()) < 0)
+ TEST_ERROR
+
+ /* Check the number of errors on stack #2 */
+ err_num = H5Eget_num(estack_id2);
+ if (err_num != 0)
+ TEST_ERROR
+
+ /* Push an error on stack #2 */
+ if (H5Epush(estack_id2, __FILE__, err_func, __LINE__, ERR_CLS, ERR_MAJ_IO, ERR_MIN_CREATE, "%s",
+ err_msg2) < 0)
+ TEST_ERROR;
+
+ /* Check the number of errors on stack #2 */
+ err_num = H5Eget_num(estack_id2);
+ if (err_num != 1)
+ TEST_ERROR
+
+ /* Try to append bad error stack IDs */
+ H5E_BEGIN_TRY { ret = H5Eappend_stack(H5E_DEFAULT, H5E_DEFAULT, FALSE); }
+ H5E_END_TRY
+ if (ret >= 0)
+ TEST_ERROR
+ H5E_BEGIN_TRY { ret = H5Eappend_stack(estack_id1, H5E_DEFAULT, FALSE); }
+ H5E_END_TRY
+ if (ret >= 0)
+ TEST_ERROR
+ H5E_BEGIN_TRY { ret = H5Eappend_stack(H5E_DEFAULT, estack_id2, FALSE); }
+ H5E_END_TRY
+ if (ret >= 0)
+ TEST_ERROR
+
+ /* Append error stack #2 to error stack #1, without closing stack #2 */
+ if (H5Eappend_stack(estack_id1, estack_id2, FALSE) < 0)
+ TEST_ERROR
+
+ /* Check the number of errors on stack #1 */
+ err_num = H5Eget_num(estack_id1);
+ if (err_num != 2)
+ TEST_ERROR
+
+ /* Check the number of errors on stack #2 */
+ err_num = H5Eget_num(estack_id2);
+ if (err_num != 1)
+ TEST_ERROR
+
+ /* Append error stack #2 to error stack #1, and close stack #2 */
+ if (H5Eappend_stack(estack_id1, estack_id2, TRUE) < 0)
+ TEST_ERROR
+
+ /* Try to close error stack #2. Should fail because H5Eappend_stack
+ * should have already closed it.
+ */
+ H5E_BEGIN_TRY { ret = H5Eclose_stack(estack_id2); }
+ H5E_END_TRY
+ if (ret >= 0)
+ TEST_ERROR
+
+ /* Check the number of errors on stack #1 */
+ err_num = H5Eget_num(estack_id1);
+ if (err_num != 3)
+ TEST_ERROR
+
+ return 0;
+
+error:
+ return -1;
+} /* end test_append() */
+
+/*-------------------------------------------------------------------------
* Function: close_error
*
* Purpose: Closes error information.
@@ -749,6 +854,10 @@ main(void)
if (H5Fclose(file) < 0)
TEST_ERROR;
+ /* Test appending error stacks */
+ if (test_append() < 0)
+ TEST_ERROR;
+
/* Close error information */
if (close_error() < 0)
TEST_ERROR;
diff --git a/test/event_set.c b/test/event_set.c
new file mode 100644
index 0000000..91080b8
--- /dev/null
+++ b/test/event_set.c
@@ -0,0 +1,132 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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://support.hdfgroup.org/ftp/HDF5/releases. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Programmer: Quincey Koziol
+ * Wednesday, April 8, 2020
+ *
+ * Purpose: Tests event sets.
+ */
+#include "h5test.h"
+#include "H5srcdir.h"
+
+const char *FILENAME[] = {"event_set_1", NULL};
+
+/*-------------------------------------------------------------------------
+ * Function: test_es_create
+ *
+ * Purpose: Tests creating event sets.
+ *
+ * Return: Success: 0
+ * Failure: number of errors
+ *
+ * Programmer: Quincey Koziol
+ * Thursday, April 9, 2020
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_es_create(void)
+{
+ hid_t es_id; /* Event set ID */
+ size_t count; /* # of events in set */
+ size_t num_errs; /* # of failed events in set */
+ uint64_t num_ops; /* # of events inserted into set */
+ hbool_t err_occurred; /* Whether an error has occurred */
+
+ TESTING("event set creation");
+
+ /* Create an event set */
+ if ((es_id = H5EScreate()) < 0)
+ TEST_ERROR;
+
+ /* Query the # of events in empty event set */
+ count = 0;
+ if (H5ESget_count(es_id, &count) < 0)
+ TEST_ERROR;
+ if (count > 0)
+ FAIL_PUTS_ERROR("should be empty event set");
+
+ /* Check for errors */
+ err_occurred = FALSE;
+ if (H5ESget_err_status(es_id, &err_occurred) < 0)
+ TEST_ERROR;
+ if (err_occurred)
+ FAIL_PUTS_ERROR("should not be an error for the event set");
+
+ /* Check errors count */
+ num_errs = 0;
+ if (H5ESget_err_count(es_id, &num_errs) < 0)
+ TEST_ERROR;
+ if (num_errs)
+ FAIL_PUTS_ERROR("should not be any errors for the event set");
+
+ /* Check errors count */
+ num_ops = 0;
+ if (H5ESget_op_counter(es_id, &num_ops) < 0)
+ TEST_ERROR;
+ if (num_ops)
+ FAIL_PUTS_ERROR("should not be any operations for the event set yet");
+
+ /* Close the event set */
+ if (H5ESclose(es_id) < 0)
+ TEST_ERROR;
+
+ PASSED();
+ return 0;
+
+error:
+ H5E_BEGIN_TRY { H5ESclose(es_id); }
+ H5E_END_TRY;
+ return 1;
+}
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ * Purpose: Tests event sets
+ *
+ * Return: Success: EXIT_SUCCESS
+ * Failure: EXIT_FAILURE
+ *
+ * Programmer: Quincey Koziol
+ * Wednesday, April 8, 2020
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ hid_t fapl_id = H5I_INVALID_HID; /* File access property list */
+ int nerrors = 0; /* Error count */
+
+ /* Setup */
+ h5_reset();
+ fapl_id = h5_fileaccess();
+
+ /* Tests */
+ nerrors += test_es_create();
+
+ /* Cleanup */
+ h5_cleanup(FILENAME, fapl_id);
+
+ /* Check for any errors */
+ if (nerrors) {
+ HDputs("***** EVENT SET TESTS FAILED *****");
+ HDexit(EXIT_FAILURE);
+ } /* end if */
+
+ /* Report status */
+ HDputs("All event set tests passed.");
+
+ HDexit(EXIT_SUCCESS);
+} /* end main() */
diff --git a/test/fheap.c b/test/fheap.c
index e29551e..b0b2233 100644
--- a/test/fheap.c
+++ b/test/fheap.c
@@ -9423,8 +9423,9 @@ test_man_fill_direct_skip_2nd_indirect_start_block_add_skipped(hid_t fapl, H5HF_
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
- unsigned row; /* Current row in indirect block */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned row; /* Current row in indirect block */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -9554,7 +9555,8 @@ test_man_fill_2nd_direct_less_one_wrap_start_block_add_skipped(hid_t fapl, H5HF_
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -9699,8 +9701,9 @@ test_man_fill_direct_skip_2nd_indirect_skip_2nd_block_add_skipped(hid_t fapl, H5
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
- unsigned row; /* Current row in indirect block */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned row; /* Current row in indirect block */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -9861,7 +9864,8 @@ test_man_fill_direct_skip_indirect_two_rows_add_skipped(hid_t fapl, H5HF_create_
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
unsigned max_dblock_rows; /* Max. # of rows (of direct blocks) in the root indirect block */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
@@ -10016,7 +10020,8 @@ test_man_fill_direct_skip_indirect_two_rows_skip_indirect_row_add_skipped(hid_t
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
unsigned max_dblock_rows; /* Max. # of rows (of direct blocks) in the root indirect block */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
@@ -10472,7 +10477,8 @@ test_man_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped(h
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -10624,7 +10630,8 @@ test_man_fill_2nd_direct_fill_direct_skip2_3rd_indirect_start_block_add_skipped(
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -10780,7 +10787,8 @@ test_man_fill_3rd_direct_less_one_fill_direct_wrap_start_block_add_skipped(hid_t
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -10943,7 +10951,8 @@ test_man_fill_1st_row_3rd_direct_fill_2nd_direct_less_one_wrap_start_block_add_s
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -11110,7 +11119,8 @@ test_man_fill_3rd_direct_fill_direct_skip_start_block_add_skipped(hid_t fapl, H5
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -11272,7 +11282,8 @@ test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_blo
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -11454,7 +11465,8 @@ test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_two_rows_
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -11673,7 +11685,8 @@ test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_star
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -11872,7 +11885,8 @@ test_man_fill_4th_direct_less_one_fill_2nd_direct_fill_direct_skip_3rd_indirect_
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -12402,7 +12416,8 @@ test_man_frag_2nd_direct(hid_t fapl, H5HF_create_t *cparam, fheap_test_param_t *
H5HF_t * fh = NULL; /* Fractal heap wrapper */
haddr_t fh_addr; /* Address of fractal heap */
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
- unsigned num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
+ unsigned
+ num_first_indirect_rows; /* Number of rows (of direct blocks) in each of the first indirect blocks */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
size_t obj_size; /* Size of object */
size_t fill_size; /* Size of objects for "bulk" filled blocks */
@@ -14936,7 +14951,7 @@ test_filtered_man_root_direct(hid_t fapl, H5HF_create_t *cparam, fheap_test_para
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
#ifdef NOT_YET
- h5_stat_size_t file_size; /* Size of file currently */
+ h5_stat_size_t file_size; /* Size of file currently */
#endif /* NOT_YET */
unsigned char heap_id[HEAP_ID_LEN]; /* Heap ID for object */
size_t obj_size; /* Size of object */
@@ -15109,7 +15124,7 @@ test_filtered_man_root_indirect(hid_t fapl, H5HF_create_t *cparam, fheap_test_pa
fheap_heap_ids_t keep_ids; /* Structure to retain heap IDs */
h5_stat_size_t empty_size; /* Size of a file with an empty heap */
#ifdef NOT_YET
- h5_stat_size_t file_size; /* Size of file currently */
+ h5_stat_size_t file_size; /* Size of file currently */
#endif /* NOT_YET */
unsigned char heap_id1[HEAP_ID_LEN]; /* Heap ID for object #1 */
unsigned char heap_id2[HEAP_ID_LEN]; /* Heap ID for object #2 */
diff --git a/test/h5test.c b/test/h5test.c
index 9c59e77..48dbb6c 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -2041,7 +2041,7 @@ h5_get_dummy_vol_class(void)
* can be registered.
*/
vol_class->version = H5VL_VERSION;
- vol_class->name = "dummy";
+ vol_class->name = "dummy";
return vol_class;
diff --git a/test/hdfs.c b/test/hdfs.c
index a59cdb6..4121f15 100644
--- a/test/hdfs.c
+++ b/test/hdfs.c
@@ -566,7 +566,8 @@ test_fapl_config_validation(void)
JSVERIFY(config.stream_buffer_size, fa_fetch.stream_buffer_size, "streambuffer size mismatch")
JSVERIFY_STR(config.namenode_name, fa_fetch.namenode_name, "node name mismatch")
JSVERIFY_STR(config.user_name, fa_fetch.user_name, "user name mismatch")
- JSVERIFY_STR(config.kerberos_ticket_cache, fa_fetch.kerberos_ticket_cache, "kerberos ticket cache mismatch")
+ JSVERIFY_STR(config.kerberos_ticket_cache, fa_fetch.kerberos_ticket_cache,
+ "kerberos ticket cache mismatch")
}
/*-----------------------------
diff --git a/test/links.c b/test/links.c
index 055e1dc..11b760c 100644
--- a/test/links.c
+++ b/test/links.c
@@ -9800,8 +9800,8 @@ external_set_elink_cb(hid_t fapl, hbool_t new_format)
base_driver == H5FD_MPIO || base_driver == H5FD_CORE)
? H5P_DEFAULT
: fapl;
- op_data.fam_size = ELINK_CB_FAM_SIZE;
- op_data.code = 0;
+ op_data.fam_size = ELINK_CB_FAM_SIZE;
+ op_data.code = 0;
/* Create family fapl */
if ((fam_fapl = H5Pcopy(fapl)) < 0)
@@ -19182,7 +19182,7 @@ link_iterate_check(hid_t group_id, H5_index_t idx_type, H5_iter_order_t order, u
unsigned v; /* Local index variable */
hsize_t skip; /* # of links to skip in group */
#ifndef H5_NO_DEPRECATED_SYMBOLS
- int gskip; /* # of links to skip in group, with H5Giterate */
+ int gskip; /* # of links to skip in group, with H5Giterate */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
herr_t ret; /* Generic return value */
@@ -19670,7 +19670,7 @@ link_iterate_old_check(hid_t group_id, H5_iter_order_t order, unsigned max_links
unsigned v; /* Local index variable */
hsize_t skip; /* # of links to skip in group */
#ifndef H5_NO_DEPRECATED_SYMBOLS
- int gskip; /* # of links to skip in group, with H5Giterate */
+ int gskip; /* # of links to skip in group, with H5Giterate */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
herr_t ret; /* Generic return value */
@@ -22503,7 +22503,7 @@ main(void)
#ifndef H5_NO_DEPRECATED_SYMBOLS
nerrors += ud_hard_links_deprec(fapl2) < 0 ? 1 : 0; /* requires new format groups */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
- nerrors += ud_link_reregister(fapl2) < 0 ? 1 : 0; /* requires new format groups */
+ nerrors += ud_link_reregister(fapl2) < 0 ? 1 : 0; /* requires new format groups */
#ifndef H5_NO_DEPRECATED_SYMBOLS
nerrors += ud_link_reregister_deprec(fapl2) < 0 ? 1 : 0; /* requires new format groups */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
diff --git a/test/s3comms.c b/test/s3comms.c
index f3e96b5..36f6f49 100644
--- a/test/s3comms.c
+++ b/test/s3comms.c
@@ -372,7 +372,7 @@ jserr_str(const char *expected, const char *actual, const char *reason)
#define S3_TEST_RESOURCE_TEXT_PUBLIC "Poe_Raven.txt"
#define S3_TEST_RESOURCE_MISSING "missing.csv"
-#define S3_TEST_RUN_TIMEOUT 0 /* run tests that might hang */
+#define S3_TEST_RUN_TIMEOUT 0 /* run tests that might hang */
#define S3_TEST_MAX_URL_SIZE 256 /* char array size */
/* Global variables for aws test profile.
diff --git a/test/swmr_generator.c b/test/swmr_generator.c
index 931da94..9e7c050 100644
--- a/test/swmr_generator.c
+++ b/test/swmr_generator.c
@@ -96,7 +96,7 @@ gen_skeleton(const char *filename, hbool_t verbose, hbool_t swmr_write, int comp
#ifdef FILLVAL_WORKS
symbol_t fillval; /* Dataset fill value */
#endif /* FILLVAL_WORKS */
- unsigned u, v; /* Local index variable */
+ unsigned u, v; /* Local index variable */
HDassert(filename);
HDassert(index_type);
diff --git a/test/swmr_sparse_writer.c b/test/swmr_sparse_writer.c
index 14eef3d..a253de5 100644
--- a/test/swmr_sparse_writer.c
+++ b/test/swmr_sparse_writer.c
@@ -149,8 +149,8 @@ add_records(hid_t fid, unsigned verbose, unsigned long nrecords, unsigned long f
symbol_t record; /* The record to add to the dataset */
unsigned long rec_to_flush; /* # of records left to write before flush */
#ifdef OUT
- volatile int dummy; /* Dummy varialbe for busy sleep */
-#endif /* OUT */
+ volatile int dummy; /* Dummy varialbe for busy sleep */
+#endif /* OUT */
hsize_t dim[2] = {1, 0}; /* Dataspace dimensions */
unsigned long u, v; /* Local index variables */
diff --git a/test/tattr.c b/test/tattr.c
index ad669a1..346c1b9 100644
--- a/test/tattr.c
+++ b/test/tattr.c
@@ -5437,9 +5437,9 @@ test_attr_corder_delete(hid_t fcpl, hid_t fapl)
h5_stat_size_t empty_size; /* Size of empty file */
h5_stat_size_t file_size; /* Size of file after operating on it */
#endif /* LATER */
- unsigned curr_dset; /* Current dataset to work on */
- unsigned u; /* Local index variable */
- herr_t ret; /* Generic return value */
+ unsigned curr_dset; /* Current dataset to work on */
+ unsigned u; /* Local index variable */
+ herr_t ret; /* Generic return value */
/* Output message about test being performed */
MESSAGE(5, ("Testing Deleting Object w/Dense Attribute Storage and Creation Order Info\n"));
@@ -6861,7 +6861,7 @@ attr_iterate_check(hid_t fid, const char *dsetname, hid_t obj_id, H5_index_t idx
unsigned v; /* Local index variable */
hsize_t skip; /* # of attributes to skip on object */
#ifndef H5_NO_DEPRECATED_SYMBOLS
- unsigned oskip; /* # of attributes to skip on object, with H5Aiterate1 */
+ unsigned oskip; /* # of attributes to skip on object, with H5Aiterate1 */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
int old_nerrs; /* Number of errors when entering this check */
herr_t ret; /* Generic return value */
diff --git a/test/testfiles/err_compat_1 b/test/testfiles/err_compat_1
index fc99f77..c797ebb 100644
--- a/test/testfiles/err_compat_1
+++ b/test/testfiles/err_compat_1
@@ -12,14 +12,32 @@ HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
minor: Bad value
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
- #000: (file name) line (number) in H5Dcreate2(): invalid location identifier
+ #000: (file name) line (number) in H5Dcreate2(): unable to synchronously create dataset
+ major: Dataset
+ minor: Unable to create file
+ #001: (file name) line (number) in H5D__create_api_common(): can't set object access arguments
+ major: Dataset
+ minor: Can't set value
+ #002: (file name) line (number) in H5VL_setup_acc_args(): invalid location identifier
+ major: Invalid arguments to routine
+ minor: Inappropriate type
+ #003: (file name) line (number) in H5VL_vol_object(): invalid identifier type to function
major: Invalid arguments to routine
minor: Inappropriate type
********* Print error stack in customized way *********
- error #000: (file name) in H5Dcreate2(): line (number)
+ error #000: (file name) in H5VL_vol_object(): line (number)
major: Invalid arguments to routine
minor: Inappropriate type
+ error #001: (file name) in H5VL_setup_acc_args(): line (number)
+ major: Invalid arguments to routine
+ minor: Inappropriate type
+ error #002: (file name) in H5D__create_api_common(): line (number)
+ major: Dataset
+ minor: Can't set value
+ error #003: (file name) in H5Dcreate2(): line (number)
+ major: Dataset
+ minor: Unable to create file
********* Print error stack in customized way *********
error #000: (file name) in H5Eget_auto(1 or 2)(): line (number)
@@ -27,11 +45,29 @@ HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
minor: Can't get value
********* Print error stack in customized way *********
- error #000: (file name) in H5Dcreate2(): line (number)
+ error #000: (file name) in H5VL_vol_object(): line (number)
major: Invalid arguments to routine
minor: Inappropriate type
+ error #001: (file name) in H5VL_setup_acc_args(): line (number)
+ major: Invalid arguments to routine
+ minor: Inappropriate type
+ error #002: (file name) in H5D__create_api_common(): line (number)
+ major: Dataset
+ minor: Can't set value
+ error #003: (file name) in H5Dcreate2(): line (number)
+ major: Dataset
+ minor: Unable to create file
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
- #000: (file name) line (number) in H5Dcreate2(): invalid location identifier
+ #000: (file name) line (number) in H5Dcreate2(): unable to synchronously create dataset
+ major: Dataset
+ minor: Unable to create file
+ #001: (file name) line (number) in H5D__create_api_common(): can't set object access arguments
+ major: Dataset
+ minor: Can't set value
+ #002: (file name) line (number) in H5VL_setup_acc_args(): invalid location identifier
+ major: Invalid arguments to routine
+ minor: Inappropriate type
+ #003: (file name) line (number) in H5VL_vol_object(): invalid identifier type to function
major: Invalid arguments to routine
minor: Inappropriate type
@@ -42,6 +78,9 @@ HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
#001: (file name) line (number) in test_error2(): H5Dwrite shouldn't succeed
major: Error API
minor: Write failed
- #002: (file name) line (number) in H5Dwrite(): dset_id is not a dataset ID
+ #002: (file name) line (number) in H5Dwrite(): can't synchronously write data
+ major: Dataset
+ minor: Write failed
+ #003: (file name) line (number) in H5D__write_api_common(): dset_id is not a dataset ID
major: Invalid arguments to routine
minor: Inappropriate type
diff --git a/test/testfiles/error_test_1 b/test/testfiles/error_test_1
index f0e4a62..070869e 100644
--- a/test/testfiles/error_test_1
+++ b/test/testfiles/error_test_1
@@ -21,7 +21,10 @@ Error Test-DIAG: Error detected in Error Program (1.0) thread (IDs):
Testing error API based on data I/O
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
- #000: (file name) line (number) in H5Dwrite(): dset_id is not a dataset ID
+ #000: (file name) line (number) in H5Dwrite(): can't synchronously write data
+ major: Dataset
+ minor: Write failed
+ #001: (file name) line (number) in H5D__write_api_common(): dset_id is not a dataset ID
major: Invalid arguments to routine
minor: Inappropriate type
Error Test-DIAG: Error detected in Error Program (1.0) thread (IDs):
@@ -32,37 +35,43 @@ Error Test-DIAG: Error detected in Error Program (1.0) thread (IDs):
major: Error in IO
minor: Error in H5Dwrite
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
- #002: (file name) line (number) in H5Dwrite(): dset_id is not a dataset ID
+ #002: (file name) line (number) in H5Dwrite(): can't synchronously write data
+ major: Dataset
+ minor: Write failed
+ #003: (file name) line (number) in H5D__write_api_common(): dset_id is not a dataset ID
major: Invalid arguments to routine
minor: Inappropriate type
Testing error message during data reading when filter isn't registered
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
- #000: (file name) line (number) in H5Dread(): can't read data
+ #000: (file name) line (number) in H5Dread(): can't synchronously read data
+ major: Dataset
+ minor: Read failed
+ #001: (file name) line (number) in H5D__read_api_common(): can't read data
major: Dataset
minor: Read failed
- #001: (file name) line (number) in H5VL_dataset_read(): dataset read failed
+ #002: (file name) line (number) in H5VL_dataset_read(): dataset read failed
major: Virtual Object Layer
minor: Read failed
- #002: (file name) line (number) in H5VL__dataset_read(): dataset read failed
+ #003: (file name) line (number) in H5VL__dataset_read(): dataset read failed
major: Virtual Object Layer
minor: Read failed
- #003: (file name) line (number) in H5VL__native_dataset_read(): can't read data
+ #004: (file name) line (number) in H5VL__native_dataset_read(): can't read data
major: Dataset
minor: Read failed
- #004: (file name) line (number) in H5D__read(): can't read data
+ #005: (file name) line (number) in H5D__read(): can't read data
major: Dataset
minor: Read failed
- #005: (file name) line (number) in H5D__chunk_read(): unable to read raw data chunk
+ #006: (file name) line (number) in H5D__chunk_read(): unable to read raw data chunk
major: Low-level I/O
minor: Read failed
- #006: (file name) line (number) in H5D__chunk_lock(): data pipeline read failed
+ #007: (file name) line (number) in H5D__chunk_lock(): data pipeline read failed
major: Dataset
minor: Filter operation failed
- #007: (file name) line (number) in H5Z_pipeline(): required filter 'bogus' is not registered
+ #008: (file name) line (number) in H5Z_pipeline(): required filter 'bogus' is not registered
major: Data filters
minor: Read failed
- #008: (file name) line (number) in H5PL_load(): filter plugins disabled
+ #009: (file name) line (number) in H5PL_load(): filter plugins disabled
major: Plugin for dynamically loaded library
minor: Unable to load metadata into cache
diff --git a/test/th5o.c b/test/th5o.c
index c2409c1..a1849f0 100644
--- a/test/th5o.c
+++ b/test/th5o.c
@@ -1736,8 +1736,8 @@ test_h5o(void)
test_h5o_open(); /* Test generic open function */
#ifndef H5_NO_DEPRECATED_SYMBOLS
- test_h5o_open_by_addr(); /* Test opening objects by address */
-#endif /* H5_NO_DEPRECATED_SYMBOLS */
+ test_h5o_open_by_addr(); /* Test opening objects by address */
+#endif /* H5_NO_DEPRECATED_SYMBOLS */
test_h5o_open_by_token(); /* Test opening objects by token */
test_h5o_close(); /* Test generic close function */
test_h5o_refcount(); /* Test incrementing and decrementing reference count */
diff --git a/test/th5s.c b/test/th5s.c
index 04ac2e6..6eeec1c 100644
--- a/test/th5s.c
+++ b/test/th5s.c
@@ -102,8 +102,8 @@ struct space4_struct {
#define CONFIG_8 1
#define CONFIG_16 2
#define CONFIG_32 3
-#define POWER8 256 /* 2^8 */
-#define POWER16 65536 /* 2^16 */
+#define POWER8 256 /* 2^8 */
+#define POWER16 65536 /* 2^16 */
#define POWER32 4294967296 /* 2^32 */
/****************************************************************
diff --git a/test/tid.c b/test/tid.c
index b3bef52..007ed69 100644
--- a/test/tid.c
+++ b/test/tid.c
@@ -20,7 +20,7 @@
#include "H5Ipkg.h"
static herr_t
-free_wrapper(void *p, void **_ctx)
+free_wrapper(void *p, void H5_ATTR_UNUSED **_ctx)
{
HDfree(p);
return SUCCEED;
@@ -575,9 +575,9 @@ out:
*/
/* Macro definitions */
-#define RCT_MAX_NOBJS 25 /* Maximum number of objects in the list */
+#define RCT_MAX_NOBJS 25 /* Maximum number of objects in the list */
#define RCT_MIN_NOBJS 5
-#define RCT_NITER 50 /* Number of times we cycle through object creation and deletion */
+#define RCT_NITER 50 /* Number of times we cycle through object creation and deletion */
/* Structure to hold the master list of objects */
typedef struct rct_obj_list_t {
@@ -595,10 +595,10 @@ typedef struct rct_obj_list_t {
/* Structure for an object */
typedef struct rct_obj_t {
/* The ID for this object */
- hid_t id;
+ hid_t id;
/* The number of times this object has been freed */
- int nfrees;
+ int nfrees;
/* Whether we are currently freeing this object directly
* through H5Idec_ref().
@@ -615,12 +615,12 @@ typedef struct rct_obj_t {
* master list of objects.
*/
static herr_t
-rct_free_cb(void *_obj, void **_ctx)
+rct_free_cb(void *_obj, void H5_ATTR_UNUSED **_ctx)
{
- rct_obj_t * obj = (rct_obj_t *)_obj;
- long remove_nth;
- long i;
- herr_t ret;
+ rct_obj_t *obj = (rct_obj_t *)_obj;
+ long remove_nth;
+ long i;
+ herr_t ret;
/* Mark this object as freed */
obj->nfrees++;
@@ -689,12 +689,12 @@ error:
static int
test_remove_clear_type(void)
{
- H5I_type_t obj_type;
- rct_obj_list_t obj_list;
- rct_obj_t * objects = NULL; /* Convenience pointer to objects stored in master list */
- size_t list_size;
- long i, j;
- herr_t ret; /* return value */
+ H5I_type_t obj_type;
+ rct_obj_list_t obj_list;
+ rct_obj_t * objects = NULL; /* Convenience pointer to objects stored in master list */
+ size_t list_size;
+ long i, j;
+ herr_t ret; /* return value */
/* Register a user-defined type with our custom ID-deleting callback */
obj_type = H5Iregister_type((size_t)8, 0, rct_free_cb);
@@ -703,7 +703,7 @@ test_remove_clear_type(void)
goto error;
/* Create an array to hold the objects in the master list */
- list_size = RCT_MAX_NOBJS * sizeof(rct_obj_t);
+ list_size = RCT_MAX_NOBJS * sizeof(rct_obj_t);
obj_list.objects = HDmalloc(list_size);
CHECK(obj_list.objects, NULL, "HDcalloc");
if (NULL == obj_list.objects)
@@ -734,9 +734,9 @@ test_remove_clear_type(void)
for (j = 0; j < obj_list.count; j++) {
/* Object setup */
- objects[j].nfrees = 0;
- objects[j].freeing = FALSE;
- objects[j].list = &obj_list;
+ objects[j].nfrees = 0;
+ objects[j].freeing = FALSE;
+ objects[j].list = &obj_list;
/* Register an ID for it */
objects[j].id = H5Iregister(obj_type, &objects[j]);
@@ -790,7 +790,7 @@ test_remove_clear_type(void)
/* Verify the number of unfreed objects we found during our scan
* matches the number stored in the list
- */
+ */
VERIFY(obj_list.remaining, found, "incorrect number of objects remaining");
if (obj_list.remaining != found)
goto error;
@@ -856,15 +856,505 @@ test_remove_clear_type(void)
error:
/* Cleanup. For simplicity, just destroy the types and ignore errors. */
- H5E_BEGIN_TRY {
- H5Idestroy_type(obj_type);
- } H5E_END_TRY
+ H5E_BEGIN_TRY { H5Idestroy_type(obj_type); }
+ H5E_END_TRY
HDfree(obj_list.objects);
return -1;
} /* end test_remove_clear_type() */
+/* Typedef for future objects */
+typedef struct {
+ H5I_type_t obj_type; /* ID type for actual object */
+} future_obj_t;
+
+/* Global (static) future ID object type */
+H5I_type_t future_obj_type_g = H5I_BADID;
+
+/* Callback to free the actual object for future object test */
+static herr_t
+free_actual_object(void *_p, void H5_ATTR_UNUSED **_ctx)
+{
+ int *p = (int *)_p;
+
+ if (7 != *p)
+ return FAIL;
+
+ HDfree(p);
+
+ return SUCCEED;
+}
+
+/* Callback to realize a future object */
+static herr_t
+realize_future_cb(void *_future_obj, hid_t *actual_id)
+{
+ future_obj_t *future_obj = (future_obj_t *)_future_obj; /* Future object */
+ int * actual_obj; /* Pointer to the actual object */
+
+ /* Check for bad future object */
+ if (NULL == future_obj)
+ return FAIL;
+
+ /* Determine type of object to realize */
+ if (H5I_DATASPACE == future_obj->obj_type) {
+ hsize_t dims = 13;
+
+ if ((*actual_id = H5Screate_simple(1, &dims, NULL)) < 0)
+ return FAIL;
+ }
+ else if (H5I_DATATYPE == future_obj->obj_type) {
+ if ((*actual_id = H5Tcopy(H5T_NATIVE_INT)) < 0)
+ return FAIL;
+ }
+ else if (H5I_GENPROP_LST == future_obj->obj_type) {
+ if ((*actual_id = H5Pcreate(H5P_DATASET_XFER)) < 0)
+ return FAIL;
+ }
+ else {
+ /* Create a new object (the 'actual object') of the correct type */
+ if (NULL == (actual_obj = HDmalloc(sizeof(int))))
+ return FAIL;
+ *actual_obj = 7;
+
+ /* Register actual object of the user-defined type */
+ *actual_id = H5Iregister(future_obj->obj_type, actual_obj);
+ CHECK(*actual_id, FAIL, "H5Iregister");
+ if (*actual_id == FAIL)
+ return FAIL;
+ }
+
+ return SUCCEED;
+}
+
+/* Callback to discard a future object */
+static herr_t
+discard_future_cb(void *future_obj)
+{
+ if (NULL == future_obj)
+ return FAIL;
+
+ HDfree(future_obj);
+
+ return SUCCEED;
+}
+
+/* Callback to realize a future object when future objects are NULL*/
+static herr_t
+realize_future_generate_cb(void *_future_obj, hid_t *actual_id)
+{
+ future_obj_t *future_obj = (future_obj_t *)_future_obj; /* Future object */
+ int * actual_obj; /* Pointer to the actual object */
+
+ if (NULL != future_obj)
+ return FAIL;
+ /* Create a new object (the 'actual object') of the correct type */
+ if (NULL == (actual_obj = HDmalloc(sizeof(int))))
+ return FAIL;
+ *actual_obj = 7;
+
+ /* Register actual object without using future object info */
+ *actual_id = H5Iregister(future_obj_type_g, actual_obj);
+ CHECK(*actual_id, FAIL, "H5Iregister");
+ if (*actual_id == FAIL)
+ return FAIL;
+
+ return SUCCEED;
+}
+
+/* Callback to discard a future object when future objects are NULL */
+static herr_t
+discard_future_generate_cb(void *future_obj)
+{
+ if (NULL != future_obj)
+ return FAIL;
+
+ return SUCCEED;
+}
+
+/* Test function */
+static int
+test_future_ids(void)
+{
+ H5I_type_t obj_type; /* New user-defined ID type */
+ hid_t future_id; /* ID for future object */
+ int fake_future_obj; /* "Fake" future object for tests */
+ future_obj_t *future_obj; /* Future object */
+ int * actual_obj; /* Actual object */
+ int * actual_obj2; /* Another actual object */
+ H5I_type_t id_type; /* Type of ID */
+ H5T_class_t type_class; /* Datatype class */
+ herr_t ret; /* Return value */
+
+ /* Register a user-defined type with our custom ID-deleting callback */
+ obj_type = H5Iregister_type((size_t)15, 0, free_actual_object);
+ CHECK(obj_type, H5I_BADID, "H5Iregister_type");
+ if (H5I_BADID == obj_type)
+ goto error;
+
+ /* Test basic error conditions */
+ fake_future_obj = 0;
+ H5E_BEGIN_TRY { future_id = H5Iregister_future(obj_type, &fake_future_obj, NULL, NULL); }
+ H5E_END_TRY
+ VERIFY(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID != future_id)
+ goto error;
+
+ H5E_BEGIN_TRY { future_id = H5Iregister_future(obj_type, &fake_future_obj, realize_future_cb, NULL); }
+ H5E_END_TRY
+ VERIFY(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID != future_id)
+ goto error;
+
+ H5E_BEGIN_TRY { future_id = H5Iregister_future(obj_type, &fake_future_obj, NULL, discard_future_cb); }
+ H5E_END_TRY
+ VERIFY(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID != future_id)
+ goto error;
+
+ H5E_BEGIN_TRY
+ {
+ future_id = H5Iregister_future(H5I_BADID, &fake_future_obj, realize_future_cb, discard_future_cb);
+ }
+ H5E_END_TRY
+ VERIFY(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID != future_id)
+ goto error;
+
+ /* Test base use-case: create a future object and destroy type without
+ * realizing the future object.
+ */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = obj_type;
+ future_id = H5Iregister_future(obj_type, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Destroy the type */
+ ret = H5Idestroy_type(obj_type);
+ CHECK(ret, FAIL, "H5Idestroy_type");
+ if (FAIL == ret)
+ goto error;
+
+ /* Re-register a user-defined type with our custom ID-deleting callback */
+ obj_type = H5Iregister_type((size_t)15, 0, free_actual_object);
+ CHECK(obj_type, H5I_BADID, "H5Iregister_type");
+ if (H5I_BADID == obj_type)
+ goto error;
+
+ /* Test base use-case: create a future object and realize the actual object. */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = obj_type;
+ future_id = H5Iregister_future(obj_type, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ actual_obj = H5Iobject_verify(future_id, obj_type);
+ CHECK_PTR(actual_obj, "H5Iobject_verify");
+ if (NULL == actual_obj)
+ goto error;
+ VERIFY(*actual_obj, 7, "H5Iobject_verify");
+ if (7 != *actual_obj)
+ goto error;
+
+ /* Retrieve the object again and verify that it's the same actual object */
+ actual_obj2 = H5Iobject_verify(future_id, obj_type);
+ CHECK_PTR(actual_obj2, "H5Iobject_verify");
+ if (NULL == actual_obj2)
+ goto error;
+ VERIFY(*actual_obj2, 7, "H5Iobject_verify");
+ if (7 != *actual_obj2)
+ goto error;
+ VERIFY(actual_obj, actual_obj2, "H5Iobject_verify");
+ if (actual_obj != actual_obj2)
+ goto error;
+
+ /* Destroy the type */
+ ret = H5Idestroy_type(obj_type);
+ CHECK(ret, FAIL, "H5Idestroy_type");
+ if (FAIL == ret)
+ goto error;
+
+ /* Re-register a user-defined type with our custom ID-deleting callback */
+ obj_type = H5Iregister_type((size_t)15, 0, free_actual_object);
+ CHECK(obj_type, H5I_BADID, "H5Iregister_type");
+ if (H5I_BADID == obj_type)
+ goto error;
+
+ /* Set the global future object type */
+ future_obj_type_g = obj_type;
+
+ /* Test "actual object generator" use-case: create a future object with
+ * NULL object pointer, to create new object of predefined type when
+ * future object is realized.
+ */
+ future_id = H5Iregister_future(obj_type, NULL, realize_future_generate_cb, discard_future_generate_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Realize the actual object, with will be dynamically allocated within
+ * the 'realize' callback.
+ */
+ actual_obj = H5Iobject_verify(future_id, obj_type);
+ CHECK_PTR(actual_obj, "H5Iobject_verify");
+ if (NULL == actual_obj)
+ goto error;
+ VERIFY(*actual_obj, 7, "H5Iobject_verify");
+ if (7 != *actual_obj)
+ goto error;
+
+ /* Reset the global future object type */
+ future_obj_type_g = H5I_BADID;
+
+ /* Retrieve the object again and verify that it's the same actual object */
+ /* (Will fail if global future object type used) */
+ actual_obj2 = H5Iobject_verify(future_id, obj_type);
+ CHECK_PTR(actual_obj2, "H5Iobject_verify");
+ if (NULL == actual_obj2)
+ goto error;
+ VERIFY(*actual_obj2, 7, "H5Iobject_verify");
+ if (7 != *actual_obj2)
+ goto error;
+ VERIFY(actual_obj, actual_obj2, "H5Iobject_verify");
+ if (actual_obj != actual_obj2)
+ goto error;
+
+ /* Destroy the type */
+ ret = H5Idestroy_type(obj_type);
+ CHECK(ret, FAIL, "H5Idestroy_type");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ /* (DATASPACE) */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_DATASPACE;
+ future_id = H5Iregister_future(H5I_DATASPACE, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* (Can't verify the type of the future ID, because the library's current
+ * implementation realizes the object during sanity checks on the ID)
+ */
+
+ /* Close future object for pre-defined type without realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_DATASPACE;
+ future_id = H5Iregister_future(H5I_DATASPACE, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Verify that the application believes the future ID is a dataspace */
+ /* (Currently realizes the object "implicitly" during a sanity check) */
+ id_type = H5Iget_type(future_id);
+ CHECK(id_type, H5I_BADID, "H5Iget_type");
+ if (H5I_BADID == id_type)
+ goto error;
+ if (H5I_DATASPACE != id_type)
+ goto error;
+
+ /* Close future object for pre-defined type without realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_DATASPACE;
+ future_id = H5Iregister_future(H5I_DATASPACE, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Realize future dataspace by requesting its rank */
+ ret = H5Sget_simple_extent_ndims(future_id);
+ CHECK(ret, FAIL, "H5Sget_simple_extent_ndims");
+ if (FAIL == ret)
+ goto error;
+ if (1 != ret)
+ goto error;
+
+ /* Verify that the application believes the ID is still a dataspace */
+ id_type = H5Iget_type(future_id);
+ CHECK(id_type, H5I_BADID, "H5Iget_type");
+ if (H5I_BADID == id_type)
+ goto error;
+ if (H5I_DATASPACE != id_type)
+ goto error;
+
+ /* Close future object for pre-defined type after realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ /* (DATATYPE) */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_DATATYPE;
+ future_id = H5Iregister_future(H5I_DATATYPE, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* (Can't verify the type of the future ID, because the library's current
+ * implementation realizes the object during sanity checks on the ID)
+ */
+
+ /* Close future object for pre-defined type without realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_DATATYPE;
+ future_id = H5Iregister_future(H5I_DATATYPE, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Verify that the application believes the future ID is a datatype */
+ /* (Currently realizes the object "implicitly" during a sanity check) */
+ id_type = H5Iget_type(future_id);
+ CHECK(id_type, H5I_BADID, "H5Iget_type");
+ if (H5I_BADID == id_type)
+ goto error;
+ if (H5I_DATATYPE != id_type)
+ goto error;
+
+ /* Close future object for pre-defined type without realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_DATATYPE;
+ future_id = H5Iregister_future(H5I_DATATYPE, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Realize future datatype by requesting its class */
+ type_class = H5Tget_class(future_id);
+ CHECK(ret, FAIL, "H5Tget_class");
+ if (FAIL == ret)
+ goto error;
+ if (H5T_INTEGER != type_class)
+ goto error;
+
+ /* Verify that the application believes the ID is still a datatype */
+ id_type = H5Iget_type(future_id);
+ CHECK(id_type, H5I_BADID, "H5Iget_type");
+ if (H5I_BADID == id_type)
+ goto error;
+ if (H5I_DATATYPE != id_type)
+ goto error;
+
+ /* Close future object for pre-defined type after realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ /* (PROPERTY LIST) */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_GENPROP_LST;
+ future_id = H5Iregister_future(H5I_GENPROP_LST, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* (Can't verify the type of the future ID, because the library's current
+ * implementation realizes the object during sanity checks on the ID)
+ */
+
+ /* Close future object for pre-defined type without realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_GENPROP_LST;
+ future_id = H5Iregister_future(H5I_GENPROP_LST, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Verify that the application believes the future ID is a property list */
+ /* (Currently realizes the object "implicitly" during a sanity check) */
+ id_type = H5Iget_type(future_id);
+ CHECK(id_type, H5I_BADID, "H5Iget_type");
+ if (H5I_BADID == id_type)
+ goto error;
+ if (H5I_GENPROP_LST != id_type)
+ goto error;
+
+ /* Close future object for pre-defined type without realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ /* Test base use-case: create a future object for a pre-defined type */
+ future_obj = HDmalloc(sizeof(future_obj_t));
+ future_obj->obj_type = H5I_GENPROP_LST;
+ future_id = H5Iregister_future(H5I_GENPROP_LST, future_obj, realize_future_cb, discard_future_cb);
+ CHECK(future_id, H5I_INVALID_HID, "H5Iregister_future");
+ if (H5I_INVALID_HID == future_id)
+ goto error;
+
+ /* Realize future property list by verifying its class */
+ ret = H5Pisa_class(future_id, H5P_DATASET_XFER);
+ CHECK(ret, FAIL, "H5Pisa_class");
+ if (FAIL == ret)
+ goto error;
+ if (TRUE != ret)
+ goto error;
+
+ /* Verify that the application believes the ID is still a property list */
+ id_type = H5Iget_type(future_id);
+ CHECK(id_type, H5I_BADID, "H5Iget_type");
+ if (H5I_BADID == id_type)
+ goto error;
+ if (H5I_GENPROP_LST != id_type)
+ goto error;
+
+ /* Close future object for pre-defined type after realizing it */
+ ret = H5Idec_ref(future_id);
+ CHECK(ret, FAIL, "H5Idec_ref");
+ if (FAIL == ret)
+ goto error;
+
+ return 0;
+
+error:
+ /* Cleanup. For simplicity, just destroy the types and ignore errors. */
+ H5E_BEGIN_TRY { H5Idestroy_type(obj_type); }
+ H5E_END_TRY
+
+ return -1;
+} /* end test_future_ids() */
+
void
test_ids(void)
{
@@ -883,4 +1373,6 @@ test_ids(void)
TestErrPrintf("ID type list test failed\n");
if (test_remove_clear_type() < 0)
TestErrPrintf("ID remove during H5Iclear_type test failed\n");
+ if (test_future_ids() < 0)
+ TestErrPrintf("Future ID test failed\n");
}
diff --git a/test/tmisc.c b/test/tmisc.c
index 51b2e89..304564c 100644
--- a/test/tmisc.c
+++ b/test/tmisc.c
@@ -1254,8 +1254,8 @@ test_misc8(void)
int * wdata; /* Data to write */
int * tdata; /* Temporary pointer to data write */
#ifdef VERIFY_DATA
- int *rdata; /* Data to read */
- int *tdata2; /* Temporary pointer to data to read */
+ int *rdata; /* Data to read */
+ int *tdata2; /* Temporary pointer to data to read */
#endif /* VERIFY_DATA */
unsigned u, v; /* Local index variables */
int mdc_nelmts; /* Metadata number of elements */
@@ -2962,7 +2962,7 @@ test_misc18(void)
hid_t did1, did2; /* Dataset IDs */
hid_t aid; /* Attribute ID */
#ifndef H5_NO_DEPRECATED_SYMBOLS
- H5O_info1_t old_oinfo; /* (deprecated) information about object */
+ H5O_info1_t old_oinfo; /* (deprecated) information about object */
#endif /* H5_NO_DEPRECATED_SYMBOLS */
H5O_info2_t oinfo; /* Data model information about object */
H5O_native_info_t ninfo; /* Native file format information about object */
@@ -5759,18 +5759,18 @@ static int test_misc36_context;
static void
test_misc36_cb1(void *_ctx)
{
- int *ctx = (int *)_ctx; /* Set up context pointer */
- hbool_t is_terminating; /* Flag indicating the library is terminating */
- herr_t ret; /* Return value */
+ int * ctx = (int *)_ctx; /* Set up context pointer */
+ hbool_t is_terminating; /* Flag indicating the library is terminating */
+ herr_t ret; /* Return value */
/* Check whether the library thinks it's terminating */
is_terminating = FALSE;
- ret = H5is_library_terminating(&is_terminating);
+ ret = H5is_library_terminating(&is_terminating);
CHECK(ret, FAIL, "H5is_library_terminating");
VERIFY(is_terminating, TRUE, "H5is_library_terminating");
/* Verify correct ordering for 'atclose' callbacks */
- if(0 != *ctx)
+ if (0 != *ctx)
HDabort();
/* Update context value */
@@ -5780,18 +5780,18 @@ test_misc36_cb1(void *_ctx)
static void
test_misc36_cb2(void *_ctx)
{
- int *ctx = (int *)_ctx; /* Set up context pointer */
- hbool_t is_terminating; /* Flag indicating the library is terminating */
- herr_t ret; /* Return value */
+ int * ctx = (int *)_ctx; /* Set up context pointer */
+ hbool_t is_terminating; /* Flag indicating the library is terminating */
+ herr_t ret; /* Return value */
/* Check whether the library thinks it's terminating */
is_terminating = FALSE;
- ret = H5is_library_terminating(&is_terminating);
+ ret = H5is_library_terminating(&is_terminating);
CHECK(ret, FAIL, "H5is_library_terminating");
VERIFY(is_terminating, TRUE, "H5is_library_terminating");
/* Verify correct ordering for 'atclose' callbacks */
- if(1 != *ctx)
+ if (1 != *ctx)
HDabort();
/* Update context value */
@@ -5806,15 +5806,15 @@ test_misc36_cb2(void *_ctx)
static void
test_misc36(void)
{
- hbool_t is_terminating; /* Flag indicating the library is terminating */
- herr_t ret; /* Return value */
+ hbool_t is_terminating; /* Flag indicating the library is terminating */
+ herr_t ret; /* Return value */
/* Output message about test being performed */
MESSAGE(5, ("H5atclose and H5is_library_terminating API calls"));
/* Check whether the library thinks it's terminating */
is_terminating = TRUE;
- ret = H5is_library_terminating(&is_terminating);
+ ret = H5is_library_terminating(&is_terminating);
CHECK(ret, FAIL, "H5is_library_terminating");
VERIFY(is_terminating, FALSE, "H5is_library_terminating");
@@ -5824,7 +5824,7 @@ test_misc36(void)
/* Check whether the library thinks it's terminating */
is_terminating = TRUE;
- ret = H5is_library_terminating(&is_terminating);
+ ret = H5is_library_terminating(&is_terminating);
CHECK(ret, FAIL, "H5is_library_terminating");
VERIFY(is_terminating, FALSE, "H5is_library_terminating");
@@ -5836,7 +5836,7 @@ test_misc36(void)
/* Check whether the library thinks it's terminating */
is_terminating = TRUE;
- ret = H5is_library_terminating(&is_terminating);
+ ret = H5is_library_terminating(&is_terminating);
CHECK(ret, FAIL, "H5is_library_terminating");
VERIFY(is_terminating, FALSE, "H5is_library_terminating");
@@ -5897,9 +5897,9 @@ test_misc(void)
test_misc19(); /* Test incrementing & decrementing ref count on IDs */
test_misc20(); /* Test problems with truncated dimensions in version 2 of storage layout message */
#ifdef H5_HAVE_FILTER_SZIP
- test_misc21(); /* Test that "late" allocation time is treated the same as "incremental", for chunked
- datasets w/a filters */
- test_misc22(); /* check szip bits per pixel */
+ test_misc21(); /* Test that "late" allocation time is treated the same as "incremental", for chunked
+ datasets w/a filters */
+ test_misc22(); /* check szip bits per pixel */
#endif /* H5_HAVE_FILTER_SZIP */
test_misc23(); /* Test intermediate group creation */
test_misc24(); /* Test inappropriate API opens of objects */
diff --git a/test/tsohm.c b/test/tsohm.c
index 872875d..1e68628 100644
--- a/test/tsohm.c
+++ b/test/tsohm.c
@@ -3817,10 +3817,10 @@ test_sohm(void)
{
MESSAGE(5, ("Testing Shared Object Header Messages\n"));
- test_sohm_fcpl(); /* Test SOHMs and file creation plists */
- test_sohm_fcpl_errors(); /* Bogus H5P* calls for SOHMs */
- test_sohm_size1(); /* Tests the sizes of files with one SOHM */
-#if 0 /* TODO: REVEALS BUG TO BE FIXED - SEE JIRA HDFFV-10645 */
+ test_sohm_fcpl(); /* Test SOHMs and file creation plists */
+ test_sohm_fcpl_errors(); /* Bogus H5P* calls for SOHMs */
+ test_sohm_size1(); /* Tests the sizes of files with one SOHM */
+#if 0 /* TODO: REVEALS BUG TO BE FIXED - SEE JIRA HDFFV-10645 */
test_sohm_size_consistency_open_create();
#endif /* Jira HDFFV-10645 */
test_sohm_attrs(); /* Tests shared messages in attributes */
diff --git a/test/ttsafe_error.c b/test/ttsafe_error.c
index 0b44958..86f0722 100644
--- a/test/ttsafe_error.c
+++ b/test/ttsafe_error.c
@@ -38,7 +38,7 @@
/* Having a common dataset name is an error */
#define DATASETNAME "commonname"
-#define EXPECTED_ERROR_DEPTH 10
+#define EXPECTED_ERROR_DEPTH 11
#define WRITE_NUMBER 37
/* Typedefs */
@@ -74,32 +74,35 @@ tts_error(void)
expected_g[0].maj_num = H5E_DATASET;
expected_g[0].min_num = H5E_CANTCREATE;
- expected_g[1].maj_num = H5E_VOL;
+ expected_g[1].maj_num = H5E_DATASET;
expected_g[1].min_num = H5E_CANTCREATE;
expected_g[2].maj_num = H5E_VOL;
expected_g[2].min_num = H5E_CANTCREATE;
- expected_g[3].maj_num = H5E_DATASET;
- expected_g[3].min_num = H5E_CANTINIT;
+ expected_g[3].maj_num = H5E_VOL;
+ expected_g[3].min_num = H5E_CANTCREATE;
expected_g[4].maj_num = H5E_DATASET;
expected_g[4].min_num = H5E_CANTINIT;
- expected_g[5].maj_num = H5E_LINK;
+ expected_g[5].maj_num = H5E_DATASET;
expected_g[5].min_num = H5E_CANTINIT;
expected_g[6].maj_num = H5E_LINK;
- expected_g[6].min_num = H5E_CANTINSERT;
+ expected_g[6].min_num = H5E_CANTINIT;
- expected_g[7].maj_num = H5E_SYM;
- expected_g[7].min_num = H5E_NOTFOUND;
+ expected_g[7].maj_num = H5E_LINK;
+ expected_g[7].min_num = H5E_CANTINSERT;
expected_g[8].maj_num = H5E_SYM;
- expected_g[8].min_num = H5E_CALLBACK;
+ expected_g[8].min_num = H5E_NOTFOUND;
- expected_g[9].maj_num = H5E_LINK;
- expected_g[9].min_num = H5E_EXISTS;
+ expected_g[9].maj_num = H5E_SYM;
+ expected_g[9].min_num = H5E_CALLBACK;
+
+ expected_g[10].maj_num = H5E_LINK;
+ expected_g[10].min_num = H5E_EXISTS;
/* set up mutex for global count of errors */
H5TS_mutex_init(&error_mutex_g);
diff --git a/test/use_disable_mdc_flushes.c b/test/use_disable_mdc_flushes.c
index 1f0e3d4..a12ea31 100644
--- a/test/use_disable_mdc_flushes.c
+++ b/test/use_disable_mdc_flushes.c
@@ -33,9 +33,9 @@ const char *progname_g = "use_disable_mdc_flushes"; /* program name */
/* these two definitions must match each other */
#define UC_DATATYPE H5T_NATIVE_SHORT /* use case HDF5 data type */
-#define UC_CTYPE short /* use case C data type */
-#define UC_RANK 3 /* use case dataset rank */
-#define Chunksize_DFT 256 /* chunksize default */
+#define UC_CTYPE short /* use case C data type */
+#define UC_RANK 3 /* use case dataset rank */
+#define Chunksize_DFT 256 /* chunksize default */
#define Hgoto_error(val) \
{ \
ret_value = val; \
diff --git a/test/vfd.c b/test/vfd.c
index 5bf433f..6a109bb 100644
--- a/test/vfd.c
+++ b/test/vfd.c
@@ -2162,12 +2162,12 @@ static herr_t
test_ros3(void)
{
#ifdef H5_HAVE_ROS3_VFD
- hid_t fid = -1; /* file ID */
- hid_t fapl_id = -1; /* file access property list ID */
- hid_t fapl_id_out = -1; /* from H5Fget_access_plist */
- hid_t driver_id = -1; /* ID for this VFD */
- unsigned long driver_flags = 0; /* VFD feature flags */
- char filename[1024]; /* filename */
+ hid_t fid = -1; /* file ID */
+ hid_t fapl_id = -1; /* file access property list ID */
+ hid_t fapl_id_out = -1; /* from H5Fget_access_plist */
+ hid_t driver_id = -1; /* ID for this VFD */
+ unsigned long driver_flags = 0; /* VFD feature flags */
+ char filename[1024]; /* filename */
H5FD_ros3_fapl_t test_ros3_fa;
H5FD_ros3_fapl_t ros3_fa_0 = {
/* version = */ H5FD_CURR_ROS3_FAPL_T_VERSION,
diff --git a/test/vol.c b/test/vol.c
index 6c9da62..b08f112 100644
--- a/test/vol.c
+++ b/test/vol.c
@@ -175,13 +175,13 @@ static const H5VL_class_t fake_vol_g = {
static herr_t
test_vol_registration(void)
{
- hid_t native_id = H5I_INVALID_HID;
- hid_t lapl_id = H5I_INVALID_HID;
- hid_t vipl_id = H5I_INVALID_HID;
- herr_t ret = SUCCEED;
- htri_t is_registered = FAIL;
- hid_t vol_id = H5I_INVALID_HID;
- hid_t vol_id2 = H5I_INVALID_HID;
+ hid_t native_id = H5I_INVALID_HID;
+ hid_t lapl_id = H5I_INVALID_HID;
+ hid_t vipl_id = H5I_INVALID_HID;
+ herr_t ret = SUCCEED;
+ htri_t is_registered = FAIL;
+ hid_t vol_id = H5I_INVALID_HID;
+ hid_t vol_id2 = H5I_INVALID_HID;
H5VL_class_t *bad_fake_vol_class = NULL;
TESTING("VOL registration");
@@ -211,9 +211,8 @@ test_vol_registration(void)
TEST_ERROR;
HDmemcpy(bad_fake_vol_class, &fake_vol_g, sizeof(H5VL_class_t));
bad_fake_vol_class->version = H5VL_VERSION + 1;
- H5E_BEGIN_TRY {
- vol_id = H5VLregister_connector(bad_fake_vol_class, H5P_DEFAULT);
- } H5E_END_TRY;
+ H5E_BEGIN_TRY { vol_id = H5VLregister_connector(bad_fake_vol_class, H5P_DEFAULT); }
+ H5E_END_TRY;
if (H5I_INVALID_HID != vol_id)
FAIL_PUTS_ERROR("should not be able to register a connector with an incompatible version #");
HDfree(bad_fake_vol_class);