hdf5/test/test_vds_swmr.pwsh.in
Larry Knox 3c86f0f0ce
Sync develop changes March 20 - March 25 to hdf5_1_14. (#4241)
* Call memset before stat calls (#4202)

The buffers passed to stat-like calls are only partially filled in by
the call, leaving ununitialized memory areas when the stat buffers are
created on the stack.

This change memsets the buffers to 0 before the stat calls, quieting
the -fsanitze=memory complaints.

* Remove unused CMake configuration checks (#4199)

* Update link to Chunking in HDF5 page (#4203)

* Fix H5Pset_efile_prefix documentation error (#4206)

Fixes GH issue #1759

* Suggested header footer for NEWSLETTER (#4204)

* Suggested header footer for NEWSLETTER

* Updates

* Add NEWSLETTER.txt to h5vers script

* Fix grammar in README.md release template (#4201)

* Add back snapshot names (#4198)

* Use tar.gz extension for ABI reports (#4205)

* Fix issue with Subfiling VFD and multiple opens of same file (#4194)

* Fix issue with Subfiling VFD and multiple opens of same file

* Update H5_subfile_fid_to_context to return error value instead of ID

* Add helper routine to initialize open file mapping

* Reverts AC_SYS_LARGEFILE change (#4213)

We previously replaced local macros with AC_SYS_LARGEFILE, which is
unfortunately buggy on some systems and does not correctly set the
necessary defines, despite successfully detecting them.

This restores the previous macro hacks to acsite.m4

* Propagate group creation properties to intermediate groups (#4139)

* Add clarification for current behavior of H5Get_objtype_by_idx() (#4120)

* Addressed Fortran  issues with promoted integers and reals via compilation flags (#4209)

* addressed issue wit promoted integers and reals

* added option to use mpi_f08

* Summarize the library version table (#4212)

Fixes GH-3773

* Fix URLs (#4210)

Also removed Copyright.html context because it's no longer valid.

* Fix 'make check-vfd' target for Autotools (#4211)

Changes Autotools testing to use HDF5_TEST_DRIVER environment
variable to avoid running tests that don't work well with several
VFDs

Restores old h5_get_vfd_fapl() testing function to setup a FAPL
with a particular VFD

Adds a macro for the default VFD name

* Revert "Addressed Fortran  issues with promoted integers and reals via compil…" (#4220)

This reverts commit 06c42ff038.

* Backup and clear CMAKE_C_FLAGS before performing _Float16 configure checks (#4217)

* Fix broken links (#4224)

* Fix broken URLs in documentation (#4214)

Fixes GH-3881 partially.  There are pages that need to be recreated.

* Avoid file size checks in C++ testhdf5 for certain VFDs (#4226)

* Fix an issue with type size assumptions in h5dumpgentest (#4222)

* Fix issue with -Werror cleanup sed command in configure.ac (#4223)

* Fix Java JNI warnings (#4229)

* Rework snapshots/release workflows for consistent args (#4227)

* Fixed a cache assert with too-large metadata objects (#4231)

If the library tries to load a metadata object that is above the
library's hard-coded limits, the size will trip an assert in debug
builds. In HDF5 1.14.4, this can happen if you create a very large
number of links in an old-style group that uses local heaps.

The library will now emit a normal error when it tries to load a
metadata object that is too large.

Partially addresses GitHub #3762

* Set DXPL in API context for native VOL attribute I/O calls (#4228)

* Initialize a variable in C++ testhdf5's tattr.cpp (#4232)

* Addressed Fortran issues with promoted integers and reals via compilation flags, part 2 (#4221)

* addressed issue wit promoted integers and reals

* fixed h5fcreate_f

* added option to use mpi_f08

* change the kind of logical in the parallel tests

* addressed missing return value from callback

* Use cp -rp in test_plugin.sh (#4233)

When building with debug symbols on MacOS, the cp -p commands in
test_plugin.sh will attempt to copy the .dSYM directories with
debugging info, which will fail since -r is missing.

Using cp -rp is harmless and allows the test to run

Fixes HDFFV-10542

* Clean up types in h5test.c (#4235)

Reduces warnings on 32-bit and LLP64 systems

* Fix example links (#4237)

* Fix links md files (#4239)

* Add markdown link checker action (#4219)

* Match minimum CMake version to 3.18 (#4215)
2024-03-25 17:02:21 -05:00

191 lines
7.1 KiB
Plaintext

# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the COPYING file, which can be found at the root of the source code
# distribution tree, or in https://www.hdfgroup.org/licenses.
# If you do not have access to either file, you may request a copy from
# help@hdfgroup.org.
#
# Tests for the swmr feature using virtual datasets.
$srcdir = '@srcdir@'
$utils_testdir=@H5_UTILS_TEST_BUILDDIR@
$testdir=@H5_TEST_BUILDDIR@
###############################################################################
## test parameters
###############################################################################
$Nwriters = 6 # number of writers (1 per source dataset)
$Nreaders = 5 # number of readers to launch
$nerrors = 0
###############################################################################
## definitions for message file to coordinate test runs
###############################################################################
$WRITER_MESSAGE = 'SWMR_WRITER_MESSAGE' # The message file created by writer that the open is complete
# This should be the same as the define in "test/swmr_common.h"
$MESSAGE_TIMEOUT = 300 # Message timeout length in secs
# This should be the same as the define in "test/h5test.h"
# Print a line-line message left justified in a field of 70 characters
# beginning with the word "Testing".
#
function Test-WithSpaces {
$SPACES=' '
#Write-Output "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
}
# To wait for the writer message file or till the maximum # of seconds is reached
# $Message is the message file to wait for
# This performs similar function as the routine h5_wait_message() in test/h5test.c
function Wait-Message {
[CmdletBinding()]
param (
[Parameter(Mandatory, ValueFromPipeline)]
[string]$TestPath, # Get the path of the message file to wait for
[Parameter(Mandatory, ValueFromPipeline)]
[string]$Message # Get the name of the message file to wait for
)
PROCESS {
$message = Join-Path -Path $TestPath -ChildPath $Message
$t0 = Get-Date # Get current time
$t1 = $t0
$difft = New-Timespan -Start $t0 -End $t1 # Initialize the time difference
$mexist = 0 # Indicate whether the message file is found
while ($difft.TotalSeconds -lt $MESSAGE_TIMEOUT) { # Loop till message times out
$t1 = Get-Date # Get current time in seconds
$difft = New-Timespan -Start $t0 -End $t1 # Calculate the time difference
#Write-Output "Check for $message : time=$difft"
if ([System.IO.File]::Exists($message)) { # If message file is found:
$mexist = 1 # indicate the message file is found
Remove-Item $message # remove the message file
break # get out of the while loop
}
}
if ($mexist -eq 0) {
# Issue warning that the writer message file is not found, continue with launching the reader(s)
Write-Warning -Message "$WRITER_MESSAGE is not found after waiting $MESSAGE_TIMEOUT seconds"
}
else {
Write-Output "$WRITER_MESSAGE is found"
}
}
}
###############################################################################
## Main
###############################################################################
# Check to see if the VFD specified by the HDF5_DRIVER or HDF5_TEST_DRIVER
# environment variable supports SWMR.
$testprog = Join-Path -Path $utils_testdir -ChildPath swmr_check_compat_vfd.exe
$rp = Start-Process -FilePath $testprog -PassThru -Wait -NoNewWindow
if ($rp.ExitCode -ne 0) {
Write-Output ""
Write-Output "The VFD specified by the HDF5_DRIVER or HDF5_TEST_DRIVER"
Write-Output "environment variable does not support SWMR."
Write-Output ""
Write-Output "SWMR acceptance tests skipped"
Write-Output ""
exit 0
}
Set-Location -Path vds_swmr_test
$testdir = Join-Path -Path $testdir -ChildPath vds_swmr_test
Write-Output ""
Write-Output "###############################################################################"
Write-Output "## Basic VDS SWMR test - writing to a tiled plane"
Write-Output "###############################################################################"
# Launch the file generator
Write-Output "launch the swmr_generator"
$rp = Start-Process -FilePath $testdir/vds_swmr_gen.exe -NoNewWindow -PassThru -Wait
if ($rp.ExitCode -ne 0) {
Write-Warning "generator had error"
$nerrors += 1
}
# Check for error and exit if one occurred
#Write-Output "nerrors=$nerrors"
if ($nerrors -ne 0) {
Write-Warning "VDS SWMR tests failed with $nerrors errors."
exit 1
}
# Launch the writers
Write-Output "launch the $Nwriters SWMR VDS writers (1 per source)"
$pid_writers = @()
$n = 0
while ($n -lt $Nwriters) {
$rp = Start-Process -FilePath $testdir/vds_swmr_writer.exe -NoNewWindow -PassThru -ArgumentList "$n" 2>&1 | tee swmr_writer.out.$n
$pid_writers += $rp.id
$n += 1
}
#Write-Output "pid_writers=$pid_writers"
# Sleep to ensure that the writers have started
Start-Sleep -Seconds 3
# Launch the readers
Write-Output "launch $Nreaders SWMR readers"
$pid_readers = @()
$n = 0
while ($n -lt $Nreaders) {
$rp = Start-Process -FilePath $testdir/vds_swmr_reader.exe -NoNewWindow -PassThru 2>&1 | tee swmr_reader.out.$n
$pid_readers += $rp.id
$n += 1
}
#Write-Output "pid_readers=$pid_readers"
# Collect exit code of the writers
foreach ($xpid in $pid_writers) {
#Write-Output "checked writer $xpid"
$result = Wait-Process -Id $xpid
if ($result.ExitCode -ne 0) {
Write-Warning "writer had error"
$nerrors += 1
}
}
# Collect exit code of the readers
# (they usually finish after the writers)
foreach ($xpid in $pid_readers) {
#Write-Output "checked reader $xpid"
$result = Wait-Process -Id $xpid
if ($result.ExitCode -ne 0) {
Write-Warning "reader had error"
$nerrors += 1
}
}
# Check for error and exit if one occurred
#Write-Output "nerrors=$nerrors"
if ($nerrors -ne 0) {
Write-Warning "VDS SWMR tests failed with $nerrors errors."
exit 1
}
###############################################################################
## Report and exit
###############################################################################
cd ..
#Write-Output "nerrors=$nerrors"
if ($nerrors -eq 0) {
Write-Output "VDS SWMR tests passed."
# if test -z "$HDF5_NOCLEANUP"; then
# # delete the test directory
# Remove-Item vds_swmr_test -Recurse
# fi
exit 0
}
else {
Write-Warning "VDS SWMR tests failed with $nerrors errors."
exit 1
}