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-10-06 21:16:04 +08:00
|
|
|
|
/*
|
|
|
|
|
* Programmer: Robb Matzke <matzke@llnl.gov>
|
|
|
|
|
* Friday, September 25, 1998
|
|
|
|
|
*
|
2007-08-30 04:44:19 +08:00
|
|
|
|
* Purpose: Test unlinking operations.
|
1998-10-06 21:16:04 +08:00
|
|
|
|
*/
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
2006-08-03 07:41:53 +08:00
|
|
|
|
#define H5G_PACKAGE /*suppress error about including H5Gpkg */
|
|
|
|
|
|
|
|
|
|
/* Define this macro to indicate that the testing APIs should be available */
|
|
|
|
|
#define H5G_TESTING
|
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
#include <time.h>
|
2001-04-04 02:09:16 +08:00
|
|
|
|
#include "h5test.h"
|
2006-08-03 07:41:53 +08:00
|
|
|
|
#include "H5Gpkg.h" /* Groups */
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
const char *FILENAME[] = {
|
|
|
|
|
"unlink",
|
2002-04-27 04:34:46 +08:00
|
|
|
|
"new_move_a",
|
|
|
|
|
"new_move_b",
|
2003-04-12 00:37:18 +08:00
|
|
|
|
"lunlink",
|
2003-04-14 19:22:10 +08:00
|
|
|
|
"filespace",
|
2003-08-17 02:54:40 +08:00
|
|
|
|
"slashes",
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
"resurrect_set",
|
|
|
|
|
"resurrect_type",
|
|
|
|
|
"resurrect_group",
|
2004-09-28 02:06:11 +08:00
|
|
|
|
"unlink_chunked",
|
2006-08-03 07:41:53 +08:00
|
|
|
|
"full_group",
|
1998-11-24 04:40:35 +08:00
|
|
|
|
NULL
|
|
|
|
|
};
|
1998-11-03 01:58:28 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Macros for test_create_unlink() & test_filespace */
|
|
|
|
|
#define GROUPNAME "group"
|
|
|
|
|
#define GROUP2NAME "group2"
|
2003-04-25 19:41:18 +08:00
|
|
|
|
#define UNLINK_NGROUPS 1000
|
2003-04-14 19:22:10 +08:00
|
|
|
|
#define DATASETNAME "dataset"
|
|
|
|
|
#define DATASET2NAME "dataset2"
|
|
|
|
|
#define ATTRNAME "attribute"
|
|
|
|
|
#define TYPENAME "datatype"
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
#define TYPE2NAME "datatype2"
|
2003-04-14 19:22:10 +08:00
|
|
|
|
#define FILESPACE_NDIMS 3
|
|
|
|
|
#define FILESPACE_DIM0 20
|
|
|
|
|
#define FILESPACE_DIM1 20
|
|
|
|
|
#define FILESPACE_DIM2 20
|
|
|
|
|
#define FILESPACE_CHUNK0 10
|
|
|
|
|
#define FILESPACE_CHUNK1 10
|
|
|
|
|
#define FILESPACE_CHUNK2 10
|
|
|
|
|
#define FILESPACE_DEFLATE_LEVEL 6
|
|
|
|
|
#define FILESPACE_REWRITE 10
|
|
|
|
|
#define FILESPACE_NATTR 100
|
|
|
|
|
#define FILESPACE_ATTR_NDIMS 2
|
|
|
|
|
#define FILESPACE_ATTR_DIM0 5
|
|
|
|
|
#define FILESPACE_ATTR_DIM1 5
|
|
|
|
|
#define FILESPACE_TOP_GROUPS 10
|
|
|
|
|
#define FILESPACE_NESTED_GROUPS 50
|
|
|
|
|
#define FILESPACE_NDATASETS 50
|
2003-08-17 02:54:40 +08:00
|
|
|
|
#define SLASHES_GROUP_NAME "Group///"
|
|
|
|
|
#define SLASHES_HARDLINK_NAME "Hard///"
|
|
|
|
|
#define SLASHES_SOFTLINK_NAME "Soft///"
|
|
|
|
|
#define SLASHES_SOFTLINK2_NAME "Soft2///"
|
|
|
|
|
#define SLASHES_ROOTLINK_NAME "Root///"
|
2006-08-03 07:41:53 +08:00
|
|
|
|
#define FULL_GROUP_NUM_KEEP 2
|
|
|
|
|
#define FULL_GROUP_NUM_DELETE_COMPACT 2
|
2006-10-02 18:24:03 +08:00
|
|
|
|
#define FULL_GROUP_NUM_DELETE_DENSE 16
|
|
|
|
|
#define FULL_GROUP_EST_NUM_ENTRIES 8
|
|
|
|
|
#define FULL_GROUP_EST_ENTRY_LEN 9
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_one
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Creates a group that has just one entry and then unlinks that
|
|
|
|
|
* entry.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
*
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Friday, September 25, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_one(hid_t file)
|
|
|
|
|
{
|
2007-08-30 04:44:19 +08:00
|
|
|
|
hid_t work = -1, grp = -1;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
herr_t status;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
/* Create a test group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((work = H5Gcreate2(file, "/test_one", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Delete by absolute name */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("unlink by absolute name");
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((grp = H5Gcreate2(work, "foo", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(grp) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(file, "/test_one/foo", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Delete by local name */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("unlink by local name");
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((grp = H5Gcreate2(work, "foo", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(grp) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(work, "foo", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Delete directly - should fail */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("unlink without a name");
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((grp = H5Gcreate2(work, "foo", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
1998-10-06 21:16:04 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2007-08-30 04:44:19 +08:00
|
|
|
|
status = H5Ldelete(grp, ".", H5P_DEFAULT);
|
1998-10-06 21:16:04 +08:00
|
|
|
|
} H5E_END_TRY;
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(status>=0)
|
|
|
|
|
FAIL_PUTS_ERROR(" Unlinking object w/o a name should have failed.")
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(grp) < 0) FAIL_STACK_ERROR
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Cleanup */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(work) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 0;
|
1998-11-24 04:40:35 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
error:
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(work);
|
|
|
|
|
H5Gclose(grp);
|
|
|
|
|
} H5E_END_TRY;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 1;
|
2007-08-30 04:44:19 +08:00
|
|
|
|
} /* end test_one() */
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_many
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests many unlinks in a single directory.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
*
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Friday, September 25, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_many(hid_t file)
|
|
|
|
|
{
|
1998-11-24 04:40:35 +08:00
|
|
|
|
hid_t work=-1, grp=-1;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
int i;
|
|
|
|
|
const int how_many=500;
|
|
|
|
|
char name[32];
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
/* Create a test group */
|
2007-08-24 04:25:25 +08:00
|
|
|
|
if((work = H5Gcreate2(file, "/test_many", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error;
|
|
|
|
|
if((grp = H5Gcreate2(work, "/test_many_foo", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error;
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Gclose(grp) < 0) goto error;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Create a bunch of names and unlink them in order */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("forward unlink");
|
2007-08-29 03:47:00 +08:00
|
|
|
|
for(i = 0; i < how_many; i++) {
|
1998-10-06 21:16:04 +08:00
|
|
|
|
sprintf(name, "obj_%05d", i);
|
2007-08-31 04:03:37 +08:00
|
|
|
|
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
for(i = 0; i < how_many; i++) {
|
1998-10-06 21:16:04 +08:00
|
|
|
|
sprintf(name, "obj_%05d", i);
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(work, name, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Create a bunch of names and unlink them in reverse order */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("backward unlink");
|
2007-08-29 03:47:00 +08:00
|
|
|
|
for(i = 0; i < how_many; i++) {
|
1998-10-06 21:16:04 +08:00
|
|
|
|
sprintf(name, "obj_%05d", i);
|
2007-08-31 04:03:37 +08:00
|
|
|
|
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
for(i = (how_many - 1); i >= 0; --i) {
|
1998-10-06 21:16:04 +08:00
|
|
|
|
sprintf(name, "obj_%05d", i);
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(work, name, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Create a bunch of names and unlink them from both directions */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("inward unlink");
|
2007-08-29 03:47:00 +08:00
|
|
|
|
for(i = 0; i < how_many; i++) {
|
1998-10-06 21:16:04 +08:00
|
|
|
|
sprintf(name, "obj_%05d", i);
|
2007-08-31 04:03:37 +08:00
|
|
|
|
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
for(i = 0; i < how_many; i++) {
|
|
|
|
|
if(i % 2)
|
|
|
|
|
sprintf(name, "obj_%05d", how_many - (1 + i / 2));
|
|
|
|
|
else
|
|
|
|
|
sprintf(name, "obj_%05d", i / 2);
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(work, name, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
/* Create a bunch of names and unlink them from the midle */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("outward unlink");
|
2007-08-29 03:47:00 +08:00
|
|
|
|
for(i = 0; i < how_many; i++) {
|
1998-10-06 21:16:04 +08:00
|
|
|
|
sprintf(name, "obj_%05d", i);
|
2007-08-31 04:03:37 +08:00
|
|
|
|
if(H5Lcreate_hard(work, "/test_many_foo", H5L_SAME_LOC, name, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
for(i = (how_many - 1); i >= 0; --i) {
|
|
|
|
|
if(i % 2)
|
|
|
|
|
sprintf(name, "obj_%05d", how_many - (1 + i / 2));
|
|
|
|
|
else
|
|
|
|
|
sprintf(name, "obj_%05d", i / 2);
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(work, name, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
} /* end for */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Cleanup */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if (H5Gclose(work) < 0) goto error;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 0;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
error:
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(work);
|
|
|
|
|
H5Gclose(grp);
|
|
|
|
|
} H5E_END_TRY;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_symlink
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests removal of symbolic links.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
*
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Friday, September 25, 1998
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_symlink(hid_t file)
|
|
|
|
|
{
|
1998-11-24 04:40:35 +08:00
|
|
|
|
hid_t work=-1;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("symlink removal");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
/* Create a test group and symlink */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((work = H5Gcreate2(file, "/test_symlink", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Lcreate_soft("link_value", work, "link", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(work, "link", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Cleanup */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(work) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 0;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
error:
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(work);
|
|
|
|
|
} H5E_END_TRY;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 1;
|
2007-08-30 04:44:19 +08:00
|
|
|
|
} /* end test_symlink() */
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_rename
|
|
|
|
|
*
|
2007-08-29 06:30:13 +08:00
|
|
|
|
* Purpose: Tests H5Lmove()
|
1998-10-06 21:16:04 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
*
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Friday, September 25, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_rename(hid_t file)
|
|
|
|
|
{
|
1998-11-24 04:40:35 +08:00
|
|
|
|
hid_t work=-1, foo=-1, inner=-1;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Create a test group and rename something */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("object renaming");
|
2007-08-29 06:30:13 +08:00
|
|
|
|
if((work = H5Gcreate2(file, "/test_rename", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if((foo = H5Gcreate2(work, "foo", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Lmove(work, "foo", H5L_SAME_LOC, "bar", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if((inner = H5Gcreate2(foo, "inner", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(inner) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(foo) < 0) FAIL_STACK_ERROR
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((inner = H5Gopen2(work, "bar/inner", H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-29 06:30:13 +08:00
|
|
|
|
if(H5Gclose(inner) < 0) FAIL_STACK_ERROR
|
1998-11-24 04:40:35 +08:00
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Try renaming a symlink */
|
1998-11-24 04:40:35 +08:00
|
|
|
|
TESTING("symlink renaming");
|
2007-08-29 06:30:13 +08:00
|
|
|
|
if(H5Lcreate_soft("link_value", work, "link_one", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Lmove(work, "link_one", H5L_SAME_LOC, "link_two", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/* Cleanup */
|
2007-08-29 06:30:13 +08:00
|
|
|
|
if (H5Gclose(work) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
PASSED();
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 0;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2007-08-29 06:30:13 +08:00
|
|
|
|
error:
|
1998-11-24 04:40:35 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(work);
|
|
|
|
|
H5Gclose(foo);
|
|
|
|
|
H5Gclose(inner);
|
|
|
|
|
} H5E_END_TRY;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 1;
|
2007-08-29 06:30:13 +08:00
|
|
|
|
} /* end test_rename() */
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-04-27 04:34:46 +08:00
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_new_move
|
|
|
|
|
*
|
2007-08-29 06:45:23 +08:00
|
|
|
|
* Purpose: Tests H5Lmove() with different locations
|
2002-04-27 04:34:46 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
*
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Thursday, April 25, 2002
|
2002-04-27 04:34:46 +08:00
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_new_move(hid_t fapl)
|
2002-04-27 04:34:46 +08:00
|
|
|
|
{
|
2006-10-02 18:24:03 +08:00
|
|
|
|
hid_t file_a, file_b=(-1);
|
2002-08-09 01:52:17 +08:00
|
|
|
|
hid_t grp_1=(-1), grp_2=(-1), grp_move=(-1), moved_grp=(-1);
|
2002-04-27 04:34:46 +08:00
|
|
|
|
char filename[1024];
|
|
|
|
|
|
|
|
|
|
TESTING("new move");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
|
|
|
|
/* Create a second file */
|
2002-04-27 04:34:46 +08:00
|
|
|
|
h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
|
2007-08-29 06:45:23 +08:00
|
|
|
|
if((file_a = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
|
2007-08-29 06:45:23 +08:00
|
|
|
|
if((file_b = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Create groups in first file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((grp_1 = H5Gcreate2(file_a, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if((grp_2 = H5Gcreate2(file_a, "group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if((grp_move = H5Gcreate2(grp_1, "group_move", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Create hard and soft links. */
|
2007-08-29 05:49:12 +08:00
|
|
|
|
if(H5Lcreate_hard(grp_1, "group_move", H5L_SAME_LOC, "hard", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Lcreate_soft("/group1/group_move", grp_2, "soft", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Move a group within the file. Both of source and destination use
|
2007-08-31 04:03:37 +08:00
|
|
|
|
* H5L_SAME_LOC. Should fail. */
|
2002-04-27 04:34:46 +08:00
|
|
|
|
H5E_BEGIN_TRY {
|
2007-08-31 04:03:37 +08:00
|
|
|
|
if(H5Lmove(H5L_SAME_LOC, "group_move", H5L_SAME_LOC, "group_new_name", H5P_DEFAULT, H5P_DEFAULT) != FAIL) TEST_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
|
|
|
|
|
/* Move a group across files. Should fail. */
|
|
|
|
|
H5E_BEGIN_TRY {
|
2007-08-29 06:45:23 +08:00
|
|
|
|
if(H5Lmove(grp_1, "group_move", file_b, "group_new_name", H5P_DEFAULT, H5P_DEFAULT) != FAIL) TEST_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
} H5E_END_TRY;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-04-27 04:34:46 +08:00
|
|
|
|
/* Move a group across groups in the same file. */
|
2007-08-29 06:45:23 +08:00
|
|
|
|
if(H5Lmove(grp_1, "group_move", grp_2, "group_new_name", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Open the group just moved to the new location. */
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((moved_grp = H5Gopen2(grp_2, "group_new_name", H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
2007-08-29 06:45:23 +08:00
|
|
|
|
if(H5Gclose(grp_1) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(grp_2) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(grp_move) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(moved_grp) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file_a) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file_b) < 0) FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
2002-05-01 01:09:35 +08:00
|
|
|
|
H5Gclose(grp_1);
|
|
|
|
|
H5Gclose(grp_2);
|
2002-04-27 04:34:46 +08:00
|
|
|
|
H5Gclose(grp_move);
|
|
|
|
|
H5Gclose(moved_grp);
|
|
|
|
|
H5Fclose(file_a);
|
|
|
|
|
H5Fclose(file_b);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: check_new_move
|
|
|
|
|
*
|
2007-08-29 06:45:23 +08:00
|
|
|
|
* Purpose: Checks result of H5Lmove() with different locations
|
2002-04-27 04:34:46 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
*
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Thursday, April 25, 2002
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
check_new_move(hid_t fapl)
|
2002-04-27 04:34:46 +08:00
|
|
|
|
{
|
2006-10-02 18:24:03 +08:00
|
|
|
|
hid_t file;
|
2007-09-13 23:44:56 +08:00
|
|
|
|
H5O_info_t oi_hard1, oi_hard2;
|
2002-04-27 04:34:46 +08:00
|
|
|
|
char filename[1024];
|
|
|
|
|
char linkval[1024];
|
|
|
|
|
|
|
|
|
|
TESTING("check new move function");
|
|
|
|
|
|
|
|
|
|
/* Open file */
|
|
|
|
|
h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Get hard link info */
|
[svn-r14225] Description:
Change H5Oget_info -> H5Oget_info_by_name and re-add H5Oget_info in a
simpler form for querying a particular object, to align with other new API
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-31 21:13:40 +08:00
|
|
|
|
if(H5Oget_info_by_name(file, "/group2/group_new_name", &oi_hard1, H5P_DEFAULT) < 0)
|
2007-09-13 23:44:56 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
[svn-r14225] Description:
Change H5Oget_info -> H5Oget_info_by_name and re-add H5Oget_info in a
simpler form for querying a particular object, to align with other new API
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-31 21:13:40 +08:00
|
|
|
|
if(H5Oget_info_by_name(file, "/group1/hard", &oi_hard2, H5P_DEFAULT) < 0)
|
2007-09-13 23:44:56 +08:00
|
|
|
|
FAIL_STACK_ERROR
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Check hard links */
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if(H5O_TYPE_GROUP != oi_hard1.type || H5O_TYPE_GROUP != oi_hard2.type)
|
2006-10-02 18:24:03 +08:00
|
|
|
|
FAIL_PUTS_ERROR(" Unexpected object type, should have been a group")
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if(H5F_addr_ne(oi_hard1.addr, oi_hard2.addr))
|
2006-10-02 18:24:03 +08:00
|
|
|
|
FAIL_PUTS_ERROR(" Hard link test failed. Link seems not to point to the expected file location.")
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Check soft links */
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if(H5Lget_val(file, "group2/soft", linkval, sizeof linkval, H5P_DEFAULT) < 0)
|
|
|
|
|
FAIL_STACK_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(HDstrcmp(linkval, "/group1/group_move"))
|
|
|
|
|
FAIL_PUTS_ERROR(" Soft link test failed. Wrong link value")
|
2002-04-27 04:34:46 +08:00
|
|
|
|
|
|
|
|
|
/* Cleanup */
|
2007-08-30 07:37:41 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
2002-04-27 04:34:46 +08:00
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
2007-08-30 07:37:41 +08:00
|
|
|
|
error:
|
2003-04-14 19:22:10 +08:00
|
|
|
|
return 1;
|
2007-08-30 07:37:41 +08:00
|
|
|
|
} /* end check_new_move() */
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_filespace
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Test proper reuse of space in the file when objects are unlinked
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Saturday, March 22, 2003
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_filespace(hid_t fapl)
|
2003-04-14 19:22:10 +08:00
|
|
|
|
{
|
|
|
|
|
hid_t fapl_nocache; /* File access property list with raw data cache turned off */
|
|
|
|
|
hid_t contig_dcpl; /* Dataset creation property list for contiguous dataset */
|
|
|
|
|
hid_t early_chunk_dcpl; /* Dataset creation property list for chunked dataset & early allocation */
|
|
|
|
|
hid_t late_chunk_dcpl; /* Dataset creation property list for chunked dataset & late allocation */
|
|
|
|
|
hid_t comp_dcpl; /* Dataset creation property list for compressed, chunked dataset */
|
|
|
|
|
hid_t compact_dcpl; /* Dataset creation property list for compact dataset */
|
|
|
|
|
hid_t file; /* File ID */
|
|
|
|
|
hid_t group, group2; /* Group IDs */
|
|
|
|
|
hid_t dataset, dataset2; /* Dataset IDs */
|
|
|
|
|
hid_t space; /* Dataspace ID */
|
|
|
|
|
hid_t type; /* Datatype ID */
|
|
|
|
|
hid_t attr_space; /* Dataspace ID for attributes */
|
|
|
|
|
hid_t attr; /* Attribute ID */
|
|
|
|
|
char filename[1024]; /* Name of file to create */
|
|
|
|
|
char objname[128]; /* Name of object to create */
|
|
|
|
|
hsize_t dims[FILESPACE_NDIMS]= {FILESPACE_DIM0, FILESPACE_DIM1, FILESPACE_DIM2}; /* Dataset dimensions */
|
|
|
|
|
hsize_t chunk_dims[FILESPACE_NDIMS]= {FILESPACE_CHUNK0, FILESPACE_CHUNK1, FILESPACE_CHUNK2}; /* Chunk dimensions */
|
|
|
|
|
hsize_t attr_dims[FILESPACE_ATTR_NDIMS]= {FILESPACE_ATTR_DIM0, FILESPACE_ATTR_DIM1}; /* Attribute dimensions */
|
2005-11-15 10:55:39 +08:00
|
|
|
|
int *data = NULL; /* Pointer to dataset buffer */
|
2003-04-14 19:22:10 +08:00
|
|
|
|
int *tmp_data; /* Temporary pointer to dataset buffer */
|
2006-11-08 04:19:41 +08:00
|
|
|
|
h5_stat_size_t empty_size; /* Size of an empty file */
|
|
|
|
|
h5_stat_size_t file_size; /* Size of each file created */
|
2003-06-19 04:45:26 +08:00
|
|
|
|
herr_t status; /* Function status return value */
|
2003-04-14 19:22:10 +08:00
|
|
|
|
unsigned u,v,w; /* Local index variables */
|
|
|
|
|
|
|
|
|
|
/* Metadata cache parameters */
|
|
|
|
|
int mdc_nelmts;
|
|
|
|
|
size_t rdcc_nelmts;
|
|
|
|
|
size_t rdcc_nbytes;
|
|
|
|
|
double rdcc_w0;
|
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
puts("Testing file space gets reused:");
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Open file */
|
|
|
|
|
h5_fixname(FILENAME[4], fapl, filename, sizeof filename);
|
|
|
|
|
|
|
|
|
|
/* Create FAPL with raw data cache disabled */
|
|
|
|
|
/* Create file access property list with raw data cache disabled */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if ((fapl_nocache=H5Pcopy(fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the cache settings */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Pget_cache(fapl_nocache,&mdc_nelmts,&rdcc_nelmts,&rdcc_nbytes,&rdcc_w0) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Disable the raw data cache */
|
|
|
|
|
rdcc_nelmts=0;
|
|
|
|
|
rdcc_nbytes=0;
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Pset_cache(fapl_nocache,mdc_nelmts,rdcc_nelmts,rdcc_nbytes,rdcc_w0) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create empty file for size comparisons later */
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Fclose(file) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of an empty file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((empty_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create common objects for datasets */
|
|
|
|
|
|
|
|
|
|
/* Create dataset creation property list for contigous storage */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if ((contig_dcpl=H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Make certain that space is allocated early */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Pset_alloc_time(contig_dcpl, H5D_ALLOC_TIME_EARLY) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create dataset creation property list for chunked storage & early allocation */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if ((early_chunk_dcpl=H5Pcopy(contig_dcpl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Set chunk dimensions */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Pset_chunk(early_chunk_dcpl, FILESPACE_NDIMS, chunk_dims) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create dataset creation property list for chunked storage & late allocation */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if ((late_chunk_dcpl=H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Set chunk dimensions */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Pset_chunk(late_chunk_dcpl, FILESPACE_NDIMS, chunk_dims) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create dataset creation property list for compressed, chunked storage & early allocation */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if ((comp_dcpl=H5Pcopy(early_chunk_dcpl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
/* Enable compression & set level */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Pset_deflate(comp_dcpl, FILESPACE_DEFLATE_LEVEL) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create dataset creation property list for compact storage */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if ((compact_dcpl=H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Set to compact storage */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Pset_layout(compact_dcpl, H5D_COMPACT) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create dataspace for datasets */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if((space = H5Screate_simple(FILESPACE_NDIMS, dims, NULL)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create buffer for writing dataset */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if(NULL == (data = (int *)HDmalloc(sizeof(int) * FILESPACE_DIM0 * FILESPACE_DIM1 * FILESPACE_DIM2))) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single dataset (with contiguous storage & late allocation), remove it & verify file size */
|
|
|
|
|
TESTING(" contiguous dataset with late allocation");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single dataset (with contiguous storage & early allocation), remove it & verify file size */
|
|
|
|
|
TESTING(" contiguous dataset with early allocation");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, contig_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single dataset (with chunked storage & late allocation), remove it & verify file size */
|
|
|
|
|
TESTING(" chunked dataset with late allocation");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, late_chunk_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single dataset (with chunked storage & early allocation), remove it & verify file size */
|
|
|
|
|
TESTING(" chunked dataset with early allocation");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, early_chunk_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single dataset (with compressed storage & early allocation), remove it & verify file size */
|
|
|
|
|
TESTING(" compressed, chunked dataset");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, comp_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single dataset (with compressed storage & early allocation), re-write it a bunch of
|
|
|
|
|
* times (which should re-allocate blocks many times) and remove it & verify
|
|
|
|
|
* file size.
|
|
|
|
|
*/
|
|
|
|
|
TESTING(" re-writing compressed, chunked dataset");
|
|
|
|
|
|
|
|
|
|
/* Create file (using FAPL with disabled raw data cache) */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_nocache)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, comp_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Alternate re-writing dataset with compressible & random data */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
for(u = 0; u < FILESPACE_REWRITE; u++) {
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Set buffer to some compressible values */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
for(v = 0, tmp_data = data; v < (FILESPACE_DIM0 * FILESPACE_DIM1 * FILESPACE_DIM2); v++)
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
*tmp_data++ = (int)(v * u);
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Write the buffer to the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Set buffer to different random numbers each time */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
for(v = 0, tmp_data = data; v < (FILESPACE_DIM0 * FILESPACE_DIM1 * FILESPACE_DIM2); v++)
|
2004-04-18 12:10:09 +08:00
|
|
|
|
*tmp_data++ = (int)HDrandom();
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Write the buffer to the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl_nocache)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single dataset (with compact storage), remove it & verify file size */
|
|
|
|
|
TESTING(" compact dataset");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, compact_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create two datasets (with contiguous storage), alternate adding attributes
|
|
|
|
|
* to each one (which creates many object header continuations),
|
|
|
|
|
* remove both & verify file size.
|
|
|
|
|
*/
|
|
|
|
|
TESTING(" object header continuations");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create datasets to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, contig_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if((dataset2 = H5Dcreate2(file, DATASET2NAME, H5T_NATIVE_INT, space, H5P_DEFAULT, contig_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a dataspace for the attributes */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((attr_space = H5Screate_simple(FILESPACE_ATTR_NDIMS, attr_dims, NULL)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Alternate adding attributes to each one */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
for(u = 0; u < FILESPACE_NATTR; u++) {
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Set the name of the attribute to create */
|
|
|
|
|
sprintf(objname,"%s %u",ATTRNAME,u);
|
|
|
|
|
|
|
|
|
|
/* Create an attribute on the first dataset */
|
[svn-r14218] Description:
Changed H5Acreate2 -> H5Acreate_by_name, to be more consistent with
other new API routines.
Re-added simpler form of H5Acreate2, which creates attributes directly
on an object.
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-31 02:13:48 +08:00
|
|
|
|
if((attr = H5Acreate2(dataset, objname, H5T_NATIVE_INT, attr_space, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Don't worry about writing the attribute - it will have a fill value */
|
|
|
|
|
|
|
|
|
|
/* Close the attribute on the first dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Aclose(attr) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create an attribute on the second dataset */
|
[svn-r14218] Description:
Changed H5Acreate2 -> H5Acreate_by_name, to be more consistent with
other new API routines.
Re-added simpler form of H5Acreate2, which creates attributes directly
on an object.
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-31 02:13:48 +08:00
|
|
|
|
if((attr = H5Acreate2(dataset2, objname, H5T_NATIVE_INT, attr_space, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Don't worry about writing the attribute - it will have a fill value */
|
|
|
|
|
|
|
|
|
|
/* Close the attribute on the second dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Aclose(attr) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Flush the file (to fix the sizes of object header buffers, etc) */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fflush(file,H5F_SCOPE_GLOBAL) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close the dataspace for the attributes */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Sclose(attr_space) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close datasets */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(dataset2) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the datasets */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(file, DATASET2NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single named datatype, remove it & verify file size */
|
|
|
|
|
TESTING(" named datatype");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create datatype to commit */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((type = H5Tcopy(H5T_NATIVE_INT)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
/* Create a single named datatype to remove */
|
[svn-r14156] Description:
Add API versioning to H5Tcommit()
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 2.6 (smirom) 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
AIX/32 5.3 (copper) w/FORTRAN, w/parallel, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-09-26 10:50:31 +08:00
|
|
|
|
if(H5Tcommit2(file, TYPENAME, type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Tclose(type) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the named datatype */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, TYPENAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create single group, remove it & verify file size */
|
|
|
|
|
TESTING(" single group");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single group to remove */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((group = H5Gcreate2(file, GROUPNAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, GROUPNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create many groups, remove them & verify file size */
|
|
|
|
|
TESTING(" multiple groups");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a many groups to remove */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
for(u = 0; u < UNLINK_NGROUPS; u++) {
|
|
|
|
|
sprintf(objname, "%s %u", GROUPNAME, u);
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((group = H5Gcreate2(file, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Remove the all the groups */
|
2005-11-15 10:55:39 +08:00
|
|
|
|
/* (Remove them in reverse order just to make file size calculation easier -QAK) */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
for(u = UNLINK_NGROUPS; u > 0; u--) {
|
|
|
|
|
sprintf(objname, "%s %u", GROUPNAME, (u - 1));
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, objname, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create simple group hiearchy, remove it & verify file size */
|
|
|
|
|
TESTING(" simple group hierarchy");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Create a small group hierarchy to remove */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((group = H5Gcreate2(file, GROUPNAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if((group2 = H5Gcreate2(group, GROUP2NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(group2) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the second group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, GROUPNAME "/" GROUP2NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the first group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, GROUPNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create complex group hiearchy, remove it & verify file size */
|
|
|
|
|
TESTING(" complex group hierarchy");
|
|
|
|
|
|
[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
|
|
|
|
/* Create file */
|
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2007-02-13 00:15:13 +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
|
|
|
|
/* Create a complex group hierarchy to remove */
|
|
|
|
|
for(u = 0; u < FILESPACE_TOP_GROUPS; u++) {
|
|
|
|
|
/* Create group */
|
|
|
|
|
sprintf(objname,"%s %u",GROUPNAME,u);
|
|
|
|
|
if((group = H5Gcreate2(file, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +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
|
|
|
|
/* Create nested groups inside top groups */
|
|
|
|
|
for(v = 0; v < FILESPACE_NESTED_GROUPS; v++) {
|
2003-04-14 19:22:10 +08:00
|
|
|
|
/* Create group */
|
[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
|
|
|
|
sprintf(objname, "%s %u", GROUP2NAME, v);
|
|
|
|
|
if((group2 = H5Gcreate2(group, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Create datasets inside nested groups */
|
|
|
|
|
for(w = 0; w < FILESPACE_NDATASETS; w++) {
|
|
|
|
|
/* Create & close a dataset */
|
|
|
|
|
sprintf(objname, "%s %u", DATASETNAME, w);
|
|
|
|
|
if((dataset = H5Dcreate2(group2, objname, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* 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
|
|
|
|
/* Close nested group */
|
|
|
|
|
if(H5Gclose(group2) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* 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
|
|
|
|
/* Close top group */
|
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Remove complex group hierarchy */
|
|
|
|
|
/* (Remove them in reverse order just to make file size calculation easier -QAK) */
|
|
|
|
|
for(u = FILESPACE_TOP_GROUPS; u > 0; u--) {
|
|
|
|
|
/* Open group */
|
|
|
|
|
sprintf(objname, "%s %u", GROUPNAME, (u - 1));
|
|
|
|
|
if((group = H5Gopen2(file, objname, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Open nested groups inside top groups */
|
|
|
|
|
for(v = 0; v < FILESPACE_NESTED_GROUPS; v++) {
|
|
|
|
|
/* Create group */
|
|
|
|
|
sprintf(objname, "%s %u", GROUP2NAME, v);
|
|
|
|
|
if((group2 = H5Gopen2(group, objname, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
|
|
|
|
|
/* Remove datasets inside nested groups */
|
|
|
|
|
for(w = 0; w < FILESPACE_NDATASETS; w++) {
|
|
|
|
|
/* Remove dataset */
|
|
|
|
|
sprintf(objname, "%s %u", DATASETNAME, w);
|
|
|
|
|
if(H5Ldelete(group2, objname, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* 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
|
|
|
|
/* Close nested group */
|
|
|
|
|
if(H5Gclose(group2) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +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
|
|
|
|
/* Remove nested group */
|
|
|
|
|
sprintf(objname, "%s %u",GROUP2NAME, v);
|
|
|
|
|
if(H5Ldelete(group, objname, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
} /* 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
|
|
|
|
/* Close top group */
|
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +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
|
|
|
|
/* Remove top group */
|
|
|
|
|
sprintf(objname, "%s %u", GROUPNAME, (u - 1));
|
|
|
|
|
if(H5Ldelete(file, objname, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
} /* end for */
|
2003-06-19 04:45:26 +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
|
|
|
|
/* Close file */
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +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
|
|
|
|
/* Get the size of the file */
|
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
|
|
|
|
|
|
|
|
|
PASSED();
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
/* Create dataset and duplicate dataset, remove original & verify file size */
|
|
|
|
|
TESTING(" duplicate dataset");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single dataset to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create another dataset with same name */
|
|
|
|
|
H5E_BEGIN_TRY {
|
[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
|
|
|
|
dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
2003-06-19 04:45:26 +08:00
|
|
|
|
} H5E_END_TRY;
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(dataset >= 0) {
|
2003-06-19 04:45:26 +08:00
|
|
|
|
H5Dclose(dataset);
|
2006-10-02 18:24:03 +08:00
|
|
|
|
TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
/* Create group and duplicate group, remove original & verify file size */
|
|
|
|
|
TESTING(" duplicate group");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single group to remove */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((group = H5Gcreate2(file, GROUPNAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create another group with same name */
|
|
|
|
|
H5E_BEGIN_TRY {
|
2007-08-24 04:25:25 +08:00
|
|
|
|
group = H5Gcreate2(file, GROUPNAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
2003-06-19 04:45:26 +08:00
|
|
|
|
} H5E_END_TRY;
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(group >= 0) {
|
2003-06-19 04:45:26 +08:00
|
|
|
|
H5Gclose(group);
|
2006-10-02 18:24:03 +08:00
|
|
|
|
TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Remove the group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, GROUPNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
/* Create named datatype and duplicate named datatype, remove original & verify file size */
|
|
|
|
|
TESTING(" duplicate named datatype");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create datatype to commit */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((type = H5Tcopy(H5T_NATIVE_INT)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create a single named datatype to remove */
|
[svn-r14156] Description:
Add API versioning to H5Tcommit()
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 2.6 (smirom) 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
AIX/32 5.3 (copper) w/FORTRAN, w/parallel, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-09-26 10:50:31 +08:00
|
|
|
|
if(H5Tcommit2(file, TYPENAME, type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Tclose(type) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create datatype to commit */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((type = H5Tcopy(H5T_NATIVE_INT)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create another named datatype with same name */
|
|
|
|
|
H5E_BEGIN_TRY {
|
[svn-r14156] Description:
Add API versioning to H5Tcommit()
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 2.6 (smirom) 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
AIX/32 5.3 (copper) w/FORTRAN, w/parallel, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-09-26 10:50:31 +08:00
|
|
|
|
status = H5Tcommit2(file, TYPENAME, type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
2003-06-19 04:45:26 +08:00
|
|
|
|
} H5E_END_TRY;
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(status >= 0) TEST_ERROR
|
|
|
|
|
if(H5Tclose(type) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the named datatype */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, TYPENAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
/* Create named datatype and duplicate named datatype, remove original & verify file size */
|
|
|
|
|
TESTING(" duplicate attribute");
|
|
|
|
|
|
|
|
|
|
/* Create file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create datasets to remove */
|
[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((dataset = H5Dcreate2(file, DATASETNAME, H5T_NATIVE_INT, space, H5P_DEFAULT, contig_dcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create a dataspace for the attributes */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((attr_space = H5Screate_simple(FILESPACE_ATTR_NDIMS, attr_dims, NULL)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create an attribute on the dataset */
|
[svn-r14218] Description:
Changed H5Acreate2 -> H5Acreate_by_name, to be more consistent with
other new API routines.
Re-added simpler form of H5Acreate2, which creates attributes directly
on an object.
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-31 02:13:48 +08:00
|
|
|
|
if((attr = H5Acreate2(dataset, ATTRNAME, H5T_NATIVE_INT, attr_space, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Don't worry about writing the attribute - it will have a fill value */
|
|
|
|
|
|
|
|
|
|
/* Close the attribute on the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Aclose(attr) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Create another attribute with same name */
|
|
|
|
|
H5E_BEGIN_TRY {
|
[svn-r14218] Description:
Changed H5Acreate2 -> H5Acreate_by_name, to be more consistent with
other new API routines.
Re-added simpler form of H5Acreate2, which creates attributes directly
on an object.
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-31 02:13:48 +08:00
|
|
|
|
attr = H5Acreate2(dataset, ATTRNAME, H5T_NATIVE_INT, attr_space, H5P_DEFAULT, H5P_DEFAULT);
|
2003-06-19 04:45:26 +08:00
|
|
|
|
} H5E_END_TRY;
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(attr >= 0) {
|
2003-06-19 04:45:26 +08:00
|
|
|
|
H5Aclose(attr);
|
2006-10-02 18:24:03 +08:00
|
|
|
|
TEST_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Close the dataspace for the attributes */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Sclose(attr_space) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Close dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dataset) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Remove the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Close file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
2003-06-19 04:45:26 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(file_size != empty_size) TEST_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
|
2007-08-30 04:44:19 +08:00
|
|
|
|
|
2003-06-19 04:45:26 +08:00
|
|
|
|
/* Cleanup common objects */
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Release dataset buffer */
|
|
|
|
|
HDfree(data);
|
|
|
|
|
|
|
|
|
|
/* Close property lists */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Pclose(fapl_nocache) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(contig_dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(early_chunk_dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(late_chunk_dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(comp_dcpl) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pclose(compact_dcpl) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Close dataspace */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
|
2003-04-14 19:22:10 +08:00
|
|
|
|
|
|
|
|
|
/* Indicate success */
|
|
|
|
|
/* Don't print final "PASSED", since we aren't on the correct line anymore */
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
2005-11-15 10:55:39 +08:00
|
|
|
|
/* Release dataset buffer */
|
|
|
|
|
if(data)
|
|
|
|
|
HDfree(data);
|
|
|
|
|
|
2003-04-14 19:22:10 +08:00
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_filespace() */
|
|
|
|
|
|
2003-04-12 00:37:18 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_create_unlink
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Creates and then unlinks a large number of objects
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Friday, April 11, 2003
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2007-08-24 04:25:25 +08:00
|
|
|
|
static int
|
|
|
|
|
test_create_unlink(const char *msg, hid_t fapl)
|
2003-04-12 00:37:18 +08:00
|
|
|
|
{
|
|
|
|
|
hid_t file, group;
|
|
|
|
|
unsigned u;
|
|
|
|
|
char groupname[1024];
|
|
|
|
|
char filename[1024];
|
|
|
|
|
|
|
|
|
|
TESTING(msg);
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2003-04-12 00:37:18 +08:00
|
|
|
|
/* Create file */
|
|
|
|
|
h5_fixname(FILENAME[3], fapl, filename, sizeof filename);
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
|
|
|
|
|
FAIL_PUTS_ERROR(" Creating file failed")
|
2003-04-12 00:37:18 +08:00
|
|
|
|
|
|
|
|
|
/* Create a many groups to remove */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
for(u = 0; u < UNLINK_NGROUPS; u++) {
|
|
|
|
|
sprintf(groupname, "%s %u", GROUPNAME, u);
|
2007-08-24 04:25:25 +08:00
|
|
|
|
if((group = H5Gcreate2(file, groupname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
|
2003-04-12 00:37:18 +08:00
|
|
|
|
H5_FAILED();
|
2006-10-02 18:24:03 +08:00
|
|
|
|
printf("group %s creation failed\n", groupname);
|
2003-04-12 00:37:18 +08:00
|
|
|
|
goto error;
|
2006-10-02 18:24:03 +08:00
|
|
|
|
} /* end if */
|
|
|
|
|
if(H5Gclose (group) < 0) {
|
2003-04-12 00:37:18 +08:00
|
|
|
|
H5_FAILED();
|
2006-10-02 18:24:03 +08:00
|
|
|
|
printf("closing group %s failed\n", groupname);
|
2003-04-12 00:37:18 +08:00
|
|
|
|
goto error;
|
2006-10-02 18:24:03 +08:00
|
|
|
|
} /* end if */
|
2003-04-12 00:37:18 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Remove the all the groups */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
for(u = 0; u < UNLINK_NGROUPS; u++) {
|
|
|
|
|
sprintf(groupname, "%s %u", GROUPNAME, u);
|
|
|
|
|
if(H5Ldelete(file, groupname, H5P_DEFAULT) < 0) {
|
2003-04-12 00:37:18 +08:00
|
|
|
|
H5_FAILED();
|
2006-10-02 18:24:03 +08:00
|
|
|
|
printf("Unlinking group %s failed\n", groupname);
|
2003-04-12 00:37:18 +08:00
|
|
|
|
goto error;
|
2006-10-02 18:24:03 +08:00
|
|
|
|
} /* end if */
|
2003-04-12 00:37:18 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close file */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Fclose(file) < 0)
|
|
|
|
|
FAIL_PUTS_ERROR("Closing file failed")
|
2003-04-12 00:37:18 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
2004-07-15 03:08:34 +08:00
|
|
|
|
return 1;
|
2003-04-12 00:37:18 +08:00
|
|
|
|
} /* end test_create_unlink() */
|
|
|
|
|
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_link_slashes
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests creating links with various multiple & trailing slashes
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Saturday, August 16, 2003
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_link_slashes(hid_t fapl)
|
2003-08-17 02:54:40 +08:00
|
|
|
|
{
|
|
|
|
|
hid_t fid; /* File ID */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
hid_t gid, gid2; /* Group ID */
|
2003-08-17 02:54:40 +08:00
|
|
|
|
char filename[1024];
|
|
|
|
|
|
|
|
|
|
TESTING("creating links with multiple slashes");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2003-08-17 02:54:40 +08:00
|
|
|
|
/* Create file */
|
|
|
|
|
h5_fixname(FILENAME[5], fapl, filename, sizeof filename);
|
|
|
|
|
|
|
|
|
|
/* Create a file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Create a group in the root group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid = H5Gcreate2(fid, SLASHES_GROUP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Create a nested group in the root group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid2 = H5Gcreate2(gid, SLASHES_GROUP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Close the nested group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(gid2) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Create a hard link to the nested group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_hard(gid, SLASHES_GROUP_NAME, H5L_SAME_LOC, SLASHES_HARDLINK_NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Create a soft link with a relative path to the nested group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_soft(SLASHES_GROUP_NAME, gid, SLASHES_SOFTLINK_NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Create a soft link with the full path to the nested group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_soft("////"SLASHES_GROUP_NAME""SLASHES_GROUP_NAME, gid, SLASHES_SOFTLINK2_NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Create a soft link to the root group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_soft("////", gid, SLASHES_ROOTLINK_NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Close the group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Create a hard link to the existing group */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_hard(fid, SLASHES_GROUP_NAME, H5L_SAME_LOC, SLASHES_HARDLINK_NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Fclose(fid) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
2004-07-15 03:08:34 +08:00
|
|
|
|
return 1;
|
2003-08-17 02:54:40 +08:00
|
|
|
|
} /* end test_link_slashes() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_unlink_slashes
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests deleting links with various multiple & trailing slashes
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Saturday, August 16, 2003
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_unlink_slashes(hid_t fapl)
|
2003-08-17 02:54:40 +08:00
|
|
|
|
{
|
|
|
|
|
hid_t fid; /* File ID */
|
|
|
|
|
hid_t gid; /* Group ID */
|
|
|
|
|
char filename[1024];
|
|
|
|
|
|
|
|
|
|
TESTING("deleting links with multiple slashes");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2003-08-17 02:54:40 +08:00
|
|
|
|
/* Create file */
|
|
|
|
|
h5_fixname(FILENAME[5], fapl, filename, sizeof filename);
|
|
|
|
|
|
|
|
|
|
/* Open the file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((fid = H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Open the top level group */
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((gid = H5Gopen2(fid, SLASHES_GROUP_NAME, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the root link */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(gid,SLASHES_ROOTLINK_NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the soft link with the full path */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(gid,SLASHES_SOFTLINK2_NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the soft link with the relative path */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(gid,SLASHES_SOFTLINK_NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the hard link */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(gid,SLASHES_HARDLINK_NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the group itself */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(gid,SLASHES_GROUP_NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Close the group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the hard link */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(fid,SLASHES_HARDLINK_NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the group itself */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(fid,SLASHES_GROUP_NAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Fclose(fid) < 0) TEST_ERROR
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
2004-07-15 03:08:34 +08:00
|
|
|
|
return 1;
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end test_unlink_slashes() */
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Helper routine for test_unlink_rightleaf()
|
|
|
|
|
*/
|
2007-08-30 04:44:19 +08:00
|
|
|
|
static int
|
|
|
|
|
delete_node(hid_t pid, hid_t id)
|
2004-01-20 02:48:48 +08:00
|
|
|
|
{
|
|
|
|
|
char name[256]; /* Name of object to close */
|
|
|
|
|
|
|
|
|
|
/* Get the name of the object to delete */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Iget_name(id, name, sizeof(name)) < 0) return (-1);
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Close the object */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(id) < 0) return(-1);
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Unlink the object */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(pid, name, H5P_DEFAULT) < 0) return(-1);
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* If this object is the right-most child, try opening the previous object */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(HDstrcmp(name,"/Zone81") == 0) {
|
2004-01-20 02:48:48 +08:00
|
|
|
|
hid_t gid;
|
|
|
|
|
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((gid = H5Gopen2(pid, "/Zone80", H5P_DEFAULT)) < 0) return(-1);
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Gclose(gid) < 0) return(-1);
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Indicate success */
|
|
|
|
|
return(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_unlink_rightleaf
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests deleting objects in a way that triggers deletion of the
|
|
|
|
|
* right child in the leaf of a non-leaf B-tree node
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Monday, January 19, 2004
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_unlink_rightleaf(hid_t fid)
|
|
|
|
|
{
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
hid_t rootid = -1, /* Group ID for root group */
|
|
|
|
|
*gids = NULL; /* Array of IDs for groups created */
|
2004-01-20 02:48:48 +08:00
|
|
|
|
int n, /* Local index variable */
|
|
|
|
|
ngroups = 150; /* Number of groups to create */
|
|
|
|
|
char name[256]; /* Name of object to create */
|
|
|
|
|
|
2006-01-24 04:46:34 +08:00
|
|
|
|
TESTING("deleting right-most child in non-leaf B-tree node");
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Allocate space for the group IDs */
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
if(NULL == (gids = (hid_t *)HDcalloc((size_t)ngroups, sizeof(hid_t)))) TEST_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((rootid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Create all the groups */
|
|
|
|
|
for (n = 0; n < ngroups; n++) {
|
|
|
|
|
sprintf(name, "Zone%d", n + 1);
|
2007-08-24 04:25:25 +08:00
|
|
|
|
if((gids[n] = H5Gcreate2(rootid, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Unlink & re-create each group */
|
|
|
|
|
for (n = 0; n < ngroups; n++) {
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(delete_node (rootid, gids[n]) < 0) TEST_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
sprintf(name, "Zone%d", n + 1);
|
2007-08-24 04:25:25 +08:00
|
|
|
|
if((gids[n] = H5Gcreate2(rootid, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close all the groups */
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
for (n = 0; n < ngroups; n++) {
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Gclose(gids[n]) < 0) TEST_ERROR
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
gids[n] = 0;
|
|
|
|
|
} /* end for */
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
2005-11-15 10:55:39 +08:00
|
|
|
|
/* Close root group ID */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5Gclose(rootid) < 0) TEST_ERROR
|
2005-11-15 10:55:39 +08:00
|
|
|
|
|
2004-01-20 02:48:48 +08:00
|
|
|
|
/* Free memory */
|
|
|
|
|
HDfree(gids);
|
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
if(gids) {
|
|
|
|
|
/* Close any open groups */
|
|
|
|
|
for (n = 0; n < ngroups; n++)
|
|
|
|
|
if(gids[n]) {
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(gids[n]);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
} /* end if */
|
|
|
|
|
HDfree(gids);
|
|
|
|
|
} /* end if */
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(rootid);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
|
2004-07-15 03:08:34 +08:00
|
|
|
|
return 1;
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end test_unlink_rightleaf() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_unlink_rightnode
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests deleting objects in a way that triggers deletion of the
|
|
|
|
|
* entire right child leaf of a non-leaf B-tree node
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Monday, January 19, 2004
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_unlink_rightnode(hid_t fid)
|
|
|
|
|
{
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
hid_t rootid = -1, /* Group ID for root group */
|
|
|
|
|
*gids = NULL; /* Array of IDs for groups created */
|
2004-01-20 02:48:48 +08:00
|
|
|
|
int n, /* Local index variable */
|
|
|
|
|
ngroups = 150; /* Number of groups to create */
|
|
|
|
|
char name[256]; /* Name of object to create */
|
|
|
|
|
|
2006-01-24 04:46:34 +08:00
|
|
|
|
TESTING("deleting right-most child in non-leaf B-tree node");
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Allocate space for the group IDs */
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
if(NULL == (gids = (hid_t *)HDcalloc((size_t)ngroups, sizeof(hid_t)))) TEST_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((rootid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Create all the groups */
|
|
|
|
|
for (n = 0; n < ngroups; n++) {
|
|
|
|
|
sprintf(name, "ZoneB%d", n + 1);
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((gids[n] = H5Gcreate2(rootid, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close all the groups */
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
for (n = 0; n < ngroups; n++) {
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(gids[n]) < 0) FAIL_STACK_ERROR
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
gids[n] = 0;
|
|
|
|
|
} /* end for */
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Unlink specific objects to trigger deletion of right leaf in non-leaf node */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(fid, "/ZoneB77", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneB78", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneB79", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneB8", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneB80", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
2005-11-15 10:55:39 +08:00
|
|
|
|
/* Close root group ID */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(rootid) < 0) FAIL_STACK_ERROR
|
2005-11-15 10:55:39 +08:00
|
|
|
|
|
2004-01-20 02:48:48 +08:00
|
|
|
|
/* Free memory */
|
|
|
|
|
HDfree(gids);
|
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
if(gids) {
|
|
|
|
|
/* Close any open groups */
|
|
|
|
|
for (n = 0; n < ngroups; n++)
|
|
|
|
|
if(gids[n]) {
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(gids[n]);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
} /* end if */
|
|
|
|
|
HDfree(gids);
|
|
|
|
|
} /* end if */
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(rootid);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
|
2004-07-15 03:08:34 +08:00
|
|
|
|
return 1;
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end test_unlink_rightnode() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_unlink_middlenode
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests deleting objects in a way that triggers deletion of all
|
|
|
|
|
* the leafs of a "middle" non-leaf B-tree node
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Monday, January 19, 2004
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
|
|
|
|
test_unlink_middlenode(hid_t fid)
|
|
|
|
|
{
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
hid_t rootid = -1, /* Group ID for root group */
|
|
|
|
|
*gids = NULL; /* Array of IDs for groups created */
|
2004-01-20 02:48:48 +08:00
|
|
|
|
int n, /* Local index variable */
|
|
|
|
|
ngroups = 250; /* Number of groups to create */
|
|
|
|
|
char name[256]; /* Name of object to create */
|
|
|
|
|
|
2006-01-24 04:46:34 +08:00
|
|
|
|
TESTING("deleting right-most child in non-leaf B-tree node");
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Allocate space for the group IDs */
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
if(NULL == (gids = (hid_t *)HDcalloc((size_t)ngroups, sizeof(hid_t)))) TEST_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((rootid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Create all the groups */
|
|
|
|
|
for (n = 0; n < ngroups; n++) {
|
|
|
|
|
sprintf(name, "ZoneC%d", n + 1);
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((gids[n] = H5Gcreate2(rootid, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close all the groups */
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
for (n = 0; n < ngroups; n++) {
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(gids[n]) < 0) FAIL_STACK_ERROR
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
gids[n] = 0;
|
|
|
|
|
} /* end for */
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
|
|
|
|
/* Unlink specific objects to trigger deletion of all leafs in "interior" non-leaf node */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(fid, "/ZoneC11", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC110", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC111", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC112", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC113", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC114", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC115", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC116", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC117", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC118", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC119", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC12", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC120", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC121", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC122", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC123", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC124", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC125", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC126", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC127", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC128", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC129", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC13", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC130", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC131", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC132", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC133", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC134", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC135", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC136", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC137", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC138", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC139", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC14", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC140", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC141", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC142", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC143", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC144", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC145", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC146", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC147", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC148", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC149", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC15", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC150", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC151", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC152", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC153", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC154", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC155", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC156", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC157", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC158", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC159", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC16", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC160", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC161", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC162", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC163", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC164", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC165", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC166", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC167", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC168", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC169", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC17", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC170", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC171", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC172", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC173", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC174", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC175", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC176", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC177", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC178", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC179", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC18", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC180", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC19", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC2", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC20", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC21", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC22", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC23", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC24", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC25", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC26", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC27", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC28", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC29", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC3", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC30", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC31", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC32", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC33", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC34", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC35", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC36", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC37", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC38", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC39", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC4", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC40", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC41", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC42", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC43", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC44", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC45", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC46", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC47", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC48", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC49", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC5", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC50", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC51", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC52", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC53", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC54", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC55", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC56", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC57", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC58", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC59", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC6", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC60", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC61", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC62", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC63", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC64", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC65", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC66", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC67", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC68", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC69", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC7", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC70", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC71", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC72", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC73", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC74", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC75", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC76", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC77", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC78", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC79", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC8", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Ldelete(fid, "/ZoneC80", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2004-01-20 02:48:48 +08:00
|
|
|
|
|
2005-11-15 10:55:39 +08:00
|
|
|
|
/* Close root group ID */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Gclose(rootid) < 0) FAIL_STACK_ERROR
|
2005-11-15 10:55:39 +08:00
|
|
|
|
|
2004-01-20 02:48:48 +08:00
|
|
|
|
/* Free memory */
|
|
|
|
|
HDfree(gids);
|
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
if(gids) {
|
|
|
|
|
/* Close any open groups */
|
|
|
|
|
for (n = 0; n < ngroups; n++)
|
|
|
|
|
if(gids[n]) {
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(gids[n]);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
} /* end if */
|
|
|
|
|
HDfree(gids);
|
|
|
|
|
} /* end if */
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(rootid);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
|
2004-07-15 03:08:34 +08:00
|
|
|
|
return 1;
|
2004-01-20 02:48:48 +08:00
|
|
|
|
} /* end test_unlink_middlenode() */
|
2003-08-17 02:54:40 +08:00
|
|
|
|
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_resurrect_dataset
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests deleting a dataset while its still open and then
|
|
|
|
|
* "resurrecting" it by creating a link to it again.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Wednesday, July 14, 2004
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_resurrect_dataset(hid_t fapl)
|
2004-07-15 03:08:34 +08:00
|
|
|
|
{
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
hid_t f = -1, s = -1, d = -1;
|
2004-07-15 03:08:34 +08:00
|
|
|
|
char filename[1024];
|
|
|
|
|
|
2006-01-24 04:46:34 +08:00
|
|
|
|
TESTING("resurrecting dataset after deletion");
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/* Create file */
|
|
|
|
|
h5_fixname(FILENAME[6], fapl, filename, sizeof filename);
|
|
|
|
|
|
|
|
|
|
/* Create the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((f = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/* Create a dataset in the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((s = H5Screate(H5S_SCALAR)) < 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((d = H5Dcreate2(f, DATASETNAME, H5T_NATIVE_INT, s, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Sclose(s) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/* Unlink the dataset while it's open (will mark it for deletion when closed) */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(f, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
/* Check that dataset name is NULL */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Iget_name(d, NULL, (size_t)0) != 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
2004-07-15 03:08:34 +08:00
|
|
|
|
/* Re-link the dataset to the group hierarchy (shouldn't get deleted now) */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_hard(d, ".", f, DATASET2NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/* Close things */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Dclose(d) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(f) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((f = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/* Attempt to open the dataset under the new name */
|
[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((d = H5Dopen2(f, DATASET2NAME, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
/* Close things */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Dclose(d) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(f) < 0) FAIL_STACK_ERROR
|
2004-07-15 03:08:34 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Sclose(s);
|
|
|
|
|
H5Dclose(d);
|
|
|
|
|
H5Fclose(f);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_resurrect_dataset() */
|
|
|
|
|
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_resurrect_datatype
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests deleting a datatype while it's still open and then
|
|
|
|
|
* "resurrecting" it by creating a link to it again.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: James Laird
|
|
|
|
|
* Wednesday, July 28, 2004
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_resurrect_datatype(hid_t fapl)
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
{
|
2007-08-29 05:31:57 +08:00
|
|
|
|
hid_t file = -1, type = -1;
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
char filename[1024];
|
|
|
|
|
|
2006-01-24 04:46:34 +08:00
|
|
|
|
TESTING("resurrecting datatype after deletion");
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Create file */
|
|
|
|
|
h5_fixname(FILENAME[7], fapl, filename, sizeof filename);
|
|
|
|
|
|
|
|
|
|
/* Create the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Create a named datatype in the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((type = H5Tcopy (H5T_NATIVE_INT)) < 0) FAIL_STACK_ERROR
|
[svn-r14156] Description:
Add API versioning to H5Tcommit()
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 2.6 (smirom) 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
AIX/32 5.3 (copper) w/FORTRAN, w/parallel, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-09-26 10:50:31 +08:00
|
|
|
|
if(H5Tcommit2(file, TYPENAME, type, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Unlink the datatype while it's open (will mark it for deletion when closed) */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, TYPENAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Check that datatype name is NULL */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Iget_name(type, NULL, (size_t)0) != 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Re-link the datatype to the group hierarchy (shouldn't get deleted now) */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_hard(type, ".", file, TYPE2NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Close things */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Tclose(type) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Attempt to open the datatype under the new name */
|
[svn-r14160] Description:
Make H5Topen versioned, and add regression test for H5Topen1.
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 2.6 (smirom) 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
AIX/32 5.3 (copper) w/FORTRAN, w/parallel, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
2007-09-28 04:28:27 +08:00
|
|
|
|
if((type = H5Topen2(file,TYPE2NAME, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Close things */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Tclose(type) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Tclose(type);
|
|
|
|
|
H5Fclose(file);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_resurrect_datatype() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_resurrect_group
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Tests deleting a group while it's still open and then
|
|
|
|
|
* "resurrecting" it by creating a link to it again.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: James Laird
|
|
|
|
|
* Wednesday, July 28, 2004
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_resurrect_group(hid_t fapl)
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
{
|
2007-08-29 05:31:57 +08:00
|
|
|
|
hid_t file = -1, group = -1;
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
char filename[1024];
|
|
|
|
|
|
2006-01-24 04:46:34 +08:00
|
|
|
|
TESTING("resurrecting group after deletion");
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Create file */
|
|
|
|
|
h5_fixname(FILENAME[8], fapl, filename, sizeof filename);
|
|
|
|
|
|
|
|
|
|
/* Create the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Create a group in the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((group = H5Gcreate2(file, GROUPNAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Unlink the group while it's open (will mark it for deletion when closed) */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file, GROUPNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Check that group's name is NULL */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Iget_name(group, NULL, (size_t)0) != 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Re-link the group into the group hierarchy (shouldn't get deleted now) */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_hard(group, ".", file, GROUP2NAME, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Close things */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Attempt to open the datatype under the new name */
|
2007-08-28 23:02:54 +08:00
|
|
|
|
if((group = H5Gopen2(file, GROUP2NAME, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
/* Close things */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
|
[svn-r9329]
Purpose:
Feature
Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets. These objects will hold a file open if the file
is closed but they have not yet been closed. If these objects are unlinked
then relinked, they will not be destroyed. If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).
Solution:
Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct. The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file. The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip.
Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena
Misc. update:
2004-09-29 03:04:19 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(group);
|
|
|
|
|
H5Fclose(file);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_resurrect_group() */
|
|
|
|
|
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_unlink_chunked_dataset
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Purpose: Tests deleting a chunked dataset
|
2004-09-28 02:06:11 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Monday, September 27, 2004
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_unlink_chunked_dataset(hid_t fapl)
|
2004-09-28 02:06:11 +08:00
|
|
|
|
{
|
2007-08-30 04:44:19 +08:00
|
|
|
|
hid_t file_id = -1;
|
|
|
|
|
hid_t dset_id = -1;
|
|
|
|
|
hid_t space_id = -1;
|
|
|
|
|
hid_t dcpl_id = -1;
|
|
|
|
|
hsize_t dims[FILESPACE_NDIMS] = {FILESPACE_DIM0, FILESPACE_DIM1, FILESPACE_DIM2};
|
|
|
|
|
hsize_t max_dims[FILESPACE_NDIMS] = {H5S_UNLIMITED, H5S_UNLIMITED, H5S_UNLIMITED};
|
|
|
|
|
hsize_t chunk_dims[FILESPACE_NDIMS] = {FILESPACE_CHUNK0, FILESPACE_CHUNK1, FILESPACE_CHUNK2};
|
2004-09-28 02:06:11 +08:00
|
|
|
|
char filename[1024];
|
|
|
|
|
|
2006-01-24 04:46:34 +08:00
|
|
|
|
TESTING("unlinking chunked dataset");
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Create file */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
h5_fixname(FILENAME[9], fapl, filename, sizeof filename);
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Create the file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Create the dataspace */
|
[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((space_id = H5Screate_simple(FILESPACE_NDIMS, dims, max_dims)) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Create the dataset creation filter */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((dcpl_id = H5Pcreate(H5P_DATASET_CREATE)) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Set to chunked storage */
|
[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(H5Pset_chunk(dcpl_id, FILESPACE_NDIMS, chunk_dims) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Set to early space allocation */
|
[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(H5Pset_alloc_time(dcpl_id, H5D_ALLOC_TIME_EARLY) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Create the 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
|
|
|
|
if((dset_id = H5Dcreate2(file_id, DATASETNAME, H5T_NATIVE_INT, space_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Close the dataspace */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Sclose(space_id) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Close the dataset creation property list */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Pclose(dcpl_id) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Close the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Dclose(dset_id) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if((file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the dataset */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file_id, DATASETNAME, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2004-09-28 02:06:11 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Pclose(dcpl_id);
|
|
|
|
|
H5Sclose(space_id);
|
|
|
|
|
H5Dclose(dset_id);
|
|
|
|
|
H5Fclose(file_id);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_unlink_chunked_dataset() */
|
|
|
|
|
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_full_group_compact
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Test deleting a compact group which still has valid objects in it
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Wednesday, January 18, 2006
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_full_group_compact(hid_t fapl)
|
2006-08-03 07:41:53 +08:00
|
|
|
|
{
|
|
|
|
|
hid_t file_id = -1;
|
|
|
|
|
hid_t gid = -1, gid2 = -1; /* Group IDs */
|
2007-09-13 23:44:56 +08:00
|
|
|
|
H5O_info_t oi; /* Stat buffer for object */
|
2006-08-03 07:41:53 +08:00
|
|
|
|
char objname[128]; /* Buffer for name of objects to create */
|
|
|
|
|
char objname2[128]; /* Buffer for name of objects to create */
|
|
|
|
|
char filename[1024]; /* Buffer for filename */
|
2006-11-08 04:19:41 +08:00
|
|
|
|
h5_stat_size_t keep_size; /* Size of the file with objects to keep */
|
|
|
|
|
h5_stat_size_t file_size; /* Size of each file created */
|
2006-08-03 07:41:53 +08:00
|
|
|
|
unsigned u; /* Local index variable */
|
|
|
|
|
|
|
|
|
|
TESTING("unlinking non-empty compact group");
|
|
|
|
|
|
2006-10-02 18:24:03 +08:00
|
|
|
|
/* Create filename */
|
|
|
|
|
h5_fixname(FILENAME[10], fapl, filename, sizeof filename);
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create group to link objects to */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid = H5Gcreate2(file_id, "/keep", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create several objects to link to */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "keep %u\n", u);
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid2 = H5Gcreate2(gid, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(gid2) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close group with objects to keep */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file with only the objects to keep */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((keep_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create group to delete */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid = H5Gcreate2(file_id, "/delete", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create external link (doesn't matter if it dangles) */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_external("foo.h5", "/dst", gid, "external", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create soft link (doesn't matter if it dangles) */
|
2007-08-29 05:49:12 +08:00
|
|
|
|
if(H5Lcreate_soft("/foo", gid, "soft", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create hard links to objects in group to keep */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "/keep/keep %u\n", u);
|
|
|
|
|
sprintf(objname2, "keep %u\n", u);
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_hard(file_id, objname, gid, objname2, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Create several objects to delete */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_DELETE_COMPACT; u++) {
|
|
|
|
|
sprintf(objname, "delete %u\n", u);
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid2 = H5Gcreate2(gid, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(gid2) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Check on group's status */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
|
|
|
|
|
if(H5G_has_links_test(gid, NULL) != TRUE) TEST_ERROR
|
|
|
|
|
if(H5G_has_stab_test(gid) == TRUE) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Close group with objects to delete */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Check reference count on objects to keep */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "/keep/keep %u\n", u);
|
[svn-r14225] Description:
Change H5Oget_info -> H5Oget_info_by_name and re-add H5Oget_info in a
simpler form for querying a particular object, to align with other new API
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-31 21:13:40 +08:00
|
|
|
|
if(H5Oget_info_by_name(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if(oi.rc != 2) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the full group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file_id, "/delete", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Check reference count on objects to keep */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "/keep/keep %u\n", u);
|
[svn-r14225] Description:
Change H5Oget_info -> H5Oget_info_by_name and re-add H5Oget_info in a
simpler form for querying a particular object, to align with other new API
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-31 21:13:40 +08:00
|
|
|
|
if(H5Oget_info_by_name(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if(oi.rc != 1) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
|
|
|
|
if(file_size != keep_size) TEST_ERROR
|
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(gid2);
|
|
|
|
|
H5Gclose(gid);
|
|
|
|
|
H5Fclose(file_id);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_full_group_compact() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: test_full_group_dense
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Test deleting a dense group which still has valid objects in it
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: 0
|
|
|
|
|
* Failure: number of errors
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Wednesday, January 18, 2006
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static int
|
2006-10-02 18:24:03 +08:00
|
|
|
|
test_full_group_dense(hid_t fapl)
|
2006-08-03 07:41:53 +08:00
|
|
|
|
{
|
|
|
|
|
hid_t file_id = -1;
|
2006-10-02 18:24:03 +08:00
|
|
|
|
hid_t gcpl = (-1); /* Group creation property list ID */
|
2006-08-03 07:41:53 +08:00
|
|
|
|
hid_t gid = -1, gid2 = -1; /* Group IDs */
|
2007-09-13 23:44:56 +08:00
|
|
|
|
H5O_info_t oi; /* Stat buffer for object */
|
2006-08-03 07:41:53 +08:00
|
|
|
|
char objname[128]; /* Buffer for name of objects to create */
|
|
|
|
|
char objname2[128]; /* Buffer for name of objects to create */
|
|
|
|
|
char filename[1024]; /* Buffer for filename */
|
2006-11-08 04:19:41 +08:00
|
|
|
|
h5_stat_size_t keep_size; /* Size of the file with objects to keep */
|
|
|
|
|
h5_stat_size_t file_size; /* Size of each file created */
|
2006-08-03 07:41:53 +08:00
|
|
|
|
unsigned u; /* Local index variable */
|
|
|
|
|
|
|
|
|
|
TESTING("unlinking non-empty dense group");
|
|
|
|
|
|
2006-10-02 18:24:03 +08:00
|
|
|
|
/* Create filename */
|
|
|
|
|
h5_fixname(FILENAME[10], fapl, filename, sizeof filename);
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create group to link objects to */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid = H5Gcreate2(file_id, "/keep", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create several objects to link to */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "keep %u\n", u);
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid2 = H5Gcreate2(gid, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(gid2) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close group with objects to keep */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
2006-10-02 18:24:03 +08:00
|
|
|
|
/* Close the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
|
|
|
|
/* Get the size of the file with only the objects to keep */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((keep_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) FAIL_STACK_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
|
|
|
|
/* Set group creation "est. link info" closer to what will actually occur */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gcpl = H5Pcreate(H5P_GROUP_CREATE)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Pset_est_link_info(gcpl, FULL_GROUP_EST_NUM_ENTRIES, FULL_GROUP_EST_ENTRY_LEN) < 0) FAIL_STACK_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
2006-08-03 07:41:53 +08:00
|
|
|
|
/* Create group to delete */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
/* (use non-default GCPL, in order to make certain that the group's object
|
|
|
|
|
* header is large enough to hold the links inserted without allocating
|
|
|
|
|
* another object header message chunk - in order to make the file size
|
|
|
|
|
* computation below easier/correct - QAK)
|
|
|
|
|
*/
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid = H5Gcreate2(file_id, "/delete", H5P_DEFAULT, gcpl, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
|
|
|
|
/* Close GCPL */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Pclose(gcpl) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create external link (doesn't matter if it dangles) */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_external("foo.h5", "/dst", gid, "external", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create soft link (doesn't matter if it dangles) */
|
2007-08-29 05:49:12 +08:00
|
|
|
|
if(H5Lcreate_soft("/foo", gid, "soft", H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Create hard links to objects in group to keep */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "/keep/keep %u\n", u);
|
|
|
|
|
sprintf(objname2, "keep %u\n", u);
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Lcreate_hard(file_id, objname, gid, objname2, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Create several objects to delete */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_DELETE_DENSE; u++) {
|
|
|
|
|
sprintf(objname, "delete %u\n", u);
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((gid2 = H5Gcreate2(gid, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
|
|
|
|
|
if(H5Gclose(gid2) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Check on group's status */
|
2006-10-02 18:24:03 +08:00
|
|
|
|
if(H5G_is_empty_test(gid) == TRUE) TEST_ERROR
|
|
|
|
|
if(H5G_has_links_test(gid, NULL) == TRUE) TEST_ERROR
|
|
|
|
|
if(H5G_is_new_dense_test(gid) != TRUE) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Close group with objects to delete */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Check reference count on objects to keep */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "/keep/keep %u\n", u);
|
[svn-r14225] Description:
Change H5Oget_info -> H5Oget_info_by_name and re-add H5Oget_info in a
simpler form for querying a particular object, to align with other new API
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-31 21:13:40 +08:00
|
|
|
|
if(H5Oget_info_by_name(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if(oi.rc != 2) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Re-open the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if((file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Delete the full group */
|
2007-08-30 04:44:19 +08:00
|
|
|
|
if(H5Ldelete(file_id, "/delete", H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
/* Check reference count on objects to keep */
|
|
|
|
|
for(u = 0; u < FULL_GROUP_NUM_KEEP; u++) {
|
|
|
|
|
sprintf(objname, "/keep/keep %u\n", u);
|
[svn-r14225] Description:
Change H5Oget_info -> H5Oget_info_by_name and re-add H5Oget_info in a
simpler form for querying a particular object, to align with other new API
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-31 21:13:40 +08:00
|
|
|
|
if(H5Oget_info_by_name(file_id, objname, &oi, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
|
2007-09-13 23:44:56 +08:00
|
|
|
|
if(oi.rc != 1) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close the file */
|
2007-08-29 05:31:57 +08:00
|
|
|
|
if(H5Fclose(file_id) < 0) FAIL_STACK_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
2006-10-02 18:24:03 +08:00
|
|
|
|
/* Get the size of the file */
|
[svn-r15825] Description:
Fix various problems with a the core & sec2 VFDs.
Improve the h5_get_file_size() routine to handle files created with
VFDs that use multiple files.
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-09 11:44:22 +08:00
|
|
|
|
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
|
|
|
|
/* Verify the file is correct size */
|
|
|
|
|
if(file_size != keep_size) TEST_ERROR
|
2006-08-03 07:41:53 +08:00
|
|
|
|
|
|
|
|
|
PASSED();
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
H5E_BEGIN_TRY {
|
|
|
|
|
H5Gclose(gid2);
|
|
|
|
|
H5Gclose(gid);
|
2006-10-02 18:24:03 +08:00
|
|
|
|
H5Pclose(gcpl);
|
2006-08-03 07:41:53 +08:00
|
|
|
|
H5Fclose(file_id);
|
|
|
|
|
} H5E_END_TRY;
|
|
|
|
|
return 1;
|
|
|
|
|
} /* end test_full_group_dense() */
|
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: main
|
|
|
|
|
*
|
2007-08-30 04:44:19 +08:00
|
|
|
|
* Purpose: Test unlinking operations
|
1998-10-06 21:16:04 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Success: zero
|
|
|
|
|
*
|
|
|
|
|
* Failure: non-zero
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Friday, September 25, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
int
|
|
|
|
|
main(void)
|
|
|
|
|
{
|
[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
|
|
|
|
hid_t fapl, fapl2, file;
|
|
|
|
|
int nerrors = 0;
|
|
|
|
|
char filename[1024];
|
|
|
|
|
hbool_t new_format;
|
|
|
|
|
|
|
|
|
|
/* Metadata cache parameters */
|
|
|
|
|
int mdc_nelmts;
|
|
|
|
|
size_t rdcc_nelmts;
|
|
|
|
|
size_t rdcc_nbytes;
|
|
|
|
|
double rdcc_w0;
|
|
|
|
|
|
|
|
|
|
/* Set the random # seed */
|
[svn-r17980] Description:
Bring Coverity changes into the trunk: (also other minor cleanups)
r17955:
Fix Coverity item 24. Add missing error condition to
H5AC_ext_config_2_int_config.
r17956:
Fix Coverity item 24. Improve error checking in H5A_compact_build_table_cb.
r17957:
Fix Coverity item 150. Fix warning in H5A_compact_build_table_cb.
r17958:
Fix Coverity item 117. Fix error handling in H5B_shared_new.
r17959:
Fix Coverity item 209. Added an assertion for leaf->shared in
H5B2_cache_leaf_dest.
r17960:
Fix Coverity item 208. Added an assertion for internal->shared in
H5B2_cache_internal_dest.
r17961:
Fix Coverity item 89. Reworked the code to avoid array overrun in
H5C__autoadjust__ageout__insert_new_marker.
r17962:
Fix for coverity Resource_leak 195,203,204,205.
r17963:
Fix Coverity item 44. Prevented potential NULL dereference in H5D_btree_debug.
r17964:
Fix Coverity issues #197, 198 & 199: memory not being released. (Also
clean up other resource leaks in nearby and/or similar code).
r17965:
Fix Coverity issue #151: release resources on error
r17966:
Fix Coverity issue #187: Remove leftover code remnant from prior bugfix
which was causing resource leak of open files.
r17967:
Fixed Coverity issues # 193 & 194. Removed unnecessary memory allocation and
added comparison of length of path parameter to the size of the destination
buffer in h5import.h/h5import.c.
r17968:
Fix Coverity item 144. Fixed memory leak on error in H5D_chunk_copy.
r17969:
Fix for coverity Resource_leak #196.
r17970:
Coverity 167-173:
Initialized pointer of buffers.
In error handling, closed types and free memory.
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-10 20:36:56 +08:00
|
|
|
|
HDsrandom((unsigned)HDtime(NULL));
|
[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
|
|
|
|
|
|
|
|
|
/* Open */
|
|
|
|
|
h5_reset();
|
|
|
|
|
fapl = h5_fileaccess();
|
|
|
|
|
|
|
|
|
|
/* Copy the file access property list */
|
|
|
|
|
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
|
2006-10-02 18:24:03 +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
|
|
|
|
/* Set the "use the latest version of the format" bounds for creating objects in the file */
|
|
|
|
|
if(H5Pset_libver_bounds(fapl2, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) TEST_ERROR
|
2006-10-11 04:36:33 +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
|
|
|
|
/* Test with old & new format groups */
|
|
|
|
|
for(new_format = FALSE; new_format <= TRUE; new_format++) {
|
|
|
|
|
hid_t my_fapl;
|
2006-08-03 07:41:53 +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
|
|
|
|
/* Set the FAPL for the type of format */
|
|
|
|
|
if(new_format) {
|
|
|
|
|
puts("\nTesting with new group format:");
|
|
|
|
|
my_fapl = fapl2;
|
|
|
|
|
} /* end if */
|
|
|
|
|
else {
|
|
|
|
|
puts("Testing with old group format:");
|
|
|
|
|
my_fapl = fapl;
|
|
|
|
|
} /* end else */
|
|
|
|
|
|
|
|
|
|
h5_fixname(FILENAME[0], my_fapl, filename, sizeof filename);
|
|
|
|
|
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, my_fapl)) < 0) TEST_ERROR
|
|
|
|
|
|
|
|
|
|
/* Tests */
|
|
|
|
|
nerrors += test_one(file);
|
|
|
|
|
nerrors += test_many(file);
|
|
|
|
|
nerrors += test_symlink(file);
|
|
|
|
|
nerrors += test_rename(file);
|
|
|
|
|
|
|
|
|
|
nerrors += test_new_move(my_fapl);
|
|
|
|
|
nerrors += check_new_move(my_fapl);
|
|
|
|
|
nerrors += test_filespace(my_fapl);
|
|
|
|
|
|
|
|
|
|
/* Test creating & unlinking lots of objects with default FAPL */
|
|
|
|
|
nerrors += test_create_unlink("create and unlink large number of objects", my_fapl);
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
hid_t fapl_small_mdc;
|
|
|
|
|
|
|
|
|
|
/* Make copy of regular fapl, to turn down the elements in the metadata cache */
|
|
|
|
|
if((fapl_small_mdc = H5Pcopy(my_fapl)) < 0)
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
|
|
/* Get FAPL cache settings */
|
|
|
|
|
if(H5Pget_cache(fapl_small_mdc, &mdc_nelmts, &rdcc_nelmts, &rdcc_nbytes, &rdcc_w0) < 0)
|
|
|
|
|
printf("H5Pget_cache failed\n");
|
|
|
|
|
|
|
|
|
|
/* Change FAPL cache settings */
|
|
|
|
|
mdc_nelmts=1;
|
|
|
|
|
if(H5Pset_cache(fapl_small_mdc, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0) < 0)
|
|
|
|
|
printf("H5Pset_cache failed\n");
|
|
|
|
|
|
|
|
|
|
/* Test creating & unlinking lots of objects with a 1-element metadata cache FAPL */
|
|
|
|
|
nerrors += test_create_unlink("create and unlink large number of objects with small cache", fapl_small_mdc);
|
|
|
|
|
|
|
|
|
|
if(H5Pclose(fapl_small_mdc) < 0) TEST_ERROR
|
|
|
|
|
} /* end block */
|
|
|
|
|
|
|
|
|
|
nerrors += test_link_slashes(my_fapl);
|
|
|
|
|
nerrors += test_unlink_slashes(my_fapl);
|
|
|
|
|
|
|
|
|
|
/* Test specific B-tree removal issues */
|
|
|
|
|
/* (only for old format groups) */
|
|
|
|
|
if(!new_format) {
|
|
|
|
|
nerrors += test_unlink_rightleaf(file);
|
|
|
|
|
nerrors += test_unlink_rightnode(file);
|
|
|
|
|
nerrors += test_unlink_middlenode(file);
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Test "resurrecting" objects */
|
|
|
|
|
nerrors += test_resurrect_dataset(my_fapl);
|
|
|
|
|
nerrors += test_resurrect_datatype(my_fapl);
|
|
|
|
|
nerrors += test_resurrect_group(my_fapl);
|
|
|
|
|
|
|
|
|
|
/* Test unlinking chunked datasets */
|
|
|
|
|
nerrors += test_unlink_chunked_dataset(my_fapl);
|
|
|
|
|
|
|
|
|
|
/* Test unlinked groups which still have objects in them */
|
|
|
|
|
/* (only for new format groups) */
|
|
|
|
|
if(new_format) {
|
|
|
|
|
nerrors += test_full_group_compact(my_fapl);
|
|
|
|
|
nerrors += test_full_group_dense(my_fapl);
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
/* Close */
|
|
|
|
|
if(H5Fclose(file) < 0) TEST_ERROR
|
|
|
|
|
} /* end for */
|
|
|
|
|
|
|
|
|
|
/* Close 2nd FAPL */
|
|
|
|
|
H5Pclose(fapl2);
|
|
|
|
|
|
2011-04-16 06:05:23 +08:00
|
|
|
|
/* Verify symbol table messages are cached */
|
|
|
|
|
nerrors += (h5_verify_cached_stabs(FILENAME, fapl) < 0 ? 1 : 0);
|
|
|
|
|
|
[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
|
|
|
|
if (nerrors) {
|
|
|
|
|
printf("***** %d FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S");
|
|
|
|
|
exit(1);
|
2006-08-01 03:46:16 +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
|
|
|
|
|
|
|
|
|
puts("All unlink tests passed.");
|
|
|
|
|
|
|
|
|
|
h5_cleanup(FILENAME, fapl);
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|
1998-10-06 21:16:04 +08:00
|
|
|
|
return 0;
|
2006-08-01 03:46:16 +08:00
|
|
|
|
|
2006-10-02 18:24:03 +08:00
|
|
|
|
error:
|
|
|
|
|
return 1;
|
1998-10-06 21:16:04 +08:00
|
|
|
|
}
|
2006-10-02 18:24:03 +08:00
|
|
|
|
|