Skip to content

Use H5_ATOMIC macros in H5VL #58

Use H5_ATOMIC macros in H5VL

Use H5_ATOMIC macros in H5VL #58

name: Build and Test Multithreaded HDF5 Library
on:
push:
branches:
- '*'
env:
HDF5TestExpress: 1
num_threads: 16
jobs:
build-and-test:
runs-on: ubuntu-latest
strategy:
matrix:
api_tests: ["--enable-api-tests", "--disable-api-tests"]
multi_thread: ["--enable-multithread --disable-hl", "--disable-multithread --enable-threadsafe --disable-hl", "--disable-multithread --disable-threadsafe"]
build_mode: ["production", "debug"]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up autotools
run: |
sudo apt install automake autoconf libtool libtool-bin
sudo apt install libaec0 libaec-dev valgrind
- name: Configure HDF5
working-directory: ${{github.workspace}}
run: |
sh ./autogen.sh
./configure --enable-shared --enable-tests ${{ matrix.multi_thread }} ${{ matrix.api_tests }} --enable-build-mode=${{ matrix.build_mode }}
- name: Build HDF5
working-directory: ${{github.workspace}}
run: |
make -j
- name: API Tests - Native (Non-threaded)
if: matrix.api_tests == '--enable-api-tests'
working-directory: ${{github.workspace}}
run: |
valgrind ./test/API/h5_api_test
- name: API Tests (Single-Threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
run: |
valgrind ./test/API/h5_api_test -maxthreads 1
- name: API Tests (Multi-Threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
run: |
valgrind ./test/API/h5_api_test -maxthreads ${{ env.num_threads }}
- name: API Tests - MT Native Wrapper (Non-threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
env:
HDF5_PLUGIN_PATH: ${{github.workspace}}/test/.libs
HDF5_VOL_CONNECTOR: "mt_native_wrapper_vol_connector"
run: |
valgrind ./test/API/h5_api_test
- name: API Tests - MT Native Wrapper (Single-threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
env:
HDF5_PLUGIN_PATH: ${{github.workspace}}/test/.libs
HDF5_VOL_CONNECTOR: "mt_native_wrapper_vol_connector"
run: |
valgrind ./test/API/h5_api_test -maxthreads 1
- name: API Tests - MT Native Wrapper (Multi-threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
env:
HDF5_PLUGIN_PATH: ${{github.workspace}}/test/.libs
HDF5_VOL_CONNECTOR: "mt_native_wrapper_vol_connector"
run: |
valgrind ./test/API/h5_api_test -maxthreads ${{ env.num_threads }}
- name: API Tests - MT Passthru Wrapper (Non-threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
env:
HDF5_PLUGIN_PATH: ${{github.workspace}}/test/.libs
HDF5_VOL_CONNECTOR: "mt_passthru_wrapper_vol_connector under_vol=0\\;under_info={}"
run: |
valgrind ./test/API/h5_api_test
- name: API Tests - MT Passthru Wrapper (Single-threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
env:
HDF5_PLUGIN_PATH: ${{github.workspace}}/test/.libs
HDF5_VOL_CONNECTOR: "mt_passthru_wrapper_vol_connector under_vol=0\\;under_info={}"
run: |
valgrind ./test/API/h5_api_test -maxthreads 1
- name: API Tests - MT Passthru Wrapper (Multi-threaded)
if: matrix.api_tests == '--enable-api-tests' && matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}
env:
HDF5_PLUGIN_PATH: ${{github.workspace}}/test/.libs
HDF5_VOL_CONNECTOR: "mt_passthru_wrapper_vol_connector under_vol=0\\;under_info={}"
run: |
valgrind ./test/API/h5_api_test -maxthreads ${{ env.num_threads }}
- name: MT VL Tests (Non-threaded)
working-directory: ${{github.workspace}}/test/
run: |
valgrind ./threads/testmthdf5
- name: MT VL Tests (Single-threaded)
if: matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}/test/
run: |
valgrind ./threads/testmthdf5 -maxthreads 1
- name: MT VL Tests (Single-threaded)
if: matrix.multi_thread == '--enable-multithread --disable-hl'
working-directory: ${{github.workspace}}/test/
run: |
valgrind ./threads/testmthdf5 -maxthreads ${{ env.num_threads }}
- name: Other HDF5 Tests
working-directory: ${{github.workspace}}
run: |
make check