[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
This commit is contained in:
Quincey Koziol 2008-10-14 20:46:34 -05:00
parent bea2e1790d
commit 0e51a4244e
21 changed files with 2140 additions and 2225 deletions

View File

@ -167,15 +167,25 @@ H5MF_init_merge_flags(H5F_t *f)
/* Based on mapping type, initialize merging flags for each free list type */
switch(mapping_type) {
case H5MF_AGGR_MERGE_SEPARATE:
/* Don't merge any metadata together */
HDmemset(f->shared->fs_aggr_merge, 0, sizeof(f->shared->fs_aggr_merge));
/* Check if merging raw data should be allowed */
if(H5FD_MEM_DRAW == f->shared->fs_type_map[H5FD_MEM_DRAW] ||
H5FD_MEM_DEFAULT == f->shared->fs_type_map[H5FD_MEM_DRAW])
f->shared->fs_aggr_merge[H5FD_MEM_DRAW] = H5F_FS_MERGE_RAWDATA;
break;
case H5MF_AGGR_MERGE_DICHOTOMY:
/* Merge all metadata together (but not raw data) */
HDmemset(f->shared->fs_aggr_merge, H5F_FS_MERGE_METADATA, sizeof(f->shared->fs_aggr_merge));
/* Allow merging raw data allocations together */
f->shared->fs_aggr_merge[H5FD_MEM_DRAW] = H5F_FS_MERGE_RAWDATA;
break;
case H5MF_AGGR_MERGE_TOGETHER:
/* Merge all allocation types together */
HDmemset(f->shared->fs_aggr_merge, (H5F_FS_MERGE_METADATA | H5F_FS_MERGE_RAWDATA), sizeof(f->shared->fs_aggr_merge));
break;
} /* end switch */

View File

@ -477,16 +477,21 @@ H5MF_sect_simple_free(H5FS_section_info_t *_sect)
*/
static herr_t
H5MF_sect_simple_valid(const H5FS_section_class_t UNUSED *cls,
const H5FS_section_info_t *_sect)
const H5FS_section_info_t
#ifdef NDEBUG
UNUSED
#endif /* NDEBUG */
*_sect)
{
#ifndef NDEBUG
const H5MF_free_section_t *sect = (const H5MF_free_section_t *)_sect; /* File free section */
#endif /* NDEBUG */
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5MF_sect_simple_valid)
/* Check arguments. */
HDassert(sect);
FUNC_LEAVE_NOAPI(SUCCEED)
} /* H5MF_sect_simple_valid() */

View File

@ -6327,6 +6327,71 @@ error:
return 1;
} /* test_remove_level2_collapse_right() */
/*-------------------------------------------------------------------------
* Function: gen_l4_btree2
*
* Purpose: Generate a level-4 v2 B-tree for testing.
*
* Return: Success: 0
* Failure: 1
*
* Programmer: Quincey Koziol
* Tuesday, October 14, 2008
*
*-------------------------------------------------------------------------
*/
static unsigned
gen_l4_btree2(const char *filename, hid_t fapl, haddr_t *bt2_addr,
const hsize_t *records)
{
hid_t file = -1;
H5F_t *f = NULL;
hsize_t record; /* Record to insert into tree */
unsigned u; /* Local index variable */
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
/* Create the file to work on */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
STACK_ERROR
/* Get a pointer to the internal file object */
if(NULL == (f = (H5F_t *)H5I_object(file)))
STACK_ERROR
/*
* Create v2 B-tree
*/
if(H5B2_create(f, H5P_DATASET_XFER_DEFAULT, H5B2_TEST, 512, 8, 100, 40, bt2_addr/*out*/) < 0)
FAIL_STACK_ERROR
/* Insert random records */
for(u = 0; u < INSERT_MANY; u++) {
record = records[u];
if(H5B2_insert(f, H5P_DATASET_XFER_DEFAULT, H5B2_TEST, *bt2_addr, &record) < 0)
FAIL_STACK_ERROR
} /* end for */
/* Check up on B-tree */
if(H5B2_stat_info(f, H5P_DATASET_XFER_DEFAULT, H5B2_TEST, *bt2_addr, &bt2_stat) < 0)
FAIL_STACK_ERROR
if(bt2_stat.depth != 4)
TEST_ERROR
/* Close file */
if(H5Fclose(file) < 0)
STACK_ERROR
return 0;
error:
H5E_BEGIN_TRY {
H5Fclose(file);
} H5E_END_TRY;
return 1;
} /* gen_l4_btree2() */
/*-------------------------------------------------------------------------
* Function: test_remove_lots
@ -6344,7 +6409,7 @@ error:
*-------------------------------------------------------------------------
*/
static unsigned
test_remove_lots(hid_t fapl)
test_remove_lots(const char *env_h5_drvr, hid_t fapl)
{
hid_t file = -1;
char filename[1024];
@ -6360,8 +6425,8 @@ test_remove_lots(hid_t fapl)
hsize_t *records; /* Record #'s for random insertion */
unsigned u; /* Local index variable */
unsigned rem_idx; /* Location to remove */
H5B2_stat_t bt2_stat; /* Statistics about B-tree created */
hsize_t nrec; /* Number of records in B-tree */
hbool_t single_file_vfd; /* Whether VFD used stores data in a single file */
/* Initialize random number seed */
curr_time = HDtime(NULL);
@ -6396,62 +6461,36 @@ HDfprintf(stderr, "curr_time = %lu\n", (unsigned long)curr_time);
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
/* Create the file to work on */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
STACK_ERROR
/* Get a pointer to the internal file object */
if(NULL == (f = (H5F_t *)H5I_object(file)))
STACK_ERROR
/*
* Create v2 B-tree
*/
if(H5B2_create(f, H5P_DATASET_XFER_DEFAULT, H5B2_TEST, 512, 8, 100, 40, &bt2_addr/*out*/) < 0)
FAIL_STACK_ERROR
/* Insert random records */
for(u = 0; u < INSERT_MANY; u++) {
record = records[u];
if(H5B2_insert(f, H5P_DATASET_XFER_DEFAULT, H5B2_TEST, bt2_addr, &record) < 0)
FAIL_STACK_ERROR
} /* end for */
/* Check up on B-tree */
if(H5B2_stat_info(f, H5P_DATASET_XFER_DEFAULT, H5B2_TEST, bt2_addr, &bt2_stat) < 0)
FAIL_STACK_ERROR
if(bt2_stat.depth != 4)
/* Generate the v2 B-tree to test */
if(gen_l4_btree2(filename, fapl, &bt2_addr, records))
TEST_ERROR
/* Close file */
if(H5Fclose(file) < 0)
STACK_ERROR
/* Check for VFD which stores data in multiple files */
single_file_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi") && HDstrcmp(env_h5_drvr, "family"));
if(single_file_vfd) {
/* Make a copy of the file in memory, in order to speed up deletion testing */
/* Open the file just created */
if((fd = HDopen(filename, O_RDONLY, 0)) < 0)
TEST_ERROR
/* Make a copy of the file in memory, in order to speed up deletion testing */
/* Retrieve the file's size */
if(HDfstat(fd, &sb) < 0)
TEST_ERROR
/* Open the file just created */
if((fd = HDopen(filename, O_RDONLY, 0)) < 0)
TEST_ERROR
/* Retrieve the file's size */
if(HDfstat(fd, &sb) < 0)
TEST_ERROR
/* Allocate space for the file data */
if(NULL == (file_data = HDmalloc((size_t)sb.st_size)))
TEST_ERROR
/* Read file's data into memory */
if(HDread(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
/* Allocate space for the file data */
if(NULL == (file_data = HDmalloc((size_t)sb.st_size)))
TEST_ERROR
/* Read file's data into memory */
if(HDread(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
} /* end if */
/* Print banner for this test */
TESTING("B-tree remove: create random level 4 B-tree and delete all records in random order");
@ -6511,21 +6550,28 @@ HDfprintf(stderr, "curr_time = %lu\n", (unsigned long)curr_time);
/* Re-write the file's data with the copy in memory */
/* Check for VFD which stores data in multiple files */
if(single_file_vfd) {
/* Re-write the file's data with the copy in memory */
/* Open the file just created */
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
TEST_ERROR
/* Open the file just created */
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
TEST_ERROR
/* Write file's data from memory */
if(HDwrite(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
/* Write file's data from memory */
if(HDwrite(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
} /* end if */
else {
/* Re-generate the v2 B-tree to test */
if(gen_l4_btree2(filename, fapl, &bt2_addr, records))
TEST_ERROR
} /* end else */
/* Print banner for this test */
@ -6578,20 +6624,28 @@ HDfprintf(stderr, "curr_time = %lu\n", (unsigned long)curr_time);
/* Re-write the file's data with the copy in memory */
/* Check for VFD which stores data in multiple files */
if(single_file_vfd) {
/* Re-write the file's data with the copy in memory */
/* Open the file just created */
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
TEST_ERROR
/* Open the file just created */
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
TEST_ERROR
/* Write file's data from memory */
if(HDwrite(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Write file's data from memory */
if(HDwrite(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
} /* end if */
else {
/* Re-generate the v2 B-tree to test */
if(gen_l4_btree2(filename, fapl, &bt2_addr, records))
TEST_ERROR
} /* end else */
@ -6642,20 +6696,28 @@ HDfprintf(stderr, "curr_time = %lu\n", (unsigned long)curr_time);
/* Re-write the file's data with the copy in memory */
/* Check for VFD which stores data in multiple files */
if(single_file_vfd) {
/* Re-write the file's data with the copy in memory */
/* Open the file just created */
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
TEST_ERROR
/* Open the file just created */
if((fd = HDopen(filename, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
TEST_ERROR
/* Write file's data from memory */
if(HDwrite(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Write file's data from memory */
if(HDwrite(fd, file_data, (size_t)sb.st_size) < (ssize_t)sb.st_size)
TEST_ERROR
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
/* Close the file */
if(HDclose(fd) < 0)
TEST_ERROR
fd = -1;
} /* end if */
else {
/* Re-generate the v2 B-tree to test */
if(gen_l4_btree2(filename, fapl, &bt2_addr, records))
TEST_ERROR
} /* end else */
@ -6704,8 +6766,10 @@ HDfprintf(stderr, "curr_time = %lu\n", (unsigned long)curr_time);
PASSED();
HDfree(records);
HDfree(file_data);
if(records)
HDfree(records);
if(file_data)
HDfree(file_data);
return 0;
@ -6716,8 +6780,10 @@ error:
if(fd > 0)
HDclose(fd);
HDfree(records);
HDfree(file_data);
if(records)
HDfree(records);
if(file_data)
HDfree(file_data);
return 1;
} /* test_remove_lots() */
@ -7432,79 +7498,76 @@ main(void)
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) {
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
ExpressMode = GetTestExpress();
if (ExpressMode > 1)
printf("***Express test mode on. Some tests may be skipped\n");
/* Test B-tree record insertion */
/* Iteration, find & index routines tested in these routines as well */
nerrors += test_insert_basic(fapl);
nerrors += test_insert_split_root(fapl);
nerrors += test_insert_level1_2leaf_redistrib(fapl);
nerrors += test_insert_level1_side_split(fapl);
nerrors += test_insert_level1_3leaf_redistrib(fapl);
nerrors += test_insert_level1_middle_split(fapl);
nerrors += test_insert_make_level2(fapl);
nerrors += test_insert_level2_leaf_redistrib(fapl);
nerrors += test_insert_level2_leaf_split(fapl);
nerrors += test_insert_level2_2internal_redistrib(fapl);
nerrors += test_insert_level2_2internal_split(fapl);
nerrors += test_insert_level2_3internal_redistrib(fapl);
nerrors += test_insert_level2_3internal_split(fapl);
if (ExpressMode > 1)
printf("***Express test mode on. test_insert_lots skipped\n");
else
nerrors += test_insert_lots(fapl);
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
ExpressMode = GetTestExpress();
if (ExpressMode > 1)
printf("***Express test mode on. Some tests may be skipped\n");
/* Test B-tree record removal */
/* Querying the number of records routine also tested in these routines as well */
nerrors += test_remove_basic(fapl);
nerrors += test_remove_level1_noredistrib(fapl);
nerrors += test_remove_level1_redistrib(fapl);
nerrors += test_remove_level1_2leaf_merge(fapl);
nerrors += test_remove_level1_3leaf_merge(fapl);
nerrors += test_remove_level1_promote(fapl);
nerrors += test_remove_level1_promote_2leaf_redistrib(fapl);
nerrors += test_remove_level1_promote_3leaf_redistrib(fapl);
nerrors += test_remove_level1_promote_2leaf_merge(fapl);
nerrors += test_remove_level1_promote_3leaf_merge(fapl);
nerrors += test_remove_level1_collapse(fapl);
nerrors += test_remove_level2_promote(fapl);
nerrors += test_remove_level2_promote_2internal_redistrib(fapl);
nerrors += test_remove_level2_promote_3internal_redistrib(fapl);
nerrors += test_remove_level2_promote_2internal_merge(fapl);
nerrors += test_remove_level2_promote_3internal_merge(fapl);
nerrors += test_remove_level2_2internal_merge_left(fapl);
nerrors += test_remove_level2_2internal_merge_right(fapl);
nerrors += test_remove_level2_3internal_merge(fapl);
nerrors += test_remove_level2_collapse_right(fapl);
if (ExpressMode > 1)
printf("***Express test mode on. test_remove_lots skipped\n");
else
nerrors += test_remove_lots(fapl);
/* Test more complex B-tree queries */
nerrors += test_find_neighbor(fapl);
/* Test deleting B-trees */
nerrors += test_delete(fapl);
/* Test modifying B-tree records */
nerrors += test_modify(fapl);
if(nerrors)
goto error;
puts("All v2 B-tree tests passed.");
h5_cleanup(FILENAME, fapl);
} /* end if */
/* Test B-tree record insertion */
/* Iteration, find & index routines tested in these routines as well */
nerrors += test_insert_basic(fapl);
nerrors += test_insert_split_root(fapl);
nerrors += test_insert_level1_2leaf_redistrib(fapl);
nerrors += test_insert_level1_side_split(fapl);
nerrors += test_insert_level1_3leaf_redistrib(fapl);
nerrors += test_insert_level1_middle_split(fapl);
nerrors += test_insert_make_level2(fapl);
nerrors += test_insert_level2_leaf_redistrib(fapl);
nerrors += test_insert_level2_leaf_split(fapl);
nerrors += test_insert_level2_2internal_redistrib(fapl);
nerrors += test_insert_level2_2internal_split(fapl);
nerrors += test_insert_level2_3internal_redistrib(fapl);
nerrors += test_insert_level2_3internal_split(fapl);
if (ExpressMode > 1)
printf("***Express test mode on. test_insert_lots skipped\n");
else
puts("All v2 B-tree tests skipped - Incompatible with current Virtual File Driver");
nerrors += test_insert_lots(fapl);
/* Test B-tree record removal */
/* Querying the number of records routine also tested in these routines as well */
nerrors += test_remove_basic(fapl);
nerrors += test_remove_level1_noredistrib(fapl);
nerrors += test_remove_level1_redistrib(fapl);
nerrors += test_remove_level1_2leaf_merge(fapl);
nerrors += test_remove_level1_3leaf_merge(fapl);
nerrors += test_remove_level1_promote(fapl);
nerrors += test_remove_level1_promote_2leaf_redistrib(fapl);
nerrors += test_remove_level1_promote_3leaf_redistrib(fapl);
nerrors += test_remove_level1_promote_2leaf_merge(fapl);
nerrors += test_remove_level1_promote_3leaf_merge(fapl);
nerrors += test_remove_level1_collapse(fapl);
nerrors += test_remove_level2_promote(fapl);
nerrors += test_remove_level2_promote_2internal_redistrib(fapl);
nerrors += test_remove_level2_promote_3internal_redistrib(fapl);
nerrors += test_remove_level2_promote_2internal_merge(fapl);
nerrors += test_remove_level2_promote_3internal_merge(fapl);
nerrors += test_remove_level2_2internal_merge_left(fapl);
nerrors += test_remove_level2_2internal_merge_right(fapl);
nerrors += test_remove_level2_3internal_merge(fapl);
nerrors += test_remove_level2_collapse_right(fapl);
if (ExpressMode > 1)
printf("***Express test mode on. test_remove_lots skipped\n");
else
nerrors += test_remove_lots(envval, fapl);
/* Test more complex B-tree queries */
nerrors += test_find_neighbor(fapl);
/* Test deleting B-trees */
nerrors += test_delete(fapl);
/* Test modifying B-tree records */
nerrors += test_modify(fapl);
if(nerrors)
goto error;
puts("All v2 B-tree tests passed.");
h5_cleanup(FILENAME, fapl);
return 0;

View File

@ -355,7 +355,7 @@ test_create(hid_t file)
*-------------------------------------------------------------------------
*/
static herr_t
test_simple_io(hid_t fapl)
test_simple_io(const char *env_h5_drvr, hid_t fapl)
{
char filename[FILENAME_BUF_SIZE];
hid_t file, dataset, space, xfer;
@ -368,83 +368,91 @@ test_simple_io(hid_t fapl)
TESTING("simple I/O");
h5_fixname(FILENAME[4], fapl, filename, sizeof filename);
/* Can't run this test with multi-file VFDs */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi") && HDstrcmp(env_h5_drvr, "family")) {
h5_fixname(FILENAME[4], fapl, filename, sizeof filename);
/* Initialize the dataset */
for(i = n = 0; i < DSET_DIM1; i++)
for(j = 0; j < DSET_DIM2; j++)
points[i][j] = n++;
/* Initialize the dataset */
for(i = n = 0; i < DSET_DIM1; i++)
for(j = 0; j < DSET_DIM2; j++)
points[i][j] = n++;
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
goto error;
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
goto error;
/* Create the data space */
dims[0] = DSET_DIM1;
dims[1] = DSET_DIM2;
if((space = H5Screate_simple(2, dims, NULL)) < 0) goto error;
/* Create the data space */
dims[0] = DSET_DIM1;
dims[1] = DSET_DIM2;
if((space = H5Screate_simple(2, dims, NULL)) < 0) goto error;
/* Create a small conversion buffer to test strip mining */
tconv_buf = HDmalloc((size_t)1000);
xfer = H5Pcreate(H5P_DATASET_XFER);
assert(xfer>=0);
if(H5Pset_buffer (xfer, (size_t)1000, tconv_buf, NULL) < 0) goto error;
/* Create a small conversion buffer to test strip mining */
tconv_buf = HDmalloc((size_t)1000);
xfer = H5Pcreate(H5P_DATASET_XFER);
assert(xfer>=0);
if(H5Pset_buffer (xfer, (size_t)1000, tconv_buf, NULL) < 0) goto error;
/* Create the dataset */
if((dataset = H5Dcreate2(file, DSET_SIMPLE_IO_NAME, H5T_NATIVE_INT, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error;
/* Create the dataset */
if((dataset = H5Dcreate2(file, DSET_SIMPLE_IO_NAME, H5T_NATIVE_INT, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error;
/* Test dataset address. Should be undefined. */
if(H5Dget_offset(dataset) != HADDR_UNDEF) goto error;
/* Test dataset address. Should be undefined. */
if(H5Dget_offset(dataset) != HADDR_UNDEF) goto error;
/* Write the data to the dataset */
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, xfer, points) < 0)
goto error;
/* Write the data to the dataset */
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, xfer, points) < 0)
goto error;
/* Test dataset address in file. Open the same file as a C file, seek
* the data position as H5Dget_offset points to, read the dataset, and
* compare it with the data written in.*/
if((offset=H5Dget_offset(dataset))==HADDR_UNDEF) goto error;
/* Test dataset address in file. Open the same file as a C file, seek
* the data position as H5Dget_offset points to, read the dataset, and
* compare it with the data written in.*/
if((offset=H5Dget_offset(dataset))==HADDR_UNDEF) goto error;
/* Read the dataset back */
if(H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, xfer, check) < 0)
goto error;
/* Read the dataset back */
if(H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, xfer, check) < 0)
goto error;
/* Check that the values read are the same as the values written */
for(i = 0; i < DSET_DIM1; i++) {
for(j = 0; j < DSET_DIM2; j++) {
if(points[i][j] != check[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
}
}
}
/* Check that the values read are the same as the values written */
for(i = 0; i < DSET_DIM1; i++) {
for(j = 0; j < DSET_DIM2; j++) {
if(points[i][j] != check[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
}
}
}
if(H5Pclose (xfer) < 0) goto error;
if(H5Dclose(dataset) < 0) goto error;
if(H5Fclose(file) < 0) goto error;
if(H5Pclose (xfer) < 0) goto error;
if(H5Dclose(dataset) < 0) goto error;
if(H5Fclose(file) < 0) goto error;
f = HDopen(filename, O_RDONLY, 0);
HDlseek(f, (off_t)offset, SEEK_SET);
HDread(f, rdata, sizeof(int)*DSET_DIM1*DSET_DIM2);
f = HDopen(filename, O_RDONLY, 0);
HDlseek(f, (off_t)offset, SEEK_SET);
HDread(f, rdata, sizeof(int)*DSET_DIM1*DSET_DIM2);
/* Check that the values read are the same as the values written */
for(i = 0; i < DSET_DIM1; i++) {
for(j = 0; j < DSET_DIM2; j++) {
if(points[i][j] != rdata[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
}
}
}
/* Check that the values read are the same as the values written */
for(i = 0; i < DSET_DIM1; i++) {
for(j = 0; j < DSET_DIM2; j++) {
if(points[i][j] != rdata[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
}
}
}
HDclose(f);
HDclose(f);
free (tconv_buf);
PASSED();
} /* end if */
else {
SKIPPED();
puts(" Current VFD doesn't support continuous address space");
} /* end else */
free (tconv_buf);
PASSED();
return 0;
error:
@ -469,7 +477,7 @@ error:
*-------------------------------------------------------------------------
*/
static herr_t
test_userblock_offset(hid_t fapl)
test_userblock_offset(const char *env_h5_drvr, hid_t fapl)
{
char filename[FILENAME_BUF_SIZE];
hid_t file, fcpl, dataset, space;
@ -481,54 +489,62 @@ test_userblock_offset(hid_t fapl)
TESTING("dataset offset with user block");
h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
/* Can't run this test with multi-file VFDs */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi") && HDstrcmp(env_h5_drvr, "family")) {
h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
if((fcpl=H5Pcreate(H5P_FILE_CREATE)) < 0) goto error;
if(H5Pset_userblock(fcpl, (hsize_t)USER_BLOCK) < 0) goto error;
if((fcpl=H5Pcreate(H5P_FILE_CREATE)) < 0) goto error;
if(H5Pset_userblock(fcpl, (hsize_t)USER_BLOCK) < 0) goto error;
if((file=H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
goto error;
if((file=H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
goto error;
/* Create the data space */
dims[0] = DSET_DIM1;
dims[1] = DSET_DIM2;
if((space = H5Screate_simple(2, dims, NULL)) < 0) goto error;
/* Create the data space */
dims[0] = DSET_DIM1;
dims[1] = DSET_DIM2;
if((space = H5Screate_simple(2, dims, NULL)) < 0) goto error;
/* Create the dataset */
if((dataset = H5Dcreate2(file, DSET_USERBLOCK_IO_NAME, H5T_NATIVE_INT, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error;
/* Create the dataset */
if((dataset = H5Dcreate2(file, DSET_USERBLOCK_IO_NAME, H5T_NATIVE_INT, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) goto error;
/* Write the data to the dataset */
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, points) < 0)
goto error;
/* Write the data to the dataset */
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, points) < 0)
goto error;
/* Test dataset address in file. Open the same file as a C file, seek
* the data position as H5Dget_offset points to, read the dataset, and
* compare it with the data written in.*/
if((offset = H5Dget_offset(dataset)) == HADDR_UNDEF) goto error;
/* Test dataset address in file. Open the same file as a C file, seek
* the data position as H5Dget_offset points to, read the dataset, and
* compare it with the data written in.*/
if((offset = H5Dget_offset(dataset)) == HADDR_UNDEF) goto error;
if(H5Dclose(dataset) < 0) goto error;
if(H5Fclose(file) < 0) goto error;
if(H5Dclose(dataset) < 0) goto error;
if(H5Fclose(file) < 0) goto error;
f = HDopen(filename, O_RDONLY, 0);
HDlseek(f, (off_t)offset, SEEK_SET);
HDread(f, rdata, sizeof(int)*DSET_DIM1*DSET_DIM2);
f = HDopen(filename, O_RDONLY, 0);
HDlseek(f, (off_t)offset, SEEK_SET);
HDread(f, rdata, sizeof(int)*DSET_DIM1*DSET_DIM2);
/* Check that the values read are the same as the values written */
for(i = 0; i < DSET_DIM1; i++) {
for(j = 0; j < DSET_DIM2; j++) {
if(points[i][j] != rdata[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
}
}
}
/* Check that the values read are the same as the values written */
for(i = 0; i < DSET_DIM1; i++) {
for(j = 0; j < DSET_DIM2; j++) {
if(points[i][j] != rdata[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
}
}
}
HDclose(f);
HDclose(f);
PASSED();
} /* end if */
else {
SKIPPED();
puts(" Current VFD doesn't support continuous address space");
} /* end else */
PASSED();
return 0;
error:
@ -1662,7 +1678,7 @@ error:
*/
#ifdef H5_HAVE_FILTER_SZIP
static herr_t
test_filter_noencoder(const char *dset_name, hid_t fapl)
test_filter_noencoder(const char *dset_name)
{
hid_t file_id = -1;
hid_t dset_id = -1;
@ -1687,7 +1703,7 @@ test_filter_noencoder(const char *dset_name, hid_t fapl)
}
HDstrcat(testfile, NOENCODER_FILENAME);
file_id = H5Fopen(testfile, H5F_ACC_RDWR, fapl);
file_id = H5Fopen(testfile, H5F_ACC_RDWR, H5P_DEFAULT);
if(file_id < 0) goto error;
dset_id = H5Dopen2(file_id, dset_name, H5P_DEFAULT);
@ -2017,7 +2033,7 @@ UNUSED
if( h5_szip_can_encode() != 1) {
puts("");
if(test_filter_noencoder(NOENCODER_SZIP_DATASET, fapl) < 0) goto error;
if(test_filter_noencoder(NOENCODER_SZIP_DATASET) < 0) goto error;
} else {
SKIPPED();
}
@ -2112,7 +2128,7 @@ UNUSED
if( h5_szip_can_encode() != 1) {
puts("");
if(test_filter_noencoder(NOENCODER_SZIP_SHUFF_FLETCH_DATASET,fapl) < 0) goto error;
if(test_filter_noencoder(NOENCODER_SZIP_SHUFF_FLETCH_DATASET) < 0) goto error;
} else {
SKIPPED();
}
@ -5729,76 +5745,48 @@ test_filters_endianess(hid_t fapl)
#if defined H5_HAVE_FILTER_FLETCHER32
/*-------------------------------------------------------------------------
* step1: create a file
*-------------------------------------------------------------------------
*/
/* create a file using default properties */
if((fid = H5Fcreate("test_filters.h5", H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) goto error;
/* create a data space */
if((sid = H5Screate_simple(rank,dims,NULL)) < 0) goto error;
/* create dcpl */
if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error;
if(H5Pset_chunk(dcpl,rank,chunk_dims) < 0) goto error;
if(H5Pset_fletcher32 (dcpl) < 0) goto error;
/* create a dataset */
if((dsid = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error;
if(H5Dwrite(dsid,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf) < 0)
goto error;
/* close */
if(H5Pclose (dcpl) < 0) goto error;
if(H5Dclose (dsid) < 0) goto error;
if(H5Sclose (sid) < 0) goto error;
if(H5Fclose (fid) < 0) goto error;
/*-------------------------------------------------------------------------
* step 2: open a file written on a little-endian machine in step 1
* step 1: open a file written on a little-endian machine
*-------------------------------------------------------------------------
*/
/* compose the name of the file to open, using the srcdir, if appropriate */
HDstrcpy(data_file, "");
if( srcdir ) {
if(srcdir) {
HDstrcpy(data_file, srcdir);
HDstrcat(data_file, "/");
}
strcat( data_file, "test_filters_le.hdf5");
HDstrcat(data_file, "test_filters_le.hdf5");
/* open */
if((fid = H5Fopen(data_file, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) goto error;
if((fid = H5Fopen(data_file, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
/* read */
if(auxread_fdata(fid,"dset") < 0) goto error;
if(auxread_fdata(fid,"dset") < 0) TEST_ERROR
/* close */
if(H5Fclose(fid) < 0) goto error;
if(H5Fclose(fid) < 0) FAIL_STACK_ERROR
/*-------------------------------------------------------------------------
* step 3: open a file written on a big-endian machine in step 1
* step 2: open a file written on a big-endian machine
*-------------------------------------------------------------------------
*/
/* compose the name of the file to open, using the srcdir, if appropriate */
HDstrcpy(data_file, "");
if( srcdir ) {
if(srcdir) {
HDstrcpy(data_file, srcdir);
HDstrcat(data_file, "/");
}
HDstrcat( data_file, "test_filters_be.hdf5");
HDstrcat(data_file, "test_filters_be.hdf5");
/* open */
if((fid = H5Fopen(data_file, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) goto error;
if((fid = H5Fopen(data_file, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
/* read */
if(auxread_fdata(fid,"dset") < 0) goto error;
if(auxread_fdata(fid,"dset") < 0) TEST_ERROR
/* close */
if(H5Fclose(fid) < 0) goto error;
if(H5Fclose(fid) < 0) FAIL_STACK_ERROR
PASSED();
#else
@ -6036,8 +6024,8 @@ test_random_chunks(hid_t fapl)
} while (check2[chunk_row][chunk_col]);
wbuf[i] = check2[chunk_row][chunk_col] = chunk_row+chunk_col+1;
coord[i][0] = chunk_row * csize[0];
coord[i][1] = chunk_col * csize[1];
coord[i][0] = (hsize_t)chunk_row * csize[0];
coord[i][1] = (hsize_t)chunk_col * csize[1];
}
/* Create dataspace for write buffer */
@ -6126,8 +6114,8 @@ test_random_chunks(hid_t fapl)
} while (check2[chunk_row][chunk_col]);
wbuf[i] = check2[chunk_row][chunk_col] = chunk_row + chunk_col + 1;
coord[i][0] = chunk_row * csize[0];
coord[i][1] = chunk_col * csize[1];
coord[i][0] = (hsize_t)chunk_row * csize[0];
coord[i][1] = (hsize_t)chunk_col * csize[1];
}
/* Create dataspace for write buffer */
@ -6504,6 +6492,13 @@ error:
int
main(void)
{
char filename[FILENAME_BUF_SIZE];
hid_t file, grp, fapl, fapl2;
hbool_t new_format;
int mdc_nelmts;
size_t rdcc_nelmts;
size_t rdcc_nbytes;
double rdcc_w0;
int nerrors = 0;
const char *envval;
@ -6511,116 +6506,105 @@ main(void)
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) {
char filename[FILENAME_BUF_SIZE];
hid_t file, grp, fapl, fapl2;
hbool_t new_format;
int mdc_nelmts;
size_t rdcc_nelmts;
size_t rdcc_nbytes;
double rdcc_w0;
/* Set the random # seed */
HDsrandom((unsigned long)HDtime(NULL));
/* Set the random # seed */
HDsrandom((unsigned long)HDtime(NULL));
/* Testing setup */
h5_reset();
fapl = h5_fileaccess();
/* Testing setup */
h5_reset();
fapl = h5_fileaccess();
/* Turn off the chunk cache, so all the chunks are immediately written to disk */
if(H5Pget_cache(fapl, &mdc_nelmts, &rdcc_nelmts, &rdcc_nbytes, &rdcc_w0) < 0)
goto error;
rdcc_nbytes = 0;
if(H5Pset_cache(fapl, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0) < 0)
/* Turn off the chunk cache, so all the chunks are immediately written to disk */
if(H5Pget_cache(fapl, &mdc_nelmts, &rdcc_nelmts, &rdcc_nbytes, &rdcc_w0) < 0)
goto error;
rdcc_nbytes = 0;
if(H5Pset_cache(fapl, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0) < 0)
goto error;
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* 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
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
/* Test with old & new format groups */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
hid_t my_fapl;
/* Set the FAPL for the type of format */
if(new_format) {
puts("\nTesting with new file format:");
my_fapl = fapl2;
} /* end if */
else {
puts("Testing with old file format:");
my_fapl = fapl;
} /* end else */
/* Create the file for this test */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, my_fapl)) < 0)
goto error;
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* Cause the library to emit initial messages */
if((grp = H5Gcreate2(file, "emit diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if(H5Oset_comment(grp, "Causes diagnostic messages to be emitted") < 0)
goto error;
if(H5Gclose(grp) < 0)
goto error;
/* 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
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
/* Test with old & new format groups */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
hid_t my_fapl;
/* Set the FAPL for the type of format */
if(new_format) {
puts("\nTesting with new file format:");
my_fapl = fapl2;
} /* end if */
else {
puts("Testing with old file format:");
my_fapl = fapl;
} /* end else */
/* Create the file for this test */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, my_fapl)) < 0)
goto error;
/* Cause the library to emit initial messages */
if((grp = H5Gcreate2(file, "emit diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
goto error;
if(H5Oset_comment(grp, "Causes diagnostic messages to be emitted") < 0)
goto error;
if(H5Gclose(grp) < 0)
goto error;
nerrors += (test_create(file) < 0 ? 1 : 0);
nerrors += (test_simple_io(my_fapl) < 0 ? 1 : 0);
nerrors += (test_compact_io(my_fapl) < 0 ? 1 : 0);
nerrors += (test_max_compact(my_fapl) < 0 ? 1 : 0);
nerrors += (test_conv_buffer(file) < 0 ? 1 : 0);
nerrors += (test_tconv(file) < 0 ? 1 : 0);
nerrors += (test_filters(file, my_fapl) < 0 ? 1 : 0);
nerrors += (test_onebyte_shuffle(file) < 0 ? 1 : 0);
nerrors += (test_nbit_int(file) < 0 ? 1 : 0);
nerrors += (test_nbit_float(file) < 0 ? 1 : 0);
nerrors += (test_nbit_double(file) < 0 ? 1 : 0);
nerrors += (test_nbit_array(file) < 0 ? 1 : 0);
nerrors += (test_nbit_compound(file) < 0 ? 1 : 0);
nerrors += (test_nbit_compound_2(file) < 0 ? 1 : 0);
nerrors += (test_nbit_compound_3(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_int(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_int_2(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_float(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_float_2(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_double(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_double_2(file) < 0 ? 1 : 0);
nerrors += (test_multiopen (file) < 0 ? 1 : 0);
nerrors += (test_types(file) < 0 ? 1 : 0);
nerrors += (test_userblock_offset(my_fapl) < 0 ? 1 : 0);
nerrors += (test_missing_filter(file) < 0 ? 1 : 0);
nerrors += (test_can_apply(file) < 0 ? 1 : 0);
nerrors += (test_set_local(my_fapl) < 0 ? 1 : 0);
nerrors += (test_can_apply_szip(file) < 0 ? 1 : 0);
nerrors += (test_compare_dcpl(file) < 0 ? 1 : 0);
nerrors += (test_filter_delete(file) < 0 ? 1 : 0);
nerrors += (test_filters_endianess(my_fapl) < 0 ? 1 : 0);
nerrors += (test_zero_dims(file) < 0 ? 1 : 0);
nerrors += (test_missing_chunk(file) < 0 ? 1 : 0);
nerrors += (test_random_chunks(my_fapl) < 0 ? 1 : 0);
nerrors += (test_create(file) < 0 ? 1 : 0);
nerrors += (test_simple_io(envval, my_fapl) < 0 ? 1 : 0);
nerrors += (test_compact_io(my_fapl) < 0 ? 1 : 0);
nerrors += (test_max_compact(my_fapl) < 0 ? 1 : 0);
nerrors += (test_conv_buffer(file) < 0 ? 1 : 0);
nerrors += (test_tconv(file) < 0 ? 1 : 0);
nerrors += (test_filters(file, my_fapl) < 0 ? 1 : 0);
nerrors += (test_onebyte_shuffle(file) < 0 ? 1 : 0);
nerrors += (test_nbit_int(file) < 0 ? 1 : 0);
nerrors += (test_nbit_float(file) < 0 ? 1 : 0);
nerrors += (test_nbit_double(file) < 0 ? 1 : 0);
nerrors += (test_nbit_array(file) < 0 ? 1 : 0);
nerrors += (test_nbit_compound(file) < 0 ? 1 : 0);
nerrors += (test_nbit_compound_2(file) < 0 ? 1 : 0);
nerrors += (test_nbit_compound_3(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_int(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_int_2(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_float(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_float_2(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_double(file) < 0 ? 1 : 0);
nerrors += (test_scaleoffset_double_2(file) < 0 ? 1 : 0);
nerrors += (test_multiopen (file) < 0 ? 1 : 0);
nerrors += (test_types(file) < 0 ? 1 : 0);
nerrors += (test_userblock_offset(envval, my_fapl) < 0 ? 1 : 0);
nerrors += (test_missing_filter(file) < 0 ? 1 : 0);
nerrors += (test_can_apply(file) < 0 ? 1 : 0);
nerrors += (test_set_local(my_fapl) < 0 ? 1 : 0);
nerrors += (test_can_apply_szip(file) < 0 ? 1 : 0);
nerrors += (test_compare_dcpl(file) < 0 ? 1 : 0);
nerrors += (test_filter_delete(file) < 0 ? 1 : 0);
nerrors += (test_filters_endianess(my_fapl) < 0 ? 1 : 0);
nerrors += (test_zero_dims(file) < 0 ? 1 : 0);
nerrors += (test_missing_chunk(file) < 0 ? 1 : 0);
nerrors += (test_random_chunks(my_fapl) < 0 ? 1 : 0);
#ifndef H5_NO_DEPRECATED_SYMBOLS
nerrors += (test_deprec(file) < 0 ? 1 : 0);
nerrors += (test_deprec(file) < 0 ? 1 : 0);
#endif /* H5_NO_DEPRECATED_SYMBOLS */
nerrors += (test_huge_chunks(my_fapl) < 0 ? 1 : 0);
nerrors += (test_huge_chunks(my_fapl) < 0 ? 1 : 0);
if(H5Fclose(file) < 0)
goto error;
} /* end for */
/* Close 2nd FAPL */
H5Pclose(fapl2);
if(nerrors)
if(H5Fclose(file) < 0)
goto error;
printf("All dataset tests passed.\n");
h5_cleanup(FILENAME, fapl);
} /* end if */
else
puts("All dataset tests skipped - Incompatible with current Virtual File Driver");
} /* end for */
/* Close 2nd FAPL */
H5Pclose(fapl2);
if(nerrors)
goto error;
printf("All dataset tests passed.\n");
h5_cleanup(FILENAME, fapl);
return 0;

View File

@ -211,58 +211,48 @@ test_tr1(hid_t file)
static c_e1 data1[10] = {E1_RED, E1_GREEN, E1_BLUE, E1_GREEN, E1_WHITE,
E1_WHITE, E1_BLACK, E1_GREEN, E1_BLUE, E1_RED};
c_e1 data2[10];
const char *envval = NULL;
TESTING("O(1) conversions");
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split")) {
if((cwg = H5Gcreate2(file, "test_tr1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if((cwg = H5Gcreate2(file, "test_tr1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if((m_type = H5Tcreate(H5T_ENUM, sizeof(c_e1))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "RED", CPTR(eval, E1_RED )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "GREEN", CPTR(eval, E1_GREEN)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLUE", CPTR(eval, E1_BLUE )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "WHITE", CPTR(eval, E1_WHITE)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLACK", CPTR(eval, E1_BLACK)) < 0) FAIL_STACK_ERROR
if((m_type = H5Tcreate(H5T_ENUM, sizeof(c_e1))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "RED", CPTR(eval, E1_RED )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "GREEN", CPTR(eval, E1_GREEN)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLUE", CPTR(eval, E1_BLUE )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "WHITE", CPTR(eval, E1_WHITE)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLACK", CPTR(eval, E1_BLACK)) < 0) FAIL_STACK_ERROR
if((f_type = H5Tcreate(H5T_ENUM, sizeof(c_e1))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "RED", CPTR(ival, 105)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "GREEN", CPTR(ival, 104)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLUE", CPTR(ival, 103)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "WHITE", CPTR(ival, 102)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLACK", CPTR(ival, 101)) < 0) FAIL_STACK_ERROR
if((f_type = H5Tcreate(H5T_ENUM, sizeof(c_e1))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "RED", CPTR(ival, 105)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "GREEN", CPTR(ival, 104)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLUE", CPTR(ival, 103)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "WHITE", CPTR(ival, 102)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLACK", CPTR(ival, 101)) < 0) FAIL_STACK_ERROR
if((space = H5Screate_simple(1, ds_size, NULL)) < 0) FAIL_STACK_ERROR
if((dset = H5Dcreate2(cwg, "color_table", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if(H5Dwrite(dset, m_type, space, space, H5P_DEFAULT, data1) < 0) FAIL_STACK_ERROR
if(H5Dread(dset, m_type, space, space, H5P_DEFAULT, data2) < 0) FAIL_STACK_ERROR
if((space = H5Screate_simple(1, ds_size, NULL)) < 0) FAIL_STACK_ERROR
if((dset = H5Dcreate2(cwg, "color_table", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if(H5Dwrite(dset, m_type, space, space, H5P_DEFAULT, data1) < 0) FAIL_STACK_ERROR
if(H5Dread(dset, m_type, space, space, H5P_DEFAULT, data2) < 0) FAIL_STACK_ERROR
for(i = 0; i < (size_t)ds_size[0]; i++)
if(data1[i] != data2[i]) {
H5_FAILED();
printf(" data1[%lu]=%d, data2[%lu]=%d (should be same)\n",
(unsigned long)i, (int)(data1[i]),
(unsigned long)i, (int)(data2[i]));
goto error;
}
for(i = 0; i < (size_t)ds_size[0]; i++)
if(data1[i] != data2[i]) {
H5_FAILED();
printf(" data1[%lu]=%d, data2[%lu]=%d (should be same)\n",
(unsigned long)i, (int)(data1[i]),
(unsigned long)i, (int)(data2[i]));
goto error;
}
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
if(H5Tclose(m_type) < 0) FAIL_STACK_ERROR
if(H5Tclose(f_type) < 0) FAIL_STACK_ERROR
if(H5Gclose(cwg) < 0) FAIL_STACK_ERROR
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
if(H5Tclose(m_type) < 0) FAIL_STACK_ERROR
if(H5Tclose(f_type) < 0) FAIL_STACK_ERROR
if(H5Gclose(cwg) < 0) FAIL_STACK_ERROR
PASSED();
PASSED();
}
else
{
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
}
return 0;
error:
@ -304,56 +294,47 @@ test_tr2(hid_t file)
static c_e1 data1[10] = {E1_RED, E1_GREEN, E1_BLUE, E1_GREEN, E1_WHITE,
E1_WHITE, E1_BLACK, E1_GREEN, E1_BLUE, E1_RED};
c_e1 data2[10];
const char *envval = NULL;
TESTING("O(log N) converions");
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split")) {
if((cwg = H5Gcreate2(file, "test_tr2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if((cwg = H5Gcreate2(file, "test_tr2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if((m_type = H5Tcreate(H5T_ENUM, sizeof(c_e1))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "RED", CPTR(val1, E1_RED )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "GREEN", CPTR(val1, E1_GREEN)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLUE", CPTR(val1, E1_BLUE )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "WHITE", CPTR(val1, E1_WHITE)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLACK", CPTR(val1, E1_BLACK)) < 0) FAIL_STACK_ERROR
if((m_type = H5Tcreate(H5T_ENUM, sizeof(c_e1))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "RED", CPTR(val1, E1_RED )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "GREEN", CPTR(val1, E1_GREEN)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLUE", CPTR(val1, E1_BLUE )) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "WHITE", CPTR(val1, E1_WHITE)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(m_type, "BLACK", CPTR(val1, E1_BLACK)) < 0) FAIL_STACK_ERROR
if((f_type = H5Tcreate(H5T_ENUM, sizeof(int))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "RED", CPTR(val2, 1050)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "GREEN", CPTR(val2, 1040)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLUE", CPTR(val2, 1030)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "WHITE", CPTR(val2, 1020)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLACK", CPTR(val2, 1010)) < 0) FAIL_STACK_ERROR
if((f_type = H5Tcreate(H5T_ENUM, sizeof(int))) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "RED", CPTR(val2, 1050)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "GREEN", CPTR(val2, 1040)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLUE", CPTR(val2, 1030)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "WHITE", CPTR(val2, 1020)) < 0) FAIL_STACK_ERROR
if(H5Tenum_insert(f_type, "BLACK", CPTR(val2, 1010)) < 0) FAIL_STACK_ERROR
if((space = H5Screate_simple(1, ds_size, NULL)) < 0) FAIL_STACK_ERROR
if((dset = H5Dcreate2(cwg, "color_table", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if(H5Dwrite(dset, m_type, space, space, H5P_DEFAULT, data1) < 0) FAIL_STACK_ERROR
if(H5Dread(dset, m_type, space, space, H5P_DEFAULT, data2) < 0) FAIL_STACK_ERROR
if((space = H5Screate_simple(1, ds_size, NULL)) < 0) FAIL_STACK_ERROR
if((dset = H5Dcreate2(cwg, "color_table", f_type, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if(H5Dwrite(dset, m_type, space, space, H5P_DEFAULT, data1) < 0) FAIL_STACK_ERROR
if(H5Dread(dset, m_type, space, space, H5P_DEFAULT, data2) < 0) FAIL_STACK_ERROR
for(i = 0; i < (size_t)ds_size[0]; i++)
if(data1[i] != data2[i]) {
H5_FAILED();
printf(" data1[%lu]=%d, data2[%lu]=%d (should be same)\n",
(unsigned long)i, (int)(data1[i]),
(unsigned long)i, (int)(data2[i]));
goto error;
}
for(i = 0; i < (size_t)ds_size[0]; i++)
if(data1[i] != data2[i]) {
H5_FAILED();
printf(" data1[%lu]=%d, data2[%lu]=%d (should be same)\n",
(unsigned long)i, (int)(data1[i]),
(unsigned long)i, (int)(data2[i]));
goto error;
}
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
if(H5Tclose(m_type) < 0) FAIL_STACK_ERROR
if(H5Tclose(f_type) < 0) FAIL_STACK_ERROR
if(H5Gclose(cwg) < 0) FAIL_STACK_ERROR
if(H5Dclose(dset) < 0) FAIL_STACK_ERROR
if(H5Sclose(space) < 0) FAIL_STACK_ERROR
if(H5Tclose(m_type) < 0) FAIL_STACK_ERROR
if(H5Tclose(f_type) < 0) FAIL_STACK_ERROR
if(H5Gclose(cwg) < 0) FAIL_STACK_ERROR
PASSED();
PASSED();
}
else {
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
}
return 0;
error:
@ -473,7 +454,8 @@ test_funcs(void)
{
hid_t type=-1;
c_e1 val;
int size;
size_t size;
int offset;
H5T_pad_t inpad;
H5T_cset_t cset;
herr_t ret;
@ -490,7 +472,7 @@ test_funcs(void)
if ((size=H5Tget_precision(type))==0) goto error;
if ((size=H5Tget_size(type))==0) goto error;
if ((size=H5Tget_offset(type))<0) goto error;
if ((offset=H5Tget_offset(type))<0) goto error;
if (H5Tget_sign(type)<0) goto error;
if (H5Tget_super(type)<0) goto error;

View File

@ -68,8 +68,8 @@ write_data(const char *msg, hid_t file, const char *name, hid_t cparms, hid_t me
for(j = 0; j < 5; j++) {
/* Extend the dataset */
offset[0] = i * NX;
offset[1] = j * NY;
offset[0] = (hsize_t)(i * NX);
offset[1] = (hsize_t)(j * NY);
size[0] = offset[0] + NX;
size[1] = offset[1] + NY;
if(size[0] > max_size[0] || size[1] > max_size[1]) {
@ -96,8 +96,8 @@ write_data(const char *msg, hid_t file, const char *name, hid_t cparms, hid_t me
for(j = 0; j < 10; j++) {
/* Select a hyperslab */
offset[0] = i * (NX / 2);
offset[1] = j * (NY / 2);
offset[0] = (hsize_t)(i * (NX / 2));
offset[1] = (hsize_t)(j * (NY / 2));
if(H5Sselect_hyperslab(file_space, H5S_SELECT_SET, offset, NULL, half_dims, NULL) < 0) TEST_ERROR;
/* Read */
@ -164,8 +164,8 @@ write_data_deprec(const char *msg, hid_t file, const char *name, hid_t cparms, h
for(j = 0; j < 5; j++) {
/* Extend the dataset */
offset[0] = i * NX;
offset[1] = j * NY;
offset[0] = (hsize_t)(i * NX);
offset[1] = (hsize_t)(j * NY);
size[0] = offset[0] + NX;
size[1] = offset[1] + NY;
if(H5Dextend(dataset, size) < 0) TEST_ERROR;
@ -186,8 +186,8 @@ write_data_deprec(const char *msg, hid_t file, const char *name, hid_t cparms, h
for(j = 0; j < 10; j++) {
/* Select a hyperslab */
offset[0] = i * (NX / 2);
offset[1] = j * (NY / 2);
offset[0] = (hsize_t)(i * (NX / 2));
offset[1] = (hsize_t)(j * (NY / 2));
if(H5Sselect_hyperslab(file_space, H5S_SELECT_SET, offset, NULL, half_dims, NULL) < 0) TEST_ERROR;
/* Read */
@ -251,57 +251,49 @@ main (void)
static hsize_t maxdims[2] = {H5S_UNLIMITED, H5S_UNLIMITED};
char filename[1024];
int i, j;
const char *envval = NULL;
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split")) {
h5_reset();
fapl = h5_fileaccess();
h5_reset();
fapl = h5_fileaccess();
/* Initialize buffer and space */
for(i = 0; i < NX; i++)
for(j = 0; j < NY; j++)
buf1[i][j] = i * NY + j;
/* Initialize buffer and space */
for(i = 0; i < NX; i++)
for(j = 0; j < NY; j++)
buf1[i][j] = i * NY + j;
if((mem_space = H5Screate_simple(2, dims, maxdims)) < 0) TEST_ERROR;
if((mem_space = H5Screate_simple(2, dims, maxdims)) < 0) TEST_ERROR;
/* Create the file */
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR;
/* Create the file */
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR;
/* Create the dataset creation property list */
if((cparms = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
if(H5Pset_chunk(cparms, 2, chunk_dims) < 0) TEST_ERROR;
/* Create the dataset creation property list */
if((cparms = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR;
if(H5Pset_chunk(cparms, 2, chunk_dims) < 0) TEST_ERROR;
/* Test with incremental allocation */
nerrors += write_data("extendible dataset with incr. allocation", file, "dataset1a", cparms, mem_space) < 0 ? 1 : 0;
/* Test with incremental allocation */
nerrors += write_data("extendible dataset with incr. allocation", file, "dataset1a", cparms, mem_space) < 0 ? 1 : 0;
#ifndef H5_NO_DEPRECATED_SYMBOLS
nerrors += write_data_deprec("extendible dataset with incr. allocation w/deprec. symbols", file, "dataset1b", cparms, mem_space) < 0 ? 1 : 0;
nerrors += write_data_deprec("extendible dataset with incr. allocation w/deprec. symbols", file, "dataset1b", cparms, mem_space) < 0 ? 1 : 0;
#endif /* H5_NO_DEPRECATED_SYMBOLS */
/* Test with early allocation */
if(H5Pset_alloc_time(cparms, H5D_ALLOC_TIME_EARLY) < 0) TEST_ERROR;
nerrors += write_data("extendible dataset with early allocation", file, "dataset2a", cparms, mem_space) < 0 ? 1 : 0;
/* Test with early allocation */
if(H5Pset_alloc_time(cparms, H5D_ALLOC_TIME_EARLY) < 0) TEST_ERROR;
nerrors += write_data("extendible dataset with early allocation", file, "dataset2a", cparms, mem_space) < 0 ? 1 : 0;
#ifndef H5_NO_DEPRECATED_SYMBOLS
nerrors += write_data_deprec("extendible dataset with early allocation w/deprec. symbols", file, "dataset2b", cparms, mem_space) < 0 ? 1 : 0;
nerrors += write_data_deprec("extendible dataset with early allocation w/deprec. symbols", file, "dataset2b", cparms, mem_space) < 0 ? 1 : 0;
#endif /* H5_NO_DEPRECATED_SYMBOLS */
if(H5Pclose(cparms) < 0) TEST_ERROR;
if(H5Sclose(mem_space) < 0) TEST_ERROR;
if(H5Fclose(file) < 0) TEST_ERROR;
if(H5Pclose(cparms) < 0) TEST_ERROR;
if(H5Sclose(mem_space) < 0) TEST_ERROR;
if(H5Fclose(file) < 0) TEST_ERROR;
if(nerrors) {
printf("***** %d FAILURE%s! *****\n", nerrors, (1 == nerrors) ? "" : "S");
exit(1);
} /* end if */
printf("All extend tests passed.\n");
h5_cleanup(FILENAME, fapl);
if(nerrors) {
printf("***** %d FAILURE%s! *****\n", nerrors, (1 == nerrors) ? "" : "S");
exit(1);
} /* end if */
else
puts("All extend tests skipped - Incompatible with current Virtual File Driver");
printf("All extend tests passed.\n");
h5_cleanup(FILENAME, fapl);
return 0;

View File

@ -842,65 +842,67 @@ test_4 (hid_t fapl)
char filename[1024]; /*file name */
char pathname[1024];
char *srcdir = getenv("srcdir"); /*where the src code is located*/
const char *envval = NULL;
TESTING("opening external link twice");
/* Don't run this test using the multi file driver */
envval = HDgetenv("HDF5_DRIVER");
if (envval == NULL)
envval = "nomatch";
if (HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) {
h5_fixname(FILENAME[3], fapl, filename, sizeof filename);
/* Make a copy of the FAPL, in order to switch to the sec2 driver */
/* (useful when running test with another VFD) */
if((fapl = H5Pcopy(fapl)) < 0) FAIL_STACK_ERROR;
if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
goto error;
/* Switch local copy of the fapl to the sec2 driver */
if(H5Pset_fapl_sec2(fapl) < 0) FAIL_STACK_ERROR;
if((gid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0)
goto error;
h5_fixname(FILENAME[3], fapl, filename, sizeof filename);
pathname[0] = '\0';
/* Generate correct name for test file by prepending the source path */
if(srcdir && ((HDstrlen(srcdir) + HDstrlen(LINKED_FILE) + 1) < sizeof(pathname))) {
HDstrcpy(pathname, srcdir);
HDstrcat(pathname, "/");
}
HDstrcat(pathname, LINKED_FILE);
if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
goto error;
/* Create an external link to an existing file*/
if(H5Lcreate_external(pathname, "/group", gid, " link", H5P_DEFAULT, H5P_DEFAULT) < 0)
goto error;
if((gid = H5Gopen2(fid, "/", H5P_DEFAULT)) < 0)
goto error;
if(H5Gclose(gid) < 0)
goto error;
pathname[0] = '\0';
/* Generate correct name for test file by prepending the source path */
if(srcdir && ((HDstrlen(srcdir) + HDstrlen(LINKED_FILE) + 1) < sizeof(pathname))) {
HDstrcpy(pathname, srcdir);
HDstrcat(pathname, "/");
}
HDstrcat(pathname, LINKED_FILE);
if(H5Fclose(fid) < 0)
goto error;
/* Create an external link to an existing file*/
if(H5Lcreate_external(pathname, "/group", gid, " link", H5P_DEFAULT, H5P_DEFAULT) < 0)
goto error;
/* Reopen the file */
if((fid = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0)
goto error;
if(H5Gclose(gid) < 0)
goto error;
/* Open the external link */
if((xid = H5Gopen2(fid, "/ link", H5P_DEFAULT)) < 0)
goto error;
if(H5Fclose(fid) < 0)
goto error;
/* Open the external link twice */
if((xid2 = H5Gopen2(xid, ".", H5P_DEFAULT)) < 0)
goto error;
/* Reopen the file */
if((fid = H5Fopen(filename, H5F_ACC_RDONLY, fapl)) < 0)
goto error;
if(H5Gclose(xid2) < 0)
goto error;
/* Open the external link */
if((xid = H5Gopen2(fid, "/ link", H5P_DEFAULT)) < 0)
goto error;
if(H5Gclose(xid) < 0)
goto error;
/* Open the external link twice */
if((xid2 = H5Gopen2(xid, ".", H5P_DEFAULT)) < 0)
goto error;
if(H5Fclose(fid) < 0)
goto error;
if(H5Gclose(xid2) < 0)
goto error;
PASSED();
} else
SKIPPED();
if(H5Gclose(xid) < 0)
goto error;
if(H5Fclose(fid) < 0)
goto error;
if(H5Pclose(fapl) < 0)
TEST_ERROR
PASSED();
return 0;
@ -939,58 +941,48 @@ main (void)
char filename[1024]; /*file name for test_1* funcs */
hid_t grp=-1; /*group to emit diagnostics */
int nerrors=0; /*number of errors */
const char *envval = NULL;
/* Don't run this test using the split file driver */
envval = HDgetenv("HDF5_DRIVER");
if (envval == NULL)
envval = "nomatch";
if (HDstrcmp(envval, "split")) {
h5_reset();
fapl = h5_fileaccess();
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
if((grp = H5Gcreate2(file, "emit-diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if(H5Gclose(grp) < 0) goto error;
h5_reset();
fapl = h5_fileaccess();
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
if((grp = H5Gcreate2(file, "emit-diagnostics", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
if(H5Gclose(grp) < 0) goto error;
nerrors += test_1a(file);
nerrors += test_1b(file);
nerrors += test_1c(file);
nerrors += test_1d(file);
nerrors += test_1e(file);
nerrors += test_1f(file);
nerrors += test_1g();
nerrors += test_1h();
nerrors += test_2(fapl);
nerrors += test_3(fapl);
nerrors += test_4(fapl);
if (nerrors>0) goto error;
nerrors += test_1a(file);
nerrors += test_1b(file);
nerrors += test_1c(file);
nerrors += test_1d(file);
nerrors += test_1e(file);
nerrors += test_1f(file);
nerrors += test_1g();
nerrors += test_1h();
nerrors += test_2(fapl);
nerrors += test_3(fapl);
nerrors += test_4(fapl);
if (nerrors>0) goto error;
if (H5Fclose(file) < 0) goto error;
puts("All external storage tests passed.");
if (h5_cleanup(FILENAME, fapl)) {
remove("extern_1a.raw");
remove("extern_1b.raw");
remove("extern_2a.raw");
remove("extern_2b.raw");
remove("extern_3a.raw");
remove("extern_3b.raw");
remove("extern_4a.raw");
remove("extern_4b.raw");
}
}
else
{
puts("All external storage tests skipped - Incompatible with current Virtual File Driver");
if (H5Fclose(file) < 0) goto error;
puts("All external storage tests passed.");
if (h5_cleanup(FILENAME, fapl)) {
remove("extern_1a.raw");
remove("extern_1b.raw");
remove("extern_2a.raw");
remove("extern_2b.raw");
remove("extern_3a.raw");
remove("extern_3b.raw");
remove("extern_4a.raw");
remove("extern_4b.raw");
}
return 0;
error:
H5E_BEGIN_TRY {
H5Fclose(file);
H5Pclose(fapl);
} H5E_END_TRY;
nerrors = MAX(1, nerrors);
printf ("%d TEST%s FAILED.\n", nerrors, 1==nerrors?"":"s");
return 1;
error:
H5E_BEGIN_TRY {
H5Fclose(file);
H5Pclose(fapl);
} H5E_END_TRY;
nerrors = MAX(1, nerrors);
printf ("%d TEST%s FAILED.\n", nerrors, 1==nerrors?"":"s");
return 1;
}

View File

@ -15772,29 +15772,15 @@ main(void)
fheap_test_type_t curr_test; /* Current test being worked on */
unsigned u; /* Local index variable */
unsigned nerrors = 0; /* Cumulative error count */
int ExpressMode;
const char *envval = NULL; /* File Driver value from environment */
int ExpressMode; /* Express testing level */
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
ExpressMode = GetTestExpress();
if (ExpressMode > 1)
if(ExpressMode > 1)
printf("***Express test mode on. Some tests may be skipped\n");
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
/* This test case with Direct driver has a poor performance on
* NCSA copper, though it works. Skip it if the express mode is set on
* and worry about the performance later.
*/
if((HDstrcmp(envval, "core") && HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") &&
HDstrcmp(envval, "family") && HDstrcmp(envval, "stdio")) &&
!(!HDstrcmp(envval, "direct") && (ExpressMode > 1)))
{
/* Initialize heap creation parameters */
init_small_cparam(&small_cparam);
init_large_cparam(&large_cparam);
@ -15925,7 +15911,7 @@ fill = FHEAP_TEST_FILL_LARGE;
* level of complexity gradually. -QAK
*/
#ifndef QAK
if (ExpressMode > 1)
if(ExpressMode > 1)
printf("***Express test mode on. test_man_start_5th_recursive_indirect is skipped\n");
else
nerrors += test_man_start_5th_recursive_indirect(fapl, &small_cparam, &tparam);
@ -15984,7 +15970,7 @@ tparam.drain_half = FHEAP_DEL_DRAIN_ALL;
nerrors += test_man_remove_first_row(fapl, &small_cparam, &tparam);
nerrors += test_man_remove_first_two_rows(fapl, &small_cparam, &tparam);
nerrors += test_man_remove_first_four_rows(fapl, &small_cparam, &tparam);
if (ExpressMode > 1)
if(ExpressMode > 1)
printf("***Express test mode on. Some tests skipped\n");
else {
nerrors += test_man_remove_all_root_direct(fapl, &small_cparam, &tparam);
@ -16016,7 +16002,7 @@ tparam.drain_half = FHEAP_DEL_DRAIN_ALL;
nerrors += test_man_fill_2nd_direct_fill_direct_skip2_3rd_indirect_start_block_add_skipped(fapl, &small_cparam, &tparam);
nerrors += test_man_fill_3rd_direct_less_one_fill_direct_wrap_start_block_add_skipped(fapl, &small_cparam, &tparam);
nerrors += test_man_fill_1st_row_3rd_direct_fill_2nd_direct_less_one_wrap_start_block_add_skipped(fapl, &small_cparam, &tparam);
if (ExpressMode > 1)
if(ExpressMode > 1)
printf("***Express test mode on. Some tests skipped\n");
else {
nerrors += test_man_fill_3rd_direct_fill_direct_skip_start_block_add_skipped(fapl, &small_cparam, &tparam);
@ -16104,11 +16090,15 @@ HDfprintf(stderr, "Uncomment tests!\n");
tparam.del_dir = del_dir;
/* Test 'huge' object insert & delete */
#ifndef QAK
nerrors += test_huge_insert_one(fapl, &small_cparam, &tparam);
nerrors += test_huge_insert_two(fapl, &small_cparam, &tparam);
nerrors += test_huge_insert_three(fapl, &small_cparam, &tparam);
nerrors += test_huge_insert_mix(fapl, &small_cparam, &tparam);
nerrors += test_filtered_huge(fapl, &small_cparam, &tparam);
#else /* QAK */
HDfprintf(stderr, "Uncomment tests!\n");
#endif /* QAK */
#ifndef QAK
/* Test 'tiny' object insert & delete */
@ -16162,7 +16152,7 @@ HDfprintf(stderr, "Uncomment tests!\n");
#ifndef QAK
/* Random object insertion & deletion */
if (ExpressMode > 1)
if(ExpressMode > 1)
printf("***Express test mode on. Some tests skipped\n");
else {
#ifndef QAK
@ -16250,10 +16240,6 @@ HDfprintf(stderr, "Uncomment tests!\n");
#else /* QAK */
HDfprintf(stderr, "Uncomment cleanup!\n");
#endif /* QAK */
} /* end if(HDstrcmp(envval=="...")) */
else {
printf("All fractal heap tests skipped - Incompatible with current Virtual File Driver\n");
}
return 0;

View File

@ -1968,16 +1968,16 @@ skip:
static int
test_compatible(hid_t fapl)
{
hid_t file=-1, dset1=-1, dset2=-1;
hid_t dcpl1=-1, dcpl2=-1, fspace=-1, mspace=-1;
int rd_fill=0, fill_val=4444, val_rd=0;
hsize_t dims[2], one[2]={1,1};
hsize_t hs_offset[2]={3,4};
H5D_fill_value_t status;
char *srcdir = getenv("srcdir"); /*where the src code is located*/
char testfile[512]=""; /* test file name */
hid_t file=-1, dset1=-1, dset2=-1;
hid_t dcpl1=-1, dcpl2=-1, fspace=-1, mspace=-1;
int rd_fill=0, fill_val=4444, val_rd=0;
hsize_t dims[2], one[2]={1,1};
hsize_t hs_offset[2]={3,4};
H5D_fill_value_t status;
char *srcdir = getenv("srcdir"); /*where the src code is located*/
char testfile[512]=""; /* test file name */
TESTING("contiguous dataset compatibility with v. 1.4");
TESTING("contiguous dataset compatibility with v. 1.4");
/* Generate correct name for test file by prepending the source path */
if(srcdir && ((strlen(srcdir) + strlen(FILE_COMPATIBLE) + 1) <
@ -1987,9 +1987,9 @@ test_compatible(hid_t fapl)
}
HDstrcat(testfile, FILE_COMPATIBLE);
if((file = H5Fopen(testfile, H5F_ACC_RDONLY, fapl)) < 0) {
if((file = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) {
printf(" Could not open file %s. Try set $srcdir to point at the "
"source directory of test\n", testfile);
"source directory of test\n", testfile);
goto error;
}
@ -2000,7 +2000,7 @@ test_compatible(hid_t fapl)
H5_FAILED();
printf(" %d: Got a different fill value than what was set.",__LINE__);
printf(" Got status=%ld, suppose to be H5D_FILL_VALUE_UNDEFINED\n",
(long)status);
(long)status);
goto error;
}
if((fspace = H5Dget_space(dset1)) < 0) goto error;
@ -2072,8 +2072,10 @@ test_compatible(hid_t fapl)
if(H5Dclose(dset2) < 0) goto error;
if(H5Fclose(file) < 0) goto error;
PASSED();
return 0;
return 0;
error:
H5E_BEGIN_TRY {
@ -2109,93 +2111,84 @@ error:
int
main(int argc, char *argv[])
{
const char *envval = NULL;
int nerrors=0, argno, test_contig=1, test_chunk=1, test_compact=1;
hid_t fapl = (-1), fapl2 = (-1); /* File access property lists */
hbool_t new_format; /* Whether to use the new format or not */
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) {
int nerrors=0, argno, test_contig=1, test_chunk=1, test_compact=1;
hid_t fapl = (-1), fapl2 = (-1); /* File access property lists */
hbool_t new_format; /* Whether to use the new format or not */
if(argc >= 2) {
test_contig = test_chunk = test_compact = 0;
for(argno = 1; argno < argc; argno++) {
if(!strcmp(argv[argno], "contiguous"))
test_contig = 1;
else if(!strcmp(argv[argno], "chunked"))
test_chunk = 1;
else if(!strcmp(argv[argno], "compact"))
test_compact =1;
else {
fprintf(stderr, "usage: %s [contiguous] [chunked] [compact]\n", argv[0]);
exit(1);
}
} /* end for */
} /* end if */
h5_reset();
fapl = h5_fileaccess();
/* Property list tests */
nerrors += test_getset();
nerrors += test_getset_vl(fapl);
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* 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
/* Loop over using new group format */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
hid_t my_fapl;
/* Set the FAPL for the type of format */
if(new_format) {
puts("\nTesting with new file format:");
my_fapl = fapl2;
} /* end if */
if(argc >= 2) {
test_contig = test_chunk = test_compact = 0;
for(argno = 1; argno < argc; argno++) {
if(!strcmp(argv[argno], "contiguous"))
test_contig = 1;
else if(!strcmp(argv[argno], "chunked"))
test_chunk = 1;
else if(!strcmp(argv[argno], "compact"))
test_compact =1;
else {
puts("Testing with old file format:");
my_fapl = fapl;
} /* end else */
/* Chunked storage layout tests */
if(test_chunk) {
nerrors += test_create(my_fapl, FILENAME[0], H5D_CHUNKED);
nerrors += test_rdwr (my_fapl, FILENAME[2], H5D_CHUNKED);
nerrors += test_extend(my_fapl, FILENAME[4], H5D_CHUNKED);
} /* end if */
/* Contiguous storage layout tests */
if(test_contig) {
nerrors += test_create(my_fapl, FILENAME[1], H5D_CONTIGUOUS);
nerrors += test_rdwr (my_fapl, FILENAME[3], H5D_CONTIGUOUS);
nerrors += test_extend(my_fapl, FILENAME[5], H5D_CONTIGUOUS);
nerrors += test_compatible(my_fapl);
} /* end if */
/* Compact dataset storage tests */
if(test_compact) {
nerrors += test_create(my_fapl, FILENAME[6], H5D_COMPACT);
nerrors += test_rdwr (my_fapl, FILENAME[7], H5D_COMPACT);
} /* end if */
fprintf(stderr, "usage: %s [contiguous] [chunked] [compact]\n", argv[0]);
exit(1);
}
} /* end for */
/* Close 2nd FAPL */
H5Pclose(fapl2);
if(nerrors)
goto error;
puts("All fill value tests passed.");
if(h5_cleanup(FILENAME, fapl))
remove(FILE_NAME_RAW);
} /* end if */
else
puts("All fill value tests skipped - Incompatible with current Virtual File Driver");
h5_reset();
fapl = h5_fileaccess();
/* Property list tests */
nerrors += test_getset();
nerrors += test_getset_vl(fapl);
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* 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
/* Loop over using new group format */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
hid_t my_fapl;
/* Set the FAPL for the type of format */
if(new_format) {
puts("\nTesting with new file format:");
my_fapl = fapl2;
} /* end if */
else {
puts("Testing with old file format:");
my_fapl = fapl;
} /* end else */
/* Chunked storage layout tests */
if(test_chunk) {
nerrors += test_create(my_fapl, FILENAME[0], H5D_CHUNKED);
nerrors += test_rdwr (my_fapl, FILENAME[2], H5D_CHUNKED);
nerrors += test_extend(my_fapl, FILENAME[4], H5D_CHUNKED);
} /* end if */
/* Contiguous storage layout tests */
if(test_contig) {
nerrors += test_create(my_fapl, FILENAME[1], H5D_CONTIGUOUS);
nerrors += test_rdwr (my_fapl, FILENAME[3], H5D_CONTIGUOUS);
nerrors += test_extend(my_fapl, FILENAME[5], H5D_CONTIGUOUS);
nerrors += test_compatible(my_fapl);
} /* end if */
/* Compact dataset storage tests */
if(test_compact) {
nerrors += test_create(my_fapl, FILENAME[6], H5D_COMPACT);
nerrors += test_rdwr (my_fapl, FILENAME[7], H5D_COMPACT);
} /* end if */
} /* end for */
/* Close 2nd FAPL */
H5Pclose(fapl2);
if(nerrors)
goto error;
puts("All fill value tests passed.");
if(h5_cleanup(FILENAME, fapl))
remove(FILE_NAME_RAW);
return 0;

View File

@ -171,49 +171,38 @@ main(void)
{
hid_t file, fapl;
char name[1024];
const char *envval = NULL;
h5_reset();
fapl = h5_fileaccess();
TESTING("H5Fflush (part1)");
envval = HDgetenv("HDF5_DRIVER");
if (envval == NULL)
envval = "nomatch";
if (HDstrcmp(envval, "split")) {
/* Create the file */
h5_fixname(FILENAME[0], fapl, name, sizeof name);
file = create_file(name, fapl);
/* Flush and exit without closing the library */
if (H5Fflush(file, H5F_SCOPE_GLOBAL) < 0) goto error;
/* Create the file */
h5_fixname(FILENAME[2], fapl, name, sizeof name);
file = create_file(name, fapl);
/* Flush and exit without closing the library */
if(H5Fflush(file, H5F_SCOPE_GLOBAL) < 0) goto error;
/* Add a bit to the file and don't flush the new part */
extend_file(file);
/* Create the file */
h5_fixname(FILENAME[0], fapl, name, sizeof name);
file = create_file(name, fapl);
/* Flush and exit without closing the library */
if (H5Fflush(file, H5F_SCOPE_GLOBAL) < 0) goto error;
/* Create the other file which will not be flushed */
h5_fixname(FILENAME[1], fapl, name, sizeof name);
file = create_file(name, fapl);
/* Create the file */
h5_fixname(FILENAME[2], fapl, name, sizeof name);
file = create_file(name, fapl);
/* Flush and exit without closing the library */
if(H5Fflush(file, H5F_SCOPE_GLOBAL) < 0) goto error;
/* Add a bit to the file and don't flush the new part */
extend_file(file);
/* Create the other file which will not be flushed */
h5_fixname(FILENAME[1], fapl, name, sizeof name);
file = create_file(name, fapl);
PASSED();
fflush(stdout);
fflush(stderr);
}
else
{
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
}
PASSED();
fflush(stdout);
fflush(stderr);
HD_exit(0);
error:
HD_exit(1);
return 1;
error:
HD_exit(1);
return 1;
}

View File

@ -159,90 +159,74 @@ main(void)
{
hid_t fapl;
H5E_auto2_t func;
char name[1024];
const char *envval = NULL;
h5_reset();
fapl = h5_fileaccess();
TESTING("H5Fflush (part2 with flush)");
/* Don't run this test using the core or split file drivers */
envval = HDgetenv("HDF5_DRIVER");
if (envval == NULL)
envval = "nomatch";
if (HDstrcmp(envval, "core") && HDstrcmp(envval, "split")) {
/* Check the case where the file was flushed */
h5_fixname(FILENAME[0], fapl, name, sizeof name);
if(check_file(name, fapl, FALSE)) {
H5_FAILED()
goto error;
}
else
PASSED();
/* Check the case where the file was not flushed. This should give an error
* so we turn off the error stack temporarily */
TESTING("H5Fflush (part2 without flush)");
H5Eget_auto2(H5E_DEFAULT,&func,NULL);
H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
h5_fixname(FILENAME[1], fapl, name, sizeof name);
if(check_file(name, fapl, FALSE))
PASSED()
else
{
#if defined _WIN32 && defined _HDF5USEDLL_
SKIPPED();
puts(" DLL will flush the file even when calling _exit, skip this test temporarily");
#elif defined H5_VMS
SKIPPED();
#else
/* Check the case where the file was flushed */
h5_fixname(FILENAME[0], fapl, name, sizeof name);
if(check_file(name, fapl, FALSE)) {
H5_FAILED()
goto error;
#endif
}
H5Eset_auto2(H5E_DEFAULT, func, NULL);
/* Check the case where the file was flushed, but more data was added afterward. This should give an error
* so we turn off the error stack temporarily */
TESTING("H5Fflush (part2 with flush and later addition)");
H5Eget_auto2(H5E_DEFAULT,&func,NULL);
H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
h5_fixname(FILENAME[2], fapl, name, sizeof name);
if(check_file(name, fapl, TRUE))
PASSED()
else
{
#if defined _WIN32 && defined _HDF5USEDLL_
SKIPPED();
puts(" DLL will flush the file even when calling _exit, skip this test temporarily");
#elif defined H5_VMS
SKIPPED();
#else
H5_FAILED()
goto error;
#endif
}
H5Eset_auto2(H5E_DEFAULT, func, NULL);
h5_cleanup(FILENAME, fapl);
}
else
PASSED();
/* Check the case where the file was not flushed. This should give an error
* so we turn off the error stack temporarily */
TESTING("H5Fflush (part2 without flush)");
H5Eget_auto2(H5E_DEFAULT,&func,NULL);
H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
h5_fixname(FILENAME[1], fapl, name, sizeof name);
if(check_file(name, fapl, FALSE))
PASSED()
else
{
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
#if defined _WIN32 && defined _HDF5USEDLL_
SKIPPED();
puts(" DLL will flush the file even when calling _exit, skip this test temporarily");
#elif defined H5_VMS
SKIPPED();
#else
H5_FAILED()
goto error;
#endif
}
H5Eset_auto2(H5E_DEFAULT, func, NULL);
/* Check the case where the file was flushed, but more data was added afterward. This should give an error
* so we turn off the error stack temporarily */
TESTING("H5Fflush (part2 with flush and later addition)");
H5Eget_auto2(H5E_DEFAULT,&func,NULL);
H5Eset_auto2(H5E_DEFAULT, NULL, NULL);
h5_fixname(FILENAME[2], fapl, name, sizeof name);
if(check_file(name, fapl, TRUE))
PASSED()
else
{
#if defined _WIN32 && defined _HDF5USEDLL_
SKIPPED();
puts(" DLL will flush the file even when calling _exit, skip this test temporarily");
#elif defined H5_VMS
SKIPPED();
#else
H5_FAILED()
goto error;
#endif
}
H5Eset_auto2(H5E_DEFAULT, func, NULL);
h5_cleanup(FILENAME, fapl);
return 0;
error:
return 1;
error:
return 1;
}

View File

@ -250,9 +250,9 @@ test_extend(hid_t f, const char *prefix,
sprintf(s, "istore extend: %s", dims);
TESTING(s);
buf = HDmalloc(nx * ny * nz);
check = HDmalloc(nx * ny * nz);
whole = HDcalloc((size_t)1, nx * ny * nz);
buf = (uint8_t *)HDmalloc(nx * ny * nz);
check = (uint8_t *)HDmalloc(nx * ny * nz);
whole = (uint8_t *)HDcalloc((size_t)1, nx * ny * nz);
whole_size[0] = nx;
whole_size[1] = ny;
@ -463,7 +463,7 @@ test_sparse(hid_t f, const char *prefix, size_t nblocks,
sprintf(s, "istore sparse: %s", dims);
TESTING(s);
buf = HDmalloc(nx * ny * nz);
buf = (uint8_t *)HDmalloc(nx * ny * nz);
HDmemset(buf, 128, nx * ny * nz);
/* Set dimensions of dataset */
@ -565,140 +565,116 @@ main(int argc, char *argv[])
unsigned size_of_test;
unsigned u; /* Local index variable */
char filename[1024];
const char *envval = NULL;
/* Don't run this test using the split file driver */
envval = HDgetenv("HDF5_DRIVER");
if (envval == NULL)
envval = "nomatch";
if (HDstrcmp(envval, "split")) {
/* Parse arguments or assume these tests (`small', `medium' ) */
if (1 == argc) {
size_of_test = TEST_SMALL;
} else {
int i;
for (i = 1, size_of_test = 0; i < argc; i++) {
if (!strcmp(argv[i], "small")) {
size_of_test |= TEST_SMALL;
} else if (!strcmp(argv[i], "medium")) {
size_of_test |= TEST_MEDIUM;
} else if (!strcmp(argv[i], "large")) {
size_of_test |= TEST_LARGE;
} else {
printf("unrecognized argument: %s\n", argv[i]);
/* Parse arguments or assume these tests (`small', `medium' ) */
if (1 == argc) {
size_of_test = TEST_SMALL | TEST_MEDIUM | TEST_LARGE;
} else {
int i;
for (i = 1, size_of_test = 0; i < argc; i++) {
if (!strcmp(argv[i], "small")) {
size_of_test |= TEST_SMALL;
} else if (!strcmp(argv[i], "medium")) {
size_of_test |= TEST_MEDIUM;
} else if (!strcmp(argv[i], "large")) {
size_of_test |= TEST_LARGE;
} else {
printf("unrecognized argument: %s\n", argv[i]);
#if 0
exit(1);
exit(1);
#endif
}
}
}
printf("Test sizes: ");
if (size_of_test & TEST_SMALL)
printf(" SMALL");
if (size_of_test & TEST_MEDIUM)
printf(" MEDIUM");
if (size_of_test & TEST_LARGE)
printf(" LARGE");
printf("\n");
/* Set the random # seed */
HDsrandom((unsigned long)HDtime(NULL));
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
/* Use larger file addresses... */
fcpl = H5Pcreate(H5P_FILE_CREATE);
H5Pset_sizes(fcpl, (size_t)8, (size_t)0);
/* Create the test file */
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
printf("Cannot create file %s; test aborted\n", filename);
exit(1);
}
/*
* For testing file families, fool the library into thinking it already
* allocated a whole bunch of data.
*/
if (H5FD_FAMILY==H5Pget_driver(fapl)) {
haddr_t addr;
H5F_t *f;
addr = 8 * ((uint64_t)1<<30); /*8 GB */
f=H5I_object(file);
if (H5FDset_eoa(f->shared->lf, H5FD_MEM_DEFAULT, addr) < 0) {
printf("Cannot create large file family\n");
exit(1);
}
}
/* Initialize chunk dimensions */
for (u = 0; u < H5O_LAYOUT_NDIMS; u++)
chunk_dims[u]=TEST_CHUNK_SIZE;
/*
* Creation test: Creates empty objects with various raw data sizes
* and alignments.
*/
status = test_create(file, "create");
nerrors += status < 0 ? 1 : 0;
if (size_of_test & TEST_SMALL) {
status = test_extend(file, "extend", (size_t)10, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)10, (size_t)10, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)10, (size_t)10, (size_t)10);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_MEDIUM) {
status = test_extend(file, "extend", (size_t)10000, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)2500, (size_t)10, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)10, (size_t)400, (size_t)10);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_SMALL) {
status = test_sparse(file, "sparse", (size_t)100, (size_t)5, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)100, (size_t)3, (size_t)4, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)100, (size_t)2, (size_t)3, (size_t)4);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_MEDIUM) {
status = test_sparse(file, "sparse", (size_t)1000, (size_t)30, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)2000, (size_t)7, (size_t)3, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)2000, (size_t)4, (size_t)2, (size_t)3);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_LARGE) {
status = test_sparse(file, "sparse", (size_t)800, (size_t)50, (size_t)50, (size_t)50);
nerrors += status < 0 ? 1 : 0;
}
/* Close the test file and exit */
H5Pclose(fcpl);
H5Fclose(file);
if (nerrors) {
printf("***** %d I-STORE TEST%s FAILED! *****\n",
nerrors, 1 == nerrors ? "" : "S");
exit(1);
}
printf("All i-store tests passed.\n");
h5_cleanup(FILENAME, fapl);
}
}
}
else
{
puts("All i-store tests skipped - Incompatible with current Virtual File Driver");
printf("Test sizes: ");
if (size_of_test & TEST_SMALL)
printf(" SMALL");
if (size_of_test & TEST_MEDIUM)
printf(" MEDIUM");
if (size_of_test & TEST_LARGE)
printf(" LARGE");
printf("\n");
/* Set the random # seed */
HDsrandom((unsigned long)HDtime(NULL));
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
/* Use larger file addresses... */
fcpl = H5Pcreate(H5P_FILE_CREATE);
H5Pset_sizes(fcpl, (size_t)8, (size_t)0);
/* Create the test file */
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
if ((file=H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
printf("Cannot create file %s; test aborted\n", filename);
exit(1);
}
/* Initialize chunk dimensions */
for(u = 0; u < H5O_LAYOUT_NDIMS; u++)
chunk_dims[u] = TEST_CHUNK_SIZE;
/*
* Creation test: Creates empty objects with various raw data sizes
* and alignments.
*/
status = test_create(file, "create");
nerrors += status < 0 ? 1 : 0;
if (size_of_test & TEST_SMALL) {
status = test_extend(file, "extend", (size_t)10, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)10, (size_t)10, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)10, (size_t)10, (size_t)10);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_MEDIUM) {
status = test_extend(file, "extend", (size_t)10000, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)2500, (size_t)10, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_extend(file, "extend", (size_t)10, (size_t)400, (size_t)10);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_SMALL) {
status = test_sparse(file, "sparse", (size_t)100, (size_t)5, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)100, (size_t)3, (size_t)4, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)100, (size_t)2, (size_t)3, (size_t)4);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_MEDIUM) {
status = test_sparse(file, "sparse", (size_t)1000, (size_t)30, (size_t)0, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)2000, (size_t)7, (size_t)3, (size_t)0);
nerrors += status < 0 ? 1 : 0;
status = test_sparse(file, "sparse", (size_t)2000, (size_t)4, (size_t)2, (size_t)3);
nerrors += status < 0 ? 1 : 0;
}
if (size_of_test & TEST_LARGE) {
status = test_sparse(file, "sparse", (size_t)800, (size_t)50, (size_t)50, (size_t)50);
nerrors += status < 0 ? 1 : 0;
}
/* Close the test file and exit */
H5Pclose(fcpl);
H5Fclose(file);
if (nerrors) {
printf("***** %d I-STORE TEST%s FAILED! *****\n",
nerrors, 1 == nerrors ? "" : "S");
exit(1);
}
printf("All i-store tests passed.\n");
h5_cleanup(FILENAME, fapl);
return 0;
}

File diff suppressed because it is too large Load Diff

126
test/mf.c
View File

@ -142,13 +142,15 @@ test_mf_eoa(const char *env_h5_drvr, hid_t fapl)
haddr_t addr1, addr2;
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF;
hsize_t ma_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MM_alloc() of file allocation");
/* Skip test when using VFDs that has different address spaces for each
* type of metadata allocation.
*/
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -280,13 +282,15 @@ test_mf_eoa_shrink(const char *env_h5_drvr, hid_t fapl)
haddr_t addr;
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_try_shrink() of file allocation: test 1");
/* Skip test when using VFDs that has different address spaces for each
* type of metadata allocation.
*/
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -383,7 +387,7 @@ test_mf_eoa_shrink(const char *env_h5_drvr, hid_t fapl)
/* Skip test when using VFDs that has different address spaces for each
* type of metadata allocation.
*/
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file with meta/small data setting */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl_new)) < 0)
FAIL_STACK_ERROR
@ -433,7 +437,7 @@ test_mf_eoa_shrink(const char *env_h5_drvr, hid_t fapl)
/* Skip test when using VFDs that has different address spaces for each
* type of metadata allocation.
*/
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file with meta/small data setting */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl_new)) < 0)
FAIL_STACK_ERROR
@ -477,7 +481,7 @@ test_mf_eoa_shrink(const char *env_h5_drvr, hid_t fapl)
/* Skip test when using VFDs that has different address spaces for each
* type of metadata allocation.
*/
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file with meta/small data setting */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl_new)) < 0)
FAIL_STACK_ERROR
@ -551,13 +555,15 @@ test_mf_eoa_extend(const char *env_h5_drvr, hid_t fapl)
htri_t extended;
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_try_extend() of file allocation: test 1");
/* Skip test when using VFDs that has different address spaces for each
* type of metadata allocation.
*/
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -652,7 +658,7 @@ test_mf_eoa_extend(const char *env_h5_drvr, hid_t fapl)
/* Skip test when using VFDs that has different address spaces for each
* type of metadata allocation.
*/
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file with meta/small data setting */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl_new)) < 0)
FAIL_STACK_ERROR
@ -1706,11 +1712,13 @@ test_mf_fs_absorb(const char *env_h5_drvr, hid_t fapl)
H5MF_sect_ud_t udata;
htri_t node_found=FALSE;
H5FS_section_info_t *node;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("A free-space section absorbs an aggregator: test 1");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -1788,7 +1796,7 @@ test_mf_fs_absorb(const char *env_h5_drvr, hid_t fapl)
TESTING("A free-space section absorbs an aggregator: test 2");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
FAIL_STACK_ERROR
@ -1893,11 +1901,13 @@ test_mf_aggr_alloc1(const char *env_h5_drvr, hid_t fapl)
haddr_t addr1, addr2;
haddr_t ma_addr=HADDR_UNDEF;
hsize_t ma_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_alloc() of meta/sdata aggregator:test 1");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2022,11 +2032,13 @@ test_mf_aggr_alloc2(const char *env_h5_drvr, hid_t fapl)
haddr_t addr1, addr2, addr3;
haddr_t ma_addr=HADDR_UNDEF;
hsize_t ma_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_alloc() of meta/sdata aggregator:test 2");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2174,11 +2186,13 @@ test_mf_aggr_alloc3(const char *env_h5_drvr, hid_t fapl)
hsize_t ma_size=0, new_ma_size=0;
haddr_t sdata_addr=HADDR_UNDEF;
hsize_t sdata_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_alloc() of meta/sdata aggregator: test 3");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2333,11 +2347,13 @@ test_mf_aggr_alloc4(const char *env_h5_drvr, hid_t fapl)
haddr_t addr1, addr2, saddr1, saddr2, saddr3;
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0, sdata_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_alloc() of meta/sdata aggregator:test 4");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2477,11 +2493,13 @@ test_mf_aggr_alloc5(const char *env_h5_drvr, hid_t fapl)
haddr_t addr1, addr2, addr3;
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_alloc() of meta/sdata aggregator:test 5");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2607,11 +2625,13 @@ test_mf_aggr_alloc6(const char *env_h5_drvr, hid_t fapl)
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0, sdata_size=0;
frspace_state_t state;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_alloc() of meta/sdata aggregator:test 6");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2769,11 +2789,13 @@ test_mf_aggr_alloc7(const char *env_h5_drvr, hid_t fapl)
haddr_t ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, sdata_size=0;
frspace_state_t state;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_alloc() of meta/sdata aggregator:test 7");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2923,11 +2945,13 @@ test_mf_aggr_extend(const char *env_h5_drvr, hid_t fapl)
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0, sdata_size=0;
htri_t extended;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_try_extend() of meta/sdata aggregator: test 1");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -2998,7 +3022,7 @@ test_mf_aggr_extend(const char *env_h5_drvr, hid_t fapl)
TESTING("H5MF_try_extend() of meta/sdata aggregator: test 2");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
FAIL_STACK_ERROR
@ -3060,7 +3084,7 @@ test_mf_aggr_extend(const char *env_h5_drvr, hid_t fapl)
TESTING("H5MF_try_extend() of meta/sdata aggregator: test 3");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
FAIL_STACK_ERROR
@ -3161,11 +3185,13 @@ test_mf_aggr_absorb(const char *env_h5_drvr, hid_t fapl)
hsize_t ma_size=0, new_ma_size=0;
hsize_t sdata_size=0, new_sdata_size=0;
htri_t status;
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
TESTING("H5MF_try_shrink() of meta/sdata aggregator: test 1");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(contig_addr_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -3219,7 +3245,7 @@ test_mf_aggr_absorb(const char *env_h5_drvr, hid_t fapl)
TESTING("H5MF_try_shrink() of meta/sdata aggregator: test 2");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
FAIL_STACK_ERROR
@ -3270,7 +3296,7 @@ test_mf_aggr_absorb(const char *env_h5_drvr, hid_t fapl)
TESTING("H5MF_try_shrink() of meta/sdata aggregator: test 3");
/* Skip test when using VFDs that don't use the metadata aggregator */
if(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi")) {
if(contig_addr_vfd) {
/* Re-open the file */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
FAIL_STACK_ERROR
@ -3375,14 +3401,16 @@ test_mf_align_eoa(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
htri_t status, extended;
frspace_state_t state;
hsize_t alignment=0, mis_align=0, tmp=0, accum=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MM_alloc() of file allocation with alignment: test 1");
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -3489,8 +3517,7 @@ test_mf_align_eoa(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
if(have_alloc_vfd) {
/* Re-open the file with alignment and meta/sdata setting */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl1)) < 0)
FAIL_STACK_ERROR
@ -3542,8 +3569,7 @@ test_mf_align_eoa(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
if(have_alloc_vfd) {
/* Re-open the file with alignment and meta/sdata setting */
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl1)) < 0)
FAIL_STACK_ERROR
@ -3643,6 +3669,7 @@ test_mf_align_fs(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
H5MF_sect_ud_t udata;
htri_t extended;
hsize_t alignment=0, tmp=0, mis_align=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MF_alloc() of free-space manager with alignment: test 1");
@ -3809,8 +3836,9 @@ test_mf_align_fs(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
if((file_size = h5_get_file_size(filename, new_fapl)) < 0)
TEST_ERROR
@ -4006,6 +4034,7 @@ test_mf_align_alloc1(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
haddr_t ma_addr=HADDR_UNDEF;
hsize_t ma_size=0, mis_align=0;
hsize_t alignment=0, tmp=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MF_alloc() of meta/sdata aggregator with alignment: test 1");
@ -4013,8 +4042,9 @@ test_mf_align_alloc1(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -4262,14 +4292,16 @@ test_mf_align_alloc2(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
haddr_t ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, sdata_size=0, mis_align=0;
hsize_t alignment=0, tmp=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MF_alloc() of meta/sdata aggregator with alignment: test 2");
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -4588,6 +4620,7 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
haddr_t ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, sdata_size=0, mis_align=0;
hsize_t alignment=0, tmp=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MF_alloc() of meta/sdata aggregator with alignment: test 3");
@ -4595,8 +4628,9 @@ test_mf_align_alloc3(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -4882,6 +4916,7 @@ test_mf_align_alloc4(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
haddr_t ma_addr=HADDR_UNDEF;
hsize_t ma_size=0, saved_ma_size=0;
hsize_t alignment=0, mis_align=0, tmp=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MF_alloc() of meta/sdata aggregator with alignment: test 4");
@ -4889,8 +4924,9 @@ test_mf_align_alloc4(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -5087,6 +5123,7 @@ test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
haddr_t sdata_addr=HADDR_UNDEF, new_sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0, sdata_size=0, new_sdata_size=0;
hsize_t alignment=0, mis_align=0, tmp=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MF_alloc() of meta/sdata aggregator with alignment: test 5");
@ -5094,8 +5131,9 @@ test_mf_align_alloc5(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -5355,14 +5393,16 @@ test_mf_align_alloc6(const char *env_h5_drvr, hid_t fapl, hid_t new_fapl)
haddr_t ma_addr=HADDR_UNDEF, new_ma_addr=HADDR_UNDEF, sdata_addr=HADDR_UNDEF;
hsize_t ma_size=0, new_ma_size=0, sdata_size=0;
hsize_t alignment=0, mis_align=0, tmp=0;
hbool_t have_alloc_vfd; /* Whether VFD used has an 'alloc' callback */
TESTING("H5MF_alloc() of meta/sdata aggregator with alignment: test 6");
/* Skip test when using VFDs that have their own 'alloc' callback, which
* don't push mis-aligned space fragments on the file free space list
*/
if(HDstrcmp(env_h5_drvr, "stdio") && HDstrcmp(env_h5_drvr, "split") &&
HDstrcmp(env_h5_drvr, "multi")) {
have_alloc_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "stdio")
&& HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
if(have_alloc_vfd) {
/* Set the filename to use for this test (dependent on fapl) */
h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
@ -5539,7 +5579,7 @@ main(void)
hid_t new_fapl = -1; /* File access property list for alignment & aggr setting */
unsigned nerrors = 0; /* Cumulative error count */
test_type_t curr_test;
const char *env_h5_drvr = NULL; /* File Driver value from environment */
const char *env_h5_drvr; /* File Driver value from environment */
/* Get the VFD to use */
env_h5_drvr = HDgetenv("HDF5_DRIVER");

View File

@ -4222,59 +4222,51 @@ main(void)
{
int nerrors = 0;
hid_t fapl = -1;
const char *envval = NULL;
envval = HDgetenv("HDF5_DRIVER");
if (envval == NULL)
envval = "nomatch";
if (HDstrcmp(envval, "split") && HDstrcmp(envval, "multi")) {
h5_reset();
fapl = h5_fileaccess();
if (setup(fapl) < 0) goto error;
h5_reset();
fapl = h5_fileaccess();
if (setup(fapl) < 0) goto error;
nerrors += test_basic(fapl);
nerrors += test_illegal(fapl);
nerrors += test_samefile(fapl);
nerrors += test_hide(fapl);
nerrors += test_assoc(fapl);
nerrors += test_mntlnk(fapl);
nerrors += test_unlink(fapl);
nerrors += test_move(fapl);
nerrors += test_mvmpt(fapl);
nerrors += test_preopen(fapl);
nerrors += test_postopen(fapl);
nerrors += test_interlink(fapl);
nerrors += test_uniformity(fapl);
nerrors += test_close(fapl);
nerrors += test_mount_after_close(fapl);
nerrors += test_mount_after_unmount(fapl);
nerrors += test_missing_unmount(fapl);
nerrors += test_hold_open_file(fapl);
nerrors += test_hold_open_group(fapl);
nerrors += test_fcdegree_same(fapl);
nerrors += test_fcdegree_semi(fapl);
nerrors += test_fcdegree_strong(fapl);
nerrors += test_acc_perm(fapl);
nerrors += test_mult_mount(fapl);
nerrors += test_nested_survive(fapl);
nerrors += test_close_parent(fapl);
nerrors += test_cut_graph(fapl);
nerrors += test_symlink(fapl);
nerrors += test_sharedacc(fapl);
nerrors += test_sharedclose(fapl);
nerrors += test_basic(fapl);
nerrors += test_illegal(fapl);
nerrors += test_samefile(fapl);
nerrors += test_hide(fapl);
nerrors += test_assoc(fapl);
nerrors += test_mntlnk(fapl);
nerrors += test_unlink(fapl);
nerrors += test_move(fapl);
nerrors += test_mvmpt(fapl);
nerrors += test_preopen(fapl);
nerrors += test_postopen(fapl);
nerrors += test_interlink(fapl);
nerrors += test_uniformity(fapl);
nerrors += test_close(fapl);
nerrors += test_mount_after_close(fapl);
nerrors += test_mount_after_unmount(fapl);
nerrors += test_missing_unmount(fapl);
nerrors += test_hold_open_file(fapl);
nerrors += test_hold_open_group(fapl);
nerrors += test_fcdegree_same(fapl);
nerrors += test_fcdegree_semi(fapl);
nerrors += test_fcdegree_strong(fapl);
nerrors += test_acc_perm(fapl);
nerrors += test_mult_mount(fapl);
nerrors += test_nested_survive(fapl);
nerrors += test_close_parent(fapl);
nerrors += test_cut_graph(fapl);
nerrors += test_symlink(fapl);
nerrors += test_sharedacc(fapl);
nerrors += test_sharedclose(fapl);
if (nerrors) goto error;
puts("All mount tests passed.");
h5_cleanup(FILENAME, fapl);
if (nerrors) goto error;
puts("All mount tests passed.");
h5_cleanup(FILENAME, fapl);
}
else
{
puts("All mount tests skipped - Incompatible with current Virtual File Driver");
}
return 0;
error:
puts("***** MOUNT ERRORS *****");
return 1;
error:
puts("***** MOUNT ERRORS *****");
return 1;
}

View File

@ -85,184 +85,175 @@ test_atomic_dtype(hid_t file)
int i, j, n;
hsize_t dims[2];
void *tmp;
const char *envval = NULL;
TESTING("atomic datatype");
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split") && HDstrcmp(envval, "multi")) {
/* Initialize the dataset */
for(i = n = 0; i < DIM0; i++)
for(j = 0; j < DIM1; j++)
ipoints2[i][j] = n++;
/* Create the data space */
dims[0] = DIM0;
dims[1] = DIM1;
if((space = H5Screate_simple(2, dims, NULL)) < 0) TEST_ERROR;
/* Initialize the dataset */
for(i = n = 0; i < DIM0; i++)
for(j = 0; j < DIM1; j++)
ipoints2[i][j] = n++;
/*------------------- Test data values ------------------------*/
/* Create the dataset */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_1, H5T_STD_I32BE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
/* Create the data space */
dims[0] = DIM0;
dims[1] = DIM1;
if((space = H5Screate_simple(2, dims, NULL)) < 0) TEST_ERROR;
/* Write the data to the dataset */
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, ipoints2) < 0)
TEST_ERROR;
/*------------------- Test data values ------------------------*/
/* Create the dataset */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_1, H5T_STD_I32BE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
/* Close dataset */
if(H5Dclose(dataset) < 0) TEST_ERROR;
/* Write the data to the dataset */
if(H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, ipoints2) < 0)
TEST_ERROR;
/* Open dataset again to check H5Tget_native_type */
if((dataset = H5Dopen2(file, DSET_ATOMIC_NAME_1, H5P_DEFAULT)) < 0) TEST_ERROR;
/* Close dataset */
if(H5Dclose(dataset) < 0) TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
/* Open dataset again to check H5Tget_native_type */
if((dataset = H5Dopen2(file, DSET_ATOMIC_NAME_1, H5P_DEFAULT)) < 0) TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DEFAULT)) < 0)
TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_INT))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_STD_I32BE))
TEST_ERROR;
if(H5T_INTEGER != H5Tget_class(native_type))
TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DEFAULT)) < 0)
TEST_ERROR;
/* Read the dataset back. The temporary buffer is for special platforms
* like Cray. */
tmp = malloc((size_t)(DIM0 * DIM1 * H5Tget_size(native_type)));
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_INT))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_STD_I32BE))
TEST_ERROR;
if(H5T_INTEGER != H5Tget_class(native_type))
TEST_ERROR;
if(H5Dread(dataset, native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, tmp) < 0)
TEST_ERROR;
/* Read the dataset back. The temporary buffer is for special platforms
* like Cray. */
tmp = malloc((size_t)(DIM0 * DIM1 * H5Tget_size(native_type)));
/* Copy data from temporary buffer to destination buffer */
memcpy(icheck2, tmp, (size_t)(DIM0 * DIM1 * H5Tget_size(native_type)));
free(tmp);
if(H5Dread(dataset, native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, tmp) < 0)
TEST_ERROR;
/* Convert to the integer type */
if(H5Tconvert(native_type, H5T_NATIVE_INT, (DIM0*DIM1), icheck2, NULL, H5P_DEFAULT) < 0)
TEST_ERROR;
/* Copy data from temporary buffer to destination buffer */
memcpy(icheck2, tmp, (size_t)(DIM0 * DIM1 * H5Tget_size(native_type)));
free(tmp);
/* Check that the values read are the same as the values written */
for(i = 0; i < DIM0; i++)
for(j = 0; j < DIM1; j++)
if(ipoints2[i][j] != icheck2[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
} /* end if */
/* Convert to the integer type */
if(H5Tconvert(native_type, H5T_NATIVE_INT, (DIM0*DIM1), icheck2, NULL, H5P_DEFAULT) < 0)
TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
/* Check that the values read are the same as the values written */
for(i = 0; i < DIM0; i++)
for(j = 0; j < DIM1; j++)
if(ipoints2[i][j] != icheck2[i][j]) {
H5_FAILED();
printf(" Read different values than written.\n");
printf(" At index %d,%d\n", i, j);
goto error;
} /* end if */
/*------------------ Test different data types ----------------*/
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
/* Create the dataset of H5T_STD_I64LE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_2, H5T_STD_I64LE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
/*------------------ Test different data types ----------------*/
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
/* Create the dataset of H5T_STD_I64LE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_2, H5T_STD_I64LE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DEFAULT)) < 0)
TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_LLONG))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_STD_I64LE))
TEST_ERROR;
if(H5T_INTEGER!=H5Tget_class(native_type))
TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DEFAULT)) < 0)
TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_LLONG))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_STD_I64LE))
TEST_ERROR;
if(H5T_INTEGER!=H5Tget_class(native_type))
TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
/* Create the dataset of H5T_STD_I8LE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_3, H5T_STD_I8LE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
/* Create the dataset of H5T_STD_I8LE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_3, H5T_STD_I8LE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_ASCEND)) < 0)
TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_ASCEND)) < 0)
TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_CHAR))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_STD_I8LE))
TEST_ERROR;
if(H5T_INTEGER!=H5Tget_class(native_type))
TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_CHAR))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_STD_I8LE))
TEST_ERROR;
if(H5T_INTEGER!=H5Tget_class(native_type))
TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
/* Create the dataset of H5T_IEEE_F32BE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_4, H5T_IEEE_F32BE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
/* Create the dataset of H5T_IEEE_F32BE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_4, H5T_IEEE_F32BE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DESCEND)) < 0)
TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DESCEND)) < 0)
TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_FLOAT))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_IEEE_F32BE))
TEST_ERROR;
if(H5T_FLOAT!=H5Tget_class(native_type))
TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_FLOAT))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_IEEE_F32BE))
TEST_ERROR;
if(H5T_FLOAT!=H5Tget_class(native_type))
TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
/* Create the dataset of H5T_IEEE_F64BE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_5, H5T_IEEE_F64BE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
/* Create the dataset of H5T_IEEE_F64BE */
if((dataset = H5Dcreate2(file, DSET_ATOMIC_NAME_5, H5T_IEEE_F64BE, space,
H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
if((dtype = H5Dget_type(dataset)) < 0) TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DESCEND)) < 0)
TEST_ERROR;
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DESCEND)) < 0)
TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_DOUBLE))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_IEEE_F64BE))
TEST_ERROR;
if(H5T_FLOAT != H5Tget_class(native_type))
TEST_ERROR;
/* Verify the datatype retrieved and converted */
if(H5Tget_order(native_type) != H5Tget_order(H5T_NATIVE_DOUBLE))
TEST_ERROR;
if(H5Tget_size(native_type) < H5Tget_size(H5T_IEEE_F64BE))
TEST_ERROR;
if(H5T_FLOAT != H5Tget_class(native_type))
TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
if(H5Dclose(dataset) < 0) TEST_ERROR;
if(H5Tclose(native_type) < 0) TEST_ERROR;
if(H5Tclose(dtype) < 0) TEST_ERROR;
/* Close dataspace */
if(H5Sclose(space) < 0) TEST_ERROR;
/* Close dataspace */
if(H5Sclose(space) < 0) TEST_ERROR;
PASSED();
PASSED();
}
else
{
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
}
return 0;
error:
return -1;
error:
return -1;
}
@ -307,9 +298,9 @@ test_compound_dtype2(hid_t file)
TESTING("nested compound datatype");
/* Allocate space for the points & check arrays */
if((points=malloc(sizeof(s1)*DIM0*DIM1))==NULL)
if(NULL == (points = (s1 *)HDmalloc(sizeof(s1) * DIM0 * DIM1)))
TEST_ERROR;
if((check=calloc(sizeof(s1),DIM0*DIM1))==NULL)
if(NULL == (check = (s1 *)HDcalloc(sizeof(s1), DIM0 * DIM1)))
TEST_ERROR;
/* Initialize the dataset */
@ -317,9 +308,9 @@ test_compound_dtype2(hid_t file)
for (j = 0; j < DIM1; j++,temp_point++) {
temp_point->c = 't';
temp_point->i = n++;
temp_point->st.c2 = i+j;
temp_point->st.l2 = (i*5+j*50)*n;
temp_point->l = (i*10+j*100)*n;
temp_point->st.c2 = (short)(i + j);
temp_point->st.l2 = (i * 5 + j * 50) * n;
temp_point->l = (unsigned long_long)((i * 10 + j * 100) * n);
}
}
@ -554,16 +545,16 @@ test_compound_dtype(hid_t file)
/* Allocate space for the points & check arrays */
if((points=malloc(sizeof(s1)*DIM0*DIM1))==NULL)
if(NULL == (points = (s1 *)HDmalloc(sizeof(s1) * DIM0 * DIM1)))
TEST_ERROR;
if((check = calloc(sizeof(s1), DIM0 * DIM1)) == NULL)
if(NULL == (check = (s1 *)HDcalloc(sizeof(s1), DIM0 * DIM1)))
TEST_ERROR;
/* Initialize the dataset */
for(i = n = 0, temp_point=points; i < DIM0; i++)
for(j = 0; j < DIM1; j++,temp_point++) {
temp_point->c = 't';
temp_point->i = n++;
temp_point->i = (unsigned int)(n++);
temp_point->l = (i*10+j*100)*n;
} /* end for */
@ -727,9 +718,9 @@ test_compound_dtype3(hid_t file)
TESTING("compound datatype with array as field");
/* Allocate space for the points & check arrays */
if((points=malloc(sizeof(s1)*DIM0*DIM1))==NULL)
if(NULL == (points = (s1 *)HDmalloc(sizeof(s1) * DIM0 * DIM1)))
TEST_ERROR;
if((check=calloc(sizeof(s1),DIM0*DIM1))==NULL)
if(NULL == (check = (s1 *)HDcalloc(sizeof(s1), DIM0 * DIM1)))
TEST_ERROR;
/* Initialize the dataset */
@ -925,9 +916,9 @@ test_compound_opaque(hid_t file)
TESTING("compound datatype with opaque field");
/* Allocate space for the points & check arrays */
if((points=HDmalloc(sizeof(s1)*DIM0*DIM1))==NULL)
if(NULL == (points = (s1 *)HDmalloc(sizeof(s1) * DIM0 * DIM1)))
TEST_ERROR;
if((check=HDcalloc(sizeof(s1),DIM0*DIM1))==NULL)
if(NULL == (check = (s1 *)HDcalloc(sizeof(s1), DIM0 * DIM1)))
TEST_ERROR;
/* Initialize the dataset */
@ -936,7 +927,7 @@ test_compound_opaque(hid_t file)
temp_point->c = 't';
temp_point->l = (i*10+j*100)*n;
for(k = 0; k < 5; k++)
(temp_point->o)[k] = n++;
(temp_point->o)[k] = (unsigned char)(n++);
} /* end for */
/* Create the data space */
@ -1117,7 +1108,7 @@ test_enum_dtype(hid_t file)
/* Initialize the dataset */
for(i = 0; i < DIM0; i++)
for(j = 0, n = 0; j < DIM1; j++, n++)
spoints2[i][j] = (i*10+j*100+n)%8;
spoints2[i][j] = (short)((i * 10 + j * 100 + n) % 8);
/* Create the data space */
dims[0] = DIM0;
@ -1128,7 +1119,7 @@ test_enum_dtype(hid_t file)
if((tid = H5Tenum_create(H5T_STD_I16LE)) < 0) TEST_ERROR;
for(i = 0; i < 8; i++) {
sub_colors[i * 2] = i;
sub_colors[i * 2] = (unsigned char)i;
sub_colors[i * 2 + 1] = 0;
if(H5Tenum_insert(tid, mname[i], &(sub_colors[i*2])) < 0) TEST_ERROR;
} /* end for */
@ -1141,7 +1132,7 @@ test_enum_dtype(hid_t file)
if((tid_m = H5Tenum_create(H5T_NATIVE_SHORT)) < 0) TEST_ERROR;
for(i = 0; i < 8; i++) {
colors[i] = i;
colors[i] = (short)i;
if(H5Tenum_insert(tid_m, mname[i], &(colors[i])) < 0) TEST_ERROR;
} /* end for */
@ -1240,9 +1231,9 @@ test_array_dtype(hid_t file)
TESTING("array of compound datatype");
/* Allocate space for the points & check arrays */
if((points=malloc(sizeof(s1)*DIM0*DIM1*5))==NULL)
if(NULL == (points = (s1 *)HDmalloc(sizeof(s1) * DIM0 * DIM1 * 5)))
TEST_ERROR;
if((check=calloc(sizeof(s1),DIM0*DIM1*5))==NULL)
if(NULL == (check = (s1 *)HDcalloc(sizeof(s1), DIM0 * DIM1 * 5)))
TEST_ERROR;
/* Initialize the dataset */
@ -1307,7 +1298,7 @@ test_array_dtype(hid_t file)
/* Read the dataset back. Temporary buffer is for special platforms like
* Cray */
tmp = malloc(DIM0 * DIM1 * H5Tget_size(native_type));
tmp = HDmalloc(DIM0 * DIM1 * H5Tget_size(native_type));
if(H5Dread(dataset, native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, tmp) < 0)
TEST_ERROR;
@ -1429,7 +1420,7 @@ test_array_dtype2(hid_t file)
/* Read the dataset back. Temporary buffer is for special platforms like
* Cray */
tmp = malloc(DIM0 * DIM1 * H5Tget_size(native_type));
tmp = HDmalloc(DIM0 * DIM1 * H5Tget_size(native_type));
if(H5Dread(dataset, native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, tmp) < 0)
TEST_ERROR;
@ -1500,15 +1491,15 @@ test_vl_dtype(hid_t file)
/* Allocate and initialize VL data to write */
for(i=0; i<SPACE1_DIM1; i++) {
wdata[i].p=malloc((i+1)*sizeof(hvl_t));
wdata[i].p = HDmalloc((i + 1) * sizeof(hvl_t));
if(wdata[i].p==NULL) {
H5_FAILED();
printf(" Cannot allocate memory for VL data! i=%u\n",(unsigned)i);
goto error;
} /* end if */
wdata[i].len=i+1;
for(t1=wdata[i].p,j=0; j<(i+1); j++, t1++) {
t1->p=malloc((j+1)*sizeof(unsigned int));
for(t1 = (hvl_t *)wdata[i].p, j = 0; j < (i + 1); j++, t1++) {
t1->p = HDmalloc((j + 1) * sizeof(unsigned int));
if(t1->p==NULL) {
H5_FAILED();
printf(" Cannot allocate memory for VL data! i=%u, j=%u\n",(unsigned)i,(unsigned)j);
@ -1575,7 +1566,7 @@ test_vl_dtype(hid_t file)
printf(" VL data length don't match!, wdata[%d].len=%d, rdata[%d].len=%d\n",(int)i,(int)wdata[i].len,(int)i,(int)rdata[i].len);
goto error;
} /* end if */
for(t1 = wdata[i].p, t2 = rdata[i].p, j = 0; j<rdata[i].len; j++, t1++, t2++) {
for(t1 = (hvl_t *)wdata[i].p, t2 = (hvl_t *)rdata[i].p, j = 0; j<rdata[i].len; j++, t1++, t2++) {
if(t1->len != t2->len) {
H5_FAILED();
printf(" VL data length don't match!, wdata[%d].len=%d, rdata[%d].len=%d\n",(int)i,(int)wdata[i].len,(int)i,(int)rdata[i].len);
@ -1584,8 +1575,8 @@ test_vl_dtype(hid_t file)
/* use temporary buffer to convert datatype. This is for special
* platforms like Cray */
tmp=malloc(t2->len*sizeof(unsigned int));
memcpy(tmp, t2->p, t2->len*H5Tget_size(nat_super_type));
tmp = (void **)HDmalloc(t2->len * sizeof(unsigned int));
HDmemcpy(tmp, t2->p, t2->len * H5Tget_size(nat_super_type));
if(H5Tconvert(nat_super_type, H5T_NATIVE_UINT, t2->len, tmp, NULL, H5P_DEFAULT))
TEST_ERROR;
@ -1878,135 +1869,124 @@ test_refer_dtype(hid_t file)
hid_t sid1; /* Dataspace ID */
hid_t tid1, dtype, native_type; /* Datatype ID */
hsize_t dims1[] = {1};
H5O_type_t obj_type; /* Object type */
hobj_ref_t *wbuf, /* buffer to write to disk */
*rbuf; /* buffer read from disk */
const char *envval = NULL;
/* Output message about test being performed */
TESTING("reference datatype");
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "multi")) {
H5O_type_t obj_type; /* Object type */
/* Allocate write & read buffers */
wbuf=HDmalloc(MAX(sizeof(unsigned),sizeof(hobj_ref_t)));
rbuf=HDmalloc(MAX(sizeof(unsigned),sizeof(hobj_ref_t)));
/* Allocate write & read buffers */
wbuf = (hobj_ref_t *)HDmalloc(MAX(sizeof(unsigned), sizeof(hobj_ref_t)));
rbuf = (hobj_ref_t *)HDmalloc(MAX(sizeof(unsigned), sizeof(hobj_ref_t)));
/* Create dataspace for datasets */
if((sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL)) < 0)
TEST_ERROR;
/* Create dataspace for datasets */
if((sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL)) < 0)
TEST_ERROR;
/* Create a group */
if((group = H5Gcreate2(file, "Group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
/* Create a group */
if((group = H5Gcreate2(file, "Group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
/* Create a datatype to refer to */
if((tid1 = H5Tcreate (H5T_COMPOUND, sizeof(s1_t))) < 0)
TEST_ERROR;
/* Create a datatype to refer to */
if((tid1 = H5Tcreate (H5T_COMPOUND, sizeof(s1_t))) < 0)
TEST_ERROR;
/* Insert fields */
if(H5Tinsert (tid1, "a", HOFFSET(s1_t,a), H5T_NATIVE_INT) < 0)
TEST_ERROR;
/* Insert fields */
if(H5Tinsert (tid1, "a", HOFFSET(s1_t,a), H5T_NATIVE_INT) < 0)
TEST_ERROR;
if(H5Tinsert (tid1, "b", HOFFSET(s1_t, b), H5T_NATIVE_INT) < 0)
TEST_ERROR;
if(H5Tinsert (tid1, "b", HOFFSET(s1_t, b), H5T_NATIVE_INT) < 0)
TEST_ERROR;
if(H5Tinsert(tid1, "c", HOFFSET(s1_t, c), H5T_NATIVE_FLOAT) < 0)
TEST_ERROR;
if(H5Tinsert(tid1, "c", HOFFSET(s1_t, c), H5T_NATIVE_FLOAT) < 0)
TEST_ERROR;
/* Save datatype for later */
if(H5Tcommit2(group, "Datatype1", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0)
TEST_ERROR;
/* Save datatype for later */
if(H5Tcommit2(group, "Datatype1", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0)
TEST_ERROR;
/* Close datatype */
if(H5Tclose(tid1) < 0)
TEST_ERROR;
/* Close datatype */
if(H5Tclose(tid1) < 0)
TEST_ERROR;
/* Close group */
if(H5Gclose(group) < 0)
TEST_ERROR;
/* Close group */
if(H5Gclose(group) < 0)
TEST_ERROR;
/* Create a dataset */
if((dataset = H5Dcreate2(file, "Dataset3", H5T_STD_REF_OBJ, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
TEST_ERROR;
/* Create a dataset */
if((dataset = H5Dcreate2(file, "Dataset3", H5T_STD_REF_OBJ, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0)
TEST_ERROR;
/* Create reference to named datatype */
if(H5Rcreate(wbuf, file, "/Group1/Datatype1", H5R_OBJECT, -1) < 0)
TEST_ERROR;
if(H5Rget_obj_type2(dataset, H5R_OBJECT, wbuf, &obj_type) < 0)
TEST_ERROR;
if(obj_type != H5O_TYPE_NAMED_DATATYPE)
TEST_ERROR;
/* Create reference to named datatype */
if(H5Rcreate(wbuf, file, "/Group1/Datatype1", H5R_OBJECT, -1) < 0)
TEST_ERROR;
if(H5Rget_obj_type2(dataset, H5R_OBJECT, wbuf, &obj_type) < 0)
TEST_ERROR;
if(obj_type != H5O_TYPE_NAMED_DATATYPE)
TEST_ERROR;
/* Write selection to disk */
if(H5Dwrite(dataset, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, wbuf) < 0)
TEST_ERROR;
/* Write selection to disk */
if(H5Dwrite(dataset, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, wbuf) < 0)
TEST_ERROR;
/* Close disk dataspace */
if(H5Sclose(sid1) < 0)
TEST_ERROR;
/* Close disk dataspace */
if(H5Sclose(sid1) < 0)
TEST_ERROR;
/* Close Dataset */
if(H5Dclose(dataset) < 0)
TEST_ERROR;
/* Close Dataset */
if(H5Dclose(dataset) < 0)
TEST_ERROR;
/* Open the dataset */
if((dataset = H5Dopen2(file, "/Dataset3", H5P_DEFAULT)) < 0)
TEST_ERROR;
/* Open the dataset */
if((dataset = H5Dopen2(file, "/Dataset3", H5P_DEFAULT)) < 0)
TEST_ERROR;
/* Get datatype for dataset */
if((dtype = H5Dget_type(dataset)) < 0)
TEST_ERROR;
/* Get datatype for dataset */
if((dtype = H5Dget_type(dataset)) < 0)
TEST_ERROR;
/* Construct native type */
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DEFAULT)) < 0)
TEST_ERROR;
/* Construct native type */
if((native_type = H5Tget_native_type(dtype, H5T_DIR_DEFAULT)) < 0)
TEST_ERROR;
/* Check if the data type is equal */
if(!H5Tequal(native_type, H5T_STD_REF_OBJ))
TEST_ERROR;
/* Check if the data type is equal */
if(!H5Tequal(native_type, H5T_STD_REF_OBJ))
TEST_ERROR;
/* Read selection from disk */
if(H5Dread(dataset, native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf) < 0)
TEST_ERROR;
/* Read selection from disk */
if(H5Dread(dataset, native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf) < 0)
TEST_ERROR;
/* Open datatype object */
if((tid1 = H5Rdereference(dataset, H5R_OBJECT, rbuf)) < 0)
TEST_ERROR;
/* Open datatype object */
if((tid1 = H5Rdereference(dataset, H5R_OBJECT, rbuf)) < 0)
TEST_ERROR;
/* Verify correct datatype */
if(H5Tget_class(tid1) != H5T_COMPOUND)
TEST_ERROR;
/* Verify correct datatype */
if(H5Tget_class(tid1) != H5T_COMPOUND)
TEST_ERROR;
if(H5Tget_nmembers(tid1)!=3)
TEST_ERROR;
if(H5Tget_nmembers(tid1)!=3)
TEST_ERROR;
/* Close datatype */
if(H5Tclose(tid1) < 0)
TEST_ERROR;
/* Close datatype */
if(H5Tclose(tid1) < 0)
TEST_ERROR;
/* Close Dataset */
if(H5Dclose(dataset) < 0)
TEST_ERROR;
/* Close Dataset */
if(H5Dclose(dataset) < 0)
TEST_ERROR;
/* Free memory buffers */
free(wbuf);
free(rbuf);
/* Free memory buffers */
free(wbuf);
free(rbuf);
PASSED();
PASSED();
}
else
{
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
}
return 0;
error:
return -1;
error:
return -1;
} /* test_refer_dtype() */
@ -2052,8 +2032,8 @@ test_refer_dtype2(hid_t file)
TESTING("dataset region reference");
/* Allocate write & read buffers */
dwbuf = malloc(sizeof(uint8_t) * SPACE2_DIM1 * SPACE2_DIM2);
drbuf = calloc(sizeof(uint8_t), SPACE2_DIM1 * SPACE2_DIM2);
dwbuf = (uint8_t *)HDmalloc(sizeof(uint8_t) * SPACE2_DIM1 * SPACE2_DIM2);
drbuf = (uint8_t *)HDcalloc(sizeof(uint8_t), SPACE2_DIM1 * SPACE2_DIM2);
/* Create dataspace for datasets */
if((sid2 = H5Screate_simple(SPACE2_RANK, dims2, NULL)) < 0)
@ -2064,7 +2044,7 @@ test_refer_dtype2(hid_t file)
TEST_ERROR;
for(tu8 = dwbuf, i = 0; i < SPACE2_DIM1 * SPACE2_DIM2; i++)
*tu8++=i*3;
*tu8++ = (uint8_t)(i * 3);
/* Write selection to disk */
if(H5Dwrite(dset2, H5T_STD_U8LE, H5S_ALL, H5S_ALL, H5P_DEFAULT, dwbuf) < 0)

View File

@ -159,7 +159,7 @@ addr_insert(H5O_info_t *oi)
/* Extend the table */
if(idtab_g.nobjs >= idtab_g.nalloc) {
idtab_g.nalloc = MAX(256, 2*idtab_g.nalloc);
idtab_g.obj = HDrealloc(idtab_g.obj, idtab_g.nalloc * sizeof(idtab_g.obj[0]));
idtab_g.obj = (haddr_t *)HDrealloc(idtab_g.obj, idtab_g.nalloc * sizeof(idtab_g.obj[0]));
} /* end if */
/* Insert the entry */
@ -485,7 +485,7 @@ test_copy_attach_attribute_vl(hid_t loc_id)
buf[i].len = i*3+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = j+1;
((int *)buf[i].p)[j] = (int)(j + 1);
} /* end for */
if((aid = H5Acreate2(loc_id, "vlen attribute", tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
@ -785,7 +785,7 @@ compare_std_attributes(hid_t oid, hid_t oid2, hid_t pid)
unsigned i; /* Local index variable */
/* Compare the number of attributes */
if(oinfo1.num_attrs != oinfo1.num_attrs) TEST_ERROR
if(oinfo1.num_attrs != oinfo2.num_attrs) TEST_ERROR
/* Check the attributes are equal */
for(i = 0; i < (unsigned)oinfo1.num_attrs; i++) {
@ -849,8 +849,8 @@ compare_data(hid_t parent1, hid_t parent2, hid_t pid, hid_t tid, size_t nelmts,
if((base_tid = H5Tget_super(tid)) < 0) TEST_ERROR
/* Loop over elements in buffers */
vl_buf1 = buf1;
vl_buf2 = buf2;
vl_buf1 = (const hvl_t *)buf1;
vl_buf2 = (const hvl_t *)buf2;
for(u = 0; u < nelmts; u++, vl_buf1++, vl_buf2++) {
/* Check vlen lengths */
if(vl_buf1->len != vl_buf2->len) TEST_ERROR
@ -872,8 +872,8 @@ compare_data(hid_t parent1, hid_t parent2, hid_t pid, hid_t tid, size_t nelmts,
const hobj_ref_t *ref_buf1, *ref_buf2; /* Aliases for buffers to compare */
/* Loop over elements in buffers */
ref_buf1 = buf1;
ref_buf2 = buf2;
ref_buf1 = (const hobj_ref_t *)buf1;
ref_buf2 = (const hobj_ref_t *)buf2;
for(u = 0; u < nelmts; u++, ref_buf1++, ref_buf2++) {
hid_t obj1_id, obj2_id; /* IDs for objects referenced */
H5O_type_t obj1_type, obj2_type; /* Types of objects referenced */
@ -928,8 +928,8 @@ compare_data(hid_t parent1, hid_t parent2, hid_t pid, hid_t tid, size_t nelmts,
const hdset_reg_ref_t *ref_buf1, *ref_buf2; /* Aliases for buffers to compare */
/* Loop over elements in buffers */
ref_buf1 = buf1;
ref_buf2 = buf2;
ref_buf1 = (const hdset_reg_ref_t *)buf1;
ref_buf2 = (const hdset_reg_ref_t *)buf2;
for(u = 0; u < nelmts; u++, ref_buf1++, ref_buf2++) {
hid_t obj1_id, obj2_id; /* IDs for objects referenced */
hid_t obj1_sid, obj2_sid; /* Dataspace IDs for objects referenced */
@ -3495,7 +3495,7 @@ test_copy_dataset_contig_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
buf[i].len = i+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = i*10+j;
((int *)buf[i].p)[j] = (int)(i * 10 + j);
} /* end for */
/* Initialize the filenames */
@ -3626,7 +3626,7 @@ test_copy_dataset_chunked_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
buf[i].len = i+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = i*10+j;
((int *)buf[i].p)[j] = (int)(i * 10 + j);
} /* end for */
/* Initialize the filenames */
@ -3763,7 +3763,7 @@ test_copy_dataset_compact_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
buf[i].len = i+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = i*10+j;
((int *)buf[i].p)[j] = (int)(i * 10 + j);
} /* end for */
/* Initialize the filenames */
@ -4020,7 +4020,7 @@ test_copy_dataset_compressed_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
/* set initial data values */
for (i = 0; i < DIM_SIZE_1; i++) {
for (j = 0; j < DIM_SIZE_2; j++) {
buf[i][j].len = j + 1;
buf[i][j].len = (size_t)(j + 1);
buf[i][j].p = (int *)HDmalloc(buf[i][j].len * sizeof(int));
for (k = 0; k < (int)buf[i][j].len; k++)
((int *)buf[i][j].p)[k] = i * 10000 + j * 100 + k;
@ -5625,7 +5625,7 @@ test_copy_old_layout(hid_t fcpl_dst, hid_t fapl)
addr_reset();
/* open source file (read-only) */
if((fid_src = H5Fopen(src_filename, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
if((fid_src = H5Fopen(src_filename, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) TEST_ERROR
/* create destination file */
if((fid_dst = H5Fcreate(dst_filename, H5F_ACC_TRUNC, fcpl_dst, fapl)) < 0) TEST_ERROR
@ -5706,7 +5706,7 @@ test_copy_dataset_compact_named_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
buf[i].len = i+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = i*10+j;
((int *)buf[i].p)[j] = (int)(i * 10 + j);
} /* end for */
/* Initialize the filenames */
@ -5853,7 +5853,7 @@ test_copy_dataset_contig_named_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
buf[i].len = i+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = i*10+j;
((int *)buf[i].p)[j] = (int)(i * 10 + j);
} /* end for */
/* Initialize the filenames */
@ -5994,7 +5994,7 @@ test_copy_dataset_chunked_named_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
buf[i].len = i+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = i*10+j;
((int *)buf[i].p)[j] = (int)(i * 10 + j);
} /* end for */
/* Initialize the filenames */
@ -6143,7 +6143,7 @@ test_copy_dataset_compressed_named_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl
buf[i].len = i+1;
buf[i].p = (int *)HDmalloc(buf[i].len * sizeof(int));
for(j = 0; j < buf[i].len; j++)
((int *)buf[i].p)[j] = i*10+j;
((int *)buf[i].p)[j] = (int)(i * 10 + j);
} /* end for */
/* Initialize the filenames */
@ -6296,7 +6296,7 @@ test_copy_dataset_compact_vl_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
return 1;
} /* end if */
buf[i].len=i+1;
for(tvl=buf[i].p,j=0; j<(i+1); j++, tvl++) {
for(tvl = (hvl_t *)buf[i].p,j=0; j<(i+1); j++, tvl++) {
tvl->p=HDmalloc((j+1)*sizeof(unsigned int));
if(tvl->p==NULL) {
TestErrPrintf("Cannot allocate memory for VL data! i=%u, j=%u\n",i,j);
@ -6451,7 +6451,7 @@ test_copy_dataset_contig_vl_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
TEST_ERROR
} /* end if */
buf[i].len=i+1;
for(tvl=buf[i].p,j=0; j<(i+1); j++, tvl++) {
for(tvl = (hvl_t *)buf[i].p,j=0; j<(i+1); j++, tvl++) {
tvl->p=HDmalloc((j+1)*sizeof(unsigned int));
if(tvl->p==NULL) {
TestErrPrintf("Cannot allocate memory for VL data! i=%u, j=%u\n",i,j);
@ -6606,7 +6606,7 @@ test_copy_dataset_chunked_vl_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
TEST_ERROR
} /* end if */
buf[i].len=i+1;
for(tvl=buf[i].p,j=0; j<(i+1); j++, tvl++) {
for(tvl = (hvl_t *)buf[i].p,j=0; j<(i+1); j++, tvl++) {
tvl->p=HDmalloc((j+1)*sizeof(unsigned int));
if(tvl->p==NULL) {
TestErrPrintf("Cannot allocate memory for VL data! i=%u, j=%u\n",i,j);
@ -6762,7 +6762,7 @@ test_copy_dataset_compressed_vl_vl(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
TEST_ERROR
} /* end if */
buf[i].len=i+1;
for(tvl=buf[i].p,j=0; j<(i+1); j++, tvl++) {
for(tvl = (hvl_t *)buf[i].p,j=0; j<(i+1); j++, tvl++) {
tvl->p=HDmalloc((j+1)*sizeof(unsigned int));
if(tvl->p==NULL) {
TestErrPrintf("Cannot allocate memory for VL data! i=%u, j=%u\n",i,j);
@ -6998,9 +6998,7 @@ test_copy_option(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl, unsigned flag, hboo
if(attach_reg_ref_attr(fid_src, gid_ref) < 0) TEST_ERROR
/* create a dataset of region references */
/*
if(create_reg_ref_dataset(fid_src, gid_ref) < 0) TEST_ERROR
*/
/* Close group holding reference objects */
if(H5Gclose(gid_ref) < 0) TEST_ERROR
@ -7150,170 +7148,152 @@ error:
int
main(void)
{
const char *envval;
int nerrors = 0;
hid_t fapl, fapl2;
hid_t fcpl_shared;
int configuration; /* Configuration of tests. */
int ExpressMode;
/* Don't run this test using the core, split, or multi file drivers */
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
/* Setup */
h5_reset();
fapl = h5_fileaccess();
if(HDstrcmp(envval, "stdio") && HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) {
int nerrors = 0;
hid_t fapl, fapl2;
hid_t fcpl_shared;
int configuration; /* Configuration of tests. */
int ExpressMode;
ExpressMode = GetTestExpress();
if (ExpressMode > 1)
printf("***Express test mode on. Some tests may be skipped\n");
/* Setup */
h5_reset();
fapl = h5_fileaccess();
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
ExpressMode = GetTestExpress();
if (ExpressMode > 1)
printf("***Express test mode on. Some tests may be skipped\n");
/* 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
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* Create an FCPL with sharing enabled */
if((fcpl_shared = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR
if(H5Pset_shared_mesg_nindexes(fcpl_shared, 1) < 0) TEST_ERROR
if(H5Pset_shared_mesg_index(fcpl_shared, 0, H5O_SHMESG_ALL_FLAG, (size_t) 10) < 0) TEST_ERROR
/* 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
/* Test in all configurations */
for(configuration = 0; configuration <= MAX_CONFIGURATION; configuration++) {
hid_t my_fapl;
hid_t fcpl_src;
hid_t fcpl_dst;
/* Create an FCPL with sharing enabled */
if((fcpl_shared = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR
if(H5Pset_shared_mesg_nindexes(fcpl_shared, 1) < 0) TEST_ERROR
if(H5Pset_shared_mesg_index(fcpl_shared, 0, H5O_SHMESG_ALL_FLAG, (size_t) 10) < 0) TEST_ERROR
/* Test with and without shared messages */
if(configuration & CONFIG_SHARE_SRC) {
puts("\nTesting with shared src messages:");
fcpl_src = fcpl_shared;
}
else {
puts("\nTesting without shared src messages:");
fcpl_src = H5P_DEFAULT;
}
if(configuration & CONFIG_SHARE_DST) {
puts("Testing with shared dst messages:");
fcpl_dst = fcpl_shared;
}
else {
puts("Testing without shared dst messages:");
fcpl_dst = H5P_DEFAULT;
}
/* Test in all configurations */
for(configuration = 0; configuration <= MAX_CONFIGURATION; configuration++) {
hid_t my_fapl;
hid_t fcpl_src;
hid_t fcpl_dst;
/* Test with and without shared messages */
if(configuration & CONFIG_SHARE_SRC) {
puts("\nTesting with shared src messages:");
fcpl_src = fcpl_shared;
}
else {
puts("\nTesting without shared src messages:");
fcpl_src = H5P_DEFAULT;
}
if(configuration & CONFIG_SHARE_DST) {
puts("Testing with shared dst messages:");
fcpl_dst = fcpl_shared;
}
else {
puts("Testing without shared dst messages:");
fcpl_dst = H5P_DEFAULT;
}
/* Set the FAPL for the type of format */
if(configuration & CONFIG_NEW_FORMAT) {
puts("Testing with new group format:");
my_fapl = fapl2;
} /* end if */
else {
puts("Testing with old group format:");
my_fapl = fapl;
} /* end else */
/* Set the FAPL for the type of format */
if(configuration & CONFIG_NEW_FORMAT) {
puts("Testing with new group format:");
my_fapl = fapl2;
} /* end if */
else {
puts("Testing with old group format:");
my_fapl = fapl;
} /* end else */
/* The tests... */
nerrors += test_copy_named_datatype(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_named_datatype_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_named_datatype_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_simple(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_simple_empty(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compound(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked(fcpl_src, fcpl_dst, my_fapl);
/* The tests... */
nerrors += test_copy_named_datatype(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_named_datatype_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_named_datatype_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_simple(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_simple_empty(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compound(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_empty(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_sparse(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_external(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_named_dtype(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_named_dtype_hier(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_named_dtype_hier_outside(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_multi_ohdr_chunks(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_attr_named_dtype(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_empty(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_sparse(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_external(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_named_dtype(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_named_dtype_hier(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_named_dtype_hier_outside(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_multi_ohdr_chunks(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_attr_named_dtype(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_contig_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_attribute_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_contig_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_contig_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_empty(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_root_group(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group(fcpl_src, fcpl_dst, my_fapl);
if (ExpressMode > 1 && !HDstrcmp(envval, "direct")) {
/* This test case with Direct driver has a poor performance on
* NCSA copper, though it works. Skip it for now and worry
* about the performance later.
*/
printf("***Express test mode on. test_copy_group_deep is skipped");
SKIPPED();
} else
nerrors += test_copy_group_deep(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_loop(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_wide_loop(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_links(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_soft_link(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_contig_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_attribute_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_contig_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed_named_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compact_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_contig_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_chunked_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_dataset_compressed_vl_vl(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_empty(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_root_group(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_deep(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_loop(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_wide_loop(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_group_links(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_soft_link(fcpl_src, fcpl_dst, my_fapl);
#ifndef H5_CANNOT_OPEN_TWICE
nerrors += test_copy_ext_link(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_ext_link(fcpl_src, fcpl_dst, my_fapl);
#endif /* H5_CANNOT_OPEN_TWICE */
nerrors += test_copy_exist(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_path(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_same_file_named_datatype(fcpl_src, my_fapl);
nerrors += test_copy_old_layout(fcpl_dst, my_fapl);
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_WITHOUT_ATTR_FLAG,
FALSE, "H5Ocopy(): without attributes");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, 0, TRUE,
"H5Ocopy(): with missing groups");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_EXPAND_SOFT_LINK_FLAG,
FALSE, "H5Ocopy(): expand soft link");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_SHALLOW_HIERARCHY_FLAG,
FALSE, "H5Ocopy(): shallow group copy");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_EXPAND_REFERENCE_FLAG,
FALSE, "H5Ocopy(): expand object reference");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_PRESERVE_NULL_FLAG,
FALSE, "H5Ocopy(): preserve NULL messages");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_WITHOUT_ATTR_FLAG |
H5O_COPY_PRESERVE_NULL_FLAG, TRUE, "H5Ocopy(): preserve NULL messages");
nerrors += test_copy_exist(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_path(fcpl_src, fcpl_dst, my_fapl);
nerrors += test_copy_same_file_named_datatype(fcpl_src, my_fapl);
nerrors += test_copy_old_layout(fcpl_dst, my_fapl);
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_WITHOUT_ATTR_FLAG,
FALSE, "H5Ocopy(): without attributes");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, 0, TRUE,
"H5Ocopy(): with missing groups");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_EXPAND_SOFT_LINK_FLAG,
FALSE, "H5Ocopy(): expand soft link");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_SHALLOW_HIERARCHY_FLAG,
FALSE, "H5Ocopy(): shallow group copy");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_EXPAND_REFERENCE_FLAG,
FALSE, "H5Ocopy(): expand object reference");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_PRESERVE_NULL_FLAG,
FALSE, "H5Ocopy(): preserve NULL messages");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_WITHOUT_ATTR_FLAG |
H5O_COPY_PRESERVE_NULL_FLAG, TRUE, "H5Ocopy(): preserve NULL messages");
/* TODO: not implemented
nerrors += test_copy_option(my_fapl, H5O_COPY_EXPAND_EXT_LINK_FLAG, FALSE, "H5Ocopy: expand external link");
nerrors += test_copy_mount(my_fapl);
*/
} /* end for */
nerrors += test_copy_option(my_fapl, H5O_COPY_EXPAND_EXT_LINK_FLAG, FALSE, "H5Ocopy: expand external link");
nerrors += test_copy_mount(my_fapl);
*/
} /* end for */
/* Reset file address checking info */
addr_reset();
/* Reset file address checking info */
addr_reset();
/* Results */
if(nerrors) {
printf("***** %d OBJECT COPY TEST%s FAILED! *****\n",
nerrors, (1 == nerrors ? "" : "S"));
exit(1);
} /* end if */
puts ("All object copying tests passed.");
h5_cleanup(FILENAME, fapl);
/* Results */
if(nerrors) {
printf("***** %d OBJECT COPY TEST%s FAILED! *****\n",
nerrors, (1 == nerrors ? "" : "S"));
exit(1);
} /* end if */
else
puts("All object copying tests skipped - Incompatible with current Virtual File Driver");
puts ("All object copying tests passed.");
h5_cleanup(FILENAME, fapl);
return 0;
error:
return 1;
} /* main */

View File

@ -72,7 +72,6 @@ main(void)
time_t time_new, ro;
int i;
hbool_t b; /* Index for "new format" loop */
const char *envval = NULL;
herr_t ret; /* Generic return value */
/* Reset library */
@ -93,7 +92,7 @@ main(void)
/* Create the file to operate on */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) TEST_ERROR
if(NULL == (f = H5I_object(file))) FAIL_STACK_ERROR
if(NULL == (f = (H5F_t *)H5I_object(file))) FAIL_STACK_ERROR
/*
@ -174,27 +173,18 @@ main(void)
* works correctly - QAK)
*/
TESTING("close & re-open object header");
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "multi") && HDstrcmp(envval, "split") && HDstrcmp(envval, "family")) {
if(H5O_close(&oh_loc) < 0)
FAIL_STACK_ERROR
if(H5Fclose(file) < 0)
FAIL_STACK_ERROR
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
FAIL_STACK_ERROR
if(NULL == (f = H5I_object(file)))
FAIL_STACK_ERROR
oh_loc.file = f;
if(H5O_open(&oh_loc) < 0)
FAIL_STACK_ERROR
PASSED();
} /* end if */
else {
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
} /* end else */
if(H5O_close(&oh_loc) < 0)
FAIL_STACK_ERROR
if(H5Fclose(file) < 0)
FAIL_STACK_ERROR
if((file = H5Fopen(filename, H5F_ACC_RDWR, fapl)) < 0)
FAIL_STACK_ERROR
if(NULL == (f = (H5F_t *)H5I_object(file)))
FAIL_STACK_ERROR
oh_loc.file = f;
if(H5O_open(&oh_loc) < 0)
FAIL_STACK_ERROR
PASSED();
/*
* Test creation of a bunch of messages one after another to see
@ -259,10 +249,7 @@ main(void)
/* Test reading datasets with undefined object header messages */
HDputs("Accessing objects with unknown header messages:");
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "multi") && HDstrcmp(envval, "split") && HDstrcmp(envval, "family")) {
{
hid_t file2; /* File ID for 'bogus' object file */
char testpath[512] = "";
char testfile[512] = "";
@ -282,7 +269,7 @@ main(void)
TESTING("object with unknown header message and no flags set");
/* Open the file with objects that have unknown header messages (generated with gen_bogus.c) */
if((file2 = H5Fopen(testfile, H5F_ACC_RDONLY, fapl)) < 0)
if((file2 = H5Fopen(testfile, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0)
TEST_ERROR
/* Open the dataset with the unknown header message, but no extra flags */
@ -372,11 +359,7 @@ main(void)
TEST_ERROR
PASSED();
} /* end if */
else {
SKIPPED();
puts(" Test not compatible with current Virtual File Driver");
} /* end else */
}
/* Close the file we created */
if(H5Fclose(file) < 0)

View File

@ -423,6 +423,8 @@ main(void)
{
/* This test is currently not working properly; it should be revisted
* when we have time.
*
* (Also, we should try to make this test work with all the VFDs)
*/
#ifdef BROKEN
int num_errs=0;

View File

@ -657,7 +657,7 @@ error:
*-------------------------------------------------------------------------
*/
static int
read_old(hid_t fapl2)
read_old(void)
{
int fd_old = (-1), fd_new = (-1); /* File descriptors for copying data */
hid_t fid = (-1); /* File ID */
@ -681,7 +681,7 @@ read_old(hid_t fapl2)
HDstrcat(filename, FILE_OLD_GROUPS);
/* Create filename */
h5_fixname(FILENAME[0], fapl2, filename2, sizeof(filename2));
h5_fixname(FILENAME[0], H5P_DEFAULT, filename2, sizeof(filename2));
/* Copy old file into temporary file */
if((fd_old = HDopen(filename, O_RDONLY, 0666)) < 0) TEST_ERROR
@ -697,7 +697,7 @@ read_old(hid_t fapl2)
/* Open copied file */
if((fid = H5Fopen(filename2, H5F_ACC_RDWR, fapl2)) < 0) TEST_ERROR
if((fid = H5Fopen(filename2, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) TEST_ERROR
/* Attempt to open "old" group */
if((gid = H5Gopen2(fid, "old", H5P_DEFAULT)) < 0) TEST_ERROR
@ -1103,58 +1103,50 @@ error:
int
main(void)
{
const char *envval = NULL;
hid_t fapl, fapl2; /* File access property list IDs */
hbool_t new_format; /* Whether to use the new format or not */
int nerrors = 0;
/* Don't run this test using the split file driver */
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) {
hid_t fapl, fapl2; /* File access property list IDs */
hbool_t new_format; /* Whether to use the new format or not */
int nerrors = 0;
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
/* Reset library */
h5_reset();
fapl = h5_fileaccess();
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* 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
/* 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
/* Loop over using new group format */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
/* Perform basic tests, with old & new style groups */
nerrors += test_misc((new_format ? fapl2 : fapl), new_format);
nerrors += test_long((new_format ? fapl2 : fapl), new_format);
nerrors += test_large((new_format ? fapl2 : fapl), new_format);
} /* end for */
/* Loop over using new group format */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
/* Perform basic tests, with old & new style groups */
nerrors += test_misc((new_format ? fapl2 : fapl), new_format);
nerrors += test_long((new_format ? fapl2 : fapl), new_format);
nerrors += test_large((new_format ? fapl2 : fapl), new_format);
} /* end for */
/* New format group specific tests (require new format features) */
nerrors += lifecycle(fapl2);
nerrors += long_compact(fapl2);
nerrors += read_old();
nerrors += no_compact(fapl2);
nerrors += gcpl_on_root(fapl2);
/* New format group specific tests (require new format features) */
nerrors += lifecycle(fapl2);
nerrors += long_compact(fapl2);
nerrors += read_old(fapl2);
nerrors += no_compact(fapl2);
nerrors += gcpl_on_root(fapl2);
/* Old group API specific tests */
nerrors += old_api(fapl);
/* Old group API specific tests */
nerrors += old_api(fapl);
/* Close 2nd FAPL */
H5Pclose(fapl2);
/* Close 2nd FAPL */
H5Pclose(fapl2);
/* Check for test errors */
if(nerrors)
goto error;
/* Check for test errors */
if(nerrors)
goto error;
puts("All symbol table tests passed.");
/* Cleanup */
h5_cleanup(FILENAME, fapl);
/* Cleanup */
puts("All symbol table tests passed.");
h5_cleanup(FILENAME, fapl);
} /* end if */
else
puts("All symbol table tests skipped - Incompatible with current Virtual File Driver");
return 0;
error:

View File

@ -525,16 +525,6 @@ test_filespace(hid_t fapl)
size_t rdcc_nelmts;
size_t rdcc_nbytes;
double rdcc_w0;
const char *envval = NULL;
int ExpressMode;
/* Don't run some tests for some drivers */
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
/* See if some tests can be skipped */
ExpressMode = GetTestExpress();
puts("Testing file space gets reused:");
@ -982,92 +972,83 @@ test_filespace(hid_t fapl)
/* Create complex group hiearchy, remove it & verify file size */
TESTING(" complex group hierarchy");
if (ExpressMode > 1 && !HDstrcmp(envval, "direct")) {
/* This test case with Direct driver has a poor performance on
* NCSA copper, though it works. Skip it for now and worry
* about the performance later.
*/
SKIPPED();
} else {
/* Create file */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
/* Create file */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) FAIL_STACK_ERROR
/* 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
/* Create a complex group hierarchy to remove */
for(u = 0; u < FILESPACE_TOP_GROUPS; u++) {
/* Create nested groups inside top groups */
for(v = 0; v < FILESPACE_NESTED_GROUPS; v++) {
/* Create group */
sprintf(objname,"%s %u",GROUPNAME,u);
if((group = H5Gcreate2(file, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
sprintf(objname, "%s %u", GROUP2NAME, v);
if((group2 = H5Gcreate2(group, objname, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
/* Create nested groups inside top groups */
for(v = 0; v < FILESPACE_NESTED_GROUPS; v++) {
/* Create group */
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
} /* end for */
/* Close nested group */
if(H5Gclose(group2) < 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
} /* end for */
/* Close top group */
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
/* Close nested group */
if(H5Gclose(group2) < 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
/* Close top group */
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
} /* end for */
/* 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 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
/* 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
} /* end for */
/* 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
/* Close nested group */
if(H5Gclose(group2) < 0) FAIL_STACK_ERROR
/* Remove nested group */
sprintf(objname, "%s %u",GROUP2NAME, v);
if(H5Ldelete(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
} /* end for */
/* Close top group */
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
/* Close nested group */
if(H5Gclose(group2) < 0) FAIL_STACK_ERROR
/* Remove top group */
sprintf(objname, "%s %u", GROUPNAME, (u - 1));
if(H5Ldelete(file, objname, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* Remove nested group */
sprintf(objname, "%s %u",GROUP2NAME, v);
if(H5Ldelete(group, objname, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
} /* end for */
/* Close file */
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
/* Close top group */
if(H5Gclose(group) < 0) FAIL_STACK_ERROR
/* Get the size of the file */
if((file_size = h5_get_file_size(filename, fapl)) < 0) TEST_ERROR
/* Remove top group */
sprintf(objname, "%s %u", GROUPNAME, (u - 1));
if(H5Ldelete(file, objname, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
} /* end for */
/* Verify the file is correct size */
if(file_size != empty_size) TEST_ERROR
/* Close file */
if(H5Fclose(file) < 0) FAIL_STACK_ERROR
PASSED();
}
/* 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();
/* Create dataset and duplicate dataset, remove original & verify file size */
@ -2411,132 +2392,123 @@ error:
int
main(void)
{
const char *envval = NULL;
hid_t fapl, fapl2, file;
int nerrors = 0;
char filename[1024];
hbool_t new_format;
/* Don't run this test using the wrong file drivers */
envval = HDgetenv("HDF5_DRIVER");
if(envval == NULL)
envval = "nomatch";
if(HDstrcmp(envval, "split") && HDstrcmp(envval, "multi") && HDstrcmp(envval, "family")) {
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;
/* Metadata cache parameters */
int mdc_nelmts;
size_t rdcc_nelmts;
size_t rdcc_nbytes;
double rdcc_w0;
/* Set the random # seed */
HDsrandom((unsigned long)HDtime(NULL));
/* Set the random # seed */
HDsrandom((unsigned long)HDtime(NULL));
/* Open */
h5_reset();
fapl = h5_fileaccess();
/* Open */
h5_reset();
fapl = h5_fileaccess();
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* Copy the file access property list */
if((fapl2 = H5Pcopy(fapl)) < 0) TEST_ERROR
/* 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
/* 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
/* Test with old & new format groups */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
hid_t my_fapl;
/* Test with old & new format groups */
for(new_format = FALSE; new_format <= TRUE; new_format++) {
hid_t my_fapl;
/* 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 */
/* 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
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);
/* 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);
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);
/* 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;
{
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;
/* 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");
/* 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");
/* 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);
/* 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 */
if(H5Pclose(fapl_small_mdc) < 0) TEST_ERROR
} /* end block */
nerrors += test_link_slashes(my_fapl);
nerrors += test_unlink_slashes(my_fapl);
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 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 "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 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 */
/* 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 */
if(H5Fclose(file) < 0) TEST_ERROR
} /* end for */
/* Close 2nd FAPL */
H5Pclose(fapl2);
/* Close 2nd FAPL */
H5Pclose(fapl2);
if (nerrors) {
printf("***** %d FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S");
exit(1);
}
puts("All unlink tests passed.");
h5_cleanup(FILENAME, fapl);
if (nerrors) {
printf("***** %d FAILURE%s! *****\n", nerrors, 1==nerrors?"":"S");
exit(1);
}
else
puts("All unlink tests skipped - Incompatible with current Virtual File Driver");
puts("All unlink tests passed.");
h5_cleanup(FILENAME, fapl);
return 0;