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
|
|
|
|
* Copyright by the Board of Trustees of the University of Illinois. *
|
|
|
|
|
* All rights reserved. *
|
|
|
|
|
* *
|
|
|
|
|
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
|
|
|
|
* terms governing use, modification, and redistribution, is contained in *
|
|
|
|
|
* the files COPYING and Copyright.html. COPYING can be found at the root *
|
|
|
|
|
* of the source code distribution tree; Copyright.html can be found at the *
|
|
|
|
|
* root level of an installed copy of the electronic HDF5 document set and *
|
|
|
|
|
* is linked from the top-level documents page. It can also be found at *
|
2007-02-07 22:56:24 +08:00
|
|
|
|
* http://hdfgroup.org/HDF5/doc/Copyright.html. 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
|
|
|
|
/*
|
|
|
|
|
* Programmer: Robb Matzke <matzke@llnl.gov>
|
|
|
|
|
* Tuesday, March 3, 1998
|
|
|
|
|
*
|
2016-02-23 05:40:03 +08:00
|
|
|
|
* Purpose: Tests datasets stored in external raw files.
|
1998-03-05 00:20:23 +08:00
|
|
|
|
*/
|
2001-04-04 02:09:16 +08:00
|
|
|
|
#include "h5test.h"
|
2007-11-06 06:13:43 +08:00
|
|
|
|
|
1998-11-21 11:36:51 +08:00
|
|
|
|
const char *FILENAME[] = {
|
|
|
|
|
"extern_1",
|
|
|
|
|
"extern_2",
|
|
|
|
|
"extern_3",
|
2016-02-23 05:40:03 +08:00
|
|
|
|
"extern_4",
|
|
|
|
|
"extern_dir/file_1",
|
2016-03-16 01:43:34 +08:00
|
|
|
|
"extern_5",
|
1998-11-21 11:36:51 +08:00
|
|
|
|
NULL
|
|
|
|
|
};
|
1998-03-05 23:48:16 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
/* A similar collection of files is used for the tests that
|
|
|
|
|
* perform file I/O.
|
|
|
|
|
*/
|
|
|
|
|
#define N_EXT_FILES 4
|
|
|
|
|
#define PART_SIZE 25
|
|
|
|
|
#define TOTAL_SIZE 100
|
|
|
|
|
#define GARBAGE_PER_FILE 10
|
|
|
|
|
|
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.
|
2016-02-23 05:40:03 +08:00
|
|
|
|
* Failure: zero
|
1998-03-05 23:48:16 +08:00
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-03-05 23:48:16 +08:00
|
|
|
|
* Wednesday, March 4, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2016-02-02 18:30:48 +08:00
|
|
|
|
static hbool_t
|
|
|
|
|
files_have_same_contents(const char *name1, const char *name2)
|
1998-03-05 23:48:16 +08:00
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
int fd1 = 0, fd2 = 0;
|
|
|
|
|
ssize_t n1, n2;
|
|
|
|
|
char buf1[1024], buf2[1024];
|
2016-04-15 05:26:41 +08:00
|
|
|
|
hbool_t ret = FALSE; /* not equal until proven otherwise */
|
1998-03-05 23:48:16 +08:00
|
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((fd1 = HDopen(name1, O_RDONLY, 0666)) < 0)
|
|
|
|
|
goto out;
|
|
|
|
|
if((fd2 = HDopen(name2, O_RDONLY, 0666)) < 0)
|
|
|
|
|
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 */
|
2010-01-30 12:29:13 +08:00
|
|
|
|
while(1) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
HDmemset(buf1, 0, sizeof(buf1));
|
|
|
|
|
HDmemset(buf2, 0, sizeof(buf2));
|
|
|
|
|
|
[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));
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(n1 < 0 || (size_t)n1 > sizeof(buf1))
|
|
|
|
|
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));
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(n2 < 0 || (size_t)n2 > sizeof(buf2))
|
|
|
|
|
break;
|
2010-01-30 12:29:13 +08:00
|
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(n1 != n2)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
if(n1 == 0 && n2 == 0) {
|
2016-04-15 05:26:41 +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
|
|
|
|
|
|
|
|
|
if(HDmemcmp(buf1, buf2, (size_t)n1))
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
} /* end while */
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
|
if(fd1)
|
|
|
|
|
HDclose(fd1);
|
|
|
|
|
if(fd2)
|
|
|
|
|
HDclose(fd2);
|
|
|
|
|
return ret;
|
|
|
|
|
} /* end files_have_same_contents() */
|
1998-03-05 23:48:16 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: reset_raw_data_files
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Resets the data in the raw data files for tests that
|
|
|
|
|
* perform dataset I/O on a set of files.
|
|
|
|
|
*
|
|
|
|
|
* Return: SUCCEED/FAIL
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Dana Robinson
|
|
|
|
|
* February 2016
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static herr_t
|
|
|
|
|
reset_raw_data_files(void)
|
|
|
|
|
{
|
|
|
|
|
int fd = 0; /* external file descriptor */
|
|
|
|
|
size_t i, j; /* iterators */
|
|
|
|
|
hssize_t n; /* bytes of I/O */
|
|
|
|
|
char filename[1024]; /* file name */
|
|
|
|
|
int data[PART_SIZE]; /* raw data buffer */
|
|
|
|
|
uint8_t *garbage = NULL; /* buffer of garbage data */
|
|
|
|
|
size_t garbage_count; /* size of garbage buffer */
|
|
|
|
|
size_t garbage_bytes; /* # of garbage bytes written to file */
|
|
|
|
|
|
|
|
|
|
/* Set up garbage buffer */
|
|
|
|
|
garbage_count = N_EXT_FILES * GARBAGE_PER_FILE;
|
|
|
|
|
if(NULL == (garbage = (uint8_t *)HDcalloc(garbage_count, sizeof(uint8_t))))
|
|
|
|
|
goto error;
|
|
|
|
|
for(i = 0; i < garbage_count; i++)
|
|
|
|
|
garbage[i] = 0xFF;
|
|
|
|
|
|
|
|
|
|
/* The *r files are pre-filled with data and are used to
|
|
|
|
|
* verify that read operations work correctly.
|
|
|
|
|
*/
|
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
|
|
|
|
|
/* Open file */
|
|
|
|
|
HDsprintf(filename, "extern_%lur.raw", (unsigned long)i + 1);
|
|
|
|
|
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
|
|
/* Write garbage data to the file. This allows us to test the
|
|
|
|
|
* the ability to set an offset in the raw data file.
|
|
|
|
|
*/
|
|
|
|
|
garbage_bytes = i * 10;
|
|
|
|
|
n = HDwrite(fd, garbage, garbage_bytes);
|
|
|
|
|
if(n < 0 || (size_t)n != garbage_bytes)
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
|
|
/* Fill array with data */
|
|
|
|
|
for(j = 0; j < PART_SIZE; j++) {
|
|
|
|
|
data[j] = (int)(i * 25 + j);
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Write raw data to the file. */
|
|
|
|
|
n = HDwrite(fd, data, sizeof(data));
|
|
|
|
|
if(n != sizeof(data))
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
|
|
/* Close this file */
|
|
|
|
|
HDclose(fd);
|
|
|
|
|
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* The *w files are only pre-filled with the garbage data and are
|
|
|
|
|
* used to verify that write operations work correctly. The individual
|
|
|
|
|
* tests fill in the actual data.
|
|
|
|
|
*/
|
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
|
|
|
|
|
/* Open file */
|
|
|
|
|
HDsprintf(filename, "extern_%luw.raw", (unsigned long)i + 1);
|
|
|
|
|
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
|
|
/* Write garbage data to the file. This allows us to test the
|
|
|
|
|
* the ability to set an offset in the raw data file.
|
|
|
|
|
*/
|
|
|
|
|
garbage_bytes = i * 10;
|
|
|
|
|
n = HDwrite(fd, garbage, garbage_bytes);
|
|
|
|
|
if(n < 0 || (size_t)n != garbage_bytes)
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
|
|
/* Close this file */
|
|
|
|
|
HDclose(fd);
|
|
|
|
|
|
|
|
|
|
} /* end for */
|
|
|
|
|
HDfree(garbage);
|
|
|
|
|
return SUCCEED;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
if(fd)
|
|
|
|
|
HDclose(fd);
|
|
|
|
|
if(garbage)
|
|
|
|
|
HDfree(garbage);
|
|
|
|
|
return FAIL;
|
|
|
|
|
} /* end reset_raw_data_files() */
|
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
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
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hsize_t cur_size[1]; /* data space current size */
|
|
|
|
|
hsize_t max_size[1]; /* data space maximum size */
|
|
|
|
|
int n; /* number of external files */
|
|
|
|
|
char name[256]; /* external file name */
|
|
|
|
|
off_t file_offset; /* external file offset */
|
|
|
|
|
hsize_t file_size; /* sizeof external file segment */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
haddr_t dset_addr; /* 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
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
/* Create the dataset */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
cur_size[0] = max_size[0] = 100;
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int))) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
|
|
|
|
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
|
|
|
|
if((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(dset) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
|
|
|
|
/* Read dataset creation information */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dset = H5Dopen2(file, "dset1", H5P_DEFAULT)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2002-11-07 23:57:53 +08:00
|
|
|
|
|
|
|
|
|
/* Test dataset address. Should be undefined. */
|
2012-04-17 05:20:26 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
dset_addr = H5Dget_offset(dset);
|
|
|
|
|
} H5E_END_TRY;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(dset_addr != HADDR_UNDEF)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Check external count */
|
|
|
|
|
if((dcpl = H5Dget_create_plist(dset)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((n = H5Pget_external_count(dcpl)) < 0)
|
|
|
|
|
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
|
|
|
|
if(1 != n) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5_FAILED();
|
|
|
|
|
HDputs(" Returned external count is wrong.");
|
|
|
|
|
printf(" got: %d\n ans: 1\n", n);
|
|
|
|
|
goto error;
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
[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
|
|
|
|
HDstrcpy(name + sizeof(name) - 4, "...");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(H5Pget_external(dcpl, 0, sizeof(name) - 4, name, &file_offset, &file_size) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Check file offset */
|
[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
|
|
|
|
if(file_offset != 0) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5_FAILED();
|
|
|
|
|
HDputs(" Wrong file offset.");
|
|
|
|
|
printf(" got: %lu\n ans: 0\n", (unsigned long)file_offset);
|
|
|
|
|
goto error;
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Check file size */
|
[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
|
|
|
|
if(file_size != (max_size[0] * sizeof(int))) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5_FAILED();
|
|
|
|
|
HDputs(" Wrong file size.");
|
|
|
|
|
printf(" got: %lu\n ans: %lu\n", (unsigned long)file_size, (unsigned long)max_size[0]*sizeof(int));
|
|
|
|
|
goto error;
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Done (dataspace was previously closed) */
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(dset) < 0) 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
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
|
|
|
|
H5Dclose(dset);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-23 05:40:03 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
|
test_too_small(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hsize_t cur_size[1]; /* current data space size */
|
|
|
|
|
hsize_t max_size[1]; /* 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
|
|
|
|
|
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
cur_size[0] = max_size[0] = 100;
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int) - 1)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
dset = H5Dcreate2(file, "dset2", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(dset >= 0)
|
|
|
|
|
FAIL_PUTS_ERROR(" Small external file succeeded instead of failing.");
|
|
|
|
|
if(H5Sclose(space) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0)
|
|
|
|
|
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
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Sclose(space);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Dclose(dset);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-23 05:40:03 +08:00
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: 1
|
1998-11-24 04:40:35 +08:00
|
|
|
|
*
|
2016-02-23 05:40:03 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
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
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hsize_t cur_size[1]; /* current data space size */
|
|
|
|
|
hsize_t max_size[1]; /* 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
|
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dcpl = H5Pcreate (H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
cur_size[0] = 100;
|
|
|
|
|
max_size[0] = 200;
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int))) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
|
|
|
|
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
|
|
|
|
if((dset = H5Dcreate2(file, "dset3", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) 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:
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
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
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hsize_t cur_size[1]; /* current data space size */
|
|
|
|
|
hsize_t max_size[1]; /* 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
|
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
cur_size[0] = 100;
|
|
|
|
|
max_size[0] = 200;
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int) - 1)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
dset = H5Dcreate2(file, "dset4", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(dset >= 0)
|
|
|
|
|
FAIL_PUTS_ERROR(" Small external file succeeded instead of failing.");
|
|
|
|
|
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) 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
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
|
test_unlimited(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hsize_t cur_size[1]; /* data space current size */
|
|
|
|
|
hsize_t max_size[1]; /* data space maximum size */
|
|
|
|
|
int n; /* number of external files */
|
|
|
|
|
char name[256]; /* external file name */
|
|
|
|
|
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 */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, H5F_UNLIMITED) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
cur_size[0] = 100;
|
|
|
|
|
max_size[0] = H5S_UNLIMITED;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
|
|
|
|
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
|
|
|
|
if((dset = H5Dcreate2(file, "dset5", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
/* Read dataset creation information */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dset = H5Dopen2(file, "dset5", H5P_DEFAULT)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((dcpl = H5Dget_create_plist(dset)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((n = H5Pget_external_count(dcpl)) < 0)
|
|
|
|
|
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
|
|
|
|
if(1 != n) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5_FAILED();
|
|
|
|
|
HDputs(" Returned external count is wrong.");
|
|
|
|
|
printf(" got: %d\n ans: 1\n", n);
|
|
|
|
|
goto error;
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
[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
|
|
|
|
HDstrcpy(name + sizeof(name) - 4, "...");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(H5Pget_external(dcpl, 0, sizeof(name) - 4, name, &file_offset, &file_size) < 0)
|
|
|
|
|
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
|
|
|
|
if(file_offset != 0) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5_FAILED();
|
|
|
|
|
HDputs(" Wrong file offset.");
|
|
|
|
|
printf(" got: %lu\n ans: 0\n", (unsigned long)file_offset);
|
|
|
|
|
goto error;
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
[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
|
|
|
|
if(H5F_UNLIMITED != file_size) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5_FAILED();
|
|
|
|
|
HDputs(" Wrong file size.");
|
|
|
|
|
printf(" got: %lu\n ans: INF\n", (unsigned long)file_size);
|
|
|
|
|
goto error;
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(dset) < 0) 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
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
} /* end test_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_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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
|
test_multiple_files(hid_t file)
|
1998-11-24 04:40:35 +08:00
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* dataspace */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hsize_t cur_size[1]; /* data space current size */
|
|
|
|
|
hsize_t max_size[1]; /* data space maximum size */
|
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
|
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
cur_size[0] = max_size[0] = 100;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0]*sizeof(int)/4)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext2.data", (off_t)0, (hsize_t)(max_size[0]*sizeof(int)/4)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext3.data", (off_t)0, (hsize_t)(max_size[0]*sizeof(int)/4)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext4.data", (off_t)0, (hsize_t)(max_size[0]*sizeof(int)/4)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((space = H5Screate_simple(1, cur_size, max_size)) < 0)
|
|
|
|
|
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
|
|
|
|
if((dset = H5Dcreate2(file, "dset6", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) 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:
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
|
test_add_to_unlimited(void)
|
1998-11-24 04:40:35 +08:00
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
herr_t status; /* function return status */
|
|
|
|
|
int n; /* 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
|
|
|
|
|
|
|
|
|
if((dcpl = H5Pcreate (H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, H5F_UNLIMITED) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-16 03:22:03 +08:00
|
|
|
|
status = H5Pset_external(dcpl, "ext2.data", (off_t)0, (hsize_t)100);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(status >= 0)
|
|
|
|
|
FAIL_PUTS_ERROR(" H5Pset_external() succeeded when it should have failed.");
|
|
|
|
|
|
|
|
|
|
if((n = H5Pget_external_count(dcpl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(1 != n)
|
|
|
|
|
FAIL_PUTS_ERROR(" Wrong external file count returned.");
|
|
|
|
|
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
1998-03-05 00:20:23 +08:00
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Pclose(dcpl);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-11-24 04:40:35 +08:00
|
|
|
|
* Monday, November 23, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2016-02-02 18:30:48 +08:00
|
|
|
|
test_overflow(void)
|
1998-11-24 04:40:35 +08:00
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
herr_t status; /* 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
|
|
|
|
|
|
|
|
|
if((dcpl=H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-16 03:22:03 +08:00
|
|
|
|
if(H5Pset_external(dcpl, "ext1.data", (off_t)0, H5F_UNLIMITED-1) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-16 03:22:03 +08:00
|
|
|
|
status = H5Pset_external(dcpl, "ext2.data", (off_t)0, (hsize_t)100);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(status >= 0)
|
|
|
|
|
FAIL_PUTS_ERROR(" H5Pset_external() succeeded when it should have failed.");
|
|
|
|
|
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
1998-11-21 11:36:51 +08:00
|
|
|
|
|
|
|
|
|
error:
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
H5Pclose(dcpl);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-03-05 00:20:23 +08:00
|
|
|
|
* Wednesday, March 4, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
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
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t file = -1; /* file to write to */
|
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hid_t grp = -1; /* group to emit diagnostics */
|
|
|
|
|
size_t i; /* 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 = -1; /* 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
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
if(HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
|
|
|
|
if(reset_raw_data_files() < 0)
|
2016-02-04 23:35:17 +08:00
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
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.
|
|
|
|
|
*/
|
2016-02-02 18:30:48 +08:00
|
|
|
|
h5_fixname(FILENAME[1], fapl, filename, sizeof(filename));
|
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((grp = H5Gcreate2(file, "emit-diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2007-08-24 04:25:25 +08:00
|
|
|
|
if(H5Gclose(grp) < 0) FAIL_STACK_ERROR
|
1998-03-05 00:20:23 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
/* Create the dcpl */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-23 05:40:03 +08:00
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
HDsnprintf(filename, sizeof(filename), "extern_%dr.raw", (int) i + 1);
|
|
|
|
|
if(H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Create the dataspace */
|
|
|
|
|
cur_size = TOTAL_SIZE;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
|
|
/* Create the dataset */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
1998-03-05 00:20:23 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
/* Read the entire dataset */
|
[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
|
|
|
|
HDmemset(whole, 0, sizeof(whole));
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|
|
|
|
|
/* Compare data */
|
|
|
|
|
for(i = 0; i < TOTAL_SIZE; i++)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
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 */
|
|
|
|
|
if((hs_space = H5Scopy(space)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sselect_hyperslab(hs_space, H5S_SELECT_SET, &hs_start, NULL, &hs_count, NULL) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
/* Read */
|
|
|
|
|
HDmemset(whole, 0, sizeof(whole));
|
|
|
|
|
if(H5Dread(dset, H5T_NATIVE_INT, hs_space, hs_space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
/* Verify data */
|
|
|
|
|
for(i = (size_t)hs_start; i < (size_t)(hs_start + hs_count); i++) {
|
|
|
|
|
if(whole[i] != (signed)i)
|
|
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read (hyperslab).");
|
|
|
|
|
} /* end for */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
2016-02-23 05:40:03 +08:00
|
|
|
|
if(H5Sclose(hs_space) < 0) FAIL_STACK_ERROR
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
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);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
2016-02-02 18:30:48 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
1998-03-05 23:48:16 +08:00
|
|
|
|
* Wednesday, March 4, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
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
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t file = -1; /* file to which to write */
|
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t mem_space = -1; /* memory data space */
|
|
|
|
|
hid_t file_space = -1; /* file data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
unsigned i; /* 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");
|
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
if(HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
/* Create another file */
|
2016-02-23 05:40:03 +08:00
|
|
|
|
h5_fixname(FILENAME[2], fapl, filename, sizeof(filename));
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
|
|
|
|
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 */
|
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-23 05:40:03 +08:00
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
hsize_t size;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
HDsnprintf(filename, sizeof(filename), "extern_%dw.raw", (int) i + 1);
|
2016-02-04 23:35:17 +08:00
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
if(i != N_EXT_FILES -1)
|
|
|
|
|
size = (hsize_t)sizeof(part);
|
|
|
|
|
else
|
|
|
|
|
size = H5F_UNLIMITED;
|
|
|
|
|
|
|
|
|
|
if(H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), size) < 0)
|
|
|
|
|
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 */
|
|
|
|
|
if(reset_raw_data_files() < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
1998-03-05 23:48:16 +08:00
|
|
|
|
/* Create the dataset */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if((mem_space = H5Screate_simple(1, &cur_size, &max_size)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((file_space = H5Scopy(mem_space)) < 0)
|
|
|
|
|
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
|
|
|
|
if((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, file_space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
2016-02-02 18:30:48 +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 */
|
[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
|
|
|
|
for(i = 0; i < cur_size; i++)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
whole[i] = (int)i;
|
|
|
|
|
if(H5Dwrite(dset, H5T_NATIVE_INT, mem_space, file_space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2016-02-23 05:40:03 +08:00
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
2016-02-02 18:30:48 +08:00
|
|
|
|
char name1[64], name2[64];
|
|
|
|
|
|
2016-02-23 05:40:03 +08:00
|
|
|
|
HDsprintf(name1, "extern_%dr.raw", i + 1);
|
|
|
|
|
HDsprintf(name2, "extern_%dw.raw", i + 1);
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(!files_have_same_contents(name1, name2))
|
|
|
|
|
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 */
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(H5Dset_extent(dset, &max_size) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(file_space) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((file_space = H5Dget_space(dset)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2008-12-02 04:38:02 +08:00
|
|
|
|
|
|
|
|
|
/* Write second half of dataset */
|
|
|
|
|
for(i = 0; i < hs_count; i++)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
whole[i] = 100 + (int)i;
|
|
|
|
|
if(H5Sselect_hyperslab(file_space, H5S_SELECT_SET, &hs_start, NULL, &hs_count, NULL) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dwrite(dset, H5T_NATIVE_INT, mem_space, file_space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2008-12-02 04:38:02 +08:00
|
|
|
|
|
[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
|
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(mem_space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(file_space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) 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
|
|
|
|
|
1998-11-24 04:40:35 +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);
|
1998-11-24 04:40:35 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
2016-02-02 18:30:48 +08:00
|
|
|
|
} /* end test_write_file_set() */
|
1998-06-06 05:03:49 +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
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Steffen Kiess
|
|
|
|
|
* March 10, 2015
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_path_absolute(hid_t fapl)
|
|
|
|
|
{
|
|
|
|
|
hid_t file = -1; /* file to write to */
|
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
size_t i; /* miscellaneous counter */
|
|
|
|
|
char cwdpath[1024]; /* working directory */
|
|
|
|
|
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 */
|
|
|
|
|
|
|
|
|
|
TESTING("absolute filenames for external file");
|
|
|
|
|
|
|
|
|
|
h5_fixname(FILENAME[3], fapl, filename, sizeof(filename));
|
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
|
|
|
|
if(reset_raw_data_files() < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the dcpl */
|
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(NULL == HDgetcwd(cwdpath, sizeof(cwdpath)))
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
HDsnprintf(filename, sizeof(filename), "%s%sextern_%dr.raw", cwdpath, H5_DIR_SEPS, (int) i + 1);
|
|
|
|
|
#if defined(H5_HAVE_WINDOW_PATH)
|
|
|
|
|
/* For windows, test path-absolute case (\dir\file.raw) for the second file */
|
|
|
|
|
if(i == 1)
|
|
|
|
|
HDsnprintf(filename, sizeof(filename), "%s%sextern_%dr.raw", cwdpath + 2, H5_DIR_SEPS, i + 1);
|
|
|
|
|
#endif
|
|
|
|
|
if(H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* create the dataspace */
|
|
|
|
|
cur_size = TOTAL_SIZE;
|
|
|
|
|
if((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* create the dataset */
|
|
|
|
|
if((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
|
|
|
|
HDmemset(whole, 0, sizeof(whole));
|
|
|
|
|
if(H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
for(i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
|
if(whole[i] != (signed)i)
|
|
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Sclose(space);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Fclose(file);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
* Programmer: Steffen Kiess
|
|
|
|
|
* March 10, 2015
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_path_relative(hid_t fapl)
|
|
|
|
|
{
|
|
|
|
|
hid_t file = -1; /* file to write to */
|
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
size_t i; /* miscellaneous counters */
|
|
|
|
|
char cwdpath[1024]; /* working directory */
|
|
|
|
|
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 */
|
|
|
|
|
|
|
|
|
|
TESTING("filenames relative to current directory for external file");
|
|
|
|
|
|
|
|
|
|
if(HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
if (HDmkdir("extern_dir", (mode_t)0755) < 0 && errno != EEXIST)
|
|
|
|
|
TEST_ERROR;
|
|
|
|
|
|
|
|
|
|
h5_fixname(FILENAME[4], fapl, filename, sizeof(filename));
|
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR;
|
|
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
|
|
|
|
if(reset_raw_data_files() < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the dataset */
|
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(NULL == HDgetcwd(cwdpath, sizeof(cwdpath)))
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
for (i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
HDsnprintf(filename, sizeof(filename), "extern_%dr.raw", (int)i + 1);
|
|
|
|
|
if(H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
cur_size = TOTAL_SIZE;
|
|
|
|
|
if((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
|
|
|
|
HDmemset(whole, 0, sizeof(whole));
|
|
|
|
|
if(H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
for(i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
|
if(whole[i] != (signed)i)
|
|
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
|
|
|
|
H5Fclose(file);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Steffen Kiess
|
|
|
|
|
* March 10, 2015
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_path_relative_cwd(hid_t fapl)
|
|
|
|
|
{
|
|
|
|
|
hid_t file = -1; /* file to write to */
|
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dapl = -1; /* dataset access property list */
|
|
|
|
|
hid_t dapl2 = -1; /* copy of dapl */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
hid_t dset2 = -1; /* dataset, opened a second time */
|
|
|
|
|
hid_t dset3 = -1; /* dataset, opened with different prefix */
|
|
|
|
|
size_t i; /* miscellaneous counters */
|
|
|
|
|
char cwdpath[1024]; /* working directory */
|
|
|
|
|
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 */
|
|
|
|
|
|
|
|
|
|
TESTING("filenames relative to HDF5 file for external file");
|
|
|
|
|
|
|
|
|
|
if(HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
if(HDmkdir("extern_dir", (mode_t)0755) < 0 && errno != EEXIST)
|
|
|
|
|
TEST_ERROR;
|
|
|
|
|
|
|
|
|
|
h5_fixname(FILENAME[4], fapl, filename, sizeof(filename));
|
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR;
|
|
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
|
|
|
|
if(reset_raw_data_files() < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the dataset */
|
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(NULL == HDgetcwd(cwdpath, sizeof(cwdpath)))
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
HDsnprintf(filename, sizeof(filename), "..%sextern_%dr.raw", H5_DIR_SEPS, (int)i + 1);
|
|
|
|
|
if(H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
cur_size = TOTAL_SIZE;
|
|
|
|
|
if((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pset_efile_prefix(dapl, "${ORIGIN}") < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pget_efile_prefix(dapl, buffer, sizeof(buffer)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(HDstrcmp(buffer, "${ORIGIN}") != 0)
|
|
|
|
|
FAIL_PUTS_ERROR("efile prefix not set correctly");
|
|
|
|
|
if((dapl2 = H5Pcopy(dapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create dataset */
|
|
|
|
|
if((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, dapl2)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reopen dataset with same efile_prefix property */
|
|
|
|
|
if((dset2 = H5Dopen2(file, "dset1", dapl2)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reopen dataset with different efile_prefix property */
|
|
|
|
|
if(H5Pset_efile_prefix(dapl, "//") < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
dset3 = H5Dopen2(file, "dset1", dapl);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
if(dset3 >= 0)
|
|
|
|
|
FAIL_PUTS_ERROR("reopening the dataset with a different efile_prefix succeded");
|
|
|
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
|
|
|
|
HDmemset(whole, 0, sizeof(whole));
|
|
|
|
|
if(H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
for(i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
|
if(whole[i] != (signed)i)
|
|
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
|
|
|
|
|
/* Close dataset */
|
|
|
|
|
if(H5Dclose(dset2) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Open dataset (use a differend prefix than for create.
|
|
|
|
|
* This works because the dataset was closed.
|
|
|
|
|
*/
|
|
|
|
|
if(H5Pset_efile_prefix(dapl2, "${ORIGIN}/.") < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((dset = H5Dopen2(file, "dset1", dapl2)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reopen dataset with same efile_prefix property */
|
|
|
|
|
if((dset2 = H5Dopen2(file, "dset1", dapl2)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reopen dataset with different efile_prefix property */
|
|
|
|
|
if(H5Pset_efile_prefix(dapl, NULL) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
dset3 = H5Dopen2(file, "dset1", dapl);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
if(dset3 >= 0)
|
|
|
|
|
FAIL_PUTS_ERROR("reopening the dataset with a different efile_prefix succeded");
|
|
|
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
|
|
|
|
HDmemset(whole, 0, sizeof(whole));
|
|
|
|
|
if(H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
for(i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
|
if(whole[i] != (signed)i)
|
|
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset2) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dapl2) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dapl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Pclose(dapl2);
|
|
|
|
|
H5Pclose(dapl);
|
|
|
|
|
H5Dclose(dset3);
|
|
|
|
|
H5Dclose(dset2);
|
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
|
|
|
|
H5Fclose(file);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_path_relative_cwd() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_path_env
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Test whether the value of HDF5_EXTFILE_PREFIX will overwrite
|
|
|
|
|
* the efile_prefix dataset access property.
|
|
|
|
|
* This will create an HDF5 file in a subdirectory which will
|
|
|
|
|
* refer to ../extern_*a.raw
|
|
|
|
|
* The files are then accessed by setting the HDF5_EXTFILE_PREFIX
|
|
|
|
|
* environment variable to "${ORIGIN}".
|
|
|
|
|
* The efile_prefix dataset access property is set to "someprefix",
|
|
|
|
|
* which will cause an error if the value is not overwritten by
|
|
|
|
|
* the environment variable.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: 1
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Steffen Kiess
|
|
|
|
|
* March 10, 2015
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_path_env(hid_t fapl)
|
|
|
|
|
{
|
|
|
|
|
hid_t file = -1; /* file to write to */
|
|
|
|
|
hid_t dcpl = -1; /* dataset creation properties */
|
|
|
|
|
hid_t space = -1; /* data space */
|
|
|
|
|
hid_t dapl = -1; /* dataset access property list */
|
|
|
|
|
hid_t dset = -1; /* dataset */
|
|
|
|
|
size_t i; /* miscellaneous counters */
|
|
|
|
|
char cwdpath[1024]; /* working directory */
|
|
|
|
|
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 */
|
|
|
|
|
|
|
|
|
|
TESTING("prefix in HDF5_EXTFILE_PREFIX");
|
|
|
|
|
|
|
|
|
|
if(HDsetenv("HDF5_EXTFILE_PREFIX", "${ORIGIN}", 1))
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
if(HDmkdir("extern_dir", (mode_t)0755) < 0 && errno != EEXIST)
|
|
|
|
|
TEST_ERROR;
|
|
|
|
|
|
|
|
|
|
h5_fixname(FILENAME[4], fapl, filename, sizeof(filename));
|
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
|
|
|
|
if(reset_raw_data_files() < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the dataset */
|
|
|
|
|
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(NULL == HDgetcwd(cwdpath, sizeof(cwdpath)))
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
for(i = 0; i < N_EXT_FILES; i++) {
|
|
|
|
|
HDsnprintf(filename, sizeof(filename), "..%sextern_%dr.raw", H5_DIR_SEPS, (int) i + 1);
|
|
|
|
|
if(H5Pset_external(dcpl, filename, (off_t)(i * GARBAGE_PER_FILE), (hsize_t)sizeof(part)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
cur_size = TOTAL_SIZE;
|
|
|
|
|
if((space = H5Screate_simple(1, &cur_size, NULL)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Set prefix to a nonexistent directory, will be overwritten by environment variable */
|
|
|
|
|
if(H5Pset_efile_prefix(dapl, "someprefix") < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pget_efile_prefix(dapl, buffer, sizeof(buffer)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(HDstrcmp(buffer, "someprefix") != 0)
|
|
|
|
|
FAIL_PUTS_ERROR("efile prefix not set correctly");
|
|
|
|
|
|
|
|
|
|
/* Create dataset */
|
|
|
|
|
if((dset = H5Dcreate2(file, "dset1", H5T_NATIVE_INT, space, H5P_DEFAULT, dcpl, dapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Read the entire dataset and compare with the original */
|
|
|
|
|
HDmemset(whole, 0, sizeof(whole));
|
|
|
|
|
if(H5Dread(dset, H5T_NATIVE_INT, space, space, H5P_DEFAULT, whole) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
for(i = 0; i < TOTAL_SIZE; i++)
|
|
|
|
|
if(whole[i] != (signed)i)
|
|
|
|
|
FAIL_PUTS_ERROR("Incorrect value(s) read.");
|
|
|
|
|
|
|
|
|
|
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dapl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Pclose(dapl);
|
|
|
|
|
H5Dclose(dset);
|
|
|
|
|
H5Pclose(dcpl);
|
|
|
|
|
H5Sclose(space);
|
|
|
|
|
H5Fclose(file);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_path_env() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
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
|
|
|
|
* Programmer: Dana Robinson
|
|
|
|
|
* March 2016
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_h5d_get_access_plist(hid_t fapl_id)
|
|
|
|
|
{
|
|
|
|
|
hid_t fid = -1; /* file to write to */
|
|
|
|
|
hid_t dcpl_id = -1; /* dataset creation properties */
|
|
|
|
|
hid_t dapl_id = -1; /* dataset access properties */
|
|
|
|
|
hid_t sid = -1; /* data space */
|
|
|
|
|
hid_t did = -1; /* dataset */
|
|
|
|
|
hsize_t dims = 0; /* dataset size */
|
|
|
|
|
char *buffer = NULL; /* saved prefix name from dapl */
|
|
|
|
|
char filename[1024]; /* file names */
|
|
|
|
|
|
|
|
|
|
TESTING("H5Dget_access_plist() returns correct prefix");
|
|
|
|
|
|
|
|
|
|
if(HDsetenv("HDF5_EXTFILE_PREFIX", "", 1) < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Reset the raw data files */
|
|
|
|
|
if(reset_raw_data_files() < 0)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the file */
|
|
|
|
|
h5_fixname(FILENAME[5], fapl_id, filename, sizeof(filename));
|
|
|
|
|
if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the dcpl and set external storage */
|
|
|
|
|
if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pset_external(dcpl_id, "extern_1r.raw", (off_t)0, (hsize_t)0) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the dapl and set the prefix */
|
|
|
|
|
if((dapl_id = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pset_efile_prefix(dapl_id, "someprefix") < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create the dataset */
|
|
|
|
|
if((sid = H5Screate_simple(1, &dims, NULL)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if((did = H5Dcreate2(fid, "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl_id, dapl_id)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Close the dapl */
|
|
|
|
|
if(H5Pclose(dapl_id) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
dapl_id = -1;
|
|
|
|
|
|
|
|
|
|
/* Get a data access property list from the dataset */
|
|
|
|
|
if((dapl_id = H5Dget_access_plist(did)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Check the value for the external prefix */
|
|
|
|
|
if((buffer = (char *)HDcalloc((size_t)64, sizeof(char))) == NULL)
|
|
|
|
|
TEST_ERROR
|
|
|
|
|
if(H5Pget_efile_prefix(dapl_id, buffer, (size_t)64) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(HDstrcmp(buffer, "someprefix") != 0)
|
|
|
|
|
FAIL_PUTS_ERROR("external file prefix from dapl incorrect");
|
|
|
|
|
|
|
|
|
|
/* Close everything */
|
|
|
|
|
HDfree(buffer);
|
|
|
|
|
if(H5Sclose(sid) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(did) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dcpl_id) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(dapl_id) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(fid) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
if(buffer)
|
|
|
|
|
HDfree(buffer);
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Dclose(did);
|
|
|
|
|
H5Pclose(dcpl_id);
|
|
|
|
|
H5Pclose(dapl_id);
|
|
|
|
|
H5Sclose(sid);
|
|
|
|
|
H5Fclose(fid);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
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
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
1998-03-05 00:20:23 +08:00
|
|
|
|
* Tuesday, March 3, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
int
|
2016-02-02 18:30:48 +08:00
|
|
|
|
main(void)
|
1998-03-05 00:20:23 +08:00
|
|
|
|
{
|
2016-02-23 05:40:03 +08:00
|
|
|
|
hid_t fapl_id_old = -1; /* file access properties (old format) */
|
|
|
|
|
hid_t fapl_id_new = -1; /* file access properties (new format) */
|
|
|
|
|
hid_t fid = -1; /* file for test_1* functions */
|
|
|
|
|
hid_t gid = -1; /* 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();
|
|
|
|
|
h5_fixname(FILENAME[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 */
|
|
|
|
|
if((fapl_id_new = H5Pcopy(fapl_id_old)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pset_libver_bounds(fapl_id_new, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
|
2016-02-02 18:30:48 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
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);
|
|
|
|
|
HDputs("");
|
|
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
|
/* Test with old & new format groups */
|
|
|
|
|
for(latest_format = FALSE; latest_format <= TRUE; latest_format++) {
|
|
|
|
|
hid_t current_fapl_id = -1;
|
|
|
|
|
|
|
|
|
|
/* Set the fapl for different file formats */
|
|
|
|
|
if(latest_format) {
|
2016-03-16 01:43:34 +08:00
|
|
|
|
HDputs("\nTesting with the latest file format:");
|
2016-02-02 22:17:31 +08:00
|
|
|
|
current_fapl_id = fapl_id_new;
|
|
|
|
|
} /* end if */
|
|
|
|
|
else {
|
2016-03-16 01:43:34 +08:00
|
|
|
|
HDputs("Testing with the default file format:");
|
2016-02-02 22:17:31 +08:00
|
|
|
|
current_fapl_id = fapl_id_old;
|
|
|
|
|
} /* end else */
|
|
|
|
|
|
|
|
|
|
/* Create the common file used by some of the tests */
|
|
|
|
|
if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, current_fapl_id)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create a group that will be used in the file set read test */
|
|
|
|
|
if((gid = H5Gcreate2(fid, "emit-diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* 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);
|
|
|
|
|
nerrors += test_path_env(current_fapl_id);
|
|
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
|
/* Verify symbol table messages are cached */
|
|
|
|
|
nerrors += (h5_verify_cached_stabs(FILENAME, current_fapl_id) < 0 ? 1 : 0);
|
|
|
|
|
|
|
|
|
|
/* Close the common file */
|
|
|
|
|
if(H5Fclose(fid) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
} /* end for */
|
[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
|
|
|
|
|
2016-02-02 18:30:48 +08:00
|
|
|
|
if(nerrors > 0) goto error;
|
|
|
|
|
|
2016-02-02 22:17:31 +08:00
|
|
|
|
/* Close the new ff fapl. h5_cleanup will take care of the old ff fapl */
|
|
|
|
|
if(H5Pclose(fapl_id_new) < 0) FAIL_STACK_ERROR
|
2016-02-02 18:30:48 +08:00
|
|
|
|
|
|
|
|
|
HDputs("All external storage tests passed.");
|
|
|
|
|
|
|
|
|
|
/* Clean up files used by file set tests */
|
2016-02-02 22:17:31 +08:00
|
|
|
|
if(h5_cleanup(FILENAME, 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");
|
2016-02-02 18:30:48 +08:00
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
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);
|
[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
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
nerrors = MAX(1, nerrors);
|
2016-03-16 01:43:34 +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() */
|
2016-02-23 05:40:03 +08:00
|
|
|
|
|