summaryrefslogtreecommitdiffstats
path: root/tools/h5dump
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2011-02-21 22:30:59 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2011-02-21 22:30:59 (GMT)
commit6ac5999fe7a73d374cccf0c2acac9c86d35e35fc (patch)
treef275f055f258fc023ee82da4f77cdfc495cabcfe /tools/h5dump
parent42388490d6ad2bca5b3666158df0caae82990155 (diff)
downloadhdf5-6ac5999fe7a73d374cccf0c2acac9c86d35e35fc.zip
hdf5-6ac5999fe7a73d374cccf0c2acac9c86d35e35fc.tar.gz
hdf5-6ac5999fe7a73d374cccf0c2acac9c86d35e35fc.tar.bz2
[svn-r20133] Purpose:
Fixing Bug 2092 - h5dump does not display index for a dataset Description: Merged from HDF5 trunk r20108 and r20132. h5dump skip displaying array indices every certain number when the array type dataset is relatively big. The certain number varies according to the size of each array. This checkin fix the skipping array indices problem. This fix also correct indentation of the dataset data output. Tested: jam (linux32-LE), amani (linux64-LE), heiwa (linuxppc64-BE), Cmake - jam
Diffstat (limited to 'tools/h5dump')
-rw-r--r--tools/h5dump/CMakeLists.txt6
-rw-r--r--tools/h5dump/h5dumpgentest.c95
-rw-r--r--tools/h5dump/testh5dump.sh.in2
3 files changed, 103 insertions, 0 deletions
diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt
index 1d29076..3268257 100644
--- a/tools/h5dump/CMakeLists.txt
+++ b/tools/h5dump/CMakeLists.txt
@@ -48,6 +48,7 @@ IF (BUILD_TESTING)
tall-5s.ddl
tallfilters.ddl
tarray1.ddl
+ tarray1_big.ddl
tarray2.ddl
tarray3.ddl
tarray4.ddl
@@ -223,6 +224,7 @@ IF (BUILD_TESTING)
taindices.h5
tall.h5
tarray1.h5
+ tarray1_big.h5
tarray2.h5
tarray3.h5
tarray4.h5
@@ -598,6 +600,8 @@ IF (BUILD_TESTING)
tallfilters.out.err
tarray1.out
tarray1.out.err
+ tarray1_big.out
+ tarray1_big.out.err
tarray2.out
tarray2.out.err
tarray3.out
@@ -883,6 +887,8 @@ IF (BUILD_TESTING)
# test for files with array data
ADD_H5_TEST (tarray1 0 tarray1.h5)
+ # # added for bug# 2092 - tarray1_big.h5
+ ADD_H5_TEST (tarray1_big 0 -R tarray1_big.h5)
ADD_H5_TEST (tarray2 0 tarray2.h5)
ADD_H5_TEST (tarray3 0 tarray3.h5)
ADD_H5_TEST (tarray4 0 tarray4.h5)
diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c
index efb563e..6fefde7 100644
--- a/tools/h5dump/h5dumpgentest.c
+++ b/tools/h5dump/h5dumpgentest.c
@@ -54,6 +54,7 @@
#define FILE23 "tvldtypes3.h5"
#define FILE24 "tvldtypes4.h5"
#define FILE25 "tarray1.h5"
+#define FILE25_BIG "tarray1_big.h5"
#define FILE26 "tarray2.h5"
#define FILE27 "tarray3.h5"
#define FILE28 "tarray4.h5"
@@ -2803,6 +2804,99 @@ static void gent_vldatatypes5(void)
assert(ret >= 0);
}
+/* This is big enough to make h5dump to use hyperslap to read
+ from file and display portion by portion. This also prints out array indices
+ via region reference for testing refion reference output.
+ Note: this was added originally prepared for bug2092. before the fix h5dump didn't
+ display array indices every 262 x N (N > 0) based on 2000x1000 dims.
+*/
+#define SPACE_ARRAY1BIG_DIM 2000
+#define ARRAY1BIG_DIM 1000
+
+static void gent_array1_big(void)
+{
+ int wdata[SPACE_ARRAY1BIG_DIM][ARRAY1BIG_DIM]; /* Information to write */
+ hid_t fid1; /* HDF5 File IDs */
+ hid_t dataset; /* Dataset ID */
+ hid_t sid1; /* Dataspace ID */
+ hid_t tid1; /* Datatype ID */
+ hsize_t sdims1[] = {SPACE_ARRAY1BIG_DIM};
+ hsize_t tdims1[] = {ARRAY1BIG_DIM};
+ int i,j; /* counting variables */
+ herr_t ret; /* Generic return value */
+
+
+ /* for region reference dataset */
+ hid_t dset2;
+ hid_t sid2;
+ hsize_t dims2[] = {SPACE1_DIM1};
+ hsize_t start[SPACE1_RANK]; /* Starting location of hyperslab */
+ hsize_t stride[SPACE1_RANK]; /* Stride of hyperslab */
+ hsize_t count[SPACE1_RANK]; /* Element count of hyperslab */
+ hsize_t block[SPACE1_RANK]; /* Block size of hyperslab */
+ start[0]=0;
+ stride[0]=1;
+ count[0]=999;
+ block[0]=1;
+ hdset_reg_ref_t *wbuf; /* buffer to write to disk */
+ /* Allocate write & read buffers */
+ wbuf = (hdset_reg_ref_t*) calloc(sizeof(hdset_reg_ref_t), SPACE1_DIM1);
+
+ /* Allocate and initialize array data to write */
+ for(i=0; i<SPACE_ARRAY1BIG_DIM; i++)
+ for(j=0; j<ARRAY1BIG_DIM; j++)
+ wdata[i][j]=i*1;
+
+ /* Create file */
+ fid1 = H5Fcreate(FILE25_BIG, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+
+ /*-------------------------
+ * Array type dataset
+ *
+ /* Create dataspace for datasets */
+ sid1 = H5Screate_simple(SPACE1_RANK, sdims1, NULL);
+
+ /* Create a datatype to refer to */
+ tid1 = H5Tarray_create2(H5T_NATIVE_INT, ARRAY1_RANK, tdims1);
+
+ /* Create a dataset */
+ dataset = H5Dcreate2(fid1, "Dataset1", tid1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Write dataset to disk */
+ ret = H5Dwrite(dataset, tid1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
+ assert(ret >= 0);
+
+ /*---------------------------
+ * Region Reference dataset
+ */
+ /* Create dataspace for the reference dataset */
+ sid2 = H5Screate_simple(SPACE1_RANK, dims2, NULL);
+
+ /* Create a dataset */
+ dset2 = H5Dcreate2(fid1, "Dataset2", H5T_STD_REF_DSETREG, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ /* Create references */
+ H5Sselect_hyperslab(sid1, H5S_SELECT_SET, start, stride, count, block);
+
+ H5Sget_select_npoints(sid1);
+
+ /* Create Dataset1 region */
+ H5Rcreate(&wbuf[0], fid1, "/Dataset1", H5R_DATASET_REGION, sid1);
+
+ /* Write selection to disk */
+ H5Dwrite(dset2,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,wbuf);
+
+ /* Close Dataset */
+ ret = H5Dclose(dataset);
+ assert(ret >= 0);
+ ret = H5Tclose(tid1);
+ assert(ret >= 0);
+ ret = H5Sclose(sid1);
+ assert(ret >= 0);
+ ret = H5Fclose(fid1);
+ assert(ret >= 0);
+}
+
static void gent_array1(void)
{
int wdata[SPACE1_DIM1][ARRAY1_DIM1]; /* Information to write */
@@ -6987,6 +7081,7 @@ int main(void)
gent_vldatatypes3();
gent_vldatatypes4();
gent_vldatatypes5();
+ gent_array1_big();
gent_array1();
gent_array2();
gent_array3();
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index d845fae..f710c28 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -347,6 +347,8 @@ TOOLTEST tvlstr.ddl tvlstr.h5
# test for files with array data
TOOLTEST tarray1.ddl tarray1.h5
+# # added for bug# 2092 - tarray1_big.h
+TOOLTEST tarray1_big.ddl -R tarray1_big.h5
TOOLTEST tarray2.ddl tarray2.h5
TOOLTEST tarray3.ddl tarray3.h5
TOOLTEST tarray4.ddl tarray4.h5