2003-04-01 01:59:04 +08:00
|
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
2007-02-07 22:56:24 +08:00
|
|
|
* Copyright by The HDF Group. *
|
2003-04-01 01:59:04 +08:00
|
|
|
* All rights reserved. *
|
|
|
|
* *
|
|
|
|
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
|
|
|
* terms governing use, modification, and redistribution, is contained in *
|
2017-04-18 03:32:16 +08:00
|
|
|
* the COPYING file, which can be found at the root of the source code *
|
2021-02-17 22:52:04 +08:00
|
|
|
* distribution tree, or in https://www.hdfgroup.org/licenses. *
|
2017-04-18 03:32:16 +08:00
|
|
|
* If you do not have access to either file, you may request a copy from *
|
|
|
|
* help@hdfgroup.org. *
|
2003-04-01 01:59:04 +08:00
|
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
|
1998-03-05 00:20:23 +08:00
|
|
|
/*
|
2019-05-25 05:59:14 +08:00
|
|
|
* Purpose: Tests datasets stored in external raw files.
|
1998-03-05 00:20:23 +08:00
|
|
|
*/
|
2019-04-10 06:40:24 +08:00
|
|
|
#include "external_common.h"
|
2019-07-03 12:43:45 +08:00
|
|
|
#include "external_fname.h"
|
2016-02-23 05:40:03 +08:00
|
|
|
|
2019-10-01 02:57:09 +08:00
|
|
|
#define AEF_EXNAME_MAX_LEN 12 /* string buffer size for external file name */
|
|
|
|
/* used in __add_external_files() */
|
|
|
|
|
1998-03-05 23:48:16 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: files_have_same_contents
|
1998-03-05 23:48:16 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Determines whether two files contain the same data.
|
1998-03-05 23:48:16 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: nonzero if same, zero if different.
|
2019-05-25 05:59:14 +08:00
|
|
|
* Failure: zero
|
1998-03-05 23:48:16 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
2023-09-06 04:11:52 +08:00
|
|
|
static bool
|
2016-02-02 18:30:48 +08:00
|
|
|
files_have_same_contents(const char *name1, const char *name2)
|
1998-03-05 23:48:16 +08:00
|
|
|
{
|
2019-05-25 05:59:14 +08:00
|
|
|
int fd1 = 0;
|
|
|
|
int fd2 = 0;
|
2020-09-30 22:27:10 +08:00
|
|
|
ssize_t n1 = 0;
|
|
|
|
ssize_t n2 = 0;
|
2019-05-25 05:59:14 +08:00
|
|
|
char buf1[1024];
|
|
|
|
char buf2[1024];
|
2023-09-06 04:11:52 +08:00
|
|
|
bool ret = false; /* not equal until proven otherwise */
|
1998-03-05 23:48:16 +08:00
|
|
|
|
2019-07-23 05:55:37 +08:00
|
|
|
if ((fd1 = HDopen(name1, O_RDONLY)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
goto out;
|
2019-07-23 05:55:37 +08:00
|
|
|
if ((fd2 = HDopen(name2, O_RDONLY)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
goto out;
|
[svn-r17953] Description:
Bring Coverity changes into the trunk:
r17877:
Error 266: Uninitialized memspace set to -1. Changed malloc and free to HDmalloc and HDfree. Removed unused dtype var.
r17878:
Error 265: Uninitialized mem_space set to -1. Changed malloc and free to HDmalloc and HDfree.
Error 267: Uninitialized smspace set to -1. Changed malloc and free to HDmalloc and HDfree.
r17879:
Error 242: Uninitialized aid set to -1.
Error 243: Uninitialized sid set to -1.
Uninitialized tid set to -1 for consistency
r17880:
Error 242: reinitialized aid to -1 after close to be ready for reuse.
Error 243: reinitialized sid to -1 after close to be ready for reuse.
reinitialized tid to -1 for consistency after close to be ready for reuse.
r17881:
use valgrind to check there is a memory leak. The fix is to free ptrstr in line 5838 at xml_dump_group() of h5dump.c after it is used. run the valgrind after the fix, no memory leak for that part of the code.
r17882:
Fix Coverity items 256 and 269.
r17883:
Error 222-230: initialized hid_t vars to -1 after close to be ready for reuse.
Also added H5Tclose for tid in gent_bigdims
r17884:
Bug fix (Coverity run2, view 23, dead code)
(this is pair-program done by Albert, Elena and Larry).
Confirmed and fixed the deadcode in hyperslab read branch of function
diff_datasetid.
(Discovered other bad code that diff_datasetid() should be recoded.
Bug 1693 is entered for this.)
r17906:
Fix Coverity item 260.
r17907:
262: Initialized hid_t's dtype, dtype_tmp and file to -1. Initialized H5T_t * dt to NULL.
r17908:
Fix Coverity item 261.
r17909:
Fix Coverity item 248.
r17910:
Revise fix for Coverity item 248.
r17911:
Resolved coverity issues #s 263, 162, 163, 164. All issues in dsets.c. Initialized fid and did hid_t's. filter_corrupt function was returning in the middle of an if statement, bypassing free calls. Updated error handling to free buffers and hid_t's appropriately.
r17912:
(done by Larry and Albert)
Cleanup Coverity view warnings (#231-241) about
using uninitialized variables. Initialized all
of them.
r17913:
Resolved issue 251 and 264. Initialized tid2 to -1 and initialized buffers that were freed in case of an error.
r17914:
Resolved coverity issues 66, 220, and 221:
66: Negative Return assignment ignored
220,221: Initialized hid_t's.
r17915:
Fix Coverity item 247.
r17916:
Fix Coverity item 246.
r17917:
Fix Coverity item 245.
r17918:
Fix Coverity item 244.
r17919:
Coverity Issue #84: Moved asserts in H5T_cmp to the top of the function, and converted them to HDassert. Coverity complaining about using potentially NULL pointer without checking it. Want to see if Coverity will accept Assertions as acceptable checking before using the value.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-04 03:11:29 +08:00
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
/* Loop until files are empty or we encounter a problem */
|
2020-09-30 22:27:10 +08:00
|
|
|
while (1) {
|
2023-06-30 03:33:46 +08:00
|
|
|
memset(buf1, 0, sizeof(buf1));
|
|
|
|
memset(buf2, 0, sizeof(buf2));
|
2016-02-02 18:30:48 +08:00
|
|
|
|
[svn-r17953] Description:
Bring Coverity changes into the trunk:
r17877:
Error 266: Uninitialized memspace set to -1. Changed malloc and free to HDmalloc and HDfree. Removed unused dtype var.
r17878:
Error 265: Uninitialized mem_space set to -1. Changed malloc and free to HDmalloc and HDfree.
Error 267: Uninitialized smspace set to -1. Changed malloc and free to HDmalloc and HDfree.
r17879:
Error 242: Uninitialized aid set to -1.
Error 243: Uninitialized sid set to -1.
Uninitialized tid set to -1 for consistency
r17880:
Error 242: reinitialized aid to -1 after close to be ready for reuse.
Error 243: reinitialized sid to -1 after close to be ready for reuse.
reinitialized tid to -1 for consistency after close to be ready for reuse.
r17881:
use valgrind to check there is a memory leak. The fix is to free ptrstr in line 5838 at xml_dump_group() of h5dump.c after it is used. run the valgrind after the fix, no memory leak for that part of the code.
r17882:
Fix Coverity items 256 and 269.
r17883:
Error 222-230: initialized hid_t vars to -1 after close to be ready for reuse.
Also added H5Tclose for tid in gent_bigdims
r17884:
Bug fix (Coverity run2, view 23, dead code)
(this is pair-program done by Albert, Elena and Larry).
Confirmed and fixed the deadcode in hyperslab read branch of function
diff_datasetid.
(Discovered other bad code that diff_datasetid() should be recoded.
Bug 1693 is entered for this.)
r17906:
Fix Coverity item 260.
r17907:
262: Initialized hid_t's dtype, dtype_tmp and file to -1. Initialized H5T_t * dt to NULL.
r17908:
Fix Coverity item 261.
r17909:
Fix Coverity item 248.
r17910:
Revise fix for Coverity item 248.
r17911:
Resolved coverity issues #s 263, 162, 163, 164. All issues in dsets.c. Initialized fid and did hid_t's. filter_corrupt function was returning in the middle of an if statement, bypassing free calls. Updated error handling to free buffers and hid_t's appropriately.
r17912:
(done by Larry and Albert)
Cleanup Coverity view warnings (#231-241) about
using uninitialized variables. Initialized all
of them.
r17913:
Resolved issue 251 and 264. Initialized tid2 to -1 and initialized buffers that were freed in case of an error.
r17914:
Resolved coverity issues 66, 220, and 221:
66: Negative Return assignment ignored
220,221: Initialized hid_t's.
r17915:
Fix Coverity item 247.
r17916:
Fix Coverity item 246.
r17917:
Fix Coverity item 245.
r17918:
Fix Coverity item 244.
r17919:
Coverity Issue #84: Moved asserts in H5T_cmp to the top of the function, and converted them to HDassert. Coverity complaining about using potentially NULL pointer without checking it. Want to see if Coverity will accept Assertions as acceptable checking before using the value.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-04 03:11:29 +08:00
|
|
|
n1 = HDread(fd1, buf1, sizeof(buf1));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (n1 < 0 || (size_t)n1 > sizeof(buf1))
|
2016-02-02 18:30:48 +08:00
|
|
|
break;
|
[svn-r17953] Description:
Bring Coverity changes into the trunk:
r17877:
Error 266: Uninitialized memspace set to -1. Changed malloc and free to HDmalloc and HDfree. Removed unused dtype var.
r17878:
Error 265: Uninitialized mem_space set to -1. Changed malloc and free to HDmalloc and HDfree.
Error 267: Uninitialized smspace set to -1. Changed malloc and free to HDmalloc and HDfree.
r17879:
Error 242: Uninitialized aid set to -1.
Error 243: Uninitialized sid set to -1.
Uninitialized tid set to -1 for consistency
r17880:
Error 242: reinitialized aid to -1 after close to be ready for reuse.
Error 243: reinitialized sid to -1 after close to be ready for reuse.
reinitialized tid to -1 for consistency after close to be ready for reuse.
r17881:
use valgrind to check there is a memory leak. The fix is to free ptrstr in line 5838 at xml_dump_group() of h5dump.c after it is used. run the valgrind after the fix, no memory leak for that part of the code.
r17882:
Fix Coverity items 256 and 269.
r17883:
Error 222-230: initialized hid_t vars to -1 after close to be ready for reuse.
Also added H5Tclose for tid in gent_bigdims
r17884:
Bug fix (Coverity run2, view 23, dead code)
(this is pair-program done by Albert, Elena and Larry).
Confirmed and fixed the deadcode in hyperslab read branch of function
diff_datasetid.
(Discovered other bad code that diff_datasetid() should be recoded.
Bug 1693 is entered for this.)
r17906:
Fix Coverity item 260.
r17907:
262: Initialized hid_t's dtype, dtype_tmp and file to -1. Initialized H5T_t * dt to NULL.
r17908:
Fix Coverity item 261.
r17909:
Fix Coverity item 248.
r17910:
Revise fix for Coverity item 248.
r17911:
Resolved coverity issues #s 263, 162, 163, 164. All issues in dsets.c. Initialized fid and did hid_t's. filter_corrupt function was returning in the middle of an if statement, bypassing free calls. Updated error handling to free buffers and hid_t's appropriately.
r17912:
(done by Larry and Albert)
Cleanup Coverity view warnings (#231-241) about
using uninitialized variables. Initialized all
of them.
r17913:
Resolved issue 251 and 264. Initialized tid2 to -1 and initialized buffers that were freed in case of an error.
r17914:
Resolved coverity issues 66, 220, and 221:
66: Negative Return assignment ignored
220,221: Initialized hid_t's.
r17915:
Fix Coverity item 247.
r17916:
Fix Coverity item 246.
r17917:
Fix Coverity item 245.
r17918:
Fix Coverity item 244.
r17919:
Coverity Issue #84: Moved asserts in H5T_cmp to the top of the function, and converted them to HDassert. Coverity complaining about using potentially NULL pointer without checking it. Want to see if Coverity will accept Assertions as acceptable checking before using the value.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-04 03:11:29 +08:00
|
|
|
n2 = HDread(fd2, buf2, sizeof(buf2));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (n2 < 0 || (size_t)n2 > sizeof(buf2))
|
2016-02-02 18:30:48 +08:00
|
|
|
break;
|
2010-01-30 12:29:13 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (n1 != n2)
|
2016-02-02 18:30:48 +08:00
|
|
|
break;
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (n1 == 0 && n2 == 0) {
|
2023-09-06 04:11:52 +08:00
|
|
|
ret = true;
|
[svn-r17953] Description:
Bring Coverity changes into the trunk:
r17877:
Error 266: Uninitialized memspace set to -1. Changed malloc and free to HDmalloc and HDfree. Removed unused dtype var.
r17878:
Error 265: Uninitialized mem_space set to -1. Changed malloc and free to HDmalloc and HDfree.
Error 267: Uninitialized smspace set to -1. Changed malloc and free to HDmalloc and HDfree.
r17879:
Error 242: Uninitialized aid set to -1.
Error 243: Uninitialized sid set to -1.
Uninitialized tid set to -1 for consistency
r17880:
Error 242: reinitialized aid to -1 after close to be ready for reuse.
Error 243: reinitialized sid to -1 after close to be ready for reuse.
reinitialized tid to -1 for consistency after close to be ready for reuse.
r17881:
use valgrind to check there is a memory leak. The fix is to free ptrstr in line 5838 at xml_dump_group() of h5dump.c after it is used. run the valgrind after the fix, no memory leak for that part of the code.
r17882:
Fix Coverity items 256 and 269.
r17883:
Error 222-230: initialized hid_t vars to -1 after close to be ready for reuse.
Also added H5Tclose for tid in gent_bigdims
r17884:
Bug fix (Coverity run2, view 23, dead code)
(this is pair-program done by Albert, Elena and Larry).
Confirmed and fixed the deadcode in hyperslab read branch of function
diff_datasetid.
(Discovered other bad code that diff_datasetid() should be recoded.
Bug 1693 is entered for this.)
r17906:
Fix Coverity item 260.
r17907:
262: Initialized hid_t's dtype, dtype_tmp and file to -1. Initialized H5T_t * dt to NULL.
r17908:
Fix Coverity item 261.
r17909:
Fix Coverity item 248.
r17910:
Revise fix for Coverity item 248.
r17911:
Resolved coverity issues #s 263, 162, 163, 164. All issues in dsets.c. Initialized fid and did hid_t's. filter_corrupt function was returning in the middle of an if statement, bypassing free calls. Updated error handling to free buffers and hid_t's appropriately.
r17912:
(done by Larry and Albert)
Cleanup Coverity view warnings (#231-241) about
using uninitialized variables. Initialized all
of them.
r17913:
Resolved issue 251 and 264. Initialized tid2 to -1 and initialized buffers that were freed in case of an error.
r17914:
Resolved coverity issues 66, 220, and 221:
66: Negative Return assignment ignored
220,221: Initialized hid_t's.
r17915:
Fix Coverity item 247.
r17916:
Fix Coverity item 246.
r17917:
Fix Coverity item 245.
r17918:
Fix Coverity item 244.
r17919:
Coverity Issue #84: Moved asserts in H5T_cmp to the top of the function, and converted them to HDassert. Coverity complaining about using potentially NULL pointer without checking it. Want to see if Coverity will accept Assertions as acceptable checking before using the value.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-04 03:11:29 +08:00
|
|
|
break;
|
|
|
|
}
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2023-06-30 03:33:46 +08:00
|
|
|
if (memcmp(buf1, buf2, (size_t)n1) != 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
break;
|
|
|
|
|
|
|
|
} /* end while */
|
|
|
|
|
|
|
|
out:
|
2020-09-30 22:27:10 +08:00
|
|
|
if (fd1)
|
2016-02-02 18:30:48 +08:00
|
|
|
HDclose(fd1);
|
2020-09-30 22:27:10 +08:00
|
|
|
if (fd2)
|
2016-02-02 18:30:48 +08:00
|
|
|
HDclose(fd2);
|
|
|
|
return ret;
|
|
|
|
} /* end files_have_same_contents() */
|
1998-03-05 23:48:16 +08:00
|
|
|
|
1998-03-05 00:20:23 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_non_extendible
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Tests a non-extendible dataset with a single external file.
|
1998-03-05 00:20:23 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-03-05 00:20:23 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
1998-11-24 04:40:35 +08:00
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_non_extendible(hid_t file)
|
1998-03-05 00:20:23 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
hsize_t cur_size[1] = {100}; /* data space current size */
|
|
|
|
hsize_t max_size[1] = {100}; /* data space maximum size */
|
|
|
|
int n = 0; /* number of external files */
|
|
|
|
off_t file_offset = 0; /* external file offset */
|
|
|
|
hsize_t file_size = 0; /* sizeof external file segment */
|
|
|
|
haddr_t dset_addr = HADDR_UNDEF; /* address of dataset */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
1998-11-21 11:36:51 +08:00
|
|
|
TESTING("fixed-size data space, exact storage");
|
[svn-r14193] Description:
Make H5Dopen versioned and change all internal usage to use H5Dopen2
Add simple regression test for H5Dopen1
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-09 03:59:36 +08:00
|
|
|
|
2019-05-25 05:59:14 +08:00
|
|
|
/* Create the dataset and close */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int))) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
/* Read dataset creation information */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dopen2(file, "dset1", H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2002-11-07 23:57:53 +08:00
|
|
|
|
|
|
|
/* Test dataset address. Should be undefined. */
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
dset_addr = H5Dget_offset(dset);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (dset_addr != HADDR_UNDEF)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
|
|
/* Check external count */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Dget_create_plist(dset)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((n = H5Pget_external_count(dcpl)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (1 != n) {
|
2016-02-02 18:30:48 +08:00
|
|
|
H5_FAILED();
|
2023-09-16 06:13:18 +08:00
|
|
|
puts(" Returned external count is wrong.");
|
2023-06-28 23:31:32 +08:00
|
|
|
printf(" got: %d\n ans: 1\n", n);
|
2016-02-02 18:30:48 +08:00
|
|
|
goto error;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2019-05-25 05:59:14 +08:00
|
|
|
/* Verify external file settings */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pget_external(dcpl, 0, 0, NULL, &file_offset, &file_size) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (file_offset != 0) {
|
2016-02-02 18:30:48 +08:00
|
|
|
H5_FAILED();
|
2023-09-16 06:13:18 +08:00
|
|
|
puts(" Wrong file offset.");
|
2023-06-28 23:31:32 +08:00
|
|
|
printf(" got: %lu\n ans: 0\n", (unsigned long)file_offset);
|
2016-02-02 18:30:48 +08:00
|
|
|
goto error;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2020-09-30 22:27:10 +08:00
|
|
|
if (file_size != (max_size[0] * sizeof(int))) {
|
2016-02-02 18:30:48 +08:00
|
|
|
H5_FAILED();
|
2023-09-16 06:13:18 +08:00
|
|
|
puts(" Wrong file size.");
|
2023-06-28 23:31:32 +08:00
|
|
|
printf(" got: %" PRIuHSIZE "\n ans: %" PRIuHSIZE "\n", file_size, max_size[0] * sizeof(int));
|
2016-02-02 18:30:48 +08:00
|
|
|
goto error;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
|
|
/* Done (dataspace was previously closed) */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-11-21 11:36:51 +08:00
|
|
|
PASSED();
|
1998-11-24 04:40:35 +08:00
|
|
|
return 0;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
|
|
|
H5Dclose(dset);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_non_extendible() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_too_small
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Test a single external file which is too small to represent
|
|
|
|
* all the data.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_too_small(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
hsize_t cur_size[1] = {100}; /* current data space size */
|
|
|
|
hsize_t max_size[1] = {100}; /* maximum data space size */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("external storage is too small");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int) - 1)) <
|
|
|
|
0) /* note -1 */
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
dset = H5Dcreate2(file, "dset2", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (dset >= 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
FAIL_PUTS_ERROR(" Small external file succeeded instead of failing.");
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Sclose(space);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Dclose(dset);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_too_small() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_large_enough_current_eventual
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Test a single external file which is large enough to
|
|
|
|
* represent the current data and large enough to represent the
|
|
|
|
* eventual size of the data.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2019-05-25 05:59:14 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_large_enough_current_eventual(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
hsize_t cur_size[1] = {100}; /* current data space size */
|
|
|
|
hsize_t max_size[1] = {200}; /* maximum data space size */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("extendible dataspace, exact external size");
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int))) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset3", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
error:
|
2020-09-30 22:27:10 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_large_enough_current_eventual() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_large_enough_current_not_eventual
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Test a single external file which is large enough for the
|
|
|
|
* current data size but not large enough for the eventual size.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_large_enough_current_not_eventual(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
hsize_t cur_size[1] = {100}; /* current data space size */
|
|
|
|
hsize_t max_size[1] = {200}; /* maximum data space size */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("extendible dataspace, external storage is too small");
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int) - 1)) <
|
|
|
|
0) /* note -1 */
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
dset = H5Dcreate2(file, "dset4", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (dset >= 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
FAIL_PUTS_ERROR(" Small external file succeeded instead of failing.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_large_enough_current_not_eventual() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-23 05:40:03 +08:00
|
|
|
* Function: test_unlimited
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Test a single external file of unlimited size and an
|
|
|
|
* unlimited data space.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_unlimited(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
hsize_t cur_size[1] = {100}; /* data space current size */
|
|
|
|
hsize_t max_size[1] = {H5S_UNLIMITED}; /* data space maximum size */
|
|
|
|
int n; /* number of external files */
|
|
|
|
off_t file_offset; /* external file offset */
|
|
|
|
hsize_t file_size; /* sizeof external file segment */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("unlimited dataspace, unlimited external storage");
|
|
|
|
|
|
|
|
/* Create dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, "ext1.data", (off_t)0, H5F_UNLIMITED) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset5", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/* Read dataset creation information */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dopen2(file, "dset5", H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Dget_create_plist(dset)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((n = H5Pget_external_count(dcpl)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (1 != n) {
|
2016-02-02 18:30:48 +08:00
|
|
|
H5_FAILED();
|
2023-09-16 06:13:18 +08:00
|
|
|
puts(" Returned external count is wrong.");
|
2023-06-28 23:31:32 +08:00
|
|
|
printf(" got: %d\n ans: 1\n", n);
|
2016-02-02 18:30:48 +08:00
|
|
|
goto error;
|
|
|
|
} /* end if */
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pget_external(dcpl, 0, 0, NULL, &file_offset, &file_size) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (file_offset != 0) {
|
2016-02-02 18:30:48 +08:00
|
|
|
H5_FAILED();
|
2023-09-16 06:13:18 +08:00
|
|
|
puts(" Wrong file offset.");
|
2023-06-28 23:31:32 +08:00
|
|
|
printf(" got: %lu\n ans: 0\n", (unsigned long)file_offset);
|
2016-02-02 18:30:48 +08:00
|
|
|
goto error;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5F_UNLIMITED != file_size) {
|
2016-02-02 18:30:48 +08:00
|
|
|
H5_FAILED();
|
2023-09-16 06:13:18 +08:00
|
|
|
puts(" Wrong file size.");
|
2023-06-28 23:31:32 +08:00
|
|
|
printf(" got: %lu\n ans: INF\n", (unsigned long)file_size);
|
2016-02-02 18:30:48 +08:00
|
|
|
goto error;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
[svn-r14193] Description:
Make H5Dopen versioned and change all internal usage to use H5Dopen2
Add simple regression test for H5Dopen1
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-09 03:59:36 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_unlimited() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
2019-09-30 07:52:55 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
* Function: __add_external_files
|
|
|
|
*
|
|
|
|
* Purpose: Add external file names to the DCPL with the given properties.
|
|
|
|
* Used in test_multiple_files().
|
|
|
|
* Limit to no more than 999 external files.
|
|
|
|
*
|
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: -1
|
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2021-03-11 02:41:34 +08:00
|
|
|
add_external_files(hid_t dcpl_id, unsigned int n_external_files, off_t offset, hsize_t max_ext_size)
|
2019-09-30 07:52:55 +08:00
|
|
|
{
|
2020-09-30 22:27:10 +08:00
|
|
|
char exname[AEF_EXNAME_MAX_LEN + 1];
|
2019-09-30 07:52:55 +08:00
|
|
|
unsigned int i = 0;
|
|
|
|
|
|
|
|
if (dcpl_id < 0) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
for (i = 0; i < n_external_files; i++) {
|
2023-09-16 06:13:18 +08:00
|
|
|
if (snprintf(exname, AEF_EXNAME_MAX_LEN, "ext%d.data", i + 1) > AEF_EXNAME_MAX_LEN) {
|
2023-06-28 23:31:32 +08:00
|
|
|
fprintf(stderr, "External file %d overflows name buffer\n", i + 1);
|
2023-06-29 23:19:31 +08:00
|
|
|
fflush(stderr);
|
2019-09-30 07:52:55 +08:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
if (H5Pset_external(dcpl_id, exname, offset, max_ext_size) < 0) {
|
2023-06-28 23:31:32 +08:00
|
|
|
fprintf(stderr, "Problem adding external file %s\n", exname);
|
2023-06-29 23:19:31 +08:00
|
|
|
fflush(stderr);
|
2019-09-30 07:52:55 +08:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
} /* end __add_external_files() */
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_multiple_files
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Test multiple external files for a dataset.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_multiple_files(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* dataspace */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
hsize_t cur_size[1] = {100}; /* data space current size */
|
|
|
|
hsize_t max_size[1] = {100}; /* data space maximum size */
|
|
|
|
hsize_t max_ext_size; /* maximum size of external files */
|
2019-09-29 05:05:51 +08:00
|
|
|
unsigned int n_external_files = 4;
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("multiple external files");
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2019-05-25 05:59:14 +08:00
|
|
|
max_ext_size = (hsize_t)(sizeof(int) * max_size[0] / n_external_files);
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2021-03-11 02:41:34 +08:00
|
|
|
if (add_external_files(dcpl, n_external_files, 0, max_ext_size) < 0) {
|
2019-09-30 07:52:55 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2019-05-25 05:59:14 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset6", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2023-10-04 00:01:28 +08:00
|
|
|
/* Reuse space below */
|
2019-05-25 05:59:14 +08:00
|
|
|
|
|
|
|
/* ----------------------------------------------
|
|
|
|
* Verify that too-small external files will fail
|
|
|
|
*/
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2019-05-25 05:59:14 +08:00
|
|
|
|
|
|
|
max_ext_size -= 1;
|
|
|
|
|
2021-03-11 02:41:34 +08:00
|
|
|
if (add_external_files(dcpl, n_external_files, 0, max_ext_size) < 0) {
|
2019-09-30 07:52:55 +08:00
|
|
|
FAIL_STACK_ERROR;
|
|
|
|
}
|
2019-05-25 05:59:14 +08:00
|
|
|
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
dset = H5Dcreate2(file, "dset7", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (dset >= 0)
|
2019-05-25 05:59:14 +08:00
|
|
|
FAIL_PUTS_ERROR(" Small external files succeeded instead of failing.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
[svn-r14199] Description:
Add H5Dcreate to API versioned routines, replacing internal usage with
H5Dcreate2
Fix thread-safe error stack initialization for API versioned error
stack printing routines.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-12 00:24:11 +08:00
|
|
|
error:
|
2020-09-30 22:27:10 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_multiple_files() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_add_to_unlimited
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: It should be impossible to define an unlimited external file
|
|
|
|
* and then follow it with another external file.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_add_to_unlimited(void)
|
1998-11-24 04:40:35 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
herr_t status = FAIL; /* function return status */
|
|
|
|
int n = 0; /* number of external files */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("external file following unlimited file");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, "ext1.data", (off_t)0, H5F_UNLIMITED) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
status = H5Pset_external(dcpl, "ext2.data", (off_t)0, (hsize_t)100);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (status >= 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
FAIL_PUTS_ERROR(" H5Pset_external() succeeded when it should have failed.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((n = H5Pget_external_count(dcpl)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (1 != n)
|
2016-02-02 18:30:48 +08:00
|
|
|
FAIL_PUTS_ERROR(" Wrong external file count returned.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_add_to_unlimited() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_overflow
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: It should be impossible to create a set of external files
|
|
|
|
* whose total size overflows a size_t integer.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_overflow(void)
|
1998-11-24 04:40:35 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
herr_t status = FAIL; /* return status */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
TESTING("address overflow in external files");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, "ext1.data", (off_t)0, H5F_UNLIMITED - 1) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
status = H5Pset_external(dcpl, "ext2.data", (off_t)0, (hsize_t)100);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (status >= 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
FAIL_PUTS_ERROR(" H5Pset_external() succeeded when it should have failed.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-11-21 11:36:51 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_overflow() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_read_file_set
|
1998-03-05 00:20:23 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Tests reading from an external file set.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-03-05 00:20:23 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
1998-11-24 04:40:35 +08:00
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_read_file_set(hid_t fapl)
|
1998-03-05 00:20:23 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t file = H5I_INVALID_HID; /* file to write to */
|
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
hid_t grp = H5I_INVALID_HID; /* group to emit diagnostics */
|
|
|
|
size_t i = 0; /* miscellaneous counter */
|
|
|
|
char filename[1024]; /* file names */
|
|
|
|
int part[PART_SIZE]; /* raw data buffer (partial) */
|
|
|
|
int whole[TOTAL_SIZE]; /* raw data buffer (total) */
|
|
|
|
hsize_t cur_size; /* current data space size */
|
|
|
|
hid_t hs_space = H5I_INVALID_HID; /* hyperslab data space */
|
|
|
|
hsize_t hs_start = 30; /* hyperslab starting offset */
|
|
|
|
hsize_t hs_count = 25; /* hyperslab size */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("read external dataset");
|
2008-09-16 23:52:51 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Reset the raw data files */
|
2023-09-06 04:11:52 +08:00
|
|
|
if (reset_raw_data_files(false) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-04 23:35:17 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Create the file and an initial group. This causes messages about
|
1998-03-05 00:20:23 +08:00
|
|
|
* debugging to be emitted before we start playing games with what the
|
|
|
|
* output looks like.
|
|
|
|
*/
|
2019-04-10 06:40:24 +08:00
|
|
|
h5_fixname(EXT_FNAME[1], fapl, filename, sizeof(filename));
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((grp = H5Gcreate2(file, "emit-diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Gclose(grp) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Create the dcpl */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < N_EXT_FILES; i++) {
|
2023-09-16 06:13:18 +08:00
|
|
|
snprintf(filename, sizeof(filename), "extern_%dr.raw", (int)i + 1);
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Create the dataspace */
|
|
|
|
cur_size = TOTAL_SIZE;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Create the dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Read the entire dataset */
|
2023-06-30 03:33:46 +08:00
|
|
|
memset(whole, 0, sizeof(whole));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Compare data */
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
if (whole[i] != (signed)i)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Read via a hypserslab in the middle of the dataset */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Set up dataspace */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((hs_space = H5Scopy(space)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sselect_hyperslab(hs_space, H5S_SELECT_SET, &hs_start, NULL, &hs_count, NULL) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Read */
|
2023-06-30 03:33:46 +08:00
|
|
|
memset(whole, 0, sizeof(whole));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dread(dset, H5T_NATIVE_INT, hs_space, hs_space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Verify data */
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = (size_t)hs_start; i < (size_t)(hs_start + hs_count); i++) {
|
|
|
|
if (whole[i] != (signed)i)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read (hyperslab).");
|
|
|
|
} /* end for */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(hs_space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Fclose(file) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-03-16 01:43:34 +08:00
|
|
|
H5Gclose(grp);
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
2016-02-23 05:40:03 +08:00
|
|
|
H5Sclose(hs_space);
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Fclose(file);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_read_file_set() */
|
1998-03-05 00:20:23 +08:00
|
|
|
|
1998-03-05 23:48:16 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-02 18:30:48 +08:00
|
|
|
* Function: test_write_file_set
|
1998-03-05 23:48:16 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Purpose: Tests writing to an external file set.
|
1998-11-24 04:40:35 +08:00
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-03-05 23:48:16 +08:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
1998-11-24 04:40:35 +08:00
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
test_write_file_set(hid_t fapl)
|
1998-03-05 23:48:16 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t file = H5I_INVALID_HID; /* file to which to write */
|
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t mem_space = H5I_INVALID_HID; /* memory data space */
|
|
|
|
hid_t file_space = H5I_INVALID_HID; /* file data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
unsigned i = 0; /* miscellaneous counter */
|
|
|
|
int part[PART_SIZE]; /* raw data buffer (partial) */
|
|
|
|
int whole[TOTAL_SIZE]; /* raw data buffer (total) */
|
|
|
|
hsize_t cur_size = 100; /* current data space size */
|
|
|
|
hsize_t max_size = 200; /* maximum data space size */
|
|
|
|
hsize_t hs_start = 100; /* hyperslab starting offset */
|
|
|
|
hsize_t hs_count = 100; /* hyperslab size */
|
|
|
|
char filename[1024]; /* file name */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
TESTING("write external dataset");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/* Create another file */
|
2019-04-10 06:40:24 +08:00
|
|
|
h5_fixname(EXT_FNAME[2], fapl, filename, sizeof(filename));
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-03-05 23:48:16 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Create the dcpl and external file list */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < N_EXT_FILES; i++) {
|
2016-02-23 05:40:03 +08:00
|
|
|
hsize_t size;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2023-09-16 06:13:18 +08:00
|
|
|
snprintf(filename, sizeof(filename), "extern_%dw.raw", (int)i + 1);
|
2016-02-04 23:35:17 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (i != N_EXT_FILES - 1)
|
2016-02-23 05:40:03 +08:00
|
|
|
size = (hsize_t)sizeof(part);
|
|
|
|
else
|
|
|
|
size = H5F_UNLIMITED;
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), size) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end for */
|
1998-03-05 23:48:16 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* Reset the raw data files */
|
2023-09-06 04:11:52 +08:00
|
|
|
if (reset_raw_data_files(false) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
1998-03-05 23:48:16 +08:00
|
|
|
/* Create the dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((mem_space = H5Screate_simple(1, &cur_size, &max_size)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((file_space = H5Scopy(mem_space)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, file_space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
1998-03-05 23:48:16 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
/* Write the entire dataset and compare with the original */
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < cur_size; i++)
|
2016-02-02 18:30:48 +08:00
|
|
|
whole[i] = (int)i;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dwrite(dset, H5T_NATIVE_INT, mem_space, file_space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < N_EXT_FILES; i++) {
|
2016-02-02 18:30:48 +08:00
|
|
|
char name1[64], name2[64];
|
|
|
|
|
2023-09-16 06:13:18 +08:00
|
|
|
snprintf(name1, sizeof(name1), "extern_%dr.raw", i + 1);
|
|
|
|
snprintf(name2, sizeof(name2), "extern_%dw.raw", i + 1);
|
2020-09-30 22:27:10 +08:00
|
|
|
if (!files_have_same_contents(name1, name2))
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_PUTS_ERROR(" Output differs from expected value.");
|
[svn-r14192] Description:
Deprecate H5Dextend in favor of H5Dset_extent (without using API
versioning, due to changed behavior) and switch internal usage to H5Dset_extent
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-08 23:26:02 +08:00
|
|
|
} /* end for */
|
1998-03-06 05:27:38 +08:00
|
|
|
|
2014-07-31 04:55:14 +08:00
|
|
|
/* Extend the dataset by another 100 elements */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dset_extent(dset, &max_size) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(file_space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((file_space = H5Dget_space(dset)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2008-12-02 04:38:02 +08:00
|
|
|
|
|
|
|
/* Write second half of dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < hs_count; i++)
|
2016-02-02 18:30:48 +08:00
|
|
|
whole[i] = 100 + (int)i;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sselect_hyperslab(file_space, H5S_SELECT_SET, &hs_start, NULL, &hs_count, NULL) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dwrite(dset, H5T_NATIVE_INT, mem_space, file_space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2008-12-02 04:38:02 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(mem_space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(file_space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Fclose(file) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
[svn-r14192] Description:
Deprecate H5Dextend in favor of H5Dset_extent (without using API
versioning, due to changed behavior) and switch internal usage to H5Dset_extent
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-10-08 23:26:02 +08:00
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
1998-03-05 23:48:16 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(mem_space);
|
|
|
|
H5Sclose(file_space);
|
|
|
|
H5Fclose(file);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
1998-11-24 04:40:35 +08:00
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
} /* end test_write_file_set() */
|
1998-06-06 05:03:49 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-23 05:40:03 +08:00
|
|
|
* Function: test_path_absolute
|
|
|
|
*
|
|
|
|
* Purpose: Test absolute filenames for external files.
|
|
|
|
* This will create an HDF5 file in a subdirectory which will
|
|
|
|
* refer to /full/path/extern_*a.raw on unix and to
|
|
|
|
* c:\full\path\extern_*a.raw and \full\path\extern_*a.raw on
|
|
|
|
* windows.
|
|
|
|
*
|
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
|
|
|
test_path_absolute(hid_t fapl)
|
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t file = H5I_INVALID_HID; /* file to write to */
|
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
size_t i = 0; /* miscellaneous counter */
|
|
|
|
char cwdpath[1024]; /* working directory */
|
|
|
|
char filename[1088]; /* file name */
|
|
|
|
int part[PART_SIZE]; /* raw data buffer (partial) */
|
|
|
|
int whole[TOTAL_SIZE]; /* raw data buffer (total) */
|
|
|
|
hsize_t cur_size; /* current data space size */
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
TESTING("absolute filenames for external file");
|
|
|
|
|
2019-04-10 06:40:24 +08:00
|
|
|
h5_fixname(EXT_FNAME[3], fapl, filename, sizeof(filename));
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Reset the raw data files */
|
2023-09-06 04:11:52 +08:00
|
|
|
if (reset_raw_data_files(false) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Create the dcpl */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (NULL == HDgetcwd(cwdpath, sizeof(cwdpath)))
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < N_EXT_FILES; i++) {
|
2023-09-16 06:13:18 +08:00
|
|
|
snprintf(filename, sizeof(filename), "%s%sextern_%zur.raw", cwdpath, H5_DIR_SEPS, i + 1);
|
2016-02-23 05:40:03 +08:00
|
|
|
#if defined(H5_HAVE_WINDOW_PATH)
|
|
|
|
/* For windows, test path-absolute case (\dir\file.raw) for the second file */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (i == 1)
|
2023-09-16 06:13:18 +08:00
|
|
|
snprintf(filename, sizeof(filename), "%s%sextern_%zur.raw", cwdpath + 2, H5_DIR_SEPS, i + 1);
|
2016-02-23 05:40:03 +08:00
|
|
|
#endif
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
/* create the dataspace */
|
|
|
|
cur_size = TOTAL_SIZE;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* create the dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
2023-06-30 03:33:46 +08:00
|
|
|
memset(whole, 0, sizeof(whole));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
if (whole[i] != (signed)i)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Fclose(file) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
error:
|
2020-09-30 22:27:10 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Sclose(space);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Fclose(file);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2016-02-23 05:40:03 +08:00
|
|
|
return 1;
|
|
|
|
} /* end test_path_absolute() */
|
|
|
|
|
1998-03-05 00:20:23 +08:00
|
|
|
/*-------------------------------------------------------------------------
|
2016-02-23 05:40:03 +08:00
|
|
|
* Function: test_path_relative
|
1998-03-05 00:20:23 +08:00
|
|
|
*
|
2016-02-23 05:40:03 +08:00
|
|
|
* Purpose: Test external files with filename relative to current directory.
|
|
|
|
* This will create an HDF5 file in a subdirectory which will
|
|
|
|
* refer to extern_*a.raw
|
1998-03-05 00:20:23 +08:00
|
|
|
*
|
2016-02-23 05:40:03 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
1998-03-05 00:20:23 +08:00
|
|
|
*
|
2016-02-23 05:40:03 +08:00
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
|
|
|
test_path_relative(hid_t fapl)
|
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t file = H5I_INVALID_HID; /* file to write to */
|
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
size_t i = 0; /* miscellaneous counters */
|
|
|
|
char filename[1024]; /* file name */
|
|
|
|
int part[PART_SIZE]; /* raw data buffer (partial) */
|
|
|
|
int whole[TOTAL_SIZE]; /* raw data buffer (total) */
|
|
|
|
hsize_t cur_size; /* current data space size */
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
TESTING("filenames relative to current directory for external file");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
if (HDmkdir("extern_dir", (mode_t)0755) < 0 && errno != EEXIST)
|
|
|
|
TEST_ERROR;
|
|
|
|
|
2019-04-10 06:40:24 +08:00
|
|
|
h5_fixname(EXT_FNAME[4], fapl, filename, sizeof(filename));
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_STACK_ERROR;
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
2023-09-06 04:11:52 +08:00
|
|
|
if (reset_raw_data_files(false) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Create the dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
for (i = 0; i < N_EXT_FILES; i++) {
|
2023-09-16 06:13:18 +08:00
|
|
|
snprintf(filename, sizeof(filename), "extern_%dr.raw", (int)i + 1);
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
cur_size = TOTAL_SIZE;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
2023-06-30 03:33:46 +08:00
|
|
|
memset(whole, 0, sizeof(whole));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
if (whole[i] != (signed)i)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Fclose(file) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
error:
|
2020-09-30 22:27:10 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
|
|
|
H5Fclose(file);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2016-02-23 05:40:03 +08:00
|
|
|
return 1;
|
|
|
|
} /* end test_path_relative() */
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
* Function: test_path_relative_cwd
|
|
|
|
*
|
|
|
|
* Purpose: Test external files with filename relative to current directory.
|
|
|
|
* This will create an HDF5 file in a subdirectory which will
|
|
|
|
* refer to ../extern_*a.raw
|
|
|
|
* The files are then accessed by setting the efile_prefix dataset
|
|
|
|
* access property to "${ORIGIN}".
|
|
|
|
*
|
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
|
|
|
test_path_relative_cwd(hid_t fapl)
|
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t file = H5I_INVALID_HID; /* file to write to */
|
|
|
|
hid_t dcpl = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t space = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t dapl = H5I_INVALID_HID; /* dataset access property list */
|
|
|
|
hid_t dapl2 = H5I_INVALID_HID; /* copy of dapl */
|
|
|
|
hid_t dset = H5I_INVALID_HID; /* dataset */
|
|
|
|
hid_t dset2 = H5I_INVALID_HID; /* dataset, opened a second time */
|
|
|
|
hid_t dset3 = H5I_INVALID_HID; /* dataset, opened with different prefix */
|
|
|
|
size_t i = 0; /* miscellaneous counters */
|
|
|
|
char filename[1024]; /* file name */
|
|
|
|
int part[PART_SIZE]; /* raw data buffer (partial) */
|
|
|
|
int whole[TOTAL_SIZE]; /* raw data buffer (total) */
|
|
|
|
hsize_t cur_size; /* current data space size */
|
|
|
|
char buffer[1024]; /* buffer to read efile_prefix */
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
TESTING("filenames relative to HDF5 file for external file");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (HDmkdir("extern_dir", (mode_t)0755) < 0 && errno != EEXIST)
|
2016-02-23 05:40:03 +08:00
|
|
|
TEST_ERROR;
|
|
|
|
|
2019-04-10 06:40:24 +08:00
|
|
|
h5_fixname(EXT_FNAME[4], fapl, filename, sizeof(filename));
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_STACK_ERROR;
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
2023-09-06 04:11:52 +08:00
|
|
|
if (reset_raw_data_files(false) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Create the dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < N_EXT_FILES; i++) {
|
2023-09-16 06:13:18 +08:00
|
|
|
snprintf(filename, sizeof(filename), "..%sextern_%dr.raw", H5_DIR_SEPS, (int)i + 1);
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
cur_size = TOTAL_SIZE;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_efile_prefix(dapl, "${ORIGIN}") < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pget_efile_prefix(dapl, buffer, sizeof(buffer)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2023-09-16 06:13:18 +08:00
|
|
|
if (strcmp(buffer, "${ORIGIN}") != 0)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_PUTS_ERROR("efile prefix not set correctly");
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dapl2 = H5Pcopy(dapl)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Create dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, dapl2)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Reopen dataset with same efile_prefix property */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset2 = H5Dopen2(file, "dset1", dapl2)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Reopen dataset with different efile_prefix property */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_efile_prefix(dapl, "//") < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
dset3 = H5Dopen2(file, "dset1", dapl);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (dset3 >= 0)
|
2021-12-07 22:27:29 +08:00
|
|
|
FAIL_PUTS_ERROR("reopening the dataset with a different efile_prefix succeeded");
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
2023-06-30 03:33:46 +08:00
|
|
|
memset(whole, 0, sizeof(whole));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
if (whole[i] != (signed)i)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
|
|
|
/* Close dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset2) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
2021-12-07 22:27:29 +08:00
|
|
|
/* Open dataset (use a different prefix than for create.
|
2016-02-23 05:40:03 +08:00
|
|
|
* This works because the dataset was closed.
|
|
|
|
*/
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_efile_prefix(dapl2, "${ORIGIN}/.") < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset = H5Dopen2(file, "dset1", dapl2)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Reopen dataset with same efile_prefix property */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dset2 = H5Dopen2(file, "dset1", dapl2)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Reopen dataset with different efile_prefix property */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_efile_prefix(dapl, NULL) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2021-03-17 23:25:39 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
|
|
|
dset3 = H5Dopen2(file, "dset1", dapl);
|
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2020-09-30 22:27:10 +08:00
|
|
|
if (dset3 >= 0)
|
2021-12-07 22:27:29 +08:00
|
|
|
FAIL_PUTS_ERROR("reopening the dataset with a different efile_prefix succeeded");
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
2023-06-30 03:33:46 +08:00
|
|
|
memset(whole, 0, sizeof(whole));
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
for (i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
if (whole[i] != (signed)i)
|
2016-02-23 05:40:03 +08:00
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset2) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(dset) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dapl2) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dapl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(space) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Fclose(file) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-23 05:40:03 +08:00
|
|
|
PASSED();
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
error:
|
2020-09-30 22:27:10 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
H5Pclose(dapl2);
|
|
|
|
H5Pclose(dapl);
|
|
|
|
H5Dclose(dset3);
|
|
|
|
H5Dclose(dset2);
|
|
|
|
H5Dclose(dset);
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
H5Sclose(space);
|
|
|
|
H5Fclose(file);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2016-02-23 05:40:03 +08:00
|
|
|
return 1;
|
|
|
|
} /* end test_path_relative_cwd() */
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
2016-03-16 01:43:34 +08:00
|
|
|
* Function: test_h5d_get_access_plist
|
2016-02-23 05:40:03 +08:00
|
|
|
*
|
2016-03-16 01:43:34 +08:00
|
|
|
* Purpose: Ensure that H5Dget_access_plist returns correct values.
|
2016-02-23 05:40:03 +08:00
|
|
|
*
|
2016-03-16 01:43:34 +08:00
|
|
|
* Return: Success: 0
|
|
|
|
* Failure: 1
|
2016-02-23 05:40:03 +08:00
|
|
|
*
|
2016-03-16 01:43:34 +08:00
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
static int
|
|
|
|
test_h5d_get_access_plist(hid_t fapl_id)
|
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t fid = H5I_INVALID_HID; /* file to write to */
|
|
|
|
hid_t dcpl_id = H5I_INVALID_HID; /* dataset creation properties */
|
|
|
|
hid_t dapl_id = H5I_INVALID_HID; /* dataset access properties */
|
|
|
|
hid_t sid = H5I_INVALID_HID; /* data space */
|
|
|
|
hid_t did = H5I_INVALID_HID; /* dataset */
|
|
|
|
hsize_t dims = 0; /* dataset size */
|
|
|
|
char *buffer = NULL; /* saved prefix name from dapl */
|
|
|
|
char filename[1024]; /* file names */
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
TESTING("H5Dget_access_plist() returns correct prefix");
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
/* Reset the raw data files */
|
2023-09-06 04:11:52 +08:00
|
|
|
if (reset_raw_data_files(false) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
/* Create the file */
|
2019-04-10 06:40:24 +08:00
|
|
|
h5_fixname(EXT_FNAME[5], fapl_id, filename, sizeof(filename));
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
/* Create the dcpl and set external storage */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_external(dcpl_id, "extern_1r.raw", (off_t)0, (hsize_t)0) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
/* Create the dapl and set the prefix */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dapl_id = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_efile_prefix(dapl_id, "someprefix") < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
/* Create the dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((sid = H5Screate_simple(1, &dims, NULL)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((did = H5Dcreate2(fid, "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, dapl_id)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
/* Close the dapl */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dapl_id) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
dapl_id = -1;
|
|
|
|
|
|
|
|
/* Get a data access property list from the dataset */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((dapl_id = H5Dget_access_plist(did)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
/* Check the value for the external prefix */
|
2023-06-29 06:48:12 +08:00
|
|
|
if ((buffer = (char *)calloc((size_t)64, sizeof(char))) == NULL)
|
2022-05-04 23:49:01 +08:00
|
|
|
TEST_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pget_efile_prefix(dapl_id, buffer, (size_t)64) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2023-09-16 06:13:18 +08:00
|
|
|
if (strcmp(buffer, "someprefix") != 0)
|
2016-03-16 01:43:34 +08:00
|
|
|
FAIL_PUTS_ERROR("external file prefix from dapl incorrect");
|
|
|
|
|
|
|
|
/* Close everything */
|
2023-06-29 06:48:12 +08:00
|
|
|
free(buffer);
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Sclose(sid) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Dclose(did) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dcpl_id) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(dapl_id) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Fclose(fid) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-03-16 01:43:34 +08:00
|
|
|
|
|
|
|
PASSED();
|
|
|
|
return 0;
|
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
error:
|
|
|
|
if (buffer)
|
2023-06-29 06:48:12 +08:00
|
|
|
free(buffer);
|
2020-09-30 22:27:10 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-03-16 01:43:34 +08:00
|
|
|
H5Dclose(did);
|
|
|
|
H5Pclose(dcpl_id);
|
|
|
|
H5Pclose(dapl_id);
|
|
|
|
H5Sclose(sid);
|
|
|
|
H5Fclose(fid);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
2016-03-16 01:43:34 +08:00
|
|
|
return 1;
|
|
|
|
} /* end test_h5d_get_access_plist() */
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
* Function: main
|
|
|
|
*
|
|
|
|
* Purpose: Runs external dataset tests.
|
|
|
|
*
|
|
|
|
* Return: EXIT_SUCCESS/EXIT_FAILURE
|
2016-02-23 05:40:03 +08:00
|
|
|
*
|
1998-03-05 00:20:23 +08:00
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
int
|
2016-02-02 18:30:48 +08:00
|
|
|
main(void)
|
1998-03-05 00:20:23 +08:00
|
|
|
{
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t fapl_id_old = H5I_INVALID_HID; /* file access properties (old format) */
|
|
|
|
hid_t fapl_id_new = H5I_INVALID_HID; /* file access properties (new format) */
|
|
|
|
hid_t fid = H5I_INVALID_HID; /* file for test_1* functions */
|
|
|
|
hid_t gid = H5I_INVALID_HID; /* group to emit diagnostics */
|
|
|
|
char filename[1024]; /* file name for test_1* funcs */
|
|
|
|
unsigned latest_format; /* default or latest file format */
|
|
|
|
int nerrors = 0; /* number of errors */
|
[svn-r15868] Description:
Correct a minor error in file free space allocation which was affecting
the 'multi' VFD and preventing some tests from fully working with it.
Wholesale revisitation of all the places where tests were disabled
with various VFDs and remove or correct all these so that _only_ the tests
which _really_ can't work with particular VFDs are skipped during a
'make check-vfd' test.
Tested on:
Mac OS X/32 10.5.5 (amazon) in debug mode
Mac OS X/32 10.5.5 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
2008-10-15 09:46:34 +08:00
|
|
|
|
|
|
|
h5_reset();
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
/* Get a fapl for the old (default) file format */
|
|
|
|
fapl_id_old = h5_fileaccess();
|
2019-04-10 06:40:24 +08:00
|
|
|
h5_fixname(EXT_FNAME[0], fapl_id_old, filename, sizeof(filename));
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
/* Copy and set up a fapl for the latest file format */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((fapl_id_new = H5Pcopy(fapl_id_old)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pset_libver_bounds(fapl_id_new, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-03-16 01:43:34 +08:00
|
|
|
/* The file format doesn't matter for this test */
|
|
|
|
nerrors += test_h5d_get_access_plist(fapl_id_new);
|
2023-09-16 06:13:18 +08:00
|
|
|
puts("");
|
2016-03-16 01:43:34 +08:00
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
/* Test with old & new format groups */
|
2023-09-06 04:11:52 +08:00
|
|
|
for (latest_format = false; latest_format <= true; latest_format++) {
|
2023-09-09 07:06:23 +08:00
|
|
|
hid_t current_fapl_id = H5I_INVALID_HID;
|
2016-02-02 22:17:31 +08:00
|
|
|
|
|
|
|
/* Set the fapl for different file formats */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (latest_format) {
|
2023-09-16 06:13:18 +08:00
|
|
|
puts("\nTesting with the latest file format:");
|
2016-02-02 22:17:31 +08:00
|
|
|
current_fapl_id = fapl_id_new;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2016-02-02 22:17:31 +08:00
|
|
|
else {
|
2023-09-16 06:13:18 +08:00
|
|
|
puts("Testing with the default file format:");
|
2016-02-02 22:17:31 +08:00
|
|
|
current_fapl_id = fapl_id_old;
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2016-02-02 22:17:31 +08:00
|
|
|
|
|
|
|
/* Create the common file used by some of the tests */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, current_fapl_id)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 22:17:31 +08:00
|
|
|
|
|
|
|
/* Create a group that will be used in the file set read test */
|
2020-09-30 22:27:10 +08:00
|
|
|
if ((gid = H5Gcreate2(fid, "emit-diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Gclose(gid) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 22:17:31 +08:00
|
|
|
|
|
|
|
/* These tests use a common file */
|
|
|
|
nerrors += test_non_extendible(fid);
|
|
|
|
nerrors += test_too_small(fid);
|
|
|
|
nerrors += test_large_enough_current_eventual(fid);
|
|
|
|
nerrors += test_large_enough_current_not_eventual(fid);
|
|
|
|
nerrors += test_unlimited(fid);
|
|
|
|
nerrors += test_multiple_files(fid);
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
/* These tests use no file */
|
|
|
|
nerrors += test_add_to_unlimited();
|
|
|
|
nerrors += test_overflow();
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
/* These file set tests use the VFD-aware fapl */
|
2016-02-02 22:17:31 +08:00
|
|
|
nerrors += test_read_file_set(current_fapl_id);
|
|
|
|
nerrors += test_write_file_set(current_fapl_id);
|
2016-02-23 05:40:03 +08:00
|
|
|
nerrors += test_path_absolute(current_fapl_id);
|
|
|
|
nerrors += test_path_relative(current_fapl_id);
|
|
|
|
nerrors += test_path_relative_cwd(current_fapl_id);
|
2020-04-21 07:12:00 +08:00
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
/* Verify symbol table messages are cached */
|
2019-04-10 06:40:24 +08:00
|
|
|
nerrors += (h5_verify_cached_stabs(EXT_FNAME, current_fapl_id) < 0 ? 1 : 0);
|
2016-02-02 22:17:31 +08:00
|
|
|
|
|
|
|
/* Close the common file */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Fclose(fid) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 22:17:31 +08:00
|
|
|
|
2019-05-25 05:59:14 +08:00
|
|
|
} /* end for old and new format */
|
[svn-r15868] Description:
Correct a minor error in file free space allocation which was affecting
the 'multi' VFD and preventing some tests from fully working with it.
Wholesale revisitation of all the places where tests were disabled
with various VFDs and remove or correct all these so that _only_ the tests
which _really_ can't work with particular VFDs are skipped during a
'make check-vfd' test.
Tested on:
Mac OS X/32 10.5.5 (amazon) in debug mode
Mac OS X/32 10.5.5 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
2008-10-15 09:46:34 +08:00
|
|
|
|
2020-09-30 22:27:10 +08:00
|
|
|
if (nerrors > 0)
|
|
|
|
goto error;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
/* Close the new ff fapl. h5_cleanup will take care of the old ff fapl */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (H5Pclose(fapl_id_new) < 0)
|
2022-05-04 23:49:01 +08:00
|
|
|
FAIL_STACK_ERROR;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
2023-09-16 06:13:18 +08:00
|
|
|
puts("All external storage tests passed.");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
|
|
/* Clean up files used by file set tests */
|
2020-09-30 22:27:10 +08:00
|
|
|
if (h5_cleanup(EXT_FNAME, fapl_id_old)) {
|
2016-02-23 05:40:03 +08:00
|
|
|
HDremove("extern_1r.raw");
|
|
|
|
HDremove("extern_2r.raw");
|
|
|
|
HDremove("extern_3r.raw");
|
|
|
|
HDremove("extern_4r.raw");
|
|
|
|
|
|
|
|
HDremove("extern_1w.raw");
|
|
|
|
HDremove("extern_2w.raw");
|
|
|
|
HDremove("extern_3w.raw");
|
|
|
|
HDremove("extern_4w.raw");
|
|
|
|
|
|
|
|
HDrmdir("extern_dir");
|
2019-05-25 05:59:14 +08:00
|
|
|
}
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
|
|
return EXIT_SUCCESS;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
[svn-r15868] Description:
Correct a minor error in file free space allocation which was affecting
the 'multi' VFD and preventing some tests from fully working with it.
Wholesale revisitation of all the places where tests were disabled
with various VFDs and remove or correct all these so that _only_ the tests
which _really_ can't work with particular VFDs are skipped during a
'make check-vfd' test.
Tested on:
Mac OS X/32 10.5.5 (amazon) in debug mode
Mac OS X/32 10.5.5 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
2008-10-15 09:46:34 +08:00
|
|
|
error:
|
2020-09-30 22:27:10 +08:00
|
|
|
H5E_BEGIN_TRY
|
|
|
|
{
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Fclose(fid);
|
2016-02-02 22:17:31 +08:00
|
|
|
H5Pclose(fapl_id_old);
|
|
|
|
H5Pclose(fapl_id_new);
|
2016-02-02 18:30:48 +08:00
|
|
|
H5Gclose(gid);
|
2020-09-30 22:27:10 +08:00
|
|
|
}
|
2023-06-16 12:49:02 +08:00
|
|
|
H5E_END_TRY
|
[svn-r15868] Description:
Correct a minor error in file free space allocation which was affecting
the 'multi' VFD and preventing some tests from fully working with it.
Wholesale revisitation of all the places where tests were disabled
with various VFDs and remove or correct all these so that _only_ the tests
which _really_ can't work with particular VFDs are skipped during a
'make check-vfd' test.
Tested on:
Mac OS X/32 10.5.5 (amazon) in debug mode
Mac OS X/32 10.5.5 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
2008-10-15 09:46:34 +08:00
|
|
|
nerrors = MAX(1, nerrors);
|
2023-06-28 23:31:32 +08:00
|
|
|
printf("%d TEST%s FAILED.\n", nerrors, 1 == nerrors ? "" : "s");
|
2016-02-02 18:30:48 +08:00
|
|
|
return EXIT_FAILURE;
|
|
|
|
} /* end main() */
|