diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2010-03-25 03:51:41 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2010-03-25 03:51:41 (GMT) |
commit | 42efc1c2b591e4cd45ec6cb3bdf32044343118d2 (patch) | |
tree | 0ab542871c32246199479e8933ff26286aaf629a /test/set_extent.c | |
parent | 3360c3af0c100ac4d3a2fe2865f34661da862ec5 (diff) | |
download | hdf5-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.c | 2190 |
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 */ + |