4199 Commits

Author SHA1 Message Date
Matt L
f469afca53
Fix bad VOL env var handling in CMake tests (#5337)
* Fix bad VOL env var handling in CMake tests

* Preserve VOL connector env during filter plugin test

* Do not load env VOL connector during filter plugin test
2025-04-15 08:08:38 -05:00
jhendersonHDF
1b7baf0e5f
Include 400/500 HTTP status codes in ROS3 VFD error stacks (#5441)
Adds check for buffer overflow in curl write callback
2025-04-11 16:55:21 -05:00
jhendersonHDF
407caf1259
Suppress GCC warnings about invalid float16 literal suffix before C23 (#5387)
* Revert to old form of warning flag
2025-04-02 11:54:12 -05:00
jhendersonHDF
be63ed0cb0
Enable building of test generator programs against shared libraries (#5404)
Build test generator programs against shared libraries, if available,
by default. Otherwise, build them against static libraries. If
HDF5_BUILD_STATIC_TOOLS is set to ON, the tools test generator
programs will be built against static libraries even if shared
libraries are available.
2025-03-26 14:26:19 -05:00
Allen Byrne
53f415ddfa
Remove bypassed autotools files, references and CI commands (#5395) 2025-03-21 09:20:56 -05:00
jhendersonHDF
fc3b3e7bbb
Fix segfault in H5S__get_select_hyper_blocklist() (#5353) 2025-03-18 11:06:36 -05:00
Allen Byrne
1602e1fbfe
Remove autotools files and docs (#5358) 2025-03-14 13:28:44 -05:00
Matt L
4b609617f6
Close attribute after shared attr dtype test (#5360) 2025-03-12 13:17:02 -05:00
jhendersonHDF
5e32f15352
Fix two assertion failures in hyperslab code (#5355) 2025-03-07 16:54:53 -06:00
Allen Byrne
0b55bcd98d
Change md file links to correct locations (#5349) 2025-03-03 15:00:44 -06:00
jhendersonHDF
d366d72830
Update API tests README.md with current information (#5348) 2025-03-03 15:00:25 -06:00
Scot Breitenfeld
352501a5bd
fix for cray compiler failing test (#5347) 2025-03-03 14:11:00 -06:00
Matt L
07030271ee
Fix objects not being closed on objcopy helper failure (#5331) 2025-02-27 10:19:57 -06:00
Matt L
e07da0c772
Fix bad objcopy test cleanup on failure (#5320) 2025-02-17 11:46:26 -06:00
jhendersonHDF
d48af25a96
Move TestAlarmOn()/TestAlarmOff() back into PerformTests() (#5307)
Moves call to TestAlarmOn() in testframe framework back into
the PerformTests() function due to the timing of when the
framework processes command-line arguments
2025-02-10 15:23:54 -06:00
jhendersonHDF
e8760978c9
Fix segfault in H5Scombine_select (#5296)
Checks for a hyperslab selection in the resulting dataspace before
attempting to set a hyperslab-specific field
2025-02-07 09:44:01 -06:00
jhendersonHDF
354994a91a
Minor adjustments to usage of alarm(2) timer in tests (#5292)
Make alarm(2) timer per-test program rather than per-subtest

Avoid enabling alarm(2) timer when TestExpress is set to 0
2025-02-05 14:27:11 -06:00
jhendersonHDF
fba198e148
Add new -testexpress option to testframe testing framework (#5286)
Adds new -testexpress command-line option to the testframe testing
framework to allow setting or overriding of the TestExpress level
at runtime

Adds macros for the different currently defined TestExpress levels
2025-01-31 20:11:48 -06:00
Ted Lyngmo
985df02283
Fix a few illegal pointer usages (#5279) 2025-01-25 22:54:47 -06:00
Matt L
331c000e6a
Add H5Tdecode2, rename and deprecate H5Tdecode (#5213) 2025-01-24 08:13:43 -06:00
Allen Byrne
d84337ad8c
Fix codespell issues (#5256) 2025-01-21 17:36:27 -06:00
jhendersonHDF
c83ca7dff3
Fix AddressSanitizer issues in cache test (#5235)
Fix usages of stack variables after function return by
removing extraneous H5CX_push/pop operations and hoisting
a stack variable to a higher scope
2025-01-15 14:58:39 -06:00
Dana Robinson
144b4fc661
Move AWS config/auth code inside H5FDs3comms.c (#5238)
The AWS configuration and authorization setup code needs to be
consolidated into one location in order to check AWS environment
variables and configuration files as well as fapl parameters.

This changeset pushes some stragglers into the s3comms code.

Also includes some cleanup, like removing useless macros,
making the s3comms functions package functions, and
renames things for symmetry and readability.
2025-01-15 05:43:20 -08:00
Dana Robinson
01d5a973e0
More H5FDs3comms.c/h cleanup (#5231)
* Rename functions that create AWS strings to include _make_aws_
  in the name
* Separate out the test-only load AWS credentials function
2025-01-14 10:13:32 -06:00
jhendersonHDF
46658a55b3
Fix memory leak in API tests for vlen dataset I/O (#5230) 2025-01-13 16:58:32 -08:00
Dana Robinson
04f17f5a7c
Clean up H5FDs3comms.c code (#5228)
Makes it more like the rest of the library. Also simplifies some
string copying.
2025-01-13 10:25:57 -08:00
Dana Robinson
915722a0c4
Parse ros3 VFD URLs using libcurl (#5226) 2025-01-13 06:40:27 -08:00
Dana Robinson
8ff65ebf7a
Use SSL to create hex strings from byte arrays (#5227) 2025-01-13 05:44:14 -08:00
jhendersonHDF
2d0c676642
Enable API tests by default and fix some issues (#5223)
* Enable API tests by default

* Fix leaked file handle in API link test

* Fix some versioned API misuses
2025-01-10 09:08:02 -08:00
jhendersonHDF
af0b2315bd
Remove const from testing parameters in testframe framework (#5214)
Makes testing parameters specified with AddTest non-const again when
passed to test functions. This allows test functions to update their
parameters during execution and is particularly useful for tests
which use those parameters to accumulate statistics, error counts,
etc. without resorting to global variables.
2025-01-08 13:33:00 -06:00
Dana Robinson
00adfce7a4
Remove duplicate MESSAGE macro (#5200)
* Removes duplicate macro from C++ code
* Hides global variables behind accessor functions
2025-01-02 10:11:17 -06:00
Allen Byrne
655403a3b4
Correct CMake option usage and dependencies (#5188) 2024-12-31 16:46:45 -06:00
Quincey Koziol
331193f357
Add new multithreaded concurrency configuration (#5015)
Added infrastructure support for multithreaded concurrency by adding an optional way to switch to using a non-recursive R/W lock for the global API lock. This is enabled with a new 'concurrency' configuration flag for the autotools & CMake builds, which is disabled by default.

When the 'concurrency' build option is chosen, the global API lock will use the R/W lock and all API calls currently will acquire a write lock, ensuring exclusive access by one thread. Over time, the API routines that are converted to support multithreaded concurrency will switch to acquiring a read lock instead.

Reentering the library from application callbacks is managed by the 'disable locking for this thread' (DLFTT) threadsafety protocol. This is internally handled within the H5_API_LOCK / H5_API_UNLOCK macros in H5private.h (as before), which invoke the 'dlftt' routines in H5TSint.c.

To support this change, the threadsafety configuration macros for the library have been updated:
- --enable-threadsafe now defines the H5_HAVE_THREADSAFE macro
- --enable-concurrency defines the H5_HAVE_CONCURRENCY macro
The new H5_HAVE_THREADSAFE_API macro is set if either H5_HAVE_THREADSAFE or H5_HAVE_CONCURRENCY is enabled.

New Github actions are added to include the concurrency configuration in the CI for the develop branch.

To support the new non-recursive R/W locking for API routines, some other changes are necessary:

Added macro wrappers around all callback invocations that could call an
application function, and therefore re-enter the library:
H5_BEFORE_USER_CB* / H5_AFTER_USER_CB*

Added H5_user_cb_prepare / H5_user_cb_restore routines that save the
state of the library when callback leaves the library. Includes error
stack and threadsafe reentry state currently.

There's also some small cleanups to various places in the library:

Moved the H5E_mpi_error_str / H5E_mpi_error_str_len globals to be local for
pushing MPI errors, so that multiple threads can't interfere with each
other.

Added H5TS_rwlock_trywrlock() routine to R/W lock interface.

Emulate R/W locks on MacOS because its implementation of
pthread_rwlock_wrlock() does not conform to the POSIX standard.

Don't acquire the global API lock in H5close, since it's acquired in H5_term_library, which is necessary because H5_term_library is invoked via other code paths that don't hold the global API lock.

Don't call H5Eget_auto2 API routine within H5_term_library.

Switched 'return NULL' in H5allocate_memory to HGOTO_DONE(NULL).

Switched H5Pget_file_space_strategy / H5Pset_file_space_strategy to use
internal routines instead of API routines.

Switched H5Oopen_by_addr & H5Ovisit1 to use internal routines instead of
API routines.

Fixed a few places in src/H5Odeprec.c where a major
error ID was passed as a minor ID.
2024-12-19 01:35:21 -08:00
Matt L
914640e123
Prevent H5Pset* routines from modifying default plists (#5172)
* Prevent H5Pset_vol from changing default VOL
* Prevent public routines from modifying default plists
* Allow default backing FAPL for onion VFD
* Require FAPL in H5Pset_vol()
* Merge into existing H5P tests
2024-12-17 07:52:46 -06:00
Allen Byrne
1a9f13a7f1
Rework the compression library search (#5085) 2024-12-13 10:28:27 -06:00
Dana Robinson
8f2c03b2da
Remove the hash_size param from H5Iregister_type() (#5170)
The hash_size parameter of H5Iregister_type() hasn't been used since 1.8.
It's been removed and the API call has been versioned.

This PR also updates the make_vers script to handle v2.0.0.

Fixes #4344
2024-12-10 00:34:40 -08:00
jhendersonHDF
fd7aef59ed
Integrate API tests with testing framework (#5133)
Allows skipping of individual tests by interface or by name
2024-11-26 07:34:52 -06:00
Allen Byrne
258fa78c4c
Add check for PERL_FOUND around actual test (#5130) 2024-11-19 16:18:17 -06:00
H. Joe Lee
0cabed1ab3
Fix typo (#5125) 2024-11-18 07:47:54 -06:00
jhendersonHDF
1a9c40557d
Add documentation to h5test testing framework (#5094)
* Add documentation to h5test testing framework

* Remove header comments in h5test.c in favor of h5test.h documentation
2024-11-13 20:08:07 -08:00
jhendersonHDF
c130d5144d
Fix failures in dtypes test on cygwin (#5077) 2024-11-07 08:22:53 -08:00
jhendersonHDF
29d8dfd170
Skip some additional dt_arith long double tests for ppc64le systems (#5071)
Skips a few more dt_arith sub-tests on ppc64le systems until issues with
handling of the long double type can be addressed
2024-11-04 17:12:57 -06:00
bmribler
49935f8bbc
Fixed H5Ovisit2() change of behavior between 1.10.11 and v1.14.4.3 (#5022)
H5O__visit() uses the object information to be returned to the
application, so when the application did not request for certain
information, they were not available to H5O__visit.  This lack of
information caused incorrect behavior down the road.

We now call H5O_get_info again providing H5O_INFO_BASIC for "fields",
so we can obtain correct object information for H5O__visit to use.

Fixes #4941
2024-11-04 08:08:11 -08:00
jhendersonHDF
90429f5e7d
Implement support for complex number datatypes (#4630)
* Implement support for complex number datatypes

Adds the new datatype class H5T_COMPLEX

Adds the new API function H5Tcomplex_create which creates a complex
number datatype from an ID of a base floating-point datatype

Adds the new feature check macros H5_HAVE_COMPLEX_NUMBERS and
H5_HAVE_C99_COMPLEX_NUMBERS

Adds the new datatype size macros H5_SIZEOF_FLOAT_COMPLEX,
H5_SIZEOF_DOUBLE_COMPLEX and H5_SIZEOF_LONG_DOUBLE_COMPLEX

Adds the new datatype ID macros H5T_NATIVE_FLOAT_COMPLEX,
H5T_NATIVE_DOUBLE_COMPLEX, H5T_NATIVE_LDOUBLE_COMPLEX,
H5T_CPLX_IEEE_F16LE, H5T_CPLX_IEEE_F16BE,
H5T_CPLX_IEEE_F32LE, H5T_CPLX_IEEE_F32BE,
H5T_CPLX_IEEE_F64LE and H5T_CPLX_IEEE_F64BE

Adds hard and soft datatype conversion paths between complex number
datatypes and all the integer and floating-point datatypes, as well as
between other complex number datatypes

Adds a special conversion path between complex number datatypes and
array or compound datatypes where the in-memory layout of data is the
same between the datatypes and data can be converted directly

Adds support for complex number datatypes to the h5dump, h5ls and
h5diff/ph5diff tools. Allows h5dump '-m' option to change floating-point
printing format for float complex and double complex datatypes, as well
as long double complex if it has the same size as double complex

Adds minimal support to the h5watch and h5import tools

Adds support for the predefined complex number datatypes and
H5Tcomplex_create function to the Java wrappers. Also adds initial,
untested support to the JNI for future use with HDFView

Adds support for just the H5T_COMPLEX datatype class to the Fortran
wrappers

Adds support for the predefined complex number datatypes and
H5Tcomplex_create function to the high level library H5LT interface
for use with the H5LTtext_to_dtype and H5LTdtype_to_text functions

Changes some usages of "complex" in the library since it conflicts with
the "complex" keyword from the complex.h header. Also changes various
usages of the word "complex" throughout the library to distinguish
compound datatypes from complex datatypes.
2024-10-31 13:54:25 -07:00
Dana Robinson
786b03317a
Fix remaining calloc param reversals (#5018)
gcc 14 identifies likely places where the sizeof() call is used
for the first parameter to calloc(). This PR fixes the remaining
places in the library where this occurs and reworks a few other
allocations to be more uniform.
2024-10-28 06:58:28 -07:00
Dana Robinson
369099d843
Fix minor Windows warnings (#5021)
* Cast away a signed/unsigned issue in H5HFhuge.c
* Use our platform-independent POSIX types in external_common.c
  and h5test.c
* Replace a memset() call with a (const) array initializer in h5test.c
* Fix an unused done: target in h5diff
2024-10-28 05:54:16 -07:00
Allen Byrne
5425a571e0
Convert develop to v2.0.0 (#5006)
Switches previous 1.16/17/18 values to 2.0
2024-10-27 21:51:07 -07:00
Quincey Koziol
97e1ed4fc8
Refactor allocation of API context (#4942)
Since each API context is local to a thread, use the stack to
store the context instead of allocating & releasing it each time.
This improves performance (slightly), reduces alloc/free calls,
and eliminates the H5FL package from the push & pop operations,
which helps simplify threadsafe operation.

One effect of this change is that the H5VLstart_lib_state /
H5VLfinish_lib_state API routines for pass through connector
authors now require a parameter that can be used to store
the library's context. It was probably a mistake to assume
that these two routines would not do this previously, so this
is essentially a bug fix for them.

Some other minor things:

 * Added API context push+pop operations to cache tests
  (I'm not actually certain why this was working before) and
  a few other places
* Cleaned up a bunch of warnings in test code (calloc args, mainly)
* Made header file inclusions more standard in some source files
2024-10-24 10:09:22 -07:00
Allen Byrne
1b72a1bca0
Add support for native zlib-ng in the library and compression references (#4935)
* Correct compile defs for zip_perf program
2024-10-23 16:20:15 -05:00
Quincey Koziol
ed4419cc52
Remove another couple of H5E_clear_stack calls (#4968)
Also cleans up the links test, which had a ton of copy-and-pasted incorrect negative error checks (Calling TEST_ERROR within H5E_BEGIN_TRY / H5E_END_TRY pairs will goto out of the pair, leaving errors suppressed).
2024-10-23 10:13:57 -07:00