Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
978e672
add h5json package
jreadey Apr 14, 2025
abb5d0c
temp use of github branch for h5json ref
jreadey Apr 14, 2025
ed44afa
remove array_util test
jreadey Apr 14, 2025
bdff6e4
use h5json for ndarray_compare function
jreadey Apr 14, 2025
3904cf9
use h5json objid funcs
jreadey Apr 23, 2025
e1926c0
add nodeUtil.py
jreadey Apr 23, 2025
ae4579f
fix parameter for createObjId call
jreadey Apr 23, 2025
d6cad74
fix collection name for use with h5json
jreadey Apr 23, 2025
6add48a
use connsistent collection name for isValidUuid
jreadey Apr 23, 2025
b13321c
fix flake8 format errors
jreadey Apr 23, 2025
fee9390
fix flake8 error in testall
jreadey Apr 23, 2025
f1b1cab
use h5json for unit test id
jreadey Apr 23, 2025
5dc3f76
restrict version on numcodecs
jreadey Apr 24, 2025
fb17e10
allow client to generate obj ids
jreadey Apr 30, 2025
3be18a0
enable attributes to be included with POST req
jreadey May 7, 2025
00d7c96
add create timestamps for attributes in obj create
jreadey May 7, 2025
47b9a6e
enable links to be initialized in post groups
jreadey May 7, 2025
d9c3e87
support dataset value init in post request
jreadey May 8, 2025
4ab24fc
add compound init value test
jreadey May 9, 2025
fc3ad68
added post data with compound data initializer
jreadey May 9, 2025
8a18945
add post_crawler class
jreadey May 15, 2025
a8ec66d
avoid exception for mkdir race condition
jreadey May 15, 2025
41e23e9
use domain crawler to create links for post group multi
jreadey May 15, 2025
7cfa3d6
added multi create for datatype objs
jreadey May 16, 2025
ef746d0
added datatype test with no type in body
jreadey May 18, 2025
b1af9bc
modularize dataset creation args processing
jreadey May 20, 2025
52f42f3
refacotr post dataset args to service_lib.py
jreadey May 21, 2025
ce45804
add multi-dataset test with init data
jreadey May 21, 2025
88e0691
allow client group id for PUT domain
jreadey Jun 6, 2025
7561534
fix np.frombuffer error
jreadey Jun 8, 2025
25c4cf3
fix dsetUtil flake errors
jreadey Jun 8, 2025
5cc77e7
expanded link test
jreadey Jul 14, 2025
45f3aa5
added config to test high latency storage
jreadey Jul 16, 2025
ff1c043
added put_data action for DomainCrawler
jreadey Jul 22, 2025
cda56cf
fix for hang in DomainCrawler put_data handler
jreadey Jul 23, 2025
5a2d4d6
reduce log verbosity
jreadey Jul 23, 2025
053395c
fix for regression with h5pyd master branch
jreadey Jul 29, 2025
78127f1
enable client-based timestamps for attribute and link creation
jreadey Sep 8, 2025
f96b34c
remove python 3.9 from .git workflow
jreadey Sep 9, 2025
03e413f
adjust min time for time skew test
jreadey Sep 9, 2025
b6016e0
use hdf5-json util classes
jreadey Oct 29, 2025
61d38fd
update requirement.txt
jreadey Nov 13, 2025
73d8223
updates to support h5json latest
joshStillerman Dec 16, 2025
a2ca1ee
updated for new hdf5-json methods
jreadey Dec 26, 2025
55c8598
update for h5json changes
jreadey Jan 4, 2026
77042d8
added consolidated metadata support
jreadey Jan 6, 2026
23bb24b
fix for use of H5S_UNLIMITED in maxdims
jreadey Jan 6, 2026
c66d632
fix for domain_test
jreadey Jan 6, 2026
6917c5d
refactor linkUtil with h5json
jreadey Jan 8, 2026
99fda2d
fix for attr uninit values
jreadey Feb 3, 2026
2bafb51
check for zero-length domain name
jreadey Feb 11, 2026
b4f4658
tmp ref to github for h5json
jreadey Mar 25, 2026
179ee10
fixed ref to timeUtil
jreadey Mar 25, 2026
e31f24b
rest all integ tests
jreadey May 11, 2026
5f980c6
fix for chunkref indirect layout
jreadey Jul 9, 2026
c80d9b1
use shape_util functions
jreadey Jul 13, 2026
d881d97
use h5json.getShapeJson in post dataset
jreadey Jul 15, 2026
dc85db5
use h5json arrayQuery
jreadey Jul 22, 2026
c1d15be
update requirements.txt to refer to github path
jreadey Jul 27, 2026
1595f67
remove AWS Lambda support
jreadey Jul 28, 2026
dfe37ad
updted runall.sh to not return till service is up and in the READY state
jreadey Jul 30, 2026
a5544dc
added openapi.yml
jreadey Jul 31, 2026
08cd634
added /about, /info to openapi.yml
jreadey Jul 31, 2026
3e87452
openapi.yml updates and bug/security fixes
jreadey Aug 2, 2026
990f7f4
fixed cleanup errors in runall.sh
jreadey Aug 2, 2026
08ac6d8
restore PUT_Value with query param, modified rsp to return indices
jreadey Aug 11, 2026
1679133
added datasets/id/query path
jreadey Aug 11, 2026
1ead93d
fix for PUT_Value on multiple chunks with query_update
jreadey Aug 12, 2026
cb5fc65
use h5json query for GET domains
jreadey Aug 12, 2026
ed3d42f
fix for scalar access
jreadey Aug 13, 2026
b6583ee
fix tests for HDF5_SAMPLE_BUCKET
jreadey Aug 13, 2026
404c03d
spelling fixes and dead code removal
jreadey Aug 13, 2026
2556015
updated for new query syntax
jreadey Aug 14, 2026
85bd7fb
test case cleanup - dead code/misspells
jreadey Aug 16, 2026
b3d52ce
added regionref support, updated GET/PUT Value api
jreadey Aug 17, 2026
f7720a7
added tests for opaque types
jreadey Aug 17, 2026
2303f22
fixed log messages missing f format
jreadey Aug 21, 2026
884ba94
added openapi unit test
jreadey Aug 21, 2026
3a73530
removed non-relevant env from ci yml
jreadey Aug 21, 2026
ee3f17d
fix for binary field selections
jreadey Aug 25, 2026
ed6b5a0
avoid race condition in ready state logic
jreadey Aug 26, 2026
990b26a
sub-array fixes
jreadey Aug 27, 2026
8df7f6c
flake8 cleanup
jreadey Aug 27, 2026
725cb07
added skip for testCreateBarearrayDataset
jreadey Aug 27, 2026
92ac623
add openapi-spec-validator to requriements
jreadey Aug 27, 2026
efef282
updated requirement.txt from clean env
jreadey Aug 27, 2026
55780d4
moved unsed names to deprecated, fixed typo
jreadey Aug 27, 2026
e3b1f84
fixed typo
jreadey Aug 27, 2026
a733f10
more typos
jreadey Aug 27, 2026
0957239
re-added openapi-spec-validator
jreadey Aug 27, 2026
86950b8
added docker compose for swagger yml
jreadey Aug 27, 2026
069cc6c
added missing test scripts
jreadey Aug 27, 2026
b5d08dd
added seperate jobs for h5pyd dependent tests
jreadey Aug 28, 2026
b9360b3
update requirements.txt to point to github master branch for now
jreadey Aug 28, 2026
a9b63be
fix name for h5json github ref
jreadey Aug 28, 2026
a273db5
added run-hsds action
jreadey Aug 28, 2026
a375222
revert numpy version to 2.4.6 for python 11 compat
jreadey Aug 30, 2026
dc1f83b
try CI tests with testCreateBareArrayDataset
jreadey Aug 30, 2026
4740634
remove non-relevant comment
jreadey Aug 30, 2026
2644edc
added what's new and breaking changes to readme
jreadey Aug 30, 2026
9df7fe3
added blosc compression test
jreadey Aug 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 107 additions & 0 deletions .github/actions/run-hsds/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: "Start HSDS and run its test suite"
description: >
Installs HSDS, starts it either as a bare process ("manual") or via
Docker Compose ("docker"), waits for node startup, then runs testall.py
against it. Shared by any job that needs a running HSDS instance.
inputs:
build-method:
description: "How to start HSDS: 'manual' or 'docker'"
required: true
os:
description: "matrix.os of the calling job (used to skip docker on windows)"
required: true
runs:
using: "composite"
steps:
- name: Install dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi

- name: Install package
shell: bash
run: |
pip install -e .

- name: Run unit tests
shell: bash
run: |
pytest

- name: Start HSDS (Manual)
shell: bash
if: ${{ inputs.build-method == 'manual' }}
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
HSDS_ENDPOINT: http://127.0.0.1:5101
BUCKET_NAME: hsdstest
LOG_LEVEL: DEBUG
run: |
cp admin/config/groups.default admin/config/groups.txt
cp admin/config/passwd.default admin/config/passwd.txt
hsds --root_dir data --host localhost --port 5101 --password_file admin/config/passwd.txt --logfile hs.log --loglevel DEBUG --config_dir=admin/config --count=4 &

- name: Start HSDS (Docker)
shell: bash
if: ${{ inputs.build-method == 'docker' && inputs.os != 'windows-latest' }}
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
HSDS_ENDPOINT: http://127.0.0.1:5101
BUCKET_NAME: hsdstest
LOG_LEVEL: DEBUG
run: |
cp admin/config/groups.default admin/config/groups.txt
cp admin/config/passwd.default admin/config/passwd.txt
./build.sh --nolint
./runall.sh

- name: Wait for node startup
shell: bash
run: |
sleep 45

- name: Run HSDS tests
if: ${{ !(inputs.build-method == 'docker' && inputs.os == 'windows-latest') }}
id: hsds-tests
shell: bash
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
BUCKET_NAME: hsdstest
LOG_LEVEL: DEBUG
run: |
python testall.py

- name: Show HSDS Logs on Fail (Docker)
# Only run if the whole workflow failed due to HSDS tests
if: ${{ failure() && steps.hsds-tests.outcome == 'failure' && (inputs.build-method == 'docker' && inputs.os != 'windows-latest') }}
shell: bash
run: |
docker logs hsds-sn-1 >&1
docker logs hsds-dn-1 >&1
docker logs hsds-dn-2 >&1
docker logs hsds-dn-3 >&1
docker logs hsds-dn-4 >&1

- name: Show HSDS Logs on Fail (Manual)
# Only run if the whole workflow failed due to HSDS tests
if: ${{ failure() && steps.hsds-tests.outcome == 'failure' && (inputs.build-method == 'manual') }}
shell: bash
run: |
cat hs.log
185 changes: 88 additions & 97 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12", "3.13"]
build-method: ["manual", "docker"]

runs-on: ${{ matrix.os }}
Expand All @@ -28,119 +28,56 @@ jobs:
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi

- name: Lint with flake8
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --max-complexity=10 --max-line-length=127 --statistics

- name: Install package
shell: bash
run: |
pip install -e .

- name: Run unit tests
shell: bash
run: |
pytest
- name: Start HSDS (Manual)
shell: bash
if: ${{matrix.build-method == 'manual'}}
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
HSDS_ENDPOINT: http://127.0.0.1:5101
BUCKET_NAME: hsdstest
LOG_LEVEL: DEBUG
run: |
cp admin/config/groups.default admin/config/groups.txt
cp admin/config/passwd.default admin/config/passwd.txt
hsds --root_dir data --host localhost --port 5101 --password_file admin/config/passwd.txt --logfile hs.log --loglevel DEBUG --config_dir=admin/config --count=4 &
- name: Start HSDS and run its tests
uses: ./.github/actions/run-hsds
with:
build-method: ${{ matrix.build-method }}
os: ${{ matrix.os }}

- name: Start HSDS (Docker)
shell: bash
- name: Shut down Docker
if: ${{matrix.build-method == 'docker' && matrix.os != 'windows-latest'}}
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
HSDS_ENDPOINT: http://127.0.0.1:5101
BUCKET_NAME: hsdstest
LOG_LEVEL: DEBUG
run: |
cp admin/config/groups.default admin/config/groups.txt
cp admin/config/passwd.default admin/config/passwd.txt
./build.sh --nolint
./runall.sh
./stopall.sh

- name: Wait for node startup
shell: bash
run: |
sleep 45
h5pyd-integration:
# Combined HSDS + h5pyd test. Unlike build-and-test, a failure here can be
# a real h5pyd bug (not just HSDS), so it's kept as its own job/check.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Run HSDS tests
if: ${{!(matrix.build-method == 'docker' && matrix.os == 'windows-latest')}}
id: hsds-tests
shell: bash
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
BUCKET_NAME: hsdstest
LOG_LEVEL: DEBUG
run: |
python testall.py

- name: Show HSDS Logs on Fail (Docker)
# Only run if the whole workflow failed due to HSDS tests
if: ${{failure() && steps.hsds-tests.outcome == 'failure' && (matrix.build-method == 'docker' && matrix.os != 'windows-latest')}}
run: |
docker logs hsds-sn-1 >&1
docker logs hsds-dn-1 >&1
docker logs hsds-dn-2 >&1
docker logs hsds-dn-3 >&1
docker logs hsds-dn-4 >&1

- name: Show HSDS Logs on Fail (Manual)
# Only run if the whole workflow failed due to HSDS tests
if: ${{failure() && steps.hsds-tests.outcome == 'failure' && (matrix.build-method == 'manual')}}
run: |
cat hs.log
- name: Start HSDS and run its tests
uses: ./.github/actions/run-hsds
with:
build-method: docker
os: ubuntu-latest

- name: Checkout h5pyd
if: ${{ ( matrix.os != 'windows-latest' ) }}
uses: actions/checkout@v4
with:
repository: HDFGroup/h5pyd
path: ${{github.workspace}}/h5pyd

- name: Install h5pyd
if: ${{ ( matrix.os != 'windows-latest' ) }}
working-directory: ${{github.workspace}}/h5pyd
run: |
pip install . -v

- name: Create h5pyd test folder
if: ${{ ( matrix.os != 'windows-latest' ) }}
working-directory: ${{github.workspace}}/h5pyd
env:
HS_USERNAME: test_user1
Expand All @@ -153,7 +90,6 @@ jobs:
hstouch -e $HS_ENDPOINT /home/test_user1/h5pyd_tests/

- name: Run h5pyd tests
if: ${{ ( matrix.os != 'windows-latest' ) }}
working-directory: ${{github.workspace}}/h5pyd
env:
HS_USERNAME: test_user1
Expand All @@ -166,10 +102,70 @@ jobs:
python testall.py

- name: Shut down Docker
if: ${{matrix.build-method == 'docker' && matrix.os != 'windows-latest'}}
if: always()
run: |
./stopall.sh

test-data-setup:
# Loads the sample test data described in docs/post_install.md
# ("Test Data Setup") so integration tests that depend on it actually
# exercise their assertions instead of skipping with
# "WARNING: Failed to get domain: ... Is test data setup?"
needs: h5pyd-integration
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Start HSDS
uses: ./.github/actions/run-hsds
with:
build-method: docker
os: ubuntu-latest

- name: Checkout h5pyd
uses: actions/checkout@v4
with:
repository: HDFGroup/h5pyd
path: ${{github.workspace}}/h5pyd

- name: Install h5pyd
working-directory: ${{github.workspace}}/h5pyd
run: |
pip install . -v

- name: Load test data
env:
HS_USERNAME: test_user1
HS_PASSWORD: test
HS_ENDPOINT: http://127.0.0.1:5101
run: |
hstouch -e $HS_ENDPOINT /home/test_user1/test/
wget https://s3.amazonaws.com/hdfgroup/data/hdf5test/tall.h5
hsload -v -e $HS_ENDPOINT tall.h5 /home/test_user1/test/
hsls -r -e $HS_ENDPOINT /home/test_user1/test/tall.h5

- name: Run HSDS integration tests (with test data loaded)
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
BUCKET_NAME: hsdstest
LOG_LEVEL: DEBUG
run: |
python testall.py --skip_unit

- name: Shut down Docker
if: always()
run: |
./stopall.sh

build-and-test-socket:
env:
ADMIN_PASSWORD: admin
Expand All @@ -178,12 +174,7 @@ jobs:
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

Expand Down
20 changes: 0 additions & 20 deletions Dockerfile.lambda

This file was deleted.

Loading
Loading