* Test fixes for log-based vol (#4618) * fixes to address failures in the log-based VOL * moved file cleanup to tests proper * skipped index API test if not supported * Add 'try' parameter to H5Z_find, and remove calls to H5E_clear_stack() (#4609) * Bump the github-actions group with 4 updates (#4620) Bumps the github-actions group with 4 updates: [actions/checkout](https://github.com/actions/checkout), [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials), [softprops/action-gh-release](https://github.com/softprops/action-gh-release) and [github/codeql-action](https://github.com/github/codeql-action). Updates `actions/checkout` from 4.1.1 to 4.1.7 - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v4.1.1...v4.1.7) Updates `aws-actions/configure-aws-credentials` from 1 to 4 - [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases) - [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws-actions/configure-aws-credentials/compare/v1...v4) Updates `softprops/action-gh-release` from 2.0.5 to 2.0.6 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/69320dbe05506a9a39fc8ae11030b214ec2d1f87...a74c6b72af54cfa997e81df42d94703d6313a2d0) Updates `github/codeql-action` from 3.25.7 to 3.25.11 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f079b8493333aace61c81488f8bd40919487bd9f...b611370bb5703a7efb587f9d136a52ea24c5c38c) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: aws-actions/configure-aws-credentials dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix a stack size warning in ros3 VFD code (#4625) Just makes a stack array dynamic. Valgrind shows no memory leaks. * Reworked cleaning up API test files (#4626) * Reworked cleaning up test files, only removing test files if present to account for skipped tests * changed to using H5Fis_accessible * update to full use of remove_test_file * corrected offset type in C wrapper (#4622) * Remove some internal use of API calls and H5E_BEGIN_TRY/H5E_END_TRY (#4624) * Remove auto NSIS check because of issues with CI (#4646) * Add python testing for examples (#4628) * Clean up Fortran __float128 configure-time checks (#4649) * Always use DECIMAL_DIG instead of LDBL_DIG. This was controlled by an ifdef that is always true in C99 or greater It's confusing to use float.h C constants as variable names in configure.ac and the PAC_FC_LDBL_DIG macro. * Directly compare MY_FLT128_DIG and MY_LDBL_DIG * Make uniform across CMake and Autotools * Don't export quadmath.h variables to H5pubconf.h * Feature/awesome (#4604) * Added Doxygen Awesome and fixed a few quirks. * Fixed unterminated strings. * Added Doxygen Awesome by copy. * Add tools usage text as doxygen for Tools UG (#4602) * Add h5* compiler wrapper testing for CMake #4605 (#4613) * Add show option * remove non-static libs and correct names of static libs * Fixup the pkg-config libs and comp builds * Fix commands and add fortran pkg-config test scripts * Add help usage option * Add temporary fix for ARM64 Mac _Float16 build failure (#4639) * Correct H5VL_t ref count on H5O_refresh_metadata failure (#4636) * Fix bad H5VL_t rc on H5O_refresh_metadata fail * Decrement nrefs before raising error * Update doxygen Learn Basics / example refs. Add Reference sections (#4640) * Fixed messed up table captions. (#4653) * Fixed messed up table captions. Browsers don't seem to respect relative values for width. Hardcoding 800px for now. * Fixed FetchContent usage for new CMake reqs. (#4650) CMake version 3.30 changed the behavior of the FetchContent module to deprecate the use of FetchContent_Populate() in favor of FetchContent_MakeAvailable(). Therefore, the copying of HDF specialized CMakeLists.txt files to the dependent project's source was implemented in the FetchContent_Declare() call. * Fixed usage issue with FindZLIB.cmake module (#4655) * Add a comment on the FindZLIB.cmake module usage * Allow choice of static/shared compression libs for Find Module * Added new option to INSTALL_CMake file and changed option text * Eliminate more H5E_BEGIN/END_TRY macros and H5E_clear_stack() calls (#4648) * Correct name of zlib_ng option (#4658) * Fix the examples for testing java with binaries (#4660) * Update filename in RELEASE_PROCESS.md to current name INSTALL_autotools.txt. * Remove reference to V116 in tools/src/h5repack/h5repack.h.
HDF5 API Tests
This directory contains several test applications that exercise HDF5's public API and serve as regression tests for HDF5 VOL Connectors.
Build Process and options
These HDF5 API tests are disabled by default, but can be enabled by passing the
-DHDF5_TEST_API=ON option to CMake. The following build options are available
to influence how the API tests get built:
CMake
To set an option, it should be prepended with -D when passed to the cmake command.
For example,
cmake -DHDF5_TEST_API=OFF ..
HDF5_TEST_API (Default: ON) - Determines whether the API tests will be built.
HDF5_TEST_API_INSTALL (Default: ON) - Determines whether the API tests should be installed
on the system.
HDF5_TEST_API_ENABLE_ASYNC (Default: OFF) - Determines whether tests for HDF5's asynchronous
I/O capabilities should be enabled. Note that the "native" HDF5 VOL connector doesn't support
this functionality, so these tests are directed towards VOL connectors that do.
HDF5_TEST_ENABLE_DRIVER (Default: OFF) - Determines whether the API test driver program should
be built. This driver program is useful when a VOL connector relies upon a server executable
(as well as possible additional executables) in order to function. The driver program can be
supplied with a server executable and
HDF5_TEST_API_SERVER (Default: empty string) - If HDF5_TEST_ENABLE_DRIVER is set to ON, this
option should be edited to point to the server executable that the driver program should attempt
to launch before running the API tests.
Autotools
Currently unsupported
Usage
These API tests currently only support usage with the native HDF5 VOL connector and HDF5 VOL connectors that can be loaded dynamically as a plugin. For information on how to build a VOL connector in this manner, refer to section 2.3 of the HDF5 VOL Connector Author Guide.
TODO: section on building VOL connectors alongside HDF5 for use with tests
These API tests can also be used to test an HDF5 VOL connector that is external to the library.
For convenience, the HDF5_TEST_API_INSTALL option can be used to install these tests on the
system where other HDF5 executables (such as h5dump) are installed.
To run these tests with your VOL connector, set the following two environment variables:
HDF5_VOL_CONNECTOR - This environment variable should be set to the name chosen for the VOL connector
to be used. For example, HDF5's DAOS VOL connector uses the name "daos" and would therefore set:
HDF5_VOL_CONNECTOR=daos
HDF5_PLUGIN_PATH - This environment variable should be set to the directory that contains the built
library for the VOL connector to be used.
Once these are set, the HDF5 API tests will attempt to automatically load the specified VOL connector and use it when running tests. If HDF5 is unable to locate or load the VOL connector specified, it will fall back to running the tests with the native HDF5 VOL connector and an error similar to the following will appear in the test output:
HDF5-DIAG: Error detected in HDF5 (X.XX.X) MPI-process 0:
#000: /home/user/git/hdf5/src/H5.c line 1010 in H5open(): library initialization failed
major: Function entry/exit
minor: Unable to initialize object
#001: /home/user/git/hdf5/src/H5.c line 277 in H5_init_library(): unable to initialize vol interface
major: Function entry/exit
minor: Unable to initialize object
#002: /home/user/git/hdf5/src/H5VLint.c line 199 in H5VL_init_phase2(): unable to set default VOL connector
major: Virtual Object Layer
minor: Can't set value
#003: /home/user/git/hdf5/src/H5VLint.c line 429 in H5VL__set_def_conn(): can't register connector
major: Virtual Object Layer
minor: Unable to register new ID
#004: /home/user/git/hdf5/src/H5VLint.c line 1321 in H5VL__register_connector_by_name(): unable to load VOL connector
major: Virtual Object Layer
minor: Unable to initialize object
Help and Support
For help with building or using the HDF5 API tests, please contact the HDF Help Desk.