diff options
author | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2015-06-08 20:52:48 (GMT) |
---|---|---|
committer | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2015-06-08 20:52:48 (GMT) |
commit | 929e8ce1281a2a4953f6f3925a8595227fcb8f7f (patch) | |
tree | 5a6e2ad3622dadf6de58ce81397328e527fbd1c7 /testpar/t_init_term.c | |
parent | 02e9a43900cb8d2879b9bb2af9c3a9aba98c8949 (diff) | |
download | hdf5-929e8ce1281a2a4953f6f3925a8595227fcb8f7f.zip hdf5-929e8ce1281a2a4953f6f3925a8595227fcb8f7f.tar.gz hdf5-929e8ce1281a2a4953f6f3925a8595227fcb8f7f.tar.bz2 |
[svn-r27162] fix for HDFFV-9412:
- Check for mpi is_initialized and is_finalized before making MPI calls in init/terminate of HDF5.
- Add a test to make sure we can make serial HDF5 calls from rank 0 after MPI_Finalize is called.
tested with h5committest
Diffstat (limited to 'testpar/t_init_term.c')
-rw-r--r-- | testpar/t_init_term.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/testpar/t_init_term.c b/testpar/t_init_term.c new file mode 100644 index 0000000..824f773 --- /dev/null +++ b/testpar/t_init_term.c @@ -0,0 +1,76 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Mohamad Chaarawi + * June 2015 + * + * Purpose: This test checks for the correct initialization and + * termination of the HDF5 library with MPI init and finalize. + */ + +#include "testphdf5.h" + +int nerrors = 0; /* errors count */ + +const char *FILENAME[] = { + "after_mpi_fin", + NULL +}; + +int +main (int argc, char **argv) +{ + int mpi_size, mpi_rank; + MPI_Comm comm = MPI_COMM_WORLD; + + /* Initialize and finalize MPI */ + MPI_Init(&argc, &argv); + MPI_Comm_size(comm, &mpi_size); + MPI_Comm_rank(comm, &mpi_rank); + + if(MAINPROCESS) + TESTING("Usage of Serial HDF5 after MPI_Finalize() is called"); + + MPI_Finalize(); + + nerrors += GetTestNumErrs(); + + /* test if we can initialize the library with MPI being finalized + and create a file serially */ + H5open(); + + if(mpi_rank == 0) { + char filename[1024]; + hid_t file_id; + + h5_fixname(FILENAME[0], H5P_DEFAULT, filename, sizeof filename); + file_id = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + VRFY((file_id >= 0), "H5Fcreate succeeded"); + H5Fclose(file_id); + file_id = -1; + } + + H5close(); + + if(MAINPROCESS) { + if(0 == nerrors) + PASSED() + else + H5_FAILED() + } + + return (nerrors!=0); +} |