summaryrefslogtreecommitdiffstats
path: root/testpar
diff options
context:
space:
mode:
authorVailin Choi <vchoi@hdfgroup.org>2014-11-13 22:32:19 (GMT)
committerVailin Choi <vchoi@hdfgroup.org>2014-11-13 22:32:19 (GMT)
commit7ec8fad9527258c9cd2fe1cfe11b0c07ad740804 (patch)
treeb07230692d7d9aa1417cbb33beabcc06347f6a5d /testpar
parent5818a3045d141a02668f3ecfb29268327bb683ec (diff)
downloadhdf5-7ec8fad9527258c9cd2fe1cfe11b0c07ad740804.zip
hdf5-7ec8fad9527258c9cd2fe1cfe11b0c07ad740804.tar.gz
hdf5-7ec8fad9527258c9cd2fe1cfe11b0c07ad740804.tar.bz2
[svn-r25814] Bring revisions #25284 - #25434 from trunk to revise_chunks.
(Revision #25283 is skipped since it was backed out later on 11/3/2015.) h5committested.
Diffstat (limited to 'testpar')
-rw-r--r--testpar/Makefile.in1
-rw-r--r--testpar/t_chunk_alloc.c14
-rw-r--r--testpar/t_mdset.c57
-rw-r--r--testpar/t_mpi.c21
-rw-r--r--testpar/testphdf5.c3
-rw-r--r--testpar/testphdf5.h1
6 files changed, 63 insertions, 34 deletions
diff --git a/testpar/Makefile.in b/testpar/Makefile.in
index 5a866fc..6814acb 100644
--- a/testpar/Makefile.in
+++ b/testpar/Makefile.in
@@ -525,7 +525,6 @@ MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MPE = @MPE@
-MPI_GET_SIZE = @MPI_GET_SIZE@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
diff --git a/testpar/t_chunk_alloc.c b/testpar/t_chunk_alloc.c
index e8a6ca4..b2ddc23 100644
--- a/testpar/t_chunk_alloc.c
+++ b/testpar/t_chunk_alloc.c
@@ -36,11 +36,7 @@ get_filesize(const char *filename)
int mpierr;
MPI_File fd;
MPI_Offset filesize;
-#ifndef H5_HAVE_MPI_GET_SIZE
- h5_stat_t stat_buf;
-#endif
-#ifdef H5_HAVE_MPI_GET_SIZE
mpierr = MPI_File_open(MPI_COMM_SELF, (char*)filename, MPI_MODE_RDONLY,
MPI_INFO_NULL, &fd);
VRFY((mpierr == MPI_SUCCESS), "");
@@ -50,16 +46,6 @@ get_filesize(const char *filename)
mpierr = MPI_File_close(&fd);
VRFY((mpierr == MPI_SUCCESS), "");
-#else
- /* Some systems (only SGI Altix Propack 4 so far) doesn't return correct
- * file size for MPI_File_get_size. Use stat instead.
- */
- if((mpierr=HDstat(filename, &stat_buf))<0)
- VRFY((mpierr == MPI_SUCCESS), "");
-
- /* Hopefully this casting is safe */
- filesize = (MPI_Offset)(stat_buf.st_size);
-#endif
return(filesize);
}
diff --git a/testpar/t_mdset.c b/testpar/t_mdset.c
index fa1a980..f294b93 100644
--- a/testpar/t_mdset.c
+++ b/testpar/t_mdset.c
@@ -74,6 +74,63 @@ get_size(void)
} /* get_size() */
/*
+ * Example of using PHDF5 to create a zero sized dataset.
+ *
+ */
+void zero_dim_dset(void)
+{
+ int mpi_size, mpi_rank;
+ const char *filename;
+ hid_t fid, plist, dcpl, dsid, sid;
+ hsize_t dim, chunk_dim;
+ herr_t ret;
+ int data[1];
+
+ MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
+ MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
+
+ filename = GetTestParameters();
+
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
+ VRFY((plist>=0), "create_faccess_plist succeeded");
+
+ fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
+ VRFY((fid>=0), "H5Fcreate succeeded");
+ ret = H5Pclose(plist);
+ VRFY((ret>=0), "H5Pclose succeeded");
+
+ dcpl = H5Pcreate(H5P_DATASET_CREATE);
+ VRFY((dcpl>=0), "failed H5Pcreate");
+
+ /* Set 1 chunk size */
+ chunk_dim = 1;
+ ret = H5Pset_chunk(dcpl, 1, &chunk_dim);
+ VRFY((ret>=0), "failed H5Pset_chunk");
+
+ /* Create 1D dataspace with 0 dim size */
+ dim = 0;
+ sid = H5Screate_simple(1, &dim, NULL);
+ VRFY((sid>=0), "failed H5Screate_simple");
+
+ /* Create chunked dataset */
+ dsid = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
+ VRFY((dsid>=0), "failed H5Dcreate2");
+
+ /* write 0 elements from dataset */
+ ret = H5Dwrite(dsid, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, data);
+ VRFY((ret>=0), "failed H5Dwrite");
+
+ /* Read 0 elements from dataset */
+ ret = H5Dread(dsid, H5T_NATIVE_INT, sid, sid, H5P_DEFAULT, data);
+ VRFY((ret>=0), "failed H5Dread");
+
+ H5Pclose(dcpl);
+ H5Dclose(dsid);
+ H5Sclose(sid);
+ H5Fclose(fid);
+}
+
+/*
* Example of using PHDF5 to create ndatasets datasets. Each process write
* a slab of array to the file.
*
diff --git a/testpar/t_mpi.c b/testpar/t_mpi.c
index a74aa22..7bd2f58 100644
--- a/testpar/t_mpi.c
+++ b/testpar/t_mpi.c
@@ -206,7 +206,6 @@ test_mpio_gb_file(char *filename)
MPI_Offset mpi_off;
MPI_Offset mpi_off_old;
MPI_Status mpi_stat;
- h5_stat_t stat_buf;
int is_signed, sizeof_mpi_offset;
nerrs = 0;
@@ -380,13 +379,7 @@ test_mpio_gb_file(char *filename)
mrc = MPI_Barrier(MPI_COMM_WORLD);
VRFY((mrc==MPI_SUCCESS), "Sync before leaving test");
- /*
- * Check if MPI_File_get_size works correctly. Some systems (only SGI Altix
- * Propack 4 so far) return wrong file size. It can be avoided by reconfiguring
- * with "--disable-mpi-size".
- */
-#ifdef H5_HAVE_MPI_GET_SIZE
- printf("Test if MPI_File_get_size works correctly with %s\n", filename);
+ printf("Test if MPI_File_get_size works correctly with %s\n", filename);
mrc = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, info, &fh);
VRFY((mrc==MPI_SUCCESS), "");
@@ -394,14 +387,7 @@ test_mpio_gb_file(char *filename)
if (MAINPROCESS){ /* only process 0 needs to check it*/
mrc = MPI_File_get_size(fh, &size);
VRFY((mrc==MPI_SUCCESS), "");
-
- mrc=HDstat(filename, &stat_buf);
- VRFY((mrc==0), "");
-
- /* Hopefully this casting is safe */
- if(size != (MPI_Offset)(stat_buf.st_size)) {
- printf("Warning: MPI_File_get_size doesn't return correct file size. To avoid using it in the library, reconfigure and rebuild the library with --disable-mpi-size.\n");
- }
+ VRFY((size == mpi_off+MB), "MPI_File_get_size doesn't return correct file size.");
}
/* close file and free the communicator */
@@ -414,9 +400,6 @@ test_mpio_gb_file(char *filename)
*/
mrc = MPI_Barrier(MPI_COMM_WORLD);
VRFY((mrc==MPI_SUCCESS), "Sync before leaving test");
-#else
- printf("Skipped testing MPI_File_get_size because it's disabled\n");
-#endif
}
finish:
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c
index 0b97c03..057ac88 100644
--- a/testpar/testphdf5.c
+++ b/testpar/testphdf5.c
@@ -377,6 +377,9 @@ int main(int argc, char **argv)
"compressed dataset collective read", PARATESTFILE);
#endif /* H5_HAVE_FILTER_DEFLATE */
+ AddTest("zerodsetr", zero_dim_dset, NULL,
+ "zero dim dset", PARATESTFILE);
+
ndsets_params.name = PARATESTFILE;
ndsets_params.count = ndatasets;
AddTest("ndsetw", multiple_dset_write, NULL,
diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h
index f313073..3597b17 100644
--- a/testpar/testphdf5.h
+++ b/testpar/testphdf5.h
@@ -237,6 +237,7 @@ extern int dxfer_coll_type;
/* Test program prototypes */
void test_plist_ed(void);
+void zero_dim_dset(void);
void multiple_dset_write(void);
void multiple_group_write(void);
void multiple_group_read(void);