Coder Social home page Coder Social logo

vol-tests's Introduction

HDF5 API test CI Test HDF5 ADIOS2 VOL Test HDF5 async VOL Test HDF5 cache VOL Test HDF5 Log-based VOL Test HDF5 external pass-through VOL Test HDF5 REST VOL

HDF5 VOL Tests

This repository contains several test applications that exercise HDF5's public API and serve as regression tests for HDF5 VOL Connectors.

Software Requirements

The following are required to build the HDF5 VOL tests:

  • CMake 2.8.12.2 or newer
  • HDF5 1.14.0 or newer

Note: The HDF5 VOL tests project is currently unsupported for building on Windows.

Build Process

The HDF5 VOL tests are built using CMake in an out-of-source fashion. A typical build would look like:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE:STRING=Release ${BUILD_OPTIONS} -G ${CMAKE_GENERATOR} ..
make

Build time options that can be passed for ${BUILD_OPTIONS} are discussed in the following section. The CMake documentation should be consulted when determining what to set for CMAKE_GENERATOR.

Build Options

The following build options are available to influence how the VOL tests get built. To set an option, it should be prepended with -D when passed to the cmake command. For example,

cmake -DHDF5_DIR=/temp/hdf5 ..

would set the value of the HDF5_DIR build option to /temp/hdf5.

Required

HDF5_DIR - The VOL test build process will attempt to automatically locate an HDF5 installation on the system. However, if one cannot be found, then this option should be set to point to a directory which contains the CMake-related files for an HDF5 installation. For example, on linux systems this directory will usually be:

<hdf5_install_root>/share/cmake/hdf5/

and will contain hdf5-config.cmake, among other files.

Optional

HDF5_VOL_TEST_ENABLE_PARALLEL (Default: OFF) - This option enables parallel HDF5 tests and requires that the HDF5 installation used is built with the parallel library enabled.

HDF5_VOL_TEST_ENABLE_ASYNC (Default: OFF) - This option enables tests that use HDF5's asynchronous API routines.

HDF5_VOL_TEST_ENABLE_PART (Default: OFF) - This option enables building of the main test executable, h5vl_test, as a set of individual executables, one per HDF5 'interface', rather than as a single executable. This option is mostly helpful for CI integration, but otherwise is safe to leave off.

Usage

The HDF5 VOL tests currently only support usage with 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.

To use the HDF5 VOL tests with a particular VOL connector, first 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 VOL tests can be run by executing the following command from the build directory:

ctest . -VV

Individual test executables can also be manually run from the build directory.

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 (1.13.0) 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 VOL tests, please contact the HDF Help Desk.

vol-tests's People

Contributors

brtnfld avatar derobins avatar fortnern avatar glennsong09 avatar hyoklee avatar jhendersonhdf avatar mattjala avatar mchaarawi avatar raylu-hdf avatar soumagne avatar wkliao avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vol-tests's Issues

Add a GitHub Action that passes all tests.

I could not make vol-tests work with hpc-io VOLs (async, cahce, external-passthrough).
Please add a complete action that passes all tests with a VOL (e.g., daos) that works.
Then, add a badge in README.md that indicates that all tests passed.

Failed tests

A couple of tests are failing with native vol:

Serial h5vl_test
Testing H5Dcreate_anon with an invalid dataset dataspace PASSED
Testing H5Dcreate_anon with an invalid DCPL PASSED
h5vl_test: /global/cfs/cdirs/m3354/tang/hdf5-1.13.1/src/H5Iint.c:1073: H5I_dec_ref: Assertion `id >= 0' failed.
Testing H5Dcreate_anon with an invalid DAPL srun: error: nid00056: task 0: Aborted

Parallel h5vl_test_parallel
Stuck after outputting the following message:

Testing write to dataset with multiple chunks using same shaped dataspaces
All ranks reading chunk 9 PASSED
Testing write to dataset with multiple chunks using differently shaped dataspaces
All ranks reading chunk 9 PASSED

Remove compiler warning for `vol-tests/driver/h5vl_test_driver.cxx`

 -- The C compiler identification is GNU 11.3.0
 ...
/home/runner/work/vol-daos/vol-daos/test/vol/driver/h5vl_test_driver.cxx:484:23: warning: ignoring return value of ‘int system(const char*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
407
 484 |                 system(command.c_str());                        \
408
     |                 ~~~~~~^~~~~~~~~~~~~~~~~

2 tests fail with Async & native VOL.

bin/h5_vl_test failure on Ubuntu Action for async VOL:

  Testing H5Gcreate_anon with an invalid GAPL                         *FAILED*
    created anonymous group with invalid GAPL!
  Testing H5Tcommit_anon with an invalid TAPL                         *FAILED*
    H5Tcommit_anon succeeded with an invalid TAPL!

1 more test failures occur with naive VOL:

Testing H5Aopen with an invalid AAPL                                *FAILED*
    opened attribute 'attribute_open_invalid_params_attr' using H5Aopen with an invalid AAPL!

Use https://github.com/hyoklee/vol-tests/blob/develop/.github/workflows/async.yml to duplicate the error on GitHub.

Use https://github.com/hyoklee/vol-tests/blob/develop/vol_test.cpp to test with Catch-2 benchmark framework.

cmake ignores HDF5_DIR option

Neither using -DHDF5_DIR nor set HDF5_DIR as environment variable works.

$ cmake -DHDF5_DIR=${HOME}/.local/hdf5/1.13.0 ..
-- The C compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Setting build type to 'RelWithDebInfo' as none was specified.
-- GCC detected, setting additional flags
-- Could NOT find HDF5 (missing: HDF5_DIR)

$ ls ${HOME}/.local/hdf5/1.13.0/lib
libhdf5.a libhdf5.la libhdf5.settings libhdf5.so libhdf5.so.300 libhdf5.so.300.0.0 libhdf5_hl.a libhdf5_hl.la libhdf5_hl.so libhdf5_hl.so.300 libhdf5_hl.so.300.0.0

$ ls ${HOME}/.local/hdf5/1.13.0/include/
H5ACpublic.h H5Dpublic.h H5FDcore.h H5FDlog.h H5FDpublic.h H5FDwindows.h H5Ipublic.h H5MMpublic.h H5PTpublic.h H5TSdevelop.h H5VLnative.h H5api_adpt.h hdf5.h
H5Apublic.h H5ESdevelop.h H5FDdevelop.h H5FDmirror.h H5FDros3.h H5Fpublic.h H5LDpublic.h H5Mpublic.h H5Ppublic.h H5Tdevelop.h H5VLpassthru.h H5overflow.h hdf5_hl.h
H5Cpublic.h H5ESpublic.h H5FDdirect.h H5FDmpi.h H5FDsec2.h H5Gpublic.h H5LTpublic.h H5Opublic.h H5Rpublic.h H5Tpublic.h H5VLpublic.h H5pubconf.h
H5DOpublic.h H5Epubgen.h H5FDfamily.h H5FDmpio.h H5FDsplitter.h H5IMpublic.h H5Ldevelop.h H5PLextern.h H5Spublic.h H5VLconnector.h H5Zdevelop.h H5public.h
H5DSpublic.h H5Epublic.h H5FDhdfs.h H5FDmulti.h H5FDstdio.h H5Idevelop.h H5Lpublic.h H5PLpublic.h H5TBpublic.h H5VLconnector_passthru.h H5Zpublic.h H5version.h

vol-rados test fails on Polaris

3/7 Test #3: h5vl_test_parallel ...............***Failed    0.09 sec
    Start 4: h5_partest_t_bigio
4/7 Test #4: h5_partest_t_bigio ...............***Failed    0.01 sec
    Start 5: h5_partest_t_pshutdown
5/7 Test #5: h5_partest_t_pshutdown ...........***Failed    0.01 sec
    Start 6: h5_partest_t_shapesame
6/7 Test #6: h5_partest_t_shapesame ...........***Failed    0.01 sec
    Start 7: h5_partest_testphdf5
7/7 Test #7: h5_partest_testphdf5 .............***Failed    0.01 sec

29% tests passed, 5 tests failed out of 7

Add README.md.

Please describe what this repo does and how to use it.

Remove compiler warning

/home/hyoklee/src/vol-rados.HDFGroup/test/vol/vol_test_parallel.c: In function '\
main':
/home/hyoklee/src/vol-rados.HDFGroup/test/vol/vol_test_parallel.c:212:9: warning\
: 'connector_id' may be used uninitialized in this function [-Wmaybe-uninitializ\
ed]
  212 |         H5VLclose(connector_id);
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/home/hyoklee/src/vol-rados.HDFGroup/test/vol/vol_test_parallel.c:173:11: note: \
'connector_id' was declared here
  173 |     hid_t connector_id, fapl_id;
      |           ^~~~~~~~~~~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.