summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2017-04-19 22:28:21 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2017-04-19 22:28:21 (GMT)
commitd594cb2cc6d73ef2dd7ddfee689cdda23827e03e (patch)
treeae2b91ccecc0e69cfdbdb25d566dc9f9f8b8be9b /test
parent8f34c3cfd46054f6478b34df6af324c353e44d62 (diff)
downloadhdf5-d594cb2cc6d73ef2dd7ddfee689cdda23827e03e.zip
hdf5-d594cb2cc6d73ef2dd7ddfee689cdda23827e03e.tar.gz
hdf5-d594cb2cc6d73ef2dd7ddfee689cdda23827e03e.tar.bz2
Added code to disable the evict-on-close feature in
the parallel library.
Diffstat (limited to 'test')
-rw-r--r--test/cache_image.c8
-rw-r--r--test/evict_on_close.c100
2 files changed, 108 insertions, 0 deletions
diff --git a/test/cache_image.c b/test/cache_image.c
index dfbd02e..31d7705 100644
--- a/test/cache_image.c
+++ b/test/cache_image.c
@@ -62,7 +62,10 @@ static unsigned cache_image_api_error_check_3(void);
static unsigned cache_image_api_error_check_4(void);
static unsigned get_free_sections_test(void);
+
+#ifndef H5_HAVE_PARALLEL
static unsigned evict_on_close_test(void);
+#endif /* H5_HAVE_PARALLEL */
/****************************************************************************/
@@ -7711,6 +7714,7 @@ get_free_sections_test(void)
*
*-------------------------------------------------------------------------
*/
+#ifndef H5_HAVE_PARALLEL
static unsigned
evict_on_close_test(void)
{
@@ -8015,6 +8019,7 @@ evict_on_close_test(void)
return !pass;
} /* evict_on_close_test() */
+#endif /* H5_HAVE_PARALLEL */
/*-------------------------------------------------------------------------
@@ -8066,7 +8071,10 @@ main(void)
nerrs += cache_image_api_error_check_4();
nerrs += get_free_sections_test();
+
+#ifndef H5_HAVE_PARALLEL
nerrs += evict_on_close_test();
+#endif /* H5_HAVE_PARALLEL */
return(nerrs > 0);
diff --git a/test/evict_on_close.c b/test/evict_on_close.c
index b00c1e4..8196ea1 100644
--- a/test/evict_on_close.c
+++ b/test/evict_on_close.c
@@ -39,6 +39,12 @@
#include "H5Gpkg.h"
#include "H5Ipkg.h"
+/* Evict on close is not supported under parallel at this time.
+ * In the meantime, we just run a simple check that EoC can't be
+ * enabled in parallel HDF5.
+ */
+#ifndef H5_HAVE_PARALLEL
+
/* Uncomment to manually inspect cache states */
/* (Requires debug build of the library) */
/* #define EOC_MANUAL_INSPECTION */
@@ -802,6 +808,7 @@ error:
} /* check_dset_scheme() */
+
/*-------------------------------------------------------------------------
* Function: check_evict_on_close_api()
@@ -992,3 +999,96 @@ error:
} /* end main() */
+#else
+
+
+/*-------------------------------------------------------------------------
+ * Function: check_evict_on_close_parallel_fail()
+ *
+ * Purpose: Verify that the H5Pset_evict_on_close() call fails in
+ * parallel HDF5.
+ *
+ * Return: SUCCEED/FAIL
+ *
+ * Programmer: Dana Robinson
+ * Spring 2017
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+check_evict_on_close_parallel_fail(void)
+{
+ hid_t fapl_id = -1;
+ hbool_t evict_on_close;
+ herr_t status;
+
+ TESTING("evict on close fails in parallel");
+
+ /* Create a fapl */
+ if((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0)
+ TEST_ERROR;
+
+ /* Set the evict on close property (should fail)*/
+ evict_on_close = TRUE;
+ H5E_BEGIN_TRY {
+ status = H5Pset_evict_on_close(fapl_id, evict_on_close);
+ } H5E_END_TRY;
+ if(status >= 0)
+ FAIL_PUTS_ERROR("H5Pset_evict_on_close() did not fail in parallel HDF5.");
+
+ /* close fapl */
+ if(H5Pclose(fapl_id) < 0)
+ TEST_ERROR;
+
+ PASSED();
+ return SUCCEED;
+
+error:
+ H5_FAILED();
+ return FAIL;
+
+} /* check_evict_on_close_parallel_fail() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: main (parallel version)
+ *
+ * Return: EXIT_FAILURE/EXIT_SUCCESS
+ *
+ * Programmer: Dana Robinson
+ * Spring 2016
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ unsigned nerrors = 0; /* number of test errors */
+
+ HDprintf("Testing evict-on-close cache behavior\n");
+
+ /* Initialize */
+ h5_reset();
+
+ /* Test that EoC fails in parallel HDF5 */
+ nerrors += check_evict_on_close_parallel_fail() < 0 ? 1 : 0;
+
+ if(nerrors)
+ goto error;
+
+ HDprintf("All evict-on-close tests passed.\n");
+ HDprintf("Note that EoC is not supported under parallel so most tests are skipped.\n");
+
+ return EXIT_SUCCESS;
+
+error:
+
+ HDprintf("***** %u evict-on-close test%s FAILED! *****\n",
+ nerrors, nerrors > 1 ? "S" : "");
+
+ return EXIT_FAILURE;
+
+} /* main() - parallel */
+
+#endif /* H5_HAVE_PARALLEL */
+