Skip to content

Support running tests against HDF5 2.0.0 with CMake builds #383

Support running tests against HDF5 2.0.0 with CMake builds

Support running tests against HDF5 2.0.0 with CMake builds #383

Workflow file for this run

name: Test REST VOL with socket
on:
workflow_dispatch:
push:
pull_request:
branches: [ master ]
paths-ignore:
- '.github/CODEOWNERS'
- 'docs/**'
- 'COPYING'
- '**.md'
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
HSDS_USERNAME: test_user1
HSDS_PASSWORD: test
HSDS_PATH: /home/test_user1/
HDF5_API_TEST_PATH_PREFIX: /home/test_user1/
HSDS_ENDPOINT: http+unix://%2Ftmp%2Fhs%2Fsn_1.sock
HDF5_VOL_CONNECTOR: REST
ROOT_DIR: ${{github.workspace}}/hsdsdata
BUCKET_NAME: hsdstest
jobs:
build_and_test_with_autotools:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
hdf5-branch: ["hdf5_1_14"]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
with:
repository: HDFGroup/hdf5
ref: ${{matrix.hdf5-branch}}
path: ${{github.workspace}}/hdf5
- name: Get REST VOL dependencies
run: |
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libyajl-dev
- name: Get Autotools Dependencies
run: |
sudo apt update
sudo apt install automake autoconf libtool libtool-bin
- name: Get REST VOL
uses: actions/checkout@v4
with:
path: ${{github.workspace}}/vol-rest
- name: Autotools Configure + Build HDF5
run: |
./autogen.sh
./configure --prefix=${{github.workspace}}/hdf5install \
--enable-hl --disable-threadsafe \
--enable-build-mode=production --enable-shared
make
make install
shell: bash
working-directory: ${{github.workspace}}/hdf5
- name: Autotools Configure REST VOL
run: |
./autogen.sh
mkdir ${{github.workspace}}/vol-rest/install
CFLAGS="-D_POSIX_C_SOURCE=200809L" ./configure --prefix=${{github.workspace}}/vol-rest/install --with-hdf5=${{github.workspace}}/hdf5install
shell: bash
working-directory: ${{github.workspace}}/vol-rest
- name: Build + Install REST VOL
run: |
make
make install
shell: bash
working-directory: ${{github.workspace}}/vol-rest/
- uses: actions/checkout@v4
with:
repository: HDFGroup/hsds
path: ${{github.workspace}}/hsds
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install HSDS dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Install HSDS package
shell: bash
run: |
cd ${{github.workspace}}/hsds
pip install -e .
- name: Run HSDS unit tests
shell: bash
run: |
cd ${{github.workspace}}/hsds
pytest
- name: Install valgrind
run: |
sudo apt update
sudo apt install valgrind
working-directory: ${{ github.workspace }}
# Requests 2.32.0 breaks requests-unixsocket, used by HSDS for socket connections
- name: Fix requests version
run: |
pip install requests==2.31.0
- name: Start HSDS
if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
cd ${{github.workspace}}/hsds
mkdir ${{github.workspace}}/hsdsdata &&
mkdir ${{github.workspace}}/hsdsdata/hsdstest &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt
ROOT_DIR=${{github.workspace}}/hsdadata ./runall.sh --no-docker 1 &
sleep 10
working-directory: ${{github.workspace}}/hsds
- name: Test HSDS
if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
python tests/integ/setup_test.py
working-directory: ${{github.workspace}}/hsds
- name: Test REST VOL
working-directory: ${{github.workspace}}/vol-rest/
run: |
HDF5_PLUGIN_PATH=${{github.workspace}}/vol-rest/install/lib HDF5_VOL_CONNECTOR=REST ./test/test_rest_vol
build_and_test_with_cmake:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
hdf5-branch: ["hdf5_1_14", "develop"]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
with:
repository: HDFGroup/hdf5
ref: ${{matrix.hdf5-branch}}
path: ${{github.workspace}}/hdf5
- name: Get REST VOL dependencies
run: |
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libyajl-dev
- name: Get REST VOL
uses: actions/checkout@v4
with:
path: ${{github.workspace}}/vol-rest
- name: CMake Configure + Build HDF5
run: |
mkdir ${{github.workspace}}/hdf5/build
cd ./build
cmake \
-DHDF5_BUILD_HL_LIB=ON \
-DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-DHDF5_TEST_API=ON \
-DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DHDF5_ENABLE_THREADSAFE=OFF \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \
..
make
make install
shell: bash
working-directory: ${{github.workspace}}/hdf5
- name: CMake Configure REST VOL
run: |
mkdir ./build
cd ./build
CFLAGS="-D_POSIX_C_SOURCE=200809L" cmake -G "Unix Makefiles" -DHDF5_ROOT=${{github.workspace}}/hdf5install \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/vol-rest/install \
..
shell: bash
working-directory: ${{github.workspace}}/vol-rest
- name: Build + Install REST VOL
run: |
make
make install
shell: bash
working-directory: ${{github.workspace}}/vol-rest/build
- uses: actions/checkout@v4
with:
repository: HDFGroup/hsds
path: ${{github.workspace}}/hsds
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install HSDS dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Install HSDS package
shell: bash
run: |
cd ${{github.workspace}}/hsds
pip install -e .
- name: Run HSDS unit tests
shell: bash
run: |
cd ${{github.workspace}}/hsds
pytest
- name: Install valgrind
run: |
sudo apt update
sudo apt install valgrind
working-directory: ${{ github.workspace }}
# Requests 2.32.0 breaks requests-unixsocket, used by HSDS for socket connections
- name: Fix requests version
run: |
pip install requests==2.31.0
- name: Start HSDS
if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
cd ${{github.workspace}}/hsds
mkdir ${{github.workspace}}/hsdsdata &&
mkdir ${{github.workspace}}/hsdsdata/hsdstest &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt
ROOT_DIR=${{github.workspace}}/hsdadata ./runall.sh --no-docker 1 &
sleep 10
working-directory: ${{github.workspace}}/hsds
- name: Test HSDS
if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
python tests/integ/setup_test.py
working-directory: ${{github.workspace}}/hsds
- name: Set HDF5 Plugin path
run: |
echo "HDF5_PLUGIN_PATH=${{github.workspace}}/vol-rest/build/bin/" >> $GITHUB_ENV
echo "HDF5_VOL_CONNECTOR=REST" >> $GITHUB_ENV
- name: Test REST VOL
working-directory: ${{github.workspace}}/vol-rest/build/
run: |
valgrind --leak-check=full -s ctest -R "test_rest_vol" -VV
# TODO: Attribute, dataset, link, and testhdf5 tests currently fail
# - name: Test REST VOL with API
# run: |
# valgrind --leak-check=full -s ctest -R "vol-rest" -VV
# working-directory: ${{github.workspace}}/hdf5/build/