summaryrefslogtreecommitdiffstats
path: root/test/set_extent.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2010-03-25 03:51:41 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2010-03-25 03:51:41 (GMT)
commit42efc1c2b591e4cd45ec6cb3bdf32044343118d2 (patch)
tree0ab542871c32246199479e8933ff26286aaf629a /test/set_extent.c
parent3360c3af0c100ac4d3a2fe2865f34661da862ec5 (diff)
downloadhdf5-42efc1c2b591e4cd45ec6cb3bdf32044343118d2.zip
hdf5-42efc1c2b591e4cd45ec6cb3bdf32044343118d2.tar.gz
hdf5-42efc1c2b591e4cd45ec6cb3bdf32044343118d2.tar.bz2
[svn-r18451] Description:
Bring r18172:18446 from trunk to revise_chunks branch. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Diffstat (limited to 'test/set_extent.c')
-rw-r--r--test/set_extent.c2190
1 files changed, 1172 insertions, 1018 deletions
diff --git a/test/set_extent.c b/test/set_extent.c
index b4e61b4..9d669a2 100644
--- a/test/set_extent.c
+++ b/test/set_extent.c
@@ -20,6 +20,8 @@
* Purpose: Tests the H5Dset_extent call
*/
+#include <time.h>
+#include <stdlib.h>
#include "hdf5.h"
#include "h5test.h"
@@ -36,6 +38,7 @@ const char *FILENAME[] = {
"set_extent3",
"set_extent4",
"set_extent5",
+ "set_extent6",
NULL
};
@@ -43,6 +46,22 @@ const char *FILENAME[] = {
#define EXT_FILE_NAME1 "ext1.bin"
#define EXT_FILE_NAME2 "ext2.bin"
+#define CONFIG_COMPRESS 0x01u
+#define CONFIG_FILL 0x02u
+#define CONFIG_EARLY_ALLOC 0x04u
+#define CONFIG_ALL (CONFIG_COMPRESS + CONFIG_FILL \
+ + CONFIG_EARLY_ALLOC)
+#define FILL_VALUE -1
+#define DO_RANKS_PRINT_CONFIG(TEST) { \
+ printf(" Config:\n"); \
+ printf(" Test: %s\n", TEST); \
+ printf(" Compression: %s\n", (config & CONFIG_COMPRESS ? "yes" \
+ : "no")); \
+ printf(" Fill value: %s\n", (do_fillvalue ? "yes" : "no")); \
+ printf(" Early allocation: %s\n", (config & CONFIG_EARLY_ALLOC \
+ ? "yes" : "no")); \
+} /* end DO_RANKS_PRINT_CONFIG */
+
#define RANK1 1
#define RANK2 2
#define RANK3 3
@@ -56,28 +75,36 @@ const char *FILENAME[] = {
#define DIME1 7
#define DIME2 7
#define ISTORE_IK 64
+#define RAND4_NITER 100
+#define RAND4_FAIL_DUMP(NDIM_SETS, J, K, L, M) { \
+ H5_FAILED(); AT(); \
+ test_random_rank4_dump(NDIM_SETS, dim_log, cdims, J, K, L, M); \
+ goto error; \
+} /* end RAND4_FAIL_DUMP */
static int do_ranks( hid_t fapl );
static int do_layouts( hid_t fapl );
-static int test_rank1( hbool_t do_compress,
- hbool_t do_fill_value,
- hbool_t set_istore_k,
- H5D_fill_time_t fill_time,
- hid_t fapl);
-static int test_rank2( hbool_t do_compress,
- hbool_t do_fill_value,
- hbool_t set_istore_k,
- H5D_fill_time_t fill_time,
- hid_t fapl);
-static int test_rank3( hbool_t do_compress,
- hbool_t do_fill_value,
- hbool_t set_istore_k,
- H5D_fill_time_t fill_time,
- hid_t fapl);
+static int test_rank1( hid_t fapl,
+ hid_t dcpl,
+ hbool_t do_fill_value,
+ hbool_t set_istore_k);
+static int test_rank2( hid_t fapl,
+ hid_t dcpl,
+ hbool_t do_fill_value,
+ hbool_t set_istore_k);
+static int test_rank3( hid_t fapl,
+ hid_t dcpl,
+ hbool_t do_fill_value,
+ hbool_t set_istore_k);
+static int test_random_rank4( hid_t fapl,
+ hid_t dcpl,
+ hbool_t do_fillvalue);
static int test_external( hid_t fapl );
static int test_layouts( H5D_layout_t layout, hid_t fapl );
+static void test_random_rank4_dump( unsigned ndim_sets, hsize_t dim_log[][4],
+ hsize_t cdims[4], int j, int k, int l, int m );
/*-------------------------------------------------------------------------
* main
@@ -92,6 +119,9 @@ int main( void )
hbool_t chunk_cache; /* Whether to enable chunk caching */
int nerrors = 0;
+ /* Initialize random number seed */
+ HDsrandom((unsigned)HDtime(NULL));
+
h5_reset();
fapl = h5_fileaccess();
@@ -152,7 +182,7 @@ int main( void )
if(H5Pclose(fapl2) < 0) TEST_ERROR
h5_cleanup(FILENAME, fapl);
-
+
HDremove(EXT_FILE_NAME1);
HDremove(EXT_FILE_NAME2);
@@ -177,148 +207,140 @@ error:
static int do_ranks( hid_t fapl )
{
- hbool_t do_compress = 0;
- hbool_t do_fillvalue = 0;
- hbool_t set_istore_k = 0;
-
-
- TESTING_2("with fill value, no compression");
-
- do_fillvalue = 1;
+ hbool_t do_fillvalue = 0;
+ hid_t dcpl = -1;
+ int fillvalue = FILL_VALUE;
+ unsigned config;
- if (test_rank1( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ALLOC, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank1( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_IFSET, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank2( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ALLOC, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank2( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_IFSET, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank3( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ALLOC, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank3( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_IFSET, fapl ) < 0)
- {
- goto error;
- }
-
-
-
- PASSED();
-
-
- TESTING_2("no fill value, no compression");
-
- do_fillvalue = 0;
-
- if (test_rank1( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ERROR, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank2( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ERROR, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank3( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ERROR, fapl ) < 0)
- {
- goto error;
- }
-
-
+ TESTING_2("datasets with ranks 1 to 4 (all configurations)");
- PASSED();
-
- TESTING_2("with fill value, with compression");
+ /* Loop over different configurations for tests */
+ for(config=0; config<=CONFIG_ALL; config++) {
+ /* Create DCPL and add appropriate settings */
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
+ TEST_ERROR
+ if(config & CONFIG_COMPRESS) {
#ifdef H5_HAVE_FILTER_DEFLATE
+ if(H5Pset_deflate(dcpl, 9) < 0)
+ TEST_ERROR
+#else /* H5_HAVE_FILTER_DEFLATE */
+ if(H5Pclose(dcpl) < 0)
+ TEST_ERROR
+ continue;
+#endif /* H5_HAVE_FILTER_DEFLATE */
+ } /* end if */
- do_compress = 1;
- do_fillvalue = 1;
-
- if (test_rank1( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ALLOC, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank1( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_IFSET, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank2( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ALLOC, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank2( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_IFSET, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank3( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ALLOC, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank3( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_IFSET, fapl ) < 0)
- {
- goto error;
- }
-
-
- PASSED();
-#else
- SKIPPED();
-#endif
-
- TESTING_2("no fill value, with compression");
+ if(config & CONFIG_FILL) {
+ do_fillvalue = TRUE;
+ if(H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue) < 0)
+ TEST_ERROR
+ } /* end if */
+ else
+ do_fillvalue = FALSE;
-#ifdef H5_HAVE_FILTER_DEFLATE
+ if(config & CONFIG_EARLY_ALLOC)
+ if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0)
+ TEST_ERROR
- do_fillvalue = 0;
+ /* Run tests */
+ if(do_fillvalue) {
+ unsigned ifset;
+
+ /* Iterate over different fill times */
+ for(ifset=0; ifset<=1; ifset++) {
+ if(ifset) {
+ if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET) < 0)
+ TEST_ERROR
+ } /* end if */
+ else
+ if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0)
+ TEST_ERROR
+
+ if(test_rank1(fapl, dcpl, do_fillvalue, FALSE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 1")
+ printf(" Fill time: %s\n", (ifset ? "H5D_FILL_TIME_IFSET"
+ : "H5D_FILL_TIME_ALLOC"));
+ goto error;
+ } /* end if */
+ if(test_rank2(fapl, dcpl, do_fillvalue, FALSE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 2")
+ printf(" Fill time: %s\n", (ifset ? "H5D_FILL_TIME_IFSET"
+ : "H5D_FILL_TIME_ALLOC"));
+ goto error;
+ } /* end if */
+ if(test_rank3(fapl, dcpl, do_fillvalue, FALSE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 3")
+ printf(" Fill time: %s\n", (ifset ? "H5D_FILL_TIME_IFSET"
+ : "H5D_FILL_TIME_ALLOC"));
+ goto error;
+ } /* end if */
+ if(test_rank2(fapl, dcpl, do_fillvalue, TRUE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 2 with non-default indexed storage B-tree")
+ printf(" Fill time: %s\n", (ifset ? "H5D_FILL_TIME_IFSET"
+ : "H5D_FILL_TIME_ALLOC"));
+ goto error;
+ } /* end if */
+ } /* end for */
+ } /* end if */
+ else {
+ /* These tests expect fill values to be written even if there is no
+ * fill value defined */
+ if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0)
+ TEST_ERROR
- if (test_rank1( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ERROR, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank2( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ERROR, fapl ) < 0)
- {
- goto error;
- }
- if (test_rank3( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ERROR, fapl ) < 0)
- {
- goto error;
- }
-
- PASSED();
-#else
- SKIPPED();
-#endif
+ if(test_rank1(fapl, dcpl, do_fillvalue, FALSE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 1")
+ goto error;
+ } /* end if */
+ if(test_rank2(fapl, dcpl, do_fillvalue, FALSE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 2")
+ goto error;
+ } /* end if */
+ if(test_rank3(fapl, dcpl, do_fillvalue, FALSE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 3")
+ goto error;
+ } /* end if */
+ if(test_rank2(fapl, dcpl, do_fillvalue, TRUE) < 0)
+ {
+ DO_RANKS_PRINT_CONFIG("Rank 2 with non-default indexed storage B-tree")
+ goto error;
+ } /* end if */
+ } /* end else */
- TESTING_2("with non-default indexed storage B-tree");
+ /* The rank 4 test expects the fill value to be written only if
+ * defined */
+ if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_IFSET) < 0)
+ TEST_ERROR
- do_fillvalue = 1;
- set_istore_k = 1;
+ if(test_random_rank4(fapl, dcpl, do_fillvalue) < 0) {
+ DO_RANKS_PRINT_CONFIG("Randomized rank 4")
+ goto error;
+ } /* end if */
- if (test_rank2( do_compress, do_fillvalue, set_istore_k, H5D_FILL_TIME_ALLOC, fapl ) < 0)
- {
- goto error;
- }
-
+ /* Close dcpl */
+ if(H5Pclose(dcpl) < 0)
+ TEST_ERROR
+ } /* end for */
PASSED();
-
-
+
return 0;
-
-
+
error:
+ H5E_BEGIN_TRY {
+ H5Pclose(dcpl);
+ } H5E_END_TRY
+
return -1;
-}
+} /* end do_ranks */
/*-------------------------------------------------------------------------
@@ -327,23 +349,23 @@ error:
*/
static int do_layouts( hid_t fapl )
{
-
- TESTING_2("storage layout use");
-
+
+ TESTING("storage layout use");
+
if (test_layouts( H5D_COMPACT, fapl ) < 0)
{
goto error;
- }
-
+ }
+
if (test_layouts( H5D_CONTIGUOUS, fapl ) < 0)
{
goto error;
- }
-
+ }
+
PASSED();
-
+
return 0;
-
+
error:
return -1;
}
@@ -353,270 +375,240 @@ error:
*-------------------------------------------------------------------------
*/
-static int test_rank1( hbool_t do_compress,
- hbool_t do_fill_value,
- hbool_t set_istore_k,
- H5D_fill_time_t fill_time,
- hid_t fapl)
+static int test_rank1( hid_t fapl,
+ hid_t dcpl,
+ hbool_t do_fill_value,
+ hbool_t set_istore_k)
{
- hid_t fid=-1;
+ hid_t fid=-1;
hid_t did=-1;
hid_t sid=-1;
- hid_t dcpl=-1;
+ hid_t my_dcpl=-1;
hid_t fcpl;
- hsize_t dims_o[RANK1] = {DIM0}; /* original dimensions */
- hsize_t dims_s[RANK1] = {DIMS0}; /* shrinking dimensions */
- hsize_t dims_e[RANK1] = {DIME0}; /* extended dimensions */
- hsize_t dims_c[RANK1] = {2}; /* chunk dimensions */
- hsize_t dims_r[RANK1]; /* read dimensions */
+ hsize_t dims_o[RANK1] = {DIM0}; /* original dimensions */
+ hsize_t dims_s[RANK1] = {DIMS0}; /* shrinking dimensions */
+ hsize_t dims_e[RANK1] = {DIME0}; /* extended dimensions */
+ hsize_t dims_c[RANK1] = {2}; /* chunk dimensions */
+ hsize_t dims_r[RANK1]; /* read dimensions */
hsize_t maxdims[RANK1] = {H5S_UNLIMITED};
int buf_o[DIM0];
int buf_s[DIMS0];
int buf_e[DIME0];
int buf_r[DIM0];
int i;
- int fillvalue = 1;
- int comp_value;
+ int comp_value;
char filename[NAME_BUF_SIZE];
-
+
if ( do_fill_value )
{
- comp_value = fillvalue;
+ comp_value = FILL_VALUE;
}
else
{
comp_value = 0;
}
-
+
for( i = 0; i < DIM0; i++ )
{
-
+
buf_o[i] = 2;
}
/* create a file creation property list */
- if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
+ if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if ( set_istore_k )
{
/* set non-default indexed storage B-tree internal 'K' value */
- if (H5Pset_istore_k(fcpl,ISTORE_IK) < 0)
+ if (H5Pset_istore_k(fcpl,ISTORE_IK) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
}
/* create a new file */
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
- if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
+ if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
{
- goto error;
+ TEST_ERROR
}
/* close property list */
- if(H5Pclose(fcpl) < 0)
+ if(H5Pclose(fcpl) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* create the data space with unlimited dimensions. */
- if ((sid = H5Screate_simple(RANK1, dims_o, maxdims)) < 0)
+ if ((sid = H5Screate_simple(RANK1, dims_o, maxdims)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* modify dataset creation properties, i.e. enable chunking. */
- if ((dcpl = H5Pcreate (H5P_DATASET_CREATE)) < 0)
+ if ((my_dcpl = H5Pcopy (dcpl)) < 0)
{
- goto error;
+ TEST_ERROR
}
- if (H5Pset_chunk(dcpl, RANK1, dims_c) < 0)
+ if (H5Pset_chunk(my_dcpl, RANK1, dims_c) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ( do_fill_value )
- {
- if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue) < 0)
- {
- goto error;
- }
- if(H5Pset_fill_time(dcpl, fill_time) < 0)
- {
- goto error;
- }
- }
- else
- {
-
- if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0)
- {
- goto error;
- }
-
- }
- if (do_compress)
- {
- if(H5Pset_deflate(dcpl, 9) < 0)
- {
- goto error;
- }
- }
-
/*-------------------------------------------------------------------------
* create, write dataset
*-------------------------------------------------------------------------
*/
-
+
/* create a dataset */
- if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, my_dcpl, H5P_DEFAULT)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* write */
- if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
+ if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
#if defined (H5_SET_EXTENT_DEBUG)
printf("\n");
for (i = 0; i < (int)dims_o[0]; i++ )
{
-
+
printf("%d ", buf_o[i]);
-
+
}
printf("\n");
-#endif
+#endif
+
-
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/*-------------------------------------------------------------------------
* set new dimensions for the array; expand it
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_e) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
/* check dimensions */
for( i = 0; i < RANK1; i++ )
{
- if (dims_r[i] != dims_e[i])
- goto error;
+ if (dims_r[i] != dims_e[i])
+ TEST_ERROR
}
-
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
- goto error;
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
+ TEST_ERROR
+
+
-
-
#if defined (H5_SET_EXTENT_DEBUG)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
{
-
+
printf("%d ", buf_e[i]);
-
+
}
printf("\n");
-#endif
+#endif
+
+
+
-
-
-
/* compare the read array with the expanded array */
for (i = 0; i < (int)dims_r[0]; i++ )
{
-
- if ( i >= DIM0 )
+
+ if ( i >= DIM0 )
{
- if(buf_e[i] != comp_value)
+ if(buf_e[i] != comp_value)
{
printf("buf_e[%d] = %d\n", i, buf_e[i]);
printf("value = %d\n", comp_value);
- goto error;
- }
- }
- else
+ TEST_ERROR
+ }
+ }
+ else
{
- if(buf_e[i] != buf_o[i])
- goto error;
+ if(buf_e[i] != buf_o[i])
+ TEST_ERROR
}
}
-
-
-
-
+
+
+
+
/*-------------------------------------------------------------------------
- * shrink
+ * shrink
*
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_s) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK1; i++ )
{
- if (dims_r[i] != dims_s[i])
- goto error;
+ if (dims_r[i] != dims_s[i])
+ TEST_ERROR
}
@@ -624,143 +616,143 @@ static int test_rank1( hbool_t do_compress,
/* for this case we close and reopen file */
if ( set_istore_k )
{
-
- if (H5Dclose(did) < 0)
+
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Fclose(fid) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ((fid = H5Fopen( filename, H5F_ACC_RDWR, fapl ))<0)
+ if ((fid = H5Fopen( filename, H5F_ACC_RDWR, fapl ))<0)
{
- goto error;
+ TEST_ERROR
}
-
- if ((did = H5Dopen2( fid , "dset1", H5P_DEFAULT ))<0)
+
+ if ((did = H5Dopen2( fid , "dset1", H5P_DEFAULT ))<0)
{
- goto error;
+ TEST_ERROR
}
-
-
-
+
+
+
}
-
-
+
+
/*-------------------------------------------------------------------------
* read
*-------------------------------------------------------------------------
*/
-
+
/* read */
- if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
+ if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
#if defined (H5_SET_EXTENT_DEBUG)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
{
-
+
printf("%d ", buf_s[i]);
}
printf("\n");
-#endif
+#endif
+
+
-
-
/* compare the read array with the shrinked array */
for( i = 0; i < (int)dims_r[0]; i++ )
{
-
- if ( buf_s[i] != buf_o[i] )
+
+ if ( buf_s[i] != buf_o[i] )
{
printf("buf_s[%d] = %d\n", i, buf_s[i]);
printf("buf_o[%d] = %d\n", i, buf_o[i]);
- goto error;
- }
+ TEST_ERROR
+ }
}
-
-
+
+
/*-------------------------------------------------------------------------
* expand it back to original size
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array */
if (H5Dset_extent(did, dims_o) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
- if ((sid = H5Dget_space(did)) < 0)
+ if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions. */
if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
/* check dimensions */
for( i = 0; i < RANK1; i++ )
{
- if (dims_r[i] != dims_o[i])
- goto error;
+ if (dims_r[i] != dims_o[i])
+ TEST_ERROR
}
-
-
+
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
- goto error;
-
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
+ TEST_ERROR
+
#if defined (H5_SET_EXTENT_DEBUG)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
{
-
+
printf("%d ", buf_r[i]);
-
+
}
printf("\n");
-#endif
+#endif
+
-
/* compare the read array with the original array */
for (i = 0; i < (int)dims_r[0]; i++ )
{
-
- if (i >= DIMS0 )
+
+ if (i >= DIMS0 )
{
- if(buf_r[i] != comp_value)
+ if(buf_r[i] != comp_value)
{
printf("buf_r[%d] = %d\n", i, buf_r[i] );
printf("value = %d\n", comp_value);
- goto error;
- }
- }
- else
+ TEST_ERROR
+ }
+ }
+ else
{
- if(buf_r[i] != buf_o[i])
- goto error;
+ if(buf_r[i] != buf_o[i])
+ TEST_ERROR
}
}
-
+
/*-------------------------------------------------------------------------
* shrink to 0
@@ -769,119 +761,119 @@ static int test_rank1( hbool_t do_compress,
*/
dims_s[0] = 0;
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_s) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK1; i++ )
{
- if (dims_r[i] != dims_s[i])
- goto error;
- }
-
+ if (dims_r[i] != dims_s[i])
+ TEST_ERROR
+ }
+
/*-------------------------------------------------------------------------
* close dataset
*-------------------------------------------------------------------------
*/
-
- if (H5Dclose(did) < 0)
+
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
-
-
-
+
+
+
+
+
/*-------------------------------------------------------------------------
* test a dataset with non initialized chunks
*-------------------------------------------------------------------------
*/
-
-
- if ((sid = H5Screate_simple(RANK1, dims_o, maxdims)) < 0)
+
+
+ if ((sid = H5Screate_simple(RANK1, dims_o, maxdims)) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ((did = H5Dcreate2(fid , "dset3", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset3", H5T_NATIVE_INT, sid, H5P_DEFAULT, my_dcpl, H5P_DEFAULT)) < 0)
{
- goto error;
+ TEST_ERROR
}
/* set new dimensions for the array */
dims_o[ 0 ] = 0;
- if (H5Dset_extent( did , dims_o ) < 0)
+ if (H5Dset_extent( did , dims_o ) < 0)
{
- goto error;
+ TEST_ERROR
}
- if (H5Dclose(did) < 0)
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
-
+
+
+
/*-------------------------------------------------------------------------
* close property list
*-------------------------------------------------------------------------
*/
-
-
- if (H5Pclose(dcpl) < 0)
+
+
+ if (H5Pclose(my_dcpl) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Fclose( fid ) < 0)
{
- goto error;
+ TEST_ERROR
}
return 0;
-
-
-
+
+
+
error:
-
- H5E_BEGIN_TRY
+
+ H5E_BEGIN_TRY
{
H5Dclose( did );
H5Sclose( sid );
- H5Pclose( dcpl );
+ H5Pclose( my_dcpl );
H5Pclose( fcpl );
H5Fclose( fid );
} H5E_END_TRY;
return -1;
-
+
}
/*-------------------------------------------------------------------------
@@ -889,43 +881,41 @@ error:
*-------------------------------------------------------------------------
*/
-static int test_rank2( hbool_t do_compress,
- hbool_t do_fill_value,
- hbool_t set_istore_k,
- H5D_fill_time_t fill_time,
- hid_t fapl)
+static int test_rank2( hid_t fapl,
+ hid_t dcpl,
+ hbool_t do_fill_value,
+ hbool_t set_istore_k)
{
- hid_t fid=-1;
+ hid_t fid=-1;
hid_t did=-1;
hid_t sid=-1;
- hid_t dcpl=-1;
+ hid_t my_dcpl=-1;
hid_t fcpl;
- hsize_t dims_o[RANK2] = {DIM0,DIM1}; /* original dimensions */
- hsize_t dims_s[RANK2] = {DIMS0,DIMS1}; /* shrinking dimensions */
- hsize_t dims_e[RANK2] = {DIME0,DIME1}; /* extended dimensions */
- hsize_t dims_c[RANK2] = {2,2}; /* chunk dimensions */
- hsize_t dims_r[RANK2]; /* read dimensions */
+ hsize_t dims_o[RANK2] = {DIM0,DIM1}; /* original dimensions */
+ hsize_t dims_s[RANK2] = {DIMS0,DIMS1}; /* shrinking dimensions */
+ hsize_t dims_e[RANK2] = {DIME0,DIME1}; /* extended dimensions */
+ hsize_t dims_c[RANK2] = {2,2}; /* chunk dimensions */
+ hsize_t dims_r[RANK2]; /* read dimensions */
hsize_t maxdims[RANK2] = {H5S_UNLIMITED,H5S_UNLIMITED};
int buf_o[DIM0][DIM1];
int buf_s[DIMS0][DIMS1];
int buf_e[DIME0][DIME1];
int buf_r[DIM0][DIM1];
int i, j;
- int fillvalue = 1;
- int comp_value;
+ int comp_value;
char filename[NAME_BUF_SIZE];
-
+
if ( do_fill_value )
{
- comp_value = fillvalue;
+ comp_value = FILL_VALUE;
}
else
{
comp_value = 0;
}
-
+
for( i = 0; i < DIM0; i++ )
{
for( j = 0; j < DIM1; j++ )
@@ -935,79 +925,51 @@ static int test_rank2( hbool_t do_compress,
}
/* create a file creation property list */
- if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
+ if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if ( set_istore_k )
{
/* set non-default indexed storage B-tree internal 'K' value */
- if (H5Pset_istore_k(fcpl,ISTORE_IK) < 0)
+ if (H5Pset_istore_k(fcpl,ISTORE_IK) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
}
-
+
/* create a new file */
h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
- if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
+ if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
/* create the data space with unlimited dimensions. */
- if ((sid = H5Screate_simple(RANK2, dims_o, maxdims)) < 0)
+ if ((sid = H5Screate_simple(RANK2, dims_o, maxdims)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* modify dataset creation properties, i.e. enable chunking. */
- if ((dcpl = H5Pcreate (H5P_DATASET_CREATE)) < 0)
+ if ((my_dcpl = H5Pcopy (dcpl)) < 0)
{
- goto error;
+ TEST_ERROR
}
- if (H5Pset_chunk(dcpl, RANK2, dims_c) < 0)
+ if (H5Pset_chunk(my_dcpl, RANK2, dims_c) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ( do_fill_value )
- {
- if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue) < 0)
- {
- goto error;
- }
- if(H5Pset_fill_time(dcpl, fill_time) < 0)
- {
- goto error;
- }
- }
- else
- {
-
- if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0)
- {
- goto error;
- }
-
- }
- if (do_compress)
- {
- if(H5Pset_deflate(dcpl, 9) < 0)
- {
- goto error;
- }
- }
-
/*-------------------------------------------------------------------------
* Procedure 1
* a. Write an array AxB. These are the dimensions for creating the dataset
* b. Define a greater array CxD where C > A and D > B
- * c. Read data back
+ * c. Read data back
* d. Verify if new dimensions are C and D
* e. Verify if data from A to C and B to D is what it is to be expected
*
@@ -1020,20 +982,20 @@ static int test_rank2( hbool_t do_compress,
*
*-------------------------------------------------------------------------
*/
-
+
/* create a dataset */
- if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, my_dcpl, H5P_DEFAULT)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* write */
- if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
+ if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
#if defined (H5_SET_EXTENT_DEBUG2)
printf("\n");
for (i = 0; i < (int)dims_o[0]; i++ )
@@ -1044,15 +1006,15 @@ static int test_rank2( hbool_t do_compress,
}
printf("\n");
}
-#endif
+#endif
+
-
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/*-------------------------------------------------------------------------
* set new dimensions for the array; expand it
* data is now, extended space was initialized with fill value or default value
@@ -1067,44 +1029,44 @@ static int test_rank2( hbool_t do_compress,
*
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_e) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_e[i])
- goto error;
+ if (dims_r[i] != dims_e[i])
+ TEST_ERROR
}
-
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
- goto error;
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
+ TEST_ERROR
+
+
-
-
#if defined (H5_SET_EXTENT_DEBUG2)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -1115,41 +1077,41 @@ static int test_rank2( hbool_t do_compress,
}
printf("\n");
}
-#endif
+#endif
+
+
+
-
-
-
/* compare the read array with the expanded array */
for (i = 0; i < (int)dims_r[0]; i++ )
{
for (j = 0; j < (int)dims_r[1]; j++ )
{
- if ( i >= DIM0 || j >= DIM1 )
+ if ( i >= DIM0 || j >= DIM1 )
{
- if(buf_e[i][j] != comp_value)
+ if(buf_e[i][j] != comp_value)
{
printf("buf_e[%d][%d] = %d\n", i, j, buf_e[i][j]);
printf("value = %d\n", comp_value);
- goto error;
- }
- }
- else
+ TEST_ERROR
+ }
+ }
+ else
{
- if(buf_e[i][j] != buf_o[i][j])
- goto error;
+ if(buf_e[i][j] != buf_o[i][j])
+ TEST_ERROR
}
}
}
-
-
-
-
+
+
+
+
/*-------------------------------------------------------------------------
*
* Procedure 2
* a. Define a smaller array ExF where E < A and F < B
- * b. Read data back
+ * b. Read data back
* c. Verify if new dimensions are E and F
* d. Verify if data up until E and F is what to be expected
*
@@ -1160,35 +1122,35 @@ static int test_rank2( hbool_t do_compress,
*
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_s) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_s[i])
- goto error;
+ if (dims_r[i] != dims_s[i])
+ TEST_ERROR
}
@@ -1196,42 +1158,42 @@ static int test_rank2( hbool_t do_compress,
/* for this case we close and reopen file */
if ( set_istore_k )
{
-
- if (H5Dclose(did) < 0)
+
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Fclose(fid) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ((fid = H5Fopen( filename, H5F_ACC_RDWR, fapl ))<0)
+ if ((fid = H5Fopen( filename, H5F_ACC_RDWR, fapl ))<0)
{
- goto error;
+ TEST_ERROR
}
-
- if ((did = H5Dopen2( fid , "dset1", H5P_DEFAULT ))<0)
+
+ if ((did = H5Dopen2( fid , "dset1", H5P_DEFAULT ))<0)
{
- goto error;
+ TEST_ERROR
}
-
-
-
+
+
+
}
-
-
+
+
/*-------------------------------------------------------------------------
* read
*-------------------------------------------------------------------------
*/
-
+
/* read */
- if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
+ if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
#if defined (H5_SET_EXTENT_DEBUG2)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -1242,26 +1204,26 @@ static int test_rank2( hbool_t do_compress,
}
printf("\n");
}
-#endif
+#endif
+
+
-
-
/* compare the read array with the shrinked array */
for( i = 0; i < (int)dims_r[0]; i++ )
{
for( j = 0; j < (int)dims_r[1]; j++ )
{
- if ( buf_s[i][j] != buf_o[i][j] )
+ if ( buf_s[i][j] != buf_o[i][j] )
{
printf("buf_s[%d][%d] = %d\n", i, j, buf_s[i][j]);
printf("buf_o[%d][%d] = %d\n", i, j, buf_o[i][j]);
- goto error;
- }
+ TEST_ERROR
+ }
}
}
-
-
+
+
/*-------------------------------------------------------------------------
* set new dimensions for the array; expand it back to original size
* data is now, extended space was initialized with fill value or default value
@@ -1273,47 +1235,47 @@ static int test_rank2( hbool_t do_compress,
*
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array */
if (H5Dset_extent(did, dims_o) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
- if ((sid = H5Dget_space(did)) < 0)
+ if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions. */
if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_o[i])
- goto error;
+ if (dims_r[i] != dims_o[i])
+ TEST_ERROR
}
-
-
+
+
/*-------------------------------------------------------------------------
* read
*-------------------------------------------------------------------------
*/
-
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
- goto error;
-
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
+ TEST_ERROR
+
#if defined (H5_SET_EXTENT_DEBUG2)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -1324,28 +1286,28 @@ static int test_rank2( hbool_t do_compress,
}
printf("\n");
}
-#endif
+#endif
+
-
/* compare the read array with the original array */
for (i = 0; i < (int)dims_r[0]; i++ )
{
for (j = 0; j < (int)dims_r[1]; j++ )
{
- if (i >= DIMS0 || j >= DIMS1)
+ if (i >= DIMS0 || j >= DIMS1)
{
- if(buf_r[i][j] != comp_value)
+ if(buf_r[i][j] != comp_value)
{
printf("buf_r[%d][%d] = %d\n", i, j, buf_r[i][j]);
printf("value = %d\n", comp_value);
- goto error;
- }
- }
- else
+ TEST_ERROR
+ }
+ }
+ else
{
- if(buf_r[i][j] != buf_o[i][j])
- goto error;
+ if(buf_r[i][j] != buf_o[i][j])
+ TEST_ERROR
}
}
}
@@ -1358,124 +1320,172 @@ static int test_rank2( hbool_t do_compress,
dims_s[0] = 0;
dims_s[1] = 0;
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_s) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_s[i])
- goto error;
- }
-
-
+ if (dims_r[i] != dims_s[i])
+ TEST_ERROR
+ }
+
+
/*-------------------------------------------------------------------------
- * close dataset
+ * expand then shrink to 0 in dimension 1 while expanding again in
+ * dimension 0
+ *
*-------------------------------------------------------------------------
*/
-
- if (H5Dclose(did) < 0)
+
+
+ /* expand to original dimensions for the array. */
+ if (H5Dset_extent(did , dims_o) < 0)
{
- goto error;
+ TEST_ERROR
+ }
+
+ dims_s[0] = dims_e[0];
+ dims_s[1] = 0;
+
+ /* set new dimensions for the array. */
+ if (H5Dset_extent(did , dims_s) < 0)
+ {
+ TEST_ERROR
+ }
+
+ /* get the space */
+ if ((sid = H5Dget_space(did)) < 0)
+ {
+ TEST_ERROR
+ }
+
+ /* get dimensions */
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ {
+ TEST_ERROR
+ }
+
+ if (H5Sclose(sid) < 0)
+ {
+ TEST_ERROR
}
-
-
+
+ /* check dimensions */
+ for( i = 0; i < RANK2; i++ )
+ {
+ if (dims_r[i] != dims_s[i])
+ TEST_ERROR
+ }
+
+
+ /*-------------------------------------------------------------------------
+ * close dataset
+ *-------------------------------------------------------------------------
+ */
+
+ if (H5Dclose(did) < 0)
+ {
+ TEST_ERROR
+ }
+
+
/*-------------------------------------------------------------------------
* test a dataset with non initialized chunks
*-------------------------------------------------------------------------
*/
-
-
- if ((sid = H5Screate_simple(RANK2, dims_o, maxdims)) < 0)
+
+
+ if ((sid = H5Screate_simple(RANK2, dims_o, maxdims)) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ((did = H5Dcreate2(fid , "dset3", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset3", H5T_NATIVE_INT, sid, H5P_DEFAULT, my_dcpl, H5P_DEFAULT)) < 0)
{
- goto error;
+ TEST_ERROR
}
/* set new dimensions for the array */
dims_o[ 0 ] = 0;
dims_o[ 1 ] = 0;
- if (H5Dset_extent( did , dims_o ) < 0)
+ if (H5Dset_extent( did , dims_o ) < 0)
{
- goto error;
+ TEST_ERROR
}
- if (H5Dclose(did) < 0)
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
-
+
+
+
/*-------------------------------------------------------------------------
* close property list
*-------------------------------------------------------------------------
*/
-
-
- if (H5Pclose(dcpl) < 0)
+
+
+ if (H5Pclose(my_dcpl) < 0)
{
- goto error;
+ TEST_ERROR
}
/* close file creation property list */
- if(H5Pclose(fcpl) < 0)
+ if(H5Pclose(fcpl) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Fclose( fid ) < 0)
{
- goto error;
+ TEST_ERROR
}
return 0;
-
-
-
+
+
+
error:
-
- H5E_BEGIN_TRY
+
+ H5E_BEGIN_TRY
{
H5Dclose( did );
H5Sclose( sid );
- H5Pclose( dcpl );
+ H5Pclose( my_dcpl );
H5Pclose( fcpl );
H5Fclose( fid );
} H5E_END_TRY;
return -1;
-
+
}
@@ -1486,43 +1496,41 @@ error:
*-------------------------------------------------------------------------
*/
-static int test_rank3( hbool_t do_compress,
- hbool_t do_fill_value,
- hbool_t set_istore_k,
- H5D_fill_time_t fill_time,
- hid_t fapl)
+static int test_rank3( hid_t fapl,
+ hid_t dcpl,
+ hbool_t do_fill_value,
+ hbool_t set_istore_k)
{
- hid_t fid=-1;
+ hid_t fid=-1;
hid_t did=-1;
hid_t sid=-1;
- hid_t dcpl=-1;
+ hid_t my_dcpl=-1;
hid_t fcpl;
- hsize_t dims_o[RANK3] = {DIM0,DIM1,DIM2}; /* original dimensions */
- hsize_t dims_s[RANK3] = {DIMS0,DIMS1,DIMS2}; /* shrinking dimensions */
- hsize_t dims_e[RANK3] = {DIME0,DIME1,DIME2}; /* extended dimensions */
- hsize_t dims_c[RANK3] = {2,2,2}; /* chunk dimensions */
- hsize_t dims_r[RANK3]; /* read dimensions */
+ hsize_t dims_o[RANK3] = {DIM0,DIM1,DIM2}; /* original dimensions */
+ hsize_t dims_s[RANK3] = {DIMS0,DIMS1,DIMS2}; /* shrinking dimensions */
+ hsize_t dims_e[RANK3] = {DIME0,DIME1,DIME2}; /* extended dimensions */
+ hsize_t dims_c[RANK3] = {2,2,2}; /* chunk dimensions */
+ hsize_t dims_r[RANK3]; /* read dimensions */
hsize_t maxdims[RANK3] = {H5S_UNLIMITED,H5S_UNLIMITED,H5S_UNLIMITED};
int buf_o[DIM0][DIM1][DIM2];
int buf_s[DIMS0][DIMS1][DIMS2];
int buf_e[DIME0][DIME1][DIME2];
int buf_r[DIM0][DIM1][DIM2];
int i, j, k;
- int fillvalue = 1;
- int comp_value;
+ int comp_value;
char filename[NAME_BUF_SIZE];
-
+
if ( do_fill_value )
{
- comp_value = fillvalue;
+ comp_value = FILL_VALUE;
}
else
{
comp_value = 0;
}
-
+
for( i = 0; i < DIM0; i++ )
{
for( j = 0; j < DIM1; j++ )
@@ -1535,95 +1543,67 @@ static int test_rank3( hbool_t do_compress,
}
/* create a file creation property list */
- if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
+ if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if ( set_istore_k )
{
/* set non-default indexed storage B-tree internal 'K' value */
- if (H5Pset_istore_k(fcpl,ISTORE_IK) < 0)
+ if (H5Pset_istore_k(fcpl,ISTORE_IK) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
}
/* create a new file */
h5_fixname(FILENAME[2], fapl, filename, sizeof filename);
- if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
+ if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
{
- goto error;
+ TEST_ERROR
}
/* close property list */
- if(H5Pclose(fcpl) < 0)
+ if(H5Pclose(fcpl) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* create the data space with unlimited dimensions. */
- if ((sid = H5Screate_simple(RANK3, dims_o, maxdims)) < 0)
+ if ((sid = H5Screate_simple(RANK3, dims_o, maxdims)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* modify dataset creation properties, i.e. enable chunking. */
- if ((dcpl = H5Pcreate (H5P_DATASET_CREATE)) < 0)
+ if ((my_dcpl = H5Pcopy (dcpl)) < 0)
{
- goto error;
+ TEST_ERROR
}
- if (H5Pset_chunk(dcpl, RANK3, dims_c) < 0)
+ if (H5Pset_chunk(my_dcpl, RANK3, dims_c) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ( do_fill_value )
- {
- if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue) < 0)
- {
- goto error;
- }
- if(H5Pset_fill_time(dcpl, fill_time) < 0)
- {
- goto error;
- }
- }
- else
- {
-
- if(H5Pset_fill_time(dcpl, H5D_FILL_TIME_ALLOC) < 0)
- {
- goto error;
- }
-
- }
- if (do_compress)
- {
- if(H5Pset_deflate(dcpl, 9) < 0)
- {
- goto error;
- }
- }
-
/*-------------------------------------------------------------------------
* create, write array
*-------------------------------------------------------------------------
*/
-
+
/* create a dataset */
- if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, my_dcpl, H5P_DEFAULT)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* write */
- if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
+ if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
#if defined (H5_SET_EXTENT_DEBUG3)
printf("\n");
for (i = 0; i < (int)dims_o[0]; i++ )
@@ -1637,61 +1617,61 @@ static int test_rank3( hbool_t do_compress,
printf("[%d] ", j);
}
printf("\n");
-
+
}
printf("\n");
-#endif
+#endif
+
-
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/*-------------------------------------------------------------------------
* set new dimensions for the array; expand it
*
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_e) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
/* check dimensions */
for( i = 0; i < RANK3; i++ )
{
- if (dims_r[i] != dims_e[i])
- goto error;
+ if (dims_r[i] != dims_e[i])
+ TEST_ERROR
}
-
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
- goto error;
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
+ TEST_ERROR
+
+
-
-
#if defined (H5_SET_EXTENT_DEBUG3)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -1705,14 +1685,14 @@ static int test_rank3( hbool_t do_compress,
printf("[%d] ", j);
}
printf("\n");
-
+
}
printf("\n");
-#endif
+#endif
+
+
+
-
-
-
/* compare the read array with the expanded array */
for (i = 0; i < (int)dims_r[0]; i++ )
{
@@ -1720,60 +1700,60 @@ static int test_rank3( hbool_t do_compress,
{
for( k = 0; k < (int)dims_r[2]; k++ )
{
- if ( i >= DIM0 || j >= DIM1 || k >= DIM2 )
+ if ( i >= DIM0 || j >= DIM1 || k >= DIM2 )
{
- if(buf_e[i][j][k] != comp_value)
+ if(buf_e[i][j][k] != comp_value)
{
printf("buf_e[%d][%d][%d] = %d\n", i, j, k, buf_e[i][j][k] );
printf("value = %d\n", comp_value);
- goto error;
- }
- }
- else
+ TEST_ERROR
+ }
+ }
+ else
{
- if(buf_e[i][j][k] != buf_o[i][j][k] )
- goto error;
+ if(buf_e[i][j][k] != buf_o[i][j][k] )
+ TEST_ERROR
}
}
}
}
-
-
-
-
+
+
+
+
/*-------------------------------------------------------------------------
* shrink
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_s) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK3; i++ )
{
- if (dims_r[i] != dims_s[i])
- goto error;
+ if (dims_r[i] != dims_s[i])
+ TEST_ERROR
}
@@ -1781,42 +1761,42 @@ static int test_rank3( hbool_t do_compress,
/* for this case we close and reopen file */
if ( set_istore_k )
{
-
- if (H5Dclose(did) < 0)
+
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Fclose(fid) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ((fid = H5Fopen( filename, H5F_ACC_RDWR, fapl ))<0)
+ if ((fid = H5Fopen( filename, H5F_ACC_RDWR, fapl ))<0)
{
- goto error;
+ TEST_ERROR
}
-
- if ((did = H5Dopen2( fid , "dset1", H5P_DEFAULT ))<0)
+
+ if ((did = H5Dopen2( fid , "dset1", H5P_DEFAULT ))<0)
{
- goto error;
+ TEST_ERROR
}
-
-
-
+
+
+
}
-
-
+
+
/*-------------------------------------------------------------------------
* read
*-------------------------------------------------------------------------
*/
-
+
/* read */
- if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
+ if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
#if defined (H5_SET_EXTENT_DEBUG3)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -1830,14 +1810,14 @@ static int test_rank3( hbool_t do_compress,
printf("[%d] ", j);
}
printf("\n");
-
+
}
printf("\n");
-#endif
+#endif
+
+
-
-
/* compare the read array with the shrinked array */
for( i = 0; i < (int)dims_r[0]; i++ )
{
@@ -1845,56 +1825,56 @@ static int test_rank3( hbool_t do_compress,
{
for( k = 0; k < (int)dims_r[2]; k++ )
{
- if ( buf_s[i][j][k] != buf_o[i][j][k] )
+ if ( buf_s[i][j][k] != buf_o[i][j][k] )
{
printf("buf_s[%d][%d][%d] = %d\n", i, j, k, buf_s[i][j][k] );
printf("buf_o[%d][%d][%d] = %d\n", i, j, k, buf_o[i][j][k] );
- goto error;
- }
+ TEST_ERROR
+ }
}
}
}
-
-
+
+
/*-------------------------------------------------------------------------
* set new dimensions for the array; expand it back to original size
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array */
if (H5Dset_extent(did, dims_o) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
- if ((sid = H5Dget_space(did)) < 0)
+ if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions. */
if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK3; i++ )
{
- if (dims_r[i] != dims_o[i])
- goto error;
+ if (dims_r[i] != dims_o[i])
+ TEST_ERROR
}
-
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
- goto error;
-
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
+ TEST_ERROR
+
#if defined (H5_SET_EXTENT_DEBUG3)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -1903,19 +1883,19 @@ static int test_rank3( hbool_t do_compress,
{
for( k = 0; k < (int)dims_r[2]; k++ )
{
-
+
printf("%d ", buf_r[i][j][k]);
}
printf("[%d] ", j);
}
printf("\n");
-
+
}
printf("\n");
-#endif
+#endif
+
-
/* compare the read array with the original array */
for (i = 0; i < (int)dims_r[0]; i++ )
{
@@ -1923,24 +1903,24 @@ static int test_rank3( hbool_t do_compress,
{
for( k = 0; k < (int)dims_r[2]; k++ )
{
- if (i >= DIMS0 || j >= DIMS1 || k >= DIMS2 )
+ if (i >= DIMS0 || j >= DIMS1 || k >= DIMS2 )
{
- if( buf_r[i][j][k] != comp_value )
+ if( buf_r[i][j][k] != comp_value )
{
printf("buf_r[%d][%d][%d] = %d\n", i, j, k, buf_r[i][j][k] );
printf("value = %d\n", comp_value);
- goto error;
- }
- }
- else
+ TEST_ERROR
+ }
+ }
+ else
{
- if(buf_r[i][j][k] != buf_o[i][j][k])
- goto error;
+ if(buf_r[i][j][k] != buf_o[i][j][k])
+ TEST_ERROR
}
}
}
}
-
+
/*-------------------------------------------------------------------------
* shrink to 0
@@ -1951,120 +1931,120 @@ static int test_rank3( hbool_t do_compress,
dims_s[0] = 0;
dims_s[1] = 0;
dims_s[2] = 0;
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_s) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK3; i++ )
{
- if (dims_r[i] != dims_s[i])
- goto error;
- }
-
-
-
+ if (dims_r[i] != dims_s[i])
+ TEST_ERROR
+ }
+
+
+
/*-------------------------------------------------------------------------
- * close dataset
+ * close dataset
*-------------------------------------------------------------------------
*/
-
- if (H5Dclose(did) < 0)
+
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
/*-------------------------------------------------------------------------
* test a dataset with non initialized chunks
*-------------------------------------------------------------------------
*/
-
-
- if ((sid = H5Screate_simple(RANK3, dims_o, maxdims)) < 0)
+
+
+ if ((sid = H5Screate_simple(RANK3, dims_o, maxdims)) < 0)
{
- goto error;
+ TEST_ERROR
}
- if ((did = H5Dcreate2(fid , "dset3", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset3", H5T_NATIVE_INT, sid, H5P_DEFAULT, my_dcpl, H5P_DEFAULT)) < 0)
{
- goto error;
+ TEST_ERROR
}
/* set new dimensions for the array */
dims_o[ 0 ] = 0;
dims_o[ 1 ] = 0;
dims_o[ 2 ] = 0;
- if (H5Dset_extent( did , dims_o ) < 0)
+ if (H5Dset_extent( did , dims_o ) < 0)
{
- goto error;
+ TEST_ERROR
}
- if (H5Dclose(did) < 0)
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
-
+
+
+
/*-------------------------------------------------------------------------
* close property list
*-------------------------------------------------------------------------
*/
-
-
- if (H5Pclose(dcpl) < 0)
+
+
+ if (H5Pclose(my_dcpl) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Fclose( fid ) < 0)
{
- goto error;
+ TEST_ERROR
}
return 0;
-
-
-
+
+
+
error:
-
- H5E_BEGIN_TRY
+
+ H5E_BEGIN_TRY
{
H5Dclose( did );
H5Sclose( sid );
- H5Pclose( dcpl );
+ H5Pclose( my_dcpl );
H5Pclose( fcpl );
H5Fclose( fid );
} H5E_END_TRY;
return -1;
-
+
}
@@ -2075,32 +2055,32 @@ error:
static int test_external( hid_t fapl )
{
- hid_t fid=-1;
+ hid_t fid=-1;
hid_t did=-1;
hid_t sid=-1;
hid_t dcpl=-1;
- hsize_t dims_o[RANK2] = {DIM0,DIM1}; /* original dimensions */
- hsize_t dims_s[RANK2] = {DIMS0,DIMS1}; /* shrinking dimensions */
- hsize_t dims_e[RANK2] = {DIME0,DIM1}; /* extended dimensions, dimension 1 is the original */
- hsize_t dims_r[RANK2]; /* read dimensions */
+ hsize_t dims_o[RANK2] = {DIM0,DIM1}; /* original dimensions */
+ hsize_t dims_s[RANK2] = {DIMS0,DIMS1}; /* shrinking dimensions */
+ hsize_t dims_e[RANK2] = {DIME0,DIM1}; /* extended dimensions, dimension 1 is the original */
+ hsize_t dims_r[RANK2]; /* read dimensions */
hsize_t maxdims[RANK2] = {DIME0,DIM1}; /* only the first dimension can be extendible */
- int buf_o[DIM0][DIM1]; /* original buffer, for writing */
- int buf_s[DIMS0][DIMS1]; /* shrinked buffer, for reading */
- int buf_e[DIME0][DIM1]; /* extended buffer, for writing, dimension 1 is the original */
- int buf_ro[DIM0][DIM1]; /* original buffer for reading */
+ int buf_o[DIM0][DIM1]; /* original buffer, for writing */
+ int buf_s[DIMS0][DIMS1]; /* shrinked buffer, for reading */
+ int buf_e[DIME0][DIM1]; /* extended buffer, for writing, dimension 1 is the original */
+ int buf_ro[DIM0][DIM1]; /* original buffer for reading */
int i, j;
int comp_value = 0;
char filename[NAME_BUF_SIZE];
-
+
hsize_t size; /* number of bytes reserved in the file for the data */
- hsize_t max_size[2];
-
+ hsize_t max_size[2];
+
max_size[0] = dims_e[0];
max_size[1] = dims_e[1];
size = max_size[0] * max_size[1] * sizeof(int) / 2;
-
-
+
+
for( i = 0; i < DIM0; i++ )
{
for( j = 0; j < DIM1; j++ )
@@ -2109,33 +2089,33 @@ static int test_external( hid_t fapl )
}
}
- TESTING_2("external file use");
-
+ TESTING("external file use");
+
/* create a new file */
h5_fixname(FILENAME[3], fapl, filename, sizeof filename);
- if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+ if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
FAIL_STACK_ERROR
-
+
/* modify dataset creation properties */
if ((dcpl = H5Pcreate (H5P_DATASET_CREATE)) < 0)
FAIL_STACK_ERROR
-
+
if(H5Pset_external(dcpl, EXT_FILE_NAME1, (off_t)0, size) < 0)
FAIL_STACK_ERROR
if(H5Pset_external(dcpl, EXT_FILE_NAME2, (off_t)0, size) < 0)
FAIL_STACK_ERROR
-
+
{
-
+
char name[256]; /*external file name */
off_t file_offset; /*external file offset */
hsize_t file_size; /*sizeof external file segment */
-
+
if(H5Pget_external(dcpl, 0, sizeof(name), name, &file_offset,
&file_size) < 0)
FAIL_STACK_ERROR
-
+
}
@@ -2155,11 +2135,11 @@ static int test_external( hid_t fapl )
/* create the data space with unlimited dimensions. */
- if ((sid = H5Screate_simple(RANK2, dims_o, maxdims)) < 0)
+ if ((sid = H5Screate_simple(RANK2, dims_o, maxdims)) < 0)
FAIL_STACK_ERROR
- if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
FAIL_STACK_ERROR
- if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
+ if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
FAIL_STACK_ERROR
if (H5Sclose(sid) < 0)
FAIL_STACK_ERROR
@@ -2171,9 +2151,9 @@ static int test_external( hid_t fapl )
*/
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_ro) < 0)
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_ro) < 0)
FAIL_STACK_ERROR
-
+
#if defined (H5_SET_EXTENT_DEBUG)
printf("\n");
for (i = 0; i < (int)dims_o[0]; i++ )
@@ -2184,10 +2164,10 @@ static int test_external( hid_t fapl )
}
printf("\n");
}
-#endif
+#endif
+
-
/*-------------------------------------------------------------------------
* expand
*-------------------------------------------------------------------------
@@ -2197,13 +2177,13 @@ static int test_external( hid_t fapl )
* set new dimensions for the array; expand it
* data is now, extended space was initialized with default value
*
- * 2 2 2 2
- * 2 2 2 2
- * 2 2 2 2
- * 2 2 2 2
- * 0 0 0 0
- * 0 0 0 0
- * 0 0 0 0
+ * 2 2 2 2
+ * 2 2 2 2
+ * 2 2 2 2
+ * 2 2 2 2
+ * 0 0 0 0
+ * 0 0 0 0
+ * 0 0 0 0
*
*-------------------------------------------------------------------------
*/
@@ -2215,28 +2195,28 @@ static int test_external( hid_t fapl )
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
FAIL_STACK_ERROR
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
FAIL_STACK_ERROR
-
+
if (H5Sclose(sid) < 0)
FAIL_STACK_ERROR
-
-
+
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_e[i])
+ if (dims_r[i] != dims_e[i])
TEST_ERROR
}
-
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_e) < 0)
FAIL_STACK_ERROR
-
-
+
+
#if defined (H5_SET_EXTENT_DEBUG)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -2247,33 +2227,33 @@ static int test_external( hid_t fapl )
}
printf("\n");
}
-#endif
+#endif
+
+
+
-
-
-
/* compare the read array with the expanded array */
for (i = 0; i < (int)dims_r[0]; i++ )
{
for (j = 0; j < (int)dims_r[1]; j++ )
{
- if ( i >= DIM0 || j >= DIM1 )
+ if ( i >= DIM0 || j >= DIM1 )
{
- if(buf_e[i][j] != comp_value)
+ if(buf_e[i][j] != comp_value)
{
printf("buf_e[%d][%d] = %d\n", i, j, buf_e[i][j]);
printf("value = %d\n", comp_value);
TEST_ERROR
- }
- }
- else
+ }
+ }
+ else
{
- if(buf_e[i][j] != buf_o[i][j])
+ if(buf_e[i][j] != buf_o[i][j])
TEST_ERROR
}
}
}
-
+
/*-------------------------------------------------------------------------
@@ -2286,41 +2266,41 @@ static int test_external( hid_t fapl )
*
*-------------------------------------------------------------------------
*/
-
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_s) < 0)
FAIL_STACK_ERROR
-
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
FAIL_STACK_ERROR
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
FAIL_STACK_ERROR
-
+
if (H5Sclose(sid) < 0)
FAIL_STACK_ERROR
-
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_s[i])
+ if (dims_r[i] != dims_s[i])
TEST_ERROR
}
-
-
+
+
/*-------------------------------------------------------------------------
* read
*-------------------------------------------------------------------------
*/
-
+
/* read */
- if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
+ if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_s ) < 0)
FAIL_STACK_ERROR
-
+
#if defined (H5_SET_EXTENT_DEBUG)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -2331,22 +2311,22 @@ static int test_external( hid_t fapl )
}
printf("\n");
}
-#endif
+#endif
+
+
-
-
/* compare the read array with the shrinked array */
for( i = 0; i < (int)dims_r[0]; i++ )
{
for( j = 0; j < (int)dims_r[1]; j++ )
{
- if ( buf_s[i][j] != buf_o[i][j] )
+ if ( buf_s[i][j] != buf_o[i][j] )
{
printf("buf_s[%d][%d] = %d\n", i, j, buf_s[i][j]);
printf("buf_o[%d][%d] = %d\n", i, j, buf_o[i][j]);
TEST_ERROR
- }
+ }
}
}
@@ -2361,16 +2341,16 @@ static int test_external( hid_t fapl )
dims_e[1] = DIME1;
- H5E_BEGIN_TRY
+ H5E_BEGIN_TRY
{
-
-
+
+
/* set new dimensions for the array. */
if (H5Dset_extent(did , dims_e) == SUCCEED)
{
TEST_ERROR
}
-
+
} H5E_END_TRY;
@@ -2379,9 +2359,9 @@ static int test_external( hid_t fapl )
* close property list
*-------------------------------------------------------------------------
*/
-
-
- if (H5Pclose(dcpl) < 0)
+
+
+ if (H5Pclose(dcpl) < 0)
FAIL_STACK_ERROR
if (H5Dclose( did ) < 0)
@@ -2393,10 +2373,10 @@ static int test_external( hid_t fapl )
PASSED();
return 0;
-
+
error:
-
- H5E_BEGIN_TRY
+
+ H5E_BEGIN_TRY
{
H5Dclose( did );
H5Sclose( sid );
@@ -2414,19 +2394,20 @@ error:
static int test_layouts( H5D_layout_t layout, hid_t fapl )
{
- hid_t fid=-1;
+ hid_t fid=-1;
hid_t did=-1;
hid_t sid=-1;
hid_t dcpl=-1;
- hsize_t dims_o[RANK2] = {DIM0,DIM1}; /* original dimensions */
- hsize_t dims_s[RANK2] = {DIMS0,DIMS1}; /* shrinking dimensions */
- hsize_t dims_e[RANK2] = {DIME0,DIME1}; /* extended dimensions */
- hsize_t dims_r[RANK2]; /* read dimensions */
+ herr_t ret;
+ hsize_t dims_o[RANK2] = {DIM0,DIM1}; /* original dimensions */
+ hsize_t dims_s[RANK2] = {DIMS0,DIMS1}; /* shrinking dimensions */
+ hsize_t dims_e[RANK2] = {DIME0,DIME1}; /* extended dimensions */
+ hsize_t dims_r[RANK2]; /* read dimensions */
int buf_o[DIM0][DIM1];
int buf_r[DIM0][DIM1];
- int i, j;
+ int i, j;
char filename[NAME_BUF_SIZE];
-
+
for( i = 0; i < DIM0; i++ )
{
for( j = 0; j < DIM1; j++ )
@@ -2435,44 +2416,44 @@ static int test_layouts( H5D_layout_t layout, hid_t fapl )
}
}
-
+
/* create a new file */
h5_fixname(FILENAME[4], fapl, filename, sizeof filename);
- if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+ if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
{
- goto error;
+ TEST_ERROR
}
/* create the data space with unlimited dimensions. */
- if ((sid = H5Screate_simple(RANK2, dims_o, NULL)) < 0)
+ if ((sid = H5Screate_simple(RANK2, dims_o, NULL)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* modify dataset creation properties */
if ((dcpl = H5Pcreate (H5P_DATASET_CREATE)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Pset_layout (dcpl, layout) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* create a dataset */
- if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ if ((did = H5Dcreate2(fid , "dset1", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* write */
- if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
+ if (H5Dwrite(did , H5T_NATIVE_INT, sid, H5S_ALL, H5P_DEFAULT, buf_o) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
#if defined (H5_SET_EXTENT_DEBUG4)
printf("\n");
for (i = 0; i < (int)dims_o[0]; i++ )
@@ -2483,65 +2464,65 @@ static int test_layouts( H5D_layout_t layout, hid_t fapl )
}
printf("\n");
}
-#endif
+#endif
+
-
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/*-------------------------------------------------------------------------
* negative test
- * try to extend dimension
+ * try to extend dimension
*-------------------------------------------------------------------------
*/
- H5E_BEGIN_TRY
+ H5E_BEGIN_TRY
{
-
- if (H5Dset_extent(did , dims_e) == SUCCEED)
- {
- goto error;
- }
-
+
+ ret = H5Dset_extent(did , dims_e);
+
} H5E_END_TRY;
-
-
-
+ if(ret >= 0)
+ TEST_ERROR
+
+
+
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
-
+
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_o[i])
- goto error;
+ if (dims_r[i] != dims_o[i])
+ TEST_ERROR
}
-
+
/* read */
- if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
- goto error;
+ if (H5Dread(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r) < 0)
+ TEST_ERROR
+
+
-
-
#if defined (H5_SET_EXTENT_DEBUG4)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -2552,63 +2533,63 @@ static int test_layouts( H5D_layout_t layout, hid_t fapl )
}
printf("\n");
}
-#endif
+#endif
+
+
-
-
/*-------------------------------------------------------------------------
* negative test
- * try to shrink dimension
+ * try to shrink dimension
*-------------------------------------------------------------------------
*/
- H5E_BEGIN_TRY
+ H5E_BEGIN_TRY
{
-
- if (H5Dset_extent(did , dims_s) == SUCCEED)
- {
- goto error;
- }
-
+
+ ret = H5Dset_extent(did , dims_s);
+
} H5E_END_TRY;
-
+ if(ret >= 0)
+ TEST_ERROR
+
+
/* get the space */
if ((sid = H5Dget_space(did)) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* get dimensions */
- if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
+ if (H5Sget_simple_extent_dims(sid, dims_r, NULL) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
if (H5Sclose(sid) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
/* check dimensions */
for( i = 0; i < RANK2; i++ )
{
- if (dims_r[i] != dims_o[i])
- goto error;
+ if (dims_r[i] != dims_o[i])
+ TEST_ERROR
}
-
+
/*-------------------------------------------------------------------------
* read
*-------------------------------------------------------------------------
*/
-
+
/* read */
- if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r ) < 0)
+ if (H5Dread( did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf_r ) < 0)
{
- goto error;
+ TEST_ERROR
}
-
+
#if defined (H5_SET_EXTENT_DEBUG4)
printf("\n");
for (i = 0; i < (int)dims_r[0]; i++ )
@@ -2619,38 +2600,38 @@ static int test_layouts( H5D_layout_t layout, hid_t fapl )
}
printf("\n");
}
-#endif
+#endif
+
-
/*-------------------------------------------------------------------------
- * close
+ * close
*-------------------------------------------------------------------------
*/
-
- if (H5Dclose(did) < 0)
+
+ if (H5Dclose(did) < 0)
{
- goto error;
+ TEST_ERROR
}
-
- if (H5Pclose(dcpl) < 0)
+
+ if (H5Pclose(dcpl) < 0)
{
- goto error;
+ TEST_ERROR
}
if (H5Fclose( fid ) < 0)
{
- goto error;
+ TEST_ERROR
}
return 0;
-
-
-
+
+
+
error:
-
- H5E_BEGIN_TRY
+
+ H5E_BEGIN_TRY
{
H5Dclose( did );
H5Sclose( sid );
@@ -2658,6 +2639,179 @@ error:
H5Fclose( fid );
} H5E_END_TRY;
return -1;
-
+
}
+
+/*-------------------------------------------------------------------------
+ * Function: test_random_rank4
+ *
+ * Purpose: Test expanding and shrinking a rank 4 dataset in a
+ * randomized fashion. Verifies that data is preserved (and
+ * filled, if do_fillvalue is true) as expected.
+ *
+ * Return: Success: 0
+ * Failure: -1
+ *
+ * Programmer: Neil Fortner
+ * Monday, January 11, 2010
+ *
+ *-------------------------------------------------------------------------
+ */
+static int test_random_rank4( hid_t fapl, hid_t dcpl, hbool_t do_fillvalue )
+{
+ hid_t file = -1;
+ hid_t dset = -1;
+ hid_t fspace = -1;
+ hid_t mspace = -1;
+ hid_t my_dcpl = -1;
+ hsize_t dims[4]; /* Dataset's dimensions */
+ hsize_t old_dims[4]; /* Old dataset dimensions */
+ hsize_t cdims[4]; /* Chunk dimensions */
+ const hsize_t mdims[4] = {10, 10, 10, 10}; /* Memory buffer dimensions */
+ const hsize_t start[4] = {0, 0, 0, 0}; /* Start for hyperslabe operations on memory */
+ static int rbuf[10][10][10][10]; /* Read buffer */
+ static int wbuf[10][10][10][10]; /* Write buffer */
+ static hsize_t dim_log[RAND4_NITER+1][4]; /* Log of dataset dimensions */
+ volatile unsigned i, j, k, l, m; /* Local indices */
+ char filename[NAME_BUF_SIZE];
+
+ /* create a new file */
+ h5_fixname(FILENAME[4], fapl, filename, sizeof filename);
+ if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+ TEST_ERROR
+
+ /* Generate random chunk dimensions, 2-6 */
+ for(i=0; i<4; i++)
+ cdims[i] = (hsize_t)((HDrandom() % 5) + 2);
+
+ /* Generate initial dataset size, 1-10 */
+ for(i=0; i<4; i++) {
+ dims[i] = (hsize_t)((HDrandom() % 10) + 1);
+ dim_log[0][i] = dims[i];
+ } /* end for */
+
+ /* Create dataset */
+ if((fspace = H5Screate_simple(4, dims, mdims)) < 0)
+ TEST_ERROR
+ if((my_dcpl = H5Pcopy(dcpl)) < 0)
+ TEST_ERROR
+ if(H5Pset_chunk(my_dcpl, 4, cdims) < 0)
+ TEST_ERROR
+ if((dset = H5Dcreate2(file, "dset", H5T_NATIVE_INT, fspace, H5P_DEFAULT,
+ my_dcpl, H5P_DEFAULT)) < 0)
+ TEST_ERROR
+ if(H5Sclose(fspace) < 0)
+ TEST_ERROR
+
+ /* Create memory space, and set initial selection */
+ if((mspace = H5Screate_simple(4, mdims, NULL)) < 0)
+ TEST_ERROR
+ if(H5Sselect_hyperslab(mspace, H5S_SELECT_SET, start, NULL, dims, NULL)
+ < 0)
+ TEST_ERROR
+
+ /* Main loop */
+ for(i=0; i<RAND4_NITER; i++) {
+ /* Generate random write buffer */
+ for(j=0; j<dims[0]; j++)
+ for(k=0; k<dims[1]; k++)
+ for(l=0; l<dims[2]; l++)
+ for(m=0; m<dims[3]; m++)
+ wbuf[j][k][l][m] = HDrandom();
+
+ /* Write data */
+ if(H5Dwrite(dset, H5T_NATIVE_INT, mspace, H5S_ALL, H5P_DEFAULT, wbuf)
+ < 0)
+ RAND4_FAIL_DUMP(i+1, -1, -1, -1, -1)
+
+ /* Generate new dataset size, 1-10 */
+ for(j=0; j<4; j++) {
+ old_dims[j] = dims[j];
+ dims[j] = (hsize_t)((HDrandom() % 10) + 1);
+ dim_log[i+1][j] = dims[j];
+ } /* end for */
+
+ /* Resize dataset */
+ if(H5Dset_extent(dset, dims) < 0)
+ RAND4_FAIL_DUMP(i+2, -1, -1, -1, -1)
+
+ /* Read data from resized dataset */
+ if(H5Sselect_hyperslab(mspace, H5S_SELECT_SET, start, NULL, dims, NULL)
+ < 0)
+ RAND4_FAIL_DUMP(i+2, -1, -1, -1, -1)
+ if(H5Dread(dset, H5T_NATIVE_INT, mspace, H5S_ALL, H5P_DEFAULT, rbuf)
+ < 0)
+ RAND4_FAIL_DUMP(i+2, -1, -1, -1, -1)
+
+ /* Verify correctness of read data */
+ if(do_fillvalue) {
+ for(j=0; j<dims[0]; j++)
+ for(k=0; k<dims[1]; k++)
+ for(l=0; l<dims[2]; l++)
+ for(m=0; m<dims[3]; m++)
+ if(j >= old_dims[0] || k >= old_dims[1]
+ || l >= old_dims[2] || m >= old_dims[3]) {
+ if(FILL_VALUE != rbuf[j][k][l][m])
+ RAND4_FAIL_DUMP(i+2, (int)j, (int)k, (int)l, (int)m)
+ } /* end if */
+ else
+ if(wbuf[j][k][l][m] != rbuf[j][k][l][m])
+ RAND4_FAIL_DUMP(i+2, (int)j, (int)k, (int)l, (int)m)
+ } /* end if */
+ else {
+ for(j=0; j<MIN(dims[0],old_dims[0]); j++)
+ for(k=0; k<MIN(dims[1],old_dims[1]); k++)
+ for(l=0; l<MIN(dims[2],old_dims[2]); l++)
+ for(m=0; m<MIN(dims[3],old_dims[3]); m++)
+ if(wbuf[j][k][l][m] != rbuf[j][k][l][m])
+ RAND4_FAIL_DUMP(i+2, (int)j, (int)k, (int)l, (int)m)
+ } /* end else */
+ } /* end for */
+
+ /* Close */
+ if(H5Sclose(mspace) < 0)
+ TEST_ERROR
+ if(H5Pclose(my_dcpl) < 0)
+ TEST_ERROR
+ if(H5Dclose(dset) < 0)
+ TEST_ERROR
+ if(H5Fclose(file) < 0)
+ TEST_ERROR
+
+ return 0;
+
+error:
+ H5E_BEGIN_TRY {
+ H5Sclose(fspace);
+ H5Sclose(mspace);
+ H5Pclose(dcpl);
+ H5Dclose(dset);
+ H5Fclose(file);
+ } H5E_END_TRY
+ return -1;
+} /* end test_random_rank4 */
+
+/*
+ * test_random_rank4_dump: Dump debugging info from test_random_rank4 to screen
+ * after failure.
+ */
+static void test_random_rank4_dump( unsigned ndim_sets, hsize_t dim_log[][4],
+ hsize_t cdims[4], int j, int k, int l, int m )
+{
+ unsigned i;
+
+ printf(" Chunk dimensions: ( %u, %u, %u, %u )\n", (unsigned)cdims[0],
+ (unsigned)cdims[1], (unsigned)cdims[2], (unsigned)cdims[3]);
+ printf(" Log of dataset dimensions (oldest first):\n");
+ for(i=0; i<ndim_sets; i++)
+ printf(" Iteration %-3u: ( %2u, %2u, %2u, %2u )\n", i,
+ (unsigned)dim_log[i][0], (unsigned)dim_log[i][1],
+ (unsigned)dim_log[i][2], (unsigned)dim_log[i][3]);
+ if(j>=0)
+ printf(" First incorrect value read: ( %d, %d, %d, %d )\n", j, k, l,
+ m);
+
+ return;
+} /* end test_random_rank4_dump */
+