diff options
author | Songyu Lu <songyulu@hdfgroup.org> | 2021-07-08 16:38:00 (GMT) |
---|---|---|
committer | Songyu Lu <songyulu@hdfgroup.org> | 2021-07-08 16:38:00 (GMT) |
commit | 4ac67187fa91ccb8132bc902348a3355389aa7ab (patch) | |
tree | cfa03faa8c89694418a6a9d9f9916f7ef85a015a /test | |
parent | 082de1cb75edd1e63269c9c6e1953a2e418d770e (diff) | |
parent | b9dbabc1523c13627ada0bcb04d780e7ad93b658 (diff) | |
download | hdf5-4ac67187fa91ccb8132bc902348a3355389aa7ab.zip hdf5-4ac67187fa91ccb8132bc902348a3355389aa7ab.tar.gz hdf5-4ac67187fa91ccb8132bc902348a3355389aa7ab.tar.bz2 |
Merge branch 'feature/vfd_swmr' of https://github.com/raylu-hdf/hdf5 into raylu_bigset_test
Diffstat (limited to 'test')
43 files changed, 5576 insertions, 9591 deletions
diff --git a/test/CMakeVFDTests.cmake b/test/CMakeVFDTests.cmake index dada9a9..892ccf3 100644 --- a/test/CMakeVFDTests.cmake +++ b/test/CMakeVFDTests.cmake @@ -26,7 +26,7 @@ set (VFD_LIST multi family ) -if (DIRECT_VFD) +if (H5_HAVE_DIRECT) set (VFD_LIST ${VFD_LIST} direct) endif () diff --git a/test/Makefile.am b/test/Makefile.am index 2d76946..ee35664 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -112,6 +112,7 @@ check_PROGRAMS=$(TEST_PROG) error_test err_compat tcheck_version \ vfd_swmr_zoo_reader vfd_swmr_zoo_writer \ vfd_swmr_attrdset_reader vfd_swmr_attrdset_writer \ vfd_swmr_check_compat \ + vfd_swmr_dsetchks_reader vfd_swmr_dsetchks_writer \ swmr_check_compat_vfd vds_env vds_swmr_gen vds_swmr_reader vds_swmr_writer \ mirror_vfd if HAVE_SHARED_CONDITIONAL @@ -182,6 +183,9 @@ vfd_swmr_dsetops_reader_SOURCES=vfd_swmr_dsetops_writer.c vfd_swmr_attrdset_writer_SOURCES=vfd_swmr_attrdset_writer.c vfd_swmr_attrdset_reader_SOURCES=vfd_swmr_attrdset_writer.c +vfd_swmr_dsetchks_writer_SOURCES=vfd_swmr_dsetchks_writer.c +vfd_swmr_dsetchks_reader_SOURCES=vfd_swmr_dsetchks_writer.c + # Additional target for running timing test timings _timings: testmeta @for timing in $(TIMINGS) dummy; do \ diff --git a/test/cache.c b/test/cache.c index abbfaff..6ded559 100644 --- a/test/cache.c +++ b/test/cache.c @@ -280,17 +280,17 @@ smoke_check_1(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(4 * 1024 * 1024), (size_t)(2 * 1024 * 1024), paged); if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -308,7 +308,7 @@ smoke_check_1(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -326,7 +326,7 @@ smoke_check_1(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -344,7 +344,7 @@ smoke_check_1(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -354,7 +354,7 @@ smoke_check_1(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -367,7 +367,7 @@ smoke_check_1(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -377,7 +377,7 @@ smoke_check_1(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -390,12 +390,12 @@ smoke_check_1(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -409,7 +409,7 @@ smoke_check_1(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -478,17 +478,17 @@ smoke_check_2(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(4 * 1024 * 1024), (size_t)(2 * 1024 * 1024), paged); if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -506,7 +506,7 @@ smoke_check_2(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -524,7 +524,7 @@ smoke_check_2(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -542,7 +542,7 @@ smoke_check_2(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -552,7 +552,7 @@ smoke_check_2(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -565,7 +565,7 @@ smoke_check_2(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -575,7 +575,7 @@ smoke_check_2(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -588,12 +588,12 @@ smoke_check_2(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -607,7 +607,7 @@ smoke_check_2(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -675,17 +675,17 @@ smoke_check_3(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024), paged); if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -703,7 +703,7 @@ smoke_check_3(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -721,7 +721,7 @@ smoke_check_3(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -739,7 +739,7 @@ smoke_check_3(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -749,7 +749,7 @@ smoke_check_3(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -762,7 +762,7 @@ smoke_check_3(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -772,7 +772,7 @@ smoke_check_3(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -785,12 +785,12 @@ smoke_check_3(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -804,7 +804,7 @@ smoke_check_3(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -873,17 +873,17 @@ smoke_check_4(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024), paged); if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -901,7 +901,7 @@ smoke_check_4(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -919,7 +919,7 @@ smoke_check_4(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -937,7 +937,7 @@ smoke_check_4(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -947,7 +947,7 @@ smoke_check_4(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -960,7 +960,7 @@ smoke_check_4(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -970,7 +970,7 @@ smoke_check_4(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -983,12 +983,12 @@ smoke_check_4(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -1002,7 +1002,7 @@ smoke_check_4(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -1116,12 +1116,12 @@ smoke_check_5(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024), paged); cache_ptr = file_ptr->shared->cache; @@ -1138,7 +1138,7 @@ smoke_check_5(int express_test, unsigned paged) } if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1149,7 +1149,7 @@ smoke_check_5(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1160,7 +1160,7 @@ smoke_check_5(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1171,7 +1171,7 @@ smoke_check_5(int express_test, unsigned paged) /* do_inserts */ TRUE); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -1181,7 +1181,7 @@ smoke_check_5(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1193,7 +1193,7 @@ smoke_check_5(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -1203,7 +1203,7 @@ smoke_check_5(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1215,12 +1215,12 @@ smoke_check_5(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -1234,7 +1234,7 @@ smoke_check_5(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -1348,12 +1348,12 @@ smoke_check_6(int express_test, unsigned paged) } if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024), paged); cache_ptr = file_ptr->shared->cache; @@ -1370,7 +1370,7 @@ smoke_check_6(int express_test, unsigned paged) } if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1381,7 +1381,7 @@ smoke_check_6(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1392,7 +1392,7 @@ smoke_check_6(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1403,7 +1403,7 @@ smoke_check_6(int express_test, unsigned paged) /* do_inserts */ TRUE); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -1413,7 +1413,7 @@ smoke_check_6(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1425,7 +1425,7 @@ smoke_check_6(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -1435,7 +1435,7 @@ smoke_check_6(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1447,12 +1447,12 @@ smoke_check_6(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -1466,7 +1466,7 @@ smoke_check_6(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -1581,12 +1581,12 @@ smoke_check_7(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024), paged); cache_ptr = file_ptr->shared->cache; @@ -1603,7 +1603,7 @@ smoke_check_7(int express_test, unsigned paged) } if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1614,7 +1614,7 @@ smoke_check_7(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1625,7 +1625,7 @@ smoke_check_7(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1636,7 +1636,7 @@ smoke_check_7(int express_test, unsigned paged) /* do_inserts */ TRUE); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -1646,7 +1646,7 @@ smoke_check_7(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1658,7 +1658,7 @@ smoke_check_7(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -1668,7 +1668,7 @@ smoke_check_7(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1680,12 +1680,12 @@ smoke_check_7(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -1699,7 +1699,7 @@ smoke_check_7(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -1814,12 +1814,12 @@ smoke_check_8(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024), paged); cache_ptr = file_ptr->shared->cache; @@ -1836,7 +1836,7 @@ smoke_check_8(int express_test, unsigned paged) } if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1847,7 +1847,7 @@ smoke_check_8(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1858,7 +1858,7 @@ smoke_check_8(int express_test, unsigned paged) /* do_inserts */ FALSE); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1869,7 +1869,7 @@ smoke_check_8(int express_test, unsigned paged) /* do_inserts */ TRUE); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -1879,7 +1879,7 @@ smoke_check_8(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1891,7 +1891,7 @@ smoke_check_8(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -1901,7 +1901,7 @@ smoke_check_8(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); hl_col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -1913,12 +1913,12 @@ smoke_check_8(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -1932,7 +1932,7 @@ smoke_check_8(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -2011,12 +2011,12 @@ smoke_check_9(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(4 * 1024 * 1024), (size_t)(2 * 1024 * 1024), paged); cache_ptr = file_ptr->shared->cache; @@ -2024,7 +2024,7 @@ smoke_check_9(int express_test, unsigned paged) /* disable evictions */ if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2038,7 +2038,8 @@ smoke_check_9(int express_test, unsigned paged) } if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", __func__, mile_stone++, + (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2058,7 +2059,7 @@ smoke_check_9(int express_test, unsigned paged) /* enable evictions */ if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2072,7 +2073,8 @@ smoke_check_9(int express_test, unsigned paged) } if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled \n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled \n", __func__, mile_stone++, + (int)pass); row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2090,7 +2092,7 @@ smoke_check_9(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2104,7 +2106,8 @@ smoke_check_9(int express_test, unsigned paged) } if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled \n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled \n", __func__, mile_stone++, + (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2122,7 +2125,7 @@ smoke_check_9(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2136,7 +2139,8 @@ smoke_check_9(int express_test, unsigned paged) } if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled \n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled \n", __func__, mile_stone++, + (int)pass); /* flush and destroy all entries in the cache: */ @@ -2146,7 +2150,7 @@ smoke_check_9(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2160,7 +2164,8 @@ smoke_check_9(int express_test, unsigned paged) } if (show_progress) /* 12 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", __func__, mile_stone++, + (int)pass); col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2173,7 +2178,7 @@ smoke_check_9(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 13 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush all entries in the cache: */ @@ -2183,7 +2188,7 @@ smoke_check_9(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 14 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2197,7 +2202,8 @@ smoke_check_9(int express_test, unsigned paged) } if (show_progress) /* 15 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", __func__, mile_stone++, + (int)pass); col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2210,7 +2216,7 @@ smoke_check_9(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 16 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2224,12 +2230,13 @@ smoke_check_9(int express_test, unsigned paged) } if (show_progress) /* 17 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", __func__, mile_stone++, + (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 18 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -2243,7 +2250,7 @@ smoke_check_9(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -2322,18 +2329,19 @@ smoke_check_10(int express_test, unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(4 * 1024 * 1024), (size_t)(2 * 1024 * 1024), paged); cache_ptr = file_ptr->shared->cache; if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", __func__, mile_stone++, + (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2351,7 +2359,7 @@ smoke_check_10(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2365,7 +2373,8 @@ smoke_check_10(int express_test, unsigned paged) } if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", __func__, mile_stone++, + (int)pass); row_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2383,7 +2392,7 @@ smoke_check_10(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2397,7 +2406,8 @@ smoke_check_10(int express_test, unsigned paged) } if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", __func__, mile_stone++, + (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2415,7 +2425,7 @@ smoke_check_10(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2429,7 +2439,8 @@ smoke_check_10(int express_test, unsigned paged) } if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", __func__, mile_stone++, + (int)pass); /* flush and destroy all entries in the cache: */ @@ -2439,7 +2450,7 @@ smoke_check_10(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2453,7 +2464,8 @@ smoke_check_10(int express_test, unsigned paged) } if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", __func__, mile_stone++, + (int)pass); col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2466,7 +2478,7 @@ smoke_check_10(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 12 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2480,7 +2492,8 @@ smoke_check_10(int express_test, unsigned paged) } if (show_progress) /* 13 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", __func__, mile_stone++, + (int)pass); /* flush all entries in the cache: */ @@ -2490,7 +2503,7 @@ smoke_check_10(int express_test, unsigned paged) /* dump_detailed_stats */ FALSE); if (show_progress) /* 14 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2504,7 +2517,8 @@ smoke_check_10(int express_test, unsigned paged) } if (show_progress) /* 15 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions enabled\n", __func__, mile_stone++, + (int)pass); col_major_scan_backward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2517,7 +2531,7 @@ smoke_check_10(int express_test, unsigned paged) /* dirty_unprotects */ dirty_unprotects); if (show_progress) /* 16 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -2531,12 +2545,13 @@ smoke_check_10(int express_test, unsigned paged) } if (show_progress) /* 17 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d -- evictions disabled\n", __func__, mile_stone++, + (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 18 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -2550,7 +2565,7 @@ smoke_check_10(int express_test, unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -2625,17 +2640,17 @@ write_permitted_check(int pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); reset_entries(); if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); file_ptr = setup_cache((size_t)(1 * 1024 * 1024), (size_t)0, paged); if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); row_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2653,7 +2668,7 @@ write_permitted_check(int /* dirty_unprotects */ TRUE); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); write_permitted = FALSE; @@ -2673,7 +2688,7 @@ write_permitted_check(int /* dirty_unprotects */ NO_CHANGE); if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); write_permitted = TRUE; @@ -2693,7 +2708,7 @@ write_permitted_check(int /* dirty_unprotects */ TRUE); if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* flush and destroy all entries in the cache: */ @@ -2703,7 +2718,7 @@ write_permitted_check(int /* dump_detailed_stats */ FALSE); if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); col_major_scan_forward(/* file_ptr */ file_ptr, /* max_index */ max_index, @@ -2716,7 +2731,7 @@ write_permitted_check(int /* dirty_unprotects */ TRUE); if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); write_permitted = FALSE; @@ -2733,12 +2748,12 @@ write_permitted_check(int write_permitted = TRUE; if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); takedown_cache(file_ptr, display_stats, TRUE); if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); verify_clean(); verify_unprotected(); @@ -2752,7 +2767,7 @@ write_permitted_check(int if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } #else /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */ @@ -2770,21 +2785,25 @@ write_permitted_check(int /*------------------------------------------------------------------------- * Function: check_insert_entry() * - * Purpose: Verify that H5C_insert_entry behaves as expected. - * Test the behaviour with different flags. + * Purpose: Verify that H5C_insert_entry behaves as expected. + * Test the behaviour with different flags. * - * This test was added primarily to test basic insert - * pinned entry functionallity, but I through in explicit - * tests for other functionallity that is tested implicitly - * elsewhere. + * This test was added primarily to test basic insert + * pinned entry functionallity, but I through in explicit + * tests for other functionallity that is tested implicitly + * elsewhere. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 8/10/06 * * Modifications: * + * Updated tests to accommodate the case in which the + * slist is disabled. + * JRM -- 5/14/20 + * *------------------------------------------------------------------------- */ @@ -2982,7 +3001,8 @@ check_insert_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 4) || (cache_ptr->index_size != 4 * entry_sizes[entry_type]) || - (cache_ptr->slist_len != 4) || (cache_ptr->slist_size != 4 * entry_sizes[entry_type]) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 4) || (cache_ptr->slist_size != 4 * entry_sizes[entry_type]))) || (cache_ptr->pl_len != 0) || (cache_ptr->pl_size != (size_t)0) || (cache_ptr->pel_len != 2) || (cache_ptr->pel_size != 2 * entry_sizes[entry_type]) || (cache_ptr->LRU_list_len != 2) || (cache_ptr->LRU_list_size != 2 * entry_sizes[entry_type]) @@ -3007,10 +3027,11 @@ check_insert_entry(unsigned paged) if ((cache_ptr->insertions[entry_type] != 4) || (cache_ptr->pinned_insertions[entry_type] != 2) || (cache_ptr->pins[entry_type] != 2) || (cache_ptr->unpins[entry_type] != 0) || (cache_ptr->dirty_pins[entry_type] != 0) || (cache_ptr->max_index_len != 4) || - (cache_ptr->max_index_size != 4 * entry_sizes[entry_type]) || (cache_ptr->max_slist_len != 4) || - (cache_ptr->max_slist_size != 4 * entry_sizes[entry_type]) || (cache_ptr->max_pl_len != 0) || - (cache_ptr->max_pl_size != (size_t)0) || (cache_ptr->max_pel_len != 2) || - (cache_ptr->max_pel_size != 2 * entry_sizes[entry_type])) { + (cache_ptr->max_index_size != 4 * entry_sizes[entry_type]) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 4) || (cache_ptr->slist_size != 4 * entry_sizes[entry_type]))) || + (cache_ptr->max_pl_len != 0) || (cache_ptr->max_pl_size != (size_t)0) || + (cache_ptr->max_pel_len != 2) || (cache_ptr->max_pel_size != 2 * entry_sizes[entry_type])) { pass = FALSE; failure_mssg = "Unexpected insert results 11."; @@ -3040,7 +3061,7 @@ check_insert_entry(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -3129,7 +3150,7 @@ check_flush_cache(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -3137,18 +3158,25 @@ check_flush_cache(unsigned paged) } /* check_flush_cache() */ /*------------------------------------------------------------------------- + * * Function: check_flush_cache__empty_cache() * - * Purpose: Verify that flush_cache behaves as expected with an empty + * Purpose : Verify that flush_cache behaves as expected with an empty * cache. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 1/12/05 * * Modifications: * + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 + * *------------------------------------------------------------------------- */ @@ -3156,7 +3184,6 @@ static void check_flush_cache__empty_cache(H5F_t *file_ptr) { H5C_t *cache_ptr = file_ptr->shared->cache; - herr_t result; if (cache_ptr == NULL) { @@ -3171,50 +3198,31 @@ check_flush_cache__empty_cache(H5F_t *file_ptr) /* Test behaviour on an empty cache. Can't do much sanity * checking in this case, so simply check the return values. + * + * Check of return values is done in the H5C_FLUSH_CACHE() macro. */ if (pass) { - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - - if (result < 0) { - - pass = FALSE; - failure_mssg = "flush with flags = 0x00 failed on empty cache.\n"; - } + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "flush with flags = 0x00 failed on empty cache.\n") } if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); - - if (result < 0) { - - pass = FALSE; - failure_mssg = "flush with flags = 0x04 failed on empty cache.\n"; - } + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, + "flush with flags = 0x04 failed on empty cache.\n") } if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_CLEAR_ONLY_FLAG); - - if (result < 0) { - - pass = FALSE; - failure_mssg = "flush with flags = 0x08 failed on empty cache.\n"; - } + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_CLEAR_ONLY_FLAG, + "flush with flags = 0x08 failed on empty cache.\n") } if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_MARKED_ENTRIES_FLAG); - - if (result < 0) { - - pass = FALSE; - failure_mssg = "flush with flags = 0x10 failed on empty cache.\n"; - } + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_MARKED_ENTRIES_FLAG, + "flush with flags = 0x10 failed on empty cache.\n") } } /* check_flush_cache__empty_cache() */ @@ -4418,22 +4426,26 @@ check_flush_cache__multi_entry(H5F_t *file_ptr) check_flush_cache__pe_multi_entry_test(file_ptr, test_num, flush_flags, spec_size, spec); } - return; - } /* check_flush_cache__multi_entry() */ /*------------------------------------------------------------------------- * Function: check_flush_cache__multi_entry_test() * - * Purpose: Run a multi entry flush cache test. + * Purpose : Run a multi entry flush cache test. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 1/13/05 * * Modifications: * + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 + * *------------------------------------------------------------------------- */ @@ -4443,7 +4455,6 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int { H5C_t * cache_ptr = file_ptr->shared->cache; static char msg[128]; - herr_t result; unsigned u; size_t total_entry_size = 0; test_entry_t *base_addr; @@ -4453,7 +4464,7 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int /* This gets used a lot, so lets leave it in. */ HDfprintf(stdout, "check_flush_cache__multi_entry_test: test %d\n", - test_num); + test_num); #endif /* JRM */ if (cache_ptr == NULL) { @@ -4478,6 +4489,7 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int u = 0; while (pass && (u < spec_size)) { + if (((unsigned)spec[u].entry_num != u) || (spec[u].entry_type < 0) || (spec[u].entry_type >= NUMBER_OF_ENTRY_TYPES) || (spec[u].entry_index < 0) || (spec[u].entry_index > max_indices[spec[u].entry_type])) { @@ -4492,6 +4504,7 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int u = 0; while (pass && (u < spec_size)) { + if (spec[u].insert_flag) { insert_entry(file_ptr, spec[u].entry_type, spec[u].entry_index, spec[u].flags); @@ -4510,11 +4523,10 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int if (pass) { - result = H5C_flush_cache(file_ptr, flush_flags); + H5C_FLUSH_CACHE(file_ptr, flush_flags, "dummy failure message.\n") - if (result < 0) { + if (!pass) { - pass = FALSE; HDsnprintf(msg, (size_t)128, "flush with flags 0x%x failed in multi entry test #%d.", flush_flags, test_num); failure_mssg = msg; @@ -4568,9 +4580,9 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int /* clean up the cache to prep for the next test */ if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, "dummy mssg.\n") - if (result < 0) { + if (!pass) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Flush failed on cleanup in multi entry test #%d.", test_num); @@ -4587,6 +4599,7 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int u = 0; while (pass && (u < spec_size)) { + base_addr = entries[spec[u].entry_type]; entry_ptr = &(base_addr[spec[u].entry_index]); @@ -4597,22 +4610,27 @@ check_flush_cache__multi_entry_test(H5F_t *file_ptr, int test_num, unsigned int u++; } - return; - } /* check_flush_cache__multi_entry_test() */ /*------------------------------------------------------------------------- + * * Function: check_flush_cache__pe_multi_entry_test() * - * Purpose: Run a multi entry flush cache test. + * Purpose: Run a multi entry flush cache test. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 4/5/06 * * Modifications: * + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/16/20 + * *------------------------------------------------------------------------- */ @@ -4622,7 +4640,6 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i { H5C_t * cache_ptr = file_ptr->shared->cache; static char msg[128]; - herr_t result; unsigned u; int j; size_t total_entry_size = 0; @@ -4658,6 +4675,7 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i u = 0; while (pass && (u < spec_size)) { + if (((unsigned)spec[u].entry_num != u) || (spec[u].entry_type < 0) || (spec[u].entry_type >= NUMBER_OF_ENTRY_TYPES) || (spec[u].entry_index < 0) || (spec[u].entry_index > max_indices[spec[u].entry_type]) || (spec[u].num_pins < 0) || @@ -4687,6 +4705,7 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i total_entry_size += entry_sizes[spec[u].entry_type]; for (j = 0; j < spec[u].num_pins; j++) { + create_pinned_entry_dependency(file_ptr, spec[u].entry_type, spec[u].entry_index, spec[u].pin_type[j], spec[u].pin_idx[j]); } @@ -4696,11 +4715,10 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i if (pass) { - result = H5C_flush_cache(file_ptr, flush_flags); + H5C_FLUSH_CACHE(file_ptr, flush_flags, "dummy failure message.\n") - if (result < 0) { + if (!pass) { - pass = FALSE; HDsnprintf(msg, (size_t)128, "flush with flags 0x%x failed in pe multi entry test #%d.", flush_flags, test_num); failure_mssg = msg; @@ -4709,6 +4727,7 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i u = 0; while (pass && (u < spec_size)) { + base_addr = entries[spec[u].entry_type]; entry_ptr = &(base_addr[spec[u].entry_index]); @@ -4754,9 +4773,9 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i /* clean up the cache to prep for the next test */ if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, "dummy mssg.\n") - if (result < 0) { + if (!pass) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Flush failed on cleanup in pe multi entry test #%d.", test_num); @@ -4773,6 +4792,7 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i u = 0; while (pass && (u < spec_size)) { + base_addr = entries[spec[u].entry_type]; entry_ptr = &(base_addr[spec[u].entry_index]); @@ -4783,8 +4803,6 @@ check_flush_cache__pe_multi_entry_test(H5F_t *file_ptr, int test_num, unsigned i u++; } - return; - } /* check_flush_cache__pe_multi_entry_test() */ /*------------------------------------------------------------------------- @@ -7980,23 +7998,27 @@ check_flush_cache__flush_ops(H5F_t *file_ptr) /* finally finish up with the flush ops eviction test */ check_flush_cache__flush_op_eviction_test(file_ptr); - return; - } /* check_flush_cache__flush_ops() */ /*------------------------------------------------------------------------- * Function: check_flush_cache__flush_op_test() * - * Purpose: Run a flush op flush cache test. Of the nature of - * flush operations, this is a multi-entry test. + * Purpose: Run a flush op flush cache test. Of the nature of + * flush operations, this is a multi-entry test. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 9/3/06 * * Modifications: * + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/16/20 + * *------------------------------------------------------------------------- */ @@ -8009,7 +8031,6 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu { H5C_t * cache_ptr = file_ptr->shared->cache; static char msg[128]; - herr_t result; int i; int j; test_entry_t *base_addr; @@ -8042,6 +8063,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i = 0; while (pass && (i < spec_size)) { + if ((spec[i].entry_num != i) || (spec[i].entry_type < 0) || (spec[i].entry_type >= NUMBER_OF_ENTRY_TYPES) || (spec[i].entry_index < 0) || (spec[i].entry_index > max_indices[spec[i].entry_type]) || (spec[i].num_pins < 0) || @@ -8057,6 +8079,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i = 0; while (pass && (i < check_size)) { + if ((check[i].entry_num != i) || (check[i].entry_type < 0) || (check[i].entry_type >= NUMBER_OF_ENTRY_TYPES) || (check[i].entry_index < 0) || (check[i].entry_index > max_indices[check[i].entry_type]) || @@ -8071,6 +8094,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i = 0; while (pass && (i < spec_size)) { + if (spec[i].insert_flag) { insert_entry(file_ptr, spec[i].entry_type, spec[i].entry_index, spec[i].flags); @@ -8091,6 +8115,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu } for (j = 0; j < spec[i].num_flush_ops; j++) { + add_flush_op(spec[i].entry_type, spec[i].entry_index, spec[i].flush_ops[j].op_code, spec[i].flush_ops[j].type, spec[i].flush_ops[j].idx, spec[i].flush_ops[j].flag, spec[i].flush_ops[j].size, spec[i].flush_ops[j].order_ptr); @@ -8113,9 +8138,9 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu if (pass) { - result = H5C_flush_cache(file_ptr, flush_flags); + H5C_FLUSH_CACHE(file_ptr, flush_flags, "dummy failure message") - if (result < 0) { + if (!pass) { pass = FALSE; HDsnprintf(msg, (size_t)128, "flush with flags 0x%x failed in flush op test #%d.", flush_flags, @@ -8126,6 +8151,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i = 0; while (pass && (i < spec_size)) { + base_addr = entries[spec[i].entry_type]; entry_ptr = &(base_addr[spec[i].entry_index]); @@ -8159,6 +8185,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i = 0; while (pass && (i < check_size)) { + if (check[i].in_cache != entry_in_cache(cache_ptr, check[i].entry_type, check[i].entry_index)) { pass = FALSE; @@ -8186,74 +8213,104 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu #if 0 /* This is useful debugging code. Lets keep it around for a while. */ - if(entry_ptr->size != check[i].expected_size) { - HDfprintf(stdout, "entry_ptr->size (expected) = %d (%d).\n", - (int)(entry_ptr->size), - (int)(check[i].expected_size)); - } - if((!entry_ptr->header.destroy_in_progress) && - (check[i].in_cache) && - (entry_ptr->header.size != check[i].expected_size)) { - HDfprintf(stdout, + if ( entry_ptr->size != check[i].expected_size ) { + + HDfprintf(stdout, "entry_ptr->size (expected) = %d (%d).\n", + (int)(entry_ptr->size), + (int)(check[i].expected_size)); + } + + if ( ( ! entry_ptr->header.destroy_in_progress ) && + ( check[i].in_cache ) && + ( entry_ptr->header.size != check[i].expected_size ) ) { + + HDfprintf(stdout, "(!destroy in progress and in cache and size (expected) = %d (%d).\n", (int)(entry_ptr->header.size), - (int)(check[i].expected_size)); - } - if(entry_ptr->at_main_addr != check[i].at_main_addr) { - HDfprintf(stdout, "(%d,%d) at main addr (expected) = %d (%d).\n", - (int)(check[i].entry_type), - (int)(check[i].entry_index), + (int)(check[i].expected_size)); + } + + if ( entry_ptr->at_main_addr != check[i].at_main_addr ) { + + HDfprintf(stdout, + "(%d,%d) at main addr (expected) = %d (%d).\n", + (int)(check[i].entry_type), + (int)(check[i].entry_index), (int)(entry_ptr->at_main_addr), - (int)(check[i].at_main_addr)); + (int)(check[i].at_main_addr)); + } + + if ( entry_ptr->is_dirty != check[i].is_dirty ) { + + HDfprintf(stdout, + "entry_ptr->is_dirty (expected) = %d (%d).\n", + (int)(entry_ptr->is_dirty), + (int)(check[i].is_dirty)); + } + + if ( entry_ptr->header.is_dirty != check[i].is_dirty ) { + + HDfprintf(stdout, + "entry_ptr->header.is_dirty (expected) = %d (%d).\n", + (int)(entry_ptr->header.is_dirty), + (int)(check[i].is_dirty)); + } + + if ( entry_ptr->is_protected != check[i].is_protected ) { + + HDfprintf(stdout, + "entry_ptr->is_protected (expected) = %d (%d).\n", + (int)(entry_ptr->is_protected), + (int)(check[i].is_protected)); + } + + if ( entry_ptr->header.is_protected != check[i].is_protected ) { + + HDfprintf(stdout, + "entry_ptr->header.is_protected (expected) = %d (%d).\n", + (int)(entry_ptr->is_protected), + (int)(check[i].is_protected)); + } + + if ( entry_ptr->is_pinned != check[i].is_pinned ) { + + HDfprintf(stdout, + "entry_ptr->is_pinned (expected) = %d (%d).\n", + (int)(entry_ptr->is_pinned), + (int)(check[i].is_pinned)); + } + + if ( entry_ptr->header.is_pinned != check[i].is_pinned ) { + + HDfprintf(stdout, + "entry_ptr->header.is_pinned (expected) = %d (%d).\n", + (int)(entry_ptr->header.is_pinned), + (int)(check[i].is_pinned)); + } + + if ( entry_ptr->deserialized != check[i].expected_deserialized ) { + + HDfprintf(stdout, + "entry_ptr->deserialized (expected) = %d (%d).\n", + (int)(entry_ptr->deserialized), + (int)(check[i].expected_deserialized)); + } + + if ( entry_ptr->serialized != check[i].expected_serialized ) { + + HDfprintf(stdout, + "entry_ptr->serialized (expected) = %d (%d).\n", + (int)(entry_ptr->serialized), + (int)(check[i].expected_serialized)); + } + + if ( entry_ptr->destroyed != check[i].expected_destroyed ) { + + HDfprintf(stdout, \ + "entry_ptr->destroyed (expected) = %d (%d).\n", + (int)(entry_ptr->destroyed), + (int)(check[i].expected_destroyed)); } - if(entry_ptr->is_dirty != check[i].is_dirty) { - HDfprintf(stdout, "entry_ptr->is_dirty (expected) = %d (%d).\n", - (int)(entry_ptr->is_dirty), - (int)(check[i].is_dirty)); - } - if(entry_ptr->header.is_dirty != check[i].is_dirty) { - HDfprintf(stdout, "entry_ptr->header.is_dirty (expected) = %d (%d).\n", - (int)(entry_ptr->header.is_dirty), - (int)(check[i].is_dirty)); - } - if(entry_ptr->is_protected != check[i].is_protected) { - HDfprintf(stdout, "entry_ptr->is_protected (expected) = %d (%d).\n", - (int)(entry_ptr->is_protected), - (int)(check[i].is_protected)); - } - if(entry_ptr->header.is_protected != check[i].is_protected) { - HDfprintf(stdout, "entry_ptr->header.is_protected (expected) = %d (%d).\n", - (int)(entry_ptr->is_protected), - (int)(check[i].is_protected)); - } - if(entry_ptr->is_pinned != check[i].is_pinned) { - HDfprintf(stdout, "entry_ptr->is_pinned (expected) = %d (%d).\n", - (int)(entry_ptr->is_pinned), - (int)(check[i].is_pinned)); - } - if(entry_ptr->header.is_pinned != check[i].is_pinned) { - HDfprintf(stdout, "entry_ptr->header.is_pinned (expected) = %d (%d).\n", - (int)(entry_ptr->header.is_pinned), - (int)(check[i].is_pinned)); - } - if(entry_ptr->deserialized != - check[i].expected_deserialized) { - HDfprintf(stdout, - "entry_ptr->deserialized (expected) = %d (%d).\n", - (int)(entry_ptr->deserialized), - (int)(check[i].expected_deserialized)); - } - if(entry_ptr->serialized != check[i].expected_serialized) { - HDfprintf(stdout, - "entry_ptr->serialized (expected) = %d (%d).\n", - (int)(entry_ptr->serialized), - (int)(check[i].expected_serialized)); - } - if(entry_ptr->destroyed != check[i].expected_destroyed) { - HDfprintf(stdout, "entry_ptr->destroyed (expected) = %d (%d).\n", - (int)(entry_ptr->destroyed), - (int)(check[i].expected_destroyed)); - } #endif pass = FALSE; HDsnprintf(msg, (size_t)128, "Check2 failed on entry %d after flush op test #%d.", i, @@ -8282,11 +8339,10 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu /* clean up the cache to prep for the next test */ if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, "dummy mssg.") - if (result < 0) { + if (!pass) { - pass = FALSE; HDsnprintf(msg, (size_t)128, "Flush failed on cleanup in flush op test #%d.", test_num); failure_mssg = msg; } @@ -8302,6 +8358,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i = 0; while (pass && (i < spec_size)) { + base_addr = entries[spec[i].entry_type]; entry_ptr = &(base_addr[spec[i].entry_index]); @@ -8316,6 +8373,7 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i = 0; while (pass && (i < check_size)) { + base_addr = entries[check[i].entry_type]; entry_ptr = &(base_addr[check[i].entry_index]); @@ -8328,29 +8386,33 @@ check_flush_cache__flush_op_test(H5F_t *file_ptr, int test_num, unsigned int flu i++; } - return; - } /* check_flush_cache__flush_op_test() */ /*------------------------------------------------------------------------- * Function: check_flush_cache__flush_op_eviction_test() * - * Purpose: Verify that flush operations work as expected when an + * Purpose: Verify that flush operations work as expected when an * entry is evicted. * * Do nothing if pass is FALSE on entry. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 10/3/06 * * Modifications: * - * Updated test for minor changes in the behaviour - * of H5C__flush_single_entry(). + * Updated test for minor changes in the behaviour + * of H5C__flush_single_entry(). + * + * JRM -- 2/16/15 * - * JRM -- 2/16/15 + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/16/20 * *------------------------------------------------------------------------- */ @@ -8363,7 +8425,6 @@ check_flush_cache__flush_op_eviction_test(H5F_t *file_ptr) int num_variable_entries = 10; int num_monster_entries = 31; int num_large_entries = 0; - herr_t result; test_entry_t * entry_ptr; test_entry_t * base_addr; struct expected_entry_status expected[10 + 31 + 14] = { @@ -10377,14 +10438,10 @@ check_flush_cache__flush_op_eviction_test(H5F_t *file_ptr) if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); - - if (result < 0) { + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, + "Cache flush invalidate failed after flush op eviction test") - pass = FALSE; - failure_mssg = "Cache flush invalidate failed after flush op eviction test"; - } - else if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0)) { + if ((pass) && ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0))) { pass = FALSE; failure_mssg = "Unexpected cache len/size after cleanup of flush op eviction test"; @@ -10479,8 +10536,6 @@ check_flush_cache__flush_op_eviction_test(H5F_t *file_ptr) reset_entries(); } - return; - } /* check_flush_cache__flush_op_eviction_test() */ /*------------------------------------------------------------------------- @@ -12104,22 +12159,26 @@ check_flush_cache__single_entry(H5F_t *file_ptr) } } - return; - } /* check_flush_cache__single_entry() */ /*------------------------------------------------------------------------- * Function: check_flush_cache__single_entry_test() * - * Purpose: Run a single entry flush cache test. + * Purpose: Run a single entry flush cache test. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 1/12/05 * * Modifications: * + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 + * *------------------------------------------------------------------------- */ @@ -12131,7 +12190,6 @@ check_flush_cache__single_entry_test(H5F_t *file_ptr, int test_num, int entry_ty { H5C_t * cache_ptr = file_ptr->shared->cache; static char msg[128]; - herr_t result; test_entry_t *base_addr; test_entry_t *entry_ptr = NULL; @@ -12174,18 +12232,19 @@ check_flush_cache__single_entry_test(H5F_t *file_ptr, int test_num, int entry_ty if (pass) { - result = H5C_flush_cache(file_ptr, flush_flags); + H5C_FLUSH_CACHE(file_ptr, flush_flags, "dummy failure mssg.") - if (result < 0) { + if (!pass) { /* construct and set actual failure message */ - pass = FALSE; HDsnprintf(msg, (size_t)128, "flush with flags 0x%x failed in single entry test #%d.", flush_flags, test_num); + failure_mssg = msg; } else if ((entry_ptr->deserialized != expected_deserialized) || (entry_ptr->serialized != expected_serialized) || (entry_ptr->destroyed != expected_destroyed)) { + #if 0 /* This is useful debugging code -- lets keep it for a while */ HDfprintf(stdout, @@ -12217,11 +12276,10 @@ check_flush_cache__single_entry_test(H5F_t *file_ptr, int test_num, int entry_ty /* clean up the cache to prep for the next test */ if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, "dummy failure mssg.") - if (result < 0) { + if (!pass) { /* construct and set actual failure message */ - pass = FALSE; HDsnprintf(msg, (size_t)128, "Flush failed on cleanup in single entry test #%d.", test_num); failure_mssg = msg; } @@ -12240,29 +12298,32 @@ check_flush_cache__single_entry_test(H5F_t *file_ptr, int test_num, int entry_ty } } - return; - } /* check_flush_cache__single_entry_test() */ /*------------------------------------------------------------------------- * Function: check_flush_cache__pinned_single_entry_test() * - * Purpose: Run a pinned single entry flush cache test. + * Purpose: Run a pinned single entry flush cache test. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 3/28/06 * * Modifications: * - * JRM -- 5/17/06 - * Added the pop_mark_dirty_prot and pop_mark_dirty_pinned - * flags and supporting code to allow us to test the - * H5C_mark_entry_dirty() call. Use the - * call to mark the entry dirty while the entry is protected - * if pop_mark_dirty_prot is TRUE, and to mark the entry - * dirty while it is pinned if pop_mark_dirty_pinned is TRUE. + * JRM -- 5/17/06 + * Added the pop_mark_dirty_prot and pop_mark_dirty_pinned + * flags and supporting code to allow us to test the + * H5C_mark_entry_dirty() call. Use the + * call to mark the entry dirty while the entry is protected + * if pop_mark_dirty_prot is TRUE, and to mark the entry + * dirty while it is pinned if pop_mark_dirty_pinned is TRUE. + * + * JRM -- 5/14/20 + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. * *------------------------------------------------------------------------- */ @@ -12278,7 +12339,6 @@ check_flush_cache__pinned_single_entry_test(H5F_t *file_ptr, int test_num, int e H5C_t * cache_ptr = file_ptr->shared->cache; static char msg[128]; hbool_t expected_deserialized = TRUE; - herr_t result; test_entry_t *base_addr; test_entry_t *entry_ptr = NULL; @@ -12332,11 +12392,10 @@ check_flush_cache__pinned_single_entry_test(H5F_t *file_ptr, int test_num, int e if (pass) { - result = H5C_flush_cache(file_ptr, flush_flags); + H5C_FLUSH_CACHE(file_ptr, flush_flags, "dummy failure message\n") - if (result < 0) { + if (!pass) { /* construct and set the correct failure message */ - pass = FALSE; HDsnprintf(msg, (size_t)128, "flush with flags 0x%x failed in pinned single entry test #%d.", flush_flags, test_num); failure_mssg = msg; @@ -12344,6 +12403,7 @@ check_flush_cache__pinned_single_entry_test(H5F_t *file_ptr, int test_num, int e else if ((entry_ptr->deserialized != expected_deserialized) || (entry_ptr->serialized != expected_serialized) || (entry_ptr->destroyed != expected_destroyed)) { + #if 0 /* this is useful debugging code -- keep it around */ HDfprintf(stdout, "desrlzd = %d(%d), srlzd = %d(%d), dest = %d(%d)\n", @@ -12390,11 +12450,10 @@ check_flush_cache__pinned_single_entry_test(H5F_t *file_ptr, int test_num, int e if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, "dummy mssg\n") - if (result < 0) { + if (!pass) { - pass = FALSE; HDsnprintf(msg, (size_t)128, "Flush failed on cleanup in pinned single entry test #%d.", test_num); failure_mssg = msg; @@ -12414,8 +12473,6 @@ check_flush_cache__pinned_single_entry_test(H5F_t *file_ptr, int test_num, int e } } - return; - } /* check_flush_cache__pinned_single_entry_test() */ /*------------------------------------------------------------------------- @@ -12631,7 +12688,7 @@ check_get_entry_status(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -12912,7 +12969,7 @@ check_expunge_entry(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -13303,7 +13360,7 @@ check_multiple_read_protect(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -13403,7 +13460,7 @@ check_move_entry(unsigned paged) H5_FAILED() if (!pass) - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); return (unsigned)!pass; } /* check_move_entry() */ @@ -13564,8 +13621,6 @@ check_move_entry__run_test(H5F_t *file_ptr, unsigned test_num, struct move_entry /* put the entry back where it started from */ move_entry(cache_ptr, spec_ptr->entry_type, spec_ptr->entry_index, TRUE); - return; - } /* check_move_entry__run_test() */ /*------------------------------------------------------------------------- @@ -13663,7 +13718,7 @@ check_pin_protected_entry(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -13673,14 +13728,20 @@ check_pin_protected_entry(unsigned paged) /*------------------------------------------------------------------------- * Function: check_resize_entry() * - * Purpose: Verify that H5C_resize_entry() and H5C_unprotect() resize - * entries as expected. + * Purpose: Verify that H5C_resize_entry() and H5C_unprotect() resize + * entries as expected. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 7/7/06 * + * Modifications: + * + * Updated function to allow for disabling of the slist. + * + * JRM -- 5/18/20 + * *------------------------------------------------------------------------- */ @@ -13845,7 +13906,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 1) || (cache_ptr->index_size != (LARGE_ENTRY_SIZE / 2)) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != (LARGE_ENTRY_SIZE / 2))) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != (LARGE_ENTRY_SIZE / 2))))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 3."); @@ -13919,7 +13981,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 1) || (cache_ptr->index_size != LARGE_ENTRY_SIZE) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 4."); @@ -13975,7 +14038,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 1) || (cache_ptr->index_size != (LARGE_ENTRY_SIZE / 4)) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != (LARGE_ENTRY_SIZE / 4))) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != (LARGE_ENTRY_SIZE / 4))))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 5."); @@ -14024,7 +14088,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 1) || (cache_ptr->index_size != LARGE_ENTRY_SIZE) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 6."); @@ -14092,8 +14157,8 @@ check_resize_entry(unsigned paged) if (pass) { - if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || (cache_ptr->slist_len != 0) || - (cache_ptr->slist_size != 0)) { + if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || + ((cache_ptr->slist_enabled) && ((cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 7."); @@ -14105,13 +14170,14 @@ check_resize_entry(unsigned paged) if (pass) { - if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || (cache_ptr->slist_len != 0) || - (cache_ptr->slist_size != 0)) { + if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || + ((cache_ptr->slist_enabled) && ((cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 8."); failure_mssg = msg; } + base_addr = entries[LARGE_ENTRY_TYPE]; entry_ptr = &(base_addr[3]); entry_size = LARGE_ENTRY_SIZE; @@ -14132,7 +14198,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 3) || (cache_ptr->index_size != 3 * LARGE_ENTRY_SIZE) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 9."); @@ -14148,7 +14215,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 4) || (cache_ptr->index_size != 4 * LARGE_ENTRY_SIZE) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 10."); @@ -14217,8 +14285,9 @@ check_resize_entry(unsigned paged) if ((cache_ptr->index_len != 4) || (cache_ptr->index_size != ((3 * LARGE_ENTRY_SIZE) + (LARGE_ENTRY_SIZE / 2))) || - (cache_ptr->slist_len != 2) || - (cache_ptr->slist_size != (LARGE_ENTRY_SIZE + (LARGE_ENTRY_SIZE / 2)))) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || + (cache_ptr->slist_size != (LARGE_ENTRY_SIZE + (LARGE_ENTRY_SIZE / 2)))))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 11."); @@ -14292,7 +14361,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 4) || (cache_ptr->index_size != 4 * LARGE_ENTRY_SIZE) || - (cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * LARGE_ENTRY_SIZE)) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * LARGE_ENTRY_SIZE)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 12."); @@ -14349,8 +14419,9 @@ check_resize_entry(unsigned paged) if ((cache_ptr->index_len != 4) || (cache_ptr->index_size != ((3 * LARGE_ENTRY_SIZE) + (LARGE_ENTRY_SIZE / 4))) || - (cache_ptr->slist_len != 2) || - (cache_ptr->slist_size != (LARGE_ENTRY_SIZE + (LARGE_ENTRY_SIZE / 4)))) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || + (cache_ptr->slist_size != (LARGE_ENTRY_SIZE + (LARGE_ENTRY_SIZE / 4)))))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 13."); @@ -14399,7 +14470,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 4) || (cache_ptr->index_size != (4 * LARGE_ENTRY_SIZE)) || - (cache_ptr->slist_len != 2) || (cache_ptr->slist_size != (2 * LARGE_ENTRY_SIZE))) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || (cache_ptr->slist_size != (2 * LARGE_ENTRY_SIZE))))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 14."); @@ -14468,7 +14540,8 @@ check_resize_entry(unsigned paged) if (pass) { if ((cache_ptr->index_len != 3) || (cache_ptr->index_size != (3 * LARGE_ENTRY_SIZE)) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)) { + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != LARGE_ENTRY_SIZE)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 15."); @@ -14490,8 +14563,8 @@ check_resize_entry(unsigned paged) if (pass) { - if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || (cache_ptr->slist_len != 0) || - (cache_ptr->slist_size != 0)) { + if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || + ((cache_ptr->slist_enabled) && ((cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0)))) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 16."); @@ -14513,7 +14586,7 @@ check_resize_entry(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -14523,16 +14596,19 @@ check_resize_entry(unsigned paged) /*------------------------------------------------------------------------- * Function: check_evictions_enabled() * - * Purpose: Verify that H5C_get_evictions_enabled() and - * H5C_set_evictions_enabled() functions perform as expected. + * Purpose: Verify that H5C_get_evictions_enabled() and + * H5C_set_evictions_enabled() functions perform as expected. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 8/2/07 * * Modifications: * + * Updated function to allow for disabling of the slist. + * + * JRM -- 5/18/20 * *------------------------------------------------------------------------- */ @@ -14595,7 +14671,7 @@ check_evictions_enabled(unsigned paged) pass = TRUE; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* create the cache */ if (pass) { @@ -14617,13 +14693,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that it is empty */ if (pass) { - if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || (cache_ptr->slist_len != 0) || - (cache_ptr->slist_size != 0) || (cache_ptr->evictions_enabled != TRUE)) { + if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || + ((cache_ptr->slist_enabled) && ((cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0))) || + (cache_ptr->evictions_enabled != TRUE)) { pass = FALSE; HDsnprintf(msg, (size_t)128, "Unexpected cache status 1."); @@ -14632,7 +14709,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that H5C_get_evictions_enabled() returns the expected value */ if (pass) { @@ -14648,7 +14725,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14660,13 +14737,13 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that the cache is full */ if (pass) { if ((cache_ptr->index_len != 16) || (cache_ptr->index_size != 16 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0) || + ((cache_ptr->slist_enabled) && ((cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0))) || (cache_ptr->evictions_enabled != TRUE)) { pass = FALSE; @@ -14676,7 +14753,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14686,13 +14763,13 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that an entry has been evicted */ if (pass) { if ((cache_ptr->index_len != 16) || (cache_ptr->index_size != 16 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0) || + ((cache_ptr->slist_enabled) && ((cache_ptr->slist_len != 0) || (cache_ptr->slist_size != 0))) || (cache_ptr->evictions_enabled != TRUE)) { pass = FALSE; @@ -14702,7 +14779,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14732,7 +14809,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14741,13 +14818,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 10 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that another entry has been evicted */ if (pass) { if ((cache_ptr->index_len != 16) || (cache_ptr->index_size != 16 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != TRUE)) { pass = FALSE; @@ -14757,7 +14835,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 11 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14787,7 +14865,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 12 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* disable evictions */ if (pass) { @@ -14803,13 +14881,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 13 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that evictions are disabled */ if (pass) { if ((cache_ptr->index_len != 16) || (cache_ptr->index_size != 16 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != FALSE)) { pass = FALSE; @@ -14819,7 +14898,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 14 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14829,13 +14908,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 15 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that no entry has been evicted */ if (pass) { if ((cache_ptr->index_len != 17) || (cache_ptr->index_size != 17 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 1) || (cache_ptr->slist_size != MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 1) || (cache_ptr->slist_size != MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != FALSE)) { pass = FALSE; @@ -14845,7 +14925,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 16 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14854,13 +14934,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 17 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that no entry has been evicted */ if (pass) { if ((cache_ptr->index_len != 18) || (cache_ptr->index_size != 18 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != FALSE)) { pass = FALSE; @@ -14870,7 +14951,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 18 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* re-enable evictions */ if (pass) { @@ -14886,7 +14967,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 19 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14896,13 +14977,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 20 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that no entries have been evicted */ if (pass) { if ((cache_ptr->index_len != 18) || (cache_ptr->index_size != 18 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != TRUE)) { pass = FALSE; @@ -14912,7 +14994,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 21 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14922,7 +15004,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 22 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that the entries have been evicted to bring the * cache back down to its normal size. @@ -14931,7 +15013,8 @@ check_evictions_enabled(unsigned paged) if (pass) { if ((cache_ptr->index_len != 16) || (cache_ptr->index_size != 16 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != TRUE)) { pass = FALSE; @@ -14941,7 +15024,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 23 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -14971,7 +15054,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 24 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -15001,7 +15084,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 25 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* disable evictions again */ if (pass) { @@ -15017,7 +15100,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 26 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -15029,13 +15112,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 27 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that the cache has grown */ if (pass) { if ((cache_ptr->index_len != 17) || (cache_ptr->index_size != 17 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 2) || (cache_ptr->slist_size != 2 * MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != FALSE)) { pass = FALSE; @@ -15045,7 +15129,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 28 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* re-enable evictions again */ if (pass) { @@ -15061,7 +15145,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 29 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -15070,13 +15154,14 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 30 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* verify that the cache has returned to its maximum size */ if (pass) { if ((cache_ptr->index_len != 16) || (cache_ptr->index_size != 16 * MONSTER_ENTRY_SIZE) || - (cache_ptr->slist_len != 3) || (cache_ptr->slist_size != 3 * MONSTER_ENTRY_SIZE) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->slist_len != 3) || (cache_ptr->slist_size != 3 * MONSTER_ENTRY_SIZE))) || (cache_ptr->evictions_enabled != TRUE)) { pass = FALSE; @@ -15086,7 +15171,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 31 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -15116,7 +15201,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 32 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* disable evictions one last time before we shut down */ if (pass) { @@ -15132,7 +15217,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 33 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -15140,7 +15225,7 @@ check_evictions_enabled(unsigned paged) } if (show_progress) /* 34 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { PASSED(); @@ -15151,7 +15236,7 @@ check_evictions_enabled(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -15161,23 +15246,29 @@ check_evictions_enabled(unsigned paged) /*------------------------------------------------------------------------- * Function: check_flush_protected_err() * - * Purpose: Verify that an attempt to flush the cache when it contains - * a protected entry will generate an error. + * Purpose: Verify that an attempt to flush the cache when it contains + * a protected entry will generate an error. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 6/24/04 * * Modifications: * + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). + * + * JRM -- 5/14/20 + * *------------------------------------------------------------------------- */ static unsigned check_flush_protected_err(unsigned paged) { - H5F_t *file_ptr = NULL; + H5F_t *file_ptr = NULL; + H5C_t *cache_ptr = NULL; if (paged) TESTING("flush cache with protected entry error (paged aggregation)") @@ -15197,27 +15288,41 @@ check_flush_protected_err(unsigned paged) file_ptr = setup_cache((size_t)(2 * 1024), (size_t)(1 * 1024), paged); + if (pass) { + + cache_ptr = file_ptr->shared->cache; + } + protect_entry(file_ptr, 0, 0); - if (H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET) >= 0) { + /* enable slist prior to flush */ + if ((pass) && (H5C_set_slist_enabled(cache_ptr, TRUE, FALSE) < 0)) { + + pass = FALSE; + failure_mssg = "unable to enable slist prior to flush.\n"; + } + + if ((pass) && (H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET) >= 0)) { pass = FALSE; failure_mssg = "flush succeeded on cache with protected entry.\n"; } - else { - unprotect_entry(file_ptr, 0, 0, H5C__DIRTIED_FLAG); + /* disable the slist after the flush */ + if ((pass) && (H5C_set_slist_enabled(cache_ptr, FALSE, FALSE) < 0)) { - if (H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET) < 0) { + pass = FALSE; + failure_mssg = "unable to disable slist after flush.\n"; + } - pass = FALSE; - failure_mssg = "flush failed after unprotect.\n"; - } - else { + unprotect_entry(file_ptr, 0, 0, H5C__DIRTIED_FLAG); - takedown_cache(file_ptr, FALSE, FALSE); - } + if (pass) { + + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "flush failed after unprotect.\n") } + + takedown_cache(file_ptr, FALSE, FALSE); } if (pass) { @@ -15229,7 +15334,7 @@ check_flush_protected_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -15318,7 +15423,7 @@ check_destroy_pinned_err(unsigned paged) } if (!pass) - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); return (unsigned)!pass; @@ -15414,7 +15519,7 @@ check_destroy_protected_err(unsigned paged) } if (!pass) - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); return (unsigned)!pass; @@ -15495,7 +15600,7 @@ check_duplicate_insert_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -15584,7 +15689,7 @@ check_double_pin_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -15682,7 +15787,7 @@ check_double_unpin_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -15794,7 +15899,7 @@ check_pin_entry_errs(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -15876,7 +15981,7 @@ check_double_protect_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -15954,7 +16059,7 @@ check_double_unprotect_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -16036,7 +16141,7 @@ check_mark_entry_dirty_errs(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -16153,7 +16258,7 @@ check_expunge_entry_errs(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -16270,7 +16375,7 @@ check_move_entry_errs(unsigned paged) else { H5_FAILED() - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } /* end else */ return (unsigned)!pass; @@ -16279,12 +16384,12 @@ check_move_entry_errs(unsigned paged) /*------------------------------------------------------------------------- * Function: check_resize_entry_errs() * - * Purpose: Verify that invalid calls to H5C_resize_entry() - * generates errors as expected. + * Purpose: Verify that invalid calls to H5C_resize_entry() + * generates errors as expected. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 7/7/06 * *------------------------------------------------------------------------- @@ -16370,7 +16475,7 @@ check_resize_entry_errs(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -16491,7 +16596,7 @@ check_unprotect_ro_dirty_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -16578,7 +16683,7 @@ check_protect_ro_rw_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -16707,7 +16812,7 @@ check_protect_retries(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_msg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_msg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -16847,7 +16952,7 @@ check_check_evictions_enabled_err(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -20713,7 +20818,7 @@ check_auto_cache_resize(hbool_t cork_ageout, unsigned paged) } /* end else */ if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return (unsigned)!pass; } /* check_auto_cache_resize() */ @@ -23313,7 +23418,7 @@ check_auto_cache_resize_disable(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -24000,7 +24105,7 @@ check_auto_cache_resize_epoch_markers(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -26232,7 +26337,7 @@ check_auto_cache_resize_input_errs(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -26728,7 +26833,7 @@ check_auto_cache_resize_aux_fcns(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -26755,7 +26860,6 @@ check_auto_cache_resize_aux_fcns(unsigned paged) * Return: void * * Programmer: Mike McGreevy - * <mamcgree@hdfgroup.org> * 12/16/08 * * Modifications: @@ -26783,2711 +26887,163 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) /* Set up the expected array. This is used to maintain a table of the * expected status of every entry used in this test. */ - struct expected_entry_status expected[150] = { - /* entry entry in at main flush - dep flush dep child flush flush flush */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ - {HUGE_ENTRY_TYPE, - 0, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 1, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 2, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 3, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 4, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 5, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 6, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 7, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 8, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 9, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 10, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 11, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 12, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 13, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 14, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 15, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 16, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 17, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 18, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 19, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 20, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 21, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 22, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 23, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 24, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 25, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 26, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 27, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 28, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 29, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 30, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 31, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 32, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 33, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 34, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 35, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 36, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 37, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 38, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 39, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 40, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 41, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 42, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 43, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 44, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 45, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 46, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 47, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 48, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 49, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 50, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 51, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 52, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 53, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 54, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 55, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 56, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 57, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 58, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 59, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 60, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 61, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 62, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 63, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 64, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 65, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 66, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 67, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 68, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 69, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 70, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 71, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 72, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 73, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 74, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 75, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 76, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 77, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 78, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 79, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 80, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 81, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 82, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 83, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 84, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 85, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 86, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 87, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 88, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 89, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 90, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 91, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 92, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 93, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 94, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 95, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 96, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 97, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 98, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 99, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 100, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 101, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 102, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 103, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 104, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 105, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 106, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 107, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 108, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 109, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 110, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 111, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 112, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 113, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 114, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 115, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 116, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 117, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 118, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 119, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 120, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 121, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 122, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 123, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 124, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 125, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 126, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 127, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 128, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 129, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 130, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 131, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 132, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 133, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 134, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 135, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 136, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 137, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 138, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 139, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 140, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 141, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 142, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 143, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 144, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 145, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 146, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 147, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 148, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 149, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}}; + /* clang-format off */ + struct expected_entry_status expected[150] = + { + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { HUGE_ENTRY_TYPE, 0, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 1, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 2, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 3, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 4, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 5, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 6, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 7, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 8, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 9, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 10, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 11, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 12, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 13, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 14, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 15, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 16, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 17, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 18, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 19, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 20, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 21, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 22, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 23, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 24, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 25, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 26, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 27, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 28, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 29, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 30, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 31, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 32, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 33, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 34, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 35, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 36, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 37, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 38, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 39, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 40, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 41, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 42, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 43, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 44, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 45, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 46, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 47, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 48, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 49, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 50, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 51, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 52, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 53, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 54, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 55, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 56, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 57, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 58, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 59, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 60, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 61, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 62, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 63, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 64, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 65, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 66, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 67, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 68, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 69, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 70, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 71, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 72, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 73, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 74, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 75, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 76, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 77, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 78, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 79, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 80, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 81, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 82, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 83, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 84, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 85, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 86, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 87, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 88, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 89, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 90, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 91, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 92, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 93, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 94, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 95, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 96, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 97, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 98, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 99, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 100, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 101, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 102, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 103, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 104, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 105, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 106, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 107, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 108, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 109, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 110, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 111, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 112, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 113, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 114, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 115, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 116, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 117, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 118, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 119, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 120, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 121, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 122, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 123, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 124, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 125, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 126, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 127, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 128, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 129, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 130, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 131, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 132, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 133, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 134, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 135, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 136, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 137, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 138, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 139, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 140, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 141, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 142, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 143, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 144, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 145, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 146, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 147, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 148, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 149, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE} + }; + /* clang-format on */ pass = TRUE; @@ -29507,7 +27063,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } /* end else */ if (show_progress) /* 0 */ - HDfprintf(stdout, "\n%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "\n%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { @@ -29528,7 +27084,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 1 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); /* ======================================================================== * ======================================================================== @@ -29591,7 +27147,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 2 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); /* ======================================================================== * ======================================================================== @@ -29661,7 +27217,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 3 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { @@ -29715,13 +27271,13 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 4 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { /* Fill out the rest of the cache with entries */ /* Verify expected status of entries after each insertion */ - for (entry_idx = entry_idx; entry_idx < 50; entry_idx++) { + for (; entry_idx < 50; entry_idx++) { if (fill_via_insertion) { insert_entry(file_ptr, /* H5F_t * file_ptr */ @@ -29768,7 +27324,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 5 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); /* ======================================================================== * ======================================================================== @@ -29843,7 +27399,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 6 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { @@ -29855,7 +27411,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) * After each insertion, verify the expected status of the * entries in the cache. */ - for (entry_idx = entry_idx; entry_idx < 100; entry_idx++) { + for (; entry_idx < 100; entry_idx++) { if (fill_via_insertion) { insert_entry(file_ptr, /* H5F_t * file_ptr */ @@ -29914,7 +27470,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 7 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); /* ======================================================================== * ======================================================================== @@ -29973,7 +27529,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 8 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { @@ -30021,7 +27577,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 9 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { @@ -30072,7 +27628,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 10 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { @@ -30118,7 +27674,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 11 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (cache_ptr) { @@ -30128,7 +27684,7 @@ check_metadata_blizzard_absence(hbool_t fill_via_insertion, unsigned paged) } if (show_progress) /* 12 */ - HDfprintf(stdout, "%s: check point %d -- pass %d\n", FUNC, checkpoint++, pass); + HDfprintf(stdout, "%s: check point %d -- pass %d\n", __func__, checkpoint++, pass); if (pass) { PASSED(); @@ -30162,101 +27718,19 @@ check_flush_deps(unsigned paged) test_entry_t *base_addr; /* Base address of entries for test */ int entry_type = PICO_ENTRY_TYPE; /* Use very small entry size (size of entries doesn't matter) */ unsigned u; /* Local index variable */ - struct expected_entry_status expected[5] = { - /* entry entry in at main flush dep flush dep child flush flush flush - */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ - {PICO_ENTRY_TYPE, - 0, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 1, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 2, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 3, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 4, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}}; + + /* clang-format off */ + struct expected_entry_status expected[5] = + { + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { PICO_ENTRY_TYPE, 0, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 1, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 2, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 3, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 4, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE} + }; + /* clang-format on */ if (paged) TESTING("flush dependencies (paged aggregation)") @@ -32415,13 +29889,21 @@ done: /*------------------------------------------------------------------------- * Function: check_flush_deps_order() * - * Purpose: Verify that the order that entries with flush dependencies + * Purpose: Verify that the order that entries with flush dependencies * is correct * - * Return: 0 on success, non-zero on failure + * Return: 0 on success, non-zero on failure * - * Programmer: Quincey Koziol - * 3/17/09 + * Programmer: Quincey Koziol + * 3/17/09 + * + * Modifications: + * + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 * *------------------------------------------------------------------------- */ @@ -32433,102 +29915,19 @@ check_flush_deps_order(unsigned paged) H5C_t * cache_ptr = NULL; /* Metadata cache for this test */ int entry_type = PICO_ENTRY_TYPE; /* Use very small entry size (size of entries doesn't matter) */ unsigned u; /* Local index variable */ - struct expected_entry_status expected[5] = { - /* entry entry in at main flush dep flush dep child flush flush flush - */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ - {PICO_ENTRY_TYPE, - 0, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 1, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 2, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 3, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {PICO_ENTRY_TYPE, - 4, - PICO_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}}; - unsigned flush_order; /* Index for tracking flush order */ + unsigned flush_order; /* Index for tracking flush order */ + /* clang-format off */ + struct expected_entry_status expected[5] = + { + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { PICO_ENTRY_TYPE, 0, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 1, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 2, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 3, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { PICO_ENTRY_TYPE, 4, PICO_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE} + }; + /* clang-format on */ if (paged) TESTING("flush dependencies flush order (paged aggregation)") @@ -32603,8 +30002,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -32618,8 +30015,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -32704,8 +30101,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -32731,8 +30126,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -32819,8 +30214,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -32850,8 +30243,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -32946,8 +30339,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -32977,8 +30368,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -33118,8 +30509,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -33167,8 +30556,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -33345,8 +30734,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -33394,8 +30781,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -33521,8 +30908,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -33560,8 +30945,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -33659,8 +31044,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -33698,8 +31081,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -33851,8 +31234,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -33903,8 +31284,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -34106,8 +31487,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -34159,8 +31538,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -34382,8 +31761,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -34435,8 +31812,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -34697,8 +32074,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -34746,8 +32121,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -35041,8 +32416,6 @@ check_flush_deps_order(unsigned paged) /* Flush the cache and verify that the entries were flushed in correct order */ { - herr_t result; /* Generic return value */ - add_flush_op(entry_type, 0, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 1, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); add_flush_op(entry_type, 2, FLUSH_OP__ORDER, entry_type, 0, FALSE, (size_t)0, &flush_order); @@ -35090,8 +32463,8 @@ check_flush_deps_order(unsigned paged) /* Reset index for tracking flush order */ flush_order = 0; - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); - if (result < 0) + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "dummy mssg") + if (!pass) CACHE_ERROR("flushing entries with flush dependendices") /* Change expected values, and verify the status of the entries @@ -35272,102 +32645,19 @@ check_notify_cb(unsigned paged) test_entry_t *base_addr; /* Base address of entries for test */ test_entry_t *entry_ptr; /* Cache entry to examine/manipulate */ int entry_type = NOTIFY_ENTRY_TYPE; /* Use entry w/notify callback (size of entries doesn't matter) */ - unsigned u; /* Local index variable */ - struct expected_entry_status expected[5] = { - /* entry entry in at main flush - dep flush dep child flush flush flush */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ - {NOTIFY_ENTRY_TYPE, - 0, - NOTIFY_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {NOTIFY_ENTRY_TYPE, - 1, - NOTIFY_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {NOTIFY_ENTRY_TYPE, - 2, - NOTIFY_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {NOTIFY_ENTRY_TYPE, - 3, - NOTIFY_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {NOTIFY_ENTRY_TYPE, - 4, - NOTIFY_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}}; + unsigned u; /* Local index variable */ + /* clang-format off */ + struct expected_entry_status expected[5] = + { + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { NOTIFY_ENTRY_TYPE, 0, NOTIFY_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { NOTIFY_ENTRY_TYPE, 1, NOTIFY_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { NOTIFY_ENTRY_TYPE, 2, NOTIFY_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { NOTIFY_ENTRY_TYPE, 3, NOTIFY_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { NOTIFY_ENTRY_TYPE, 4, NOTIFY_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE} + }; + /* clang-format on */ if (paged) TESTING("'notify' callback (paged)") @@ -35585,2711 +32875,163 @@ check_metadata_cork(hbool_t fill_via_insertion, unsigned paged) /* Set up the expected array. This is used to maintain a table of the * expected status of every entry used in this test. */ - struct expected_entry_status expected[150] = { - /* entry entry in at main flush - dep flush dep child flush flush flush */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ - {HUGE_ENTRY_TYPE, - 0, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 1, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 2, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 3, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 4, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 5, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 6, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 7, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 8, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 9, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 10, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 11, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 12, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 13, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 14, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 15, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 16, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 17, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 18, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 19, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 20, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 21, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 22, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 23, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 24, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 25, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 26, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 27, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 28, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 29, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 30, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 31, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 32, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 33, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 34, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 35, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 36, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 37, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 38, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 39, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 40, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 41, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 42, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 43, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 44, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 45, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 46, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 47, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 48, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 49, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 50, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 51, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 52, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 53, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 54, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 55, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 56, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 57, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 58, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 59, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 60, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 61, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 62, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 63, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 64, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 65, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 66, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 67, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 68, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 69, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 70, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 71, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 72, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 73, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 74, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 75, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 76, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 77, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 78, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 79, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 80, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 81, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 82, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 83, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 84, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 85, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 86, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 87, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 88, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 89, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 90, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 91, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 92, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 93, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 94, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 95, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 96, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 97, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 98, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 99, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 100, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 101, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 102, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 103, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 104, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 105, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 106, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 107, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 108, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 109, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 110, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 111, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 112, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 113, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 114, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 115, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 116, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 117, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 118, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 119, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 120, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 121, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 122, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 123, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 124, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 125, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 126, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 127, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 128, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 129, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 130, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 131, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 132, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 133, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 134, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 135, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 136, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 137, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 138, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 139, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 140, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 141, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 142, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 143, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 144, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 145, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 146, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 147, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 148, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 149, - HUGE_ENTRY_SIZE, - FALSE, - TRUE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - FALSE, - {0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}}; + /* clang-format off */ + struct expected_entry_status expected[150] = + { + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { HUGE_ENTRY_TYPE, 0, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 1, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 2, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 3, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 4, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 5, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 6, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 7, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 8, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 9, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 10, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 11, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 12, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 13, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 14, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 15, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 16, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 17, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 18, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 19, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 20, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 21, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 22, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 23, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 24, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 25, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 26, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 27, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 28, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 29, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 30, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 31, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 32, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 33, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 34, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 35, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 36, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 37, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 38, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 39, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 40, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 41, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 42, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 43, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 44, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 45, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 46, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 47, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 48, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 49, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 50, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 51, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 52, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 53, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 54, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 55, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 56, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 57, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 58, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 59, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 60, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 61, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 62, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 63, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 64, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 65, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 66, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 67, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 68, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 69, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 70, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 71, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 72, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 73, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 74, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 75, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 76, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 77, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 78, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 79, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 80, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 81, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 82, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 83, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 84, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 85, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 86, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 87, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 88, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 89, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 90, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 91, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 92, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 93, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 94, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 95, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 96, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 97, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 98, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 99, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 100, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 101, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 102, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 103, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 104, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 105, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 106, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 107, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 108, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 109, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 110, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 111, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 112, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 113, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 114, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 115, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 116, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 117, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 118, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 119, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 120, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 121, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 122, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 123, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 124, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 125, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 126, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 127, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 128, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 129, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 130, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 131, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 132, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 133, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 134, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 135, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 136, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 137, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 138, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 139, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 140, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 141, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 142, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 143, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 144, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 145, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 146, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 147, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 148, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 149, HUGE_ENTRY_SIZE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE} + } ; + /* clang-format on */ pass = TRUE; @@ -38481,7 +33223,7 @@ check_metadata_cork(hbool_t fill_via_insertion, unsigned paged) /* Fill out the rest of the cache with entries */ /* Verify expected status of entries after each insertion */ - for (entry_idx = entry_idx; entry_idx < 50; entry_idx++) { + for (; entry_idx < 50; entry_idx++) { if (fill_via_insertion) { insert_entry(file_ptr, /* H5F_t * file_ptr */ @@ -38542,7 +33284,7 @@ check_metadata_cork(hbool_t fill_via_insertion, unsigned paged) if (pass) { /* Insert 50 more entries (indices 50-99) into the cache. */ - for (entry_idx = entry_idx; entry_idx < 100; entry_idx++) { + for (; entry_idx < 100; entry_idx++) { if (fill_via_insertion) { insert_entry(file_ptr, /* H5F_t * file_ptr */ @@ -38902,7 +33644,7 @@ check_entry_deletions_during_scans(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } return (unsigned)!pass; @@ -38910,30 +33652,35 @@ check_entry_deletions_during_scans(unsigned paged) } /* check_entry_deletions_during_scans() */ /*------------------------------------------------------------------------- + * * Function: cedds__expunge_dirty_entry_in_flush_test() * - * Purpose: Verify that H5C_flush_cache() can handle the removal of - * a dirty entry from the cache during its scan of the - * skip list. + * Purpose: Verify that H5C_flush_cache() can handle the removal of + * a dirty entry from the cache during its scan of the + * skip list. * - * Do this by setting up a full cache, with the last entry - * on the LRU being both dirty and having a flush operation - * that deletes the second to last entry on the LRU. Then - * flush the cache, triggering the flush of the last - * item, and thereby the deletion of the second to last item. + * Do this by setting up a full cache, with the last entry + * on the LRU being both dirty and having a flush operation + * that deletes the second to last entry on the LRU. Then + * flush the cache, triggering the flush of the last + * item, and thereby the deletion of the second to last item. * - * H5C_flush_cache() should handle this deletion gracefully. + * H5C_flush_cache() should handle this deletion gracefully. * * Do nothing if pass is FALSE on entry. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 4/4/15 * * Modifications: * - * None. + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 * *------------------------------------------------------------------------- */ @@ -38941,92 +33688,24 @@ check_entry_deletions_during_scans(unsigned paged) static void cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr) { - H5C_t * cache_ptr = file_ptr->shared->cache; - int i; - herr_t result; - struct expected_entry_status expected[36] = { - /* the expected array is used to maintain a table of the expected status of every - * entry used in this test. Note that since the function that processes this - * array only processes as much of it as it is told to, we don't have to - * worry about maintaining the status of entries that we haven't used yet. - */ - /* entry entry in at main flush dep flush dep child flush flush - flush */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: - */ - {HUGE_ENTRY_TYPE, - 0, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 1, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 2, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 3, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}}; + H5C_t *cache_ptr = file_ptr->shared->cache; + int i; + /* clang-format off */ + struct expected_entry_status expected[36] = + { + /* the expected array is used to maintain a table of the expected status of every + * entry used in this test. Note that since the function that processes this + * array only processes as much of it as it is told to, we don't have to + * worry about maintaining the status of entries that we haven't used yet. + */ + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { HUGE_ENTRY_TYPE, 0, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 1, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 2, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 3, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE} + }; + /* clang-format on */ if (pass) { @@ -39109,15 +33788,15 @@ cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr) * are in cache with the following characteristics: * * in - * entry: cache? size: dirty? pinned? pins: flush operations: + * entry: cache? size: dirty? pinned? pins: flush operations: * - * (HET, 0) Y 16 KB Y N - expunge (HET 1) + * (HET, 0) Y 16 KB Y N - expunge (HET 1) * - * (HET, 1) Y 16 KB Y N - - + * (HET, 1) Y 16 KB Y N - - * - * (HET, 2) Y 16 KB Y N - - + * (HET, 2) Y 16 KB Y N - - * - * (HET, 3) Y 16 KB Y N - - + * (HET, 3) Y 16 KB Y N - - * * Recall that in this test bed, flush operations are excuted the * first time the associated entry is flushed, and are then @@ -39132,14 +33811,10 @@ cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr) if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, + "Cache flush inval failed in cedds expunge dirty entry in flush test") - if (result < 0) { - - pass = FALSE; - failure_mssg = "Cache flush invalidate failed in cedds expunge dirty entry in flush test"; - } - else if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0)) { + if ((pass) && ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0))) { pass = FALSE; failure_mssg = "Unexpected cache len/size after cedds expunge dirty entry in flush test"; @@ -39185,37 +33860,39 @@ cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr) /* reset cache min clean size to its expected value */ cache_ptr->min_clean_size = (1 * 1024 * 1024); - return; - } /* cedds__expunge_dirty_entry_in_flush_test() */ /*------------------------------------------------------------------------- * Function: cedds__H5C_make_space_in_cache() * - * Purpose: Verify that H5C__make_space_in_cache() can handle the - * removal from the cache of the next item in its reverse scan - * of the LRU list. + * Purpose: Verify that H5C__make_space_in_cache() can handle the + * removal from the cache of the next item in its reverse scan + * of the LRU list. * - * Do this by setting up a full cache, with the last entry - * on the LRU being both dirty and having a flush operation - * that deleted the second to last entry on the LRU. Then - * load an additional entry, triggering the flush of the last - * item, and thereby the deletion of the second to last item. + * Do this by setting up a full cache, with the last entry + * on the LRU being both dirty and having a flush operation + * that deleted the second to last entry on the LRU. Then + * load an additional entry, triggering the flush of the last + * item, and thereby the deletion of the second to last item. * - * H5C__make_space_in_cache() should detect this deletion, and - * restart its scan of the LRU from the tail, instead of - * examining the now deleted next item up on the LRU. + * H5C__make_space_in_cache() should detect this deletion, and + * restart its scan of the LRU from the tail, instead of + * examining the now deleted next item up on the LRU. * * Do nothing if pass is FALSE on entry. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 4/4/15 * * Modifications: * - * None. + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 * *------------------------------------------------------------------------- */ @@ -39223,670 +33900,58 @@ cedds__expunge_dirty_entry_in_flush_test(H5F_t *file_ptr) static void cedds__H5C_make_space_in_cache(H5F_t *file_ptr) { - H5C_t * cache_ptr = file_ptr->shared->cache; - int i; - const int num_huge_entries = 4; - const int num_monster_entries = 32; - herr_t result; - struct expected_entry_status expected[36] = { - /* the expected array is used to maintain a table of the expected status of every - * entry used in this test. Note that since the function that processes this - * array only processes as much of it as it is told to, we don't have to - * worry about maintaining the status of entries that we haven't used yet. - */ - /* entry entry in at main flush dep flush dep child flush flush - flush */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ - {HUGE_ENTRY_TYPE, - 0, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 1, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 2, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {HUGE_ENTRY_TYPE, - 3, - HUGE_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 0, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 1, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 2, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 3, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 4, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 5, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 6, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 7, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 8, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 9, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 10, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 11, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 12, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 13, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 14, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 15, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 16, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 17, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 18, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 19, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 20, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 21, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 22, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 23, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 24, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 25, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 26, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 27, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 28, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 29, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 30, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 31, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, + H5C_t * cache_ptr = file_ptr->shared->cache; + int i; + const int num_huge_entries = 4; + const int num_monster_entries = 32; + /* clang-format off */ + struct expected_entry_status expected[36] = + { + /* the expected array is used to maintain a table of the expected status of every + * entry used in this test. Note that since the function that processes this + * array only processes as much of it as it is told to, we don't have to + * worry about maintaining the status of entries that we haven't used yet. + */ + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { HUGE_ENTRY_TYPE, 0, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 1, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 2, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { HUGE_ENTRY_TYPE, 3, HUGE_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 0, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 1, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 2, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 3, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 4, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 5, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 6, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 7, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 8, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 9, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 10, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 11, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 12, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 13, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 14, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 15, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 16, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 17, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 18, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 19, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 20, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 21, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 22, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 23, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 24, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 25, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 26, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 27, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 28, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 29, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 30, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 31, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, }; + /* clang-format on */ if (pass) { @@ -40077,14 +34142,10 @@ cedds__H5C_make_space_in_cache(H5F_t *file_ptr) if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, + "Cache flush invalidate failed after flush op eviction test") - if (result < 0) { - - pass = FALSE; - failure_mssg = "Cache flush invalidate failed after flush op eviction test"; - } - else if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0)) { + if ((pass) && ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0))) { pass = FALSE; failure_mssg = "Unexpected cache len/size after cleanup of flush op eviction test"; @@ -40157,37 +34218,39 @@ cedds__H5C_make_space_in_cache(H5F_t *file_ptr) /* reset cache min clean size to its expected value */ cache_ptr->min_clean_size = (1 * 1024 * 1024); - return; - } /* cedds__H5C_make_space_in_cache() */ /*------------------------------------------------------------------------- * Function: cedds__H5C__autoadjust__ageout__evict_aged_out_entries() * - * Purpose: Verify that H5C__autoadjust__ageout__evict_aged_out_entries() - * can handle the removal from the cache of the next item in - * its reverse scan of the LRU list. + * Purpose: Verify that H5C__autoadjust__ageout__evict_aged_out_entries() + * can handle the removal from the cache of the next item in + * its reverse scan of the LRU list. * - * Do this by setting up a full cache, with the last entry - * on the LRU being both dirty and having a flush operation - * that deletes the second to last entry on the LRU. Then - * access the first item in the LRU repeatedly until the - * item, and thereby the deletion of the second to last item. + * Do this by setting up a full cache, with the last entry + * on the LRU being both dirty and having a flush operation + * that deletes the second to last entry on the LRU. Then + * access the first item in the LRU repeatedly until the + * item, and thereby the deletion of the second to last item. * - * H5C__make_space_in_cache() should detect this deletion, and - * restart its scan of the LRU from the tail, instead of - * examining the now deleted next item up on the LRU. + * H5C__make_space_in_cache() should detect this deletion, and + * restart its scan of the LRU from the tail, instead of + * examining the now deleted next item up on the LRU. * * Do nothing if pass is FALSE on entry. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 4/4/15 * * Modifications: * - * None. + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 * *------------------------------------------------------------------------- */ @@ -40195,596 +34258,53 @@ cedds__H5C_make_space_in_cache(H5F_t *file_ptr) static void cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr) { - H5C_t * cache_ptr = file_ptr->shared->cache; - int i; - herr_t result; - struct expected_entry_status expected[36] = { - /* the expected array is used to maintain a table of the expected status of every - * entry used in this test. Note that since the function that processes this - * array only processes as much of it as it is told to, we don't have to - * worry about maintaining the status of entries that we haven't used yet. - */ - /* entry entry in at main flush dep flush dep child flush flush - flush */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ - {MONSTER_ENTRY_TYPE, - 0, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 1, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 2, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 3, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 4, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 5, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 6, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 7, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 8, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 9, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 10, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 11, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 12, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 13, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 14, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 15, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 16, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 17, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 18, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 19, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 20, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 21, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 22, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 23, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 24, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 25, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 26, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 27, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 28, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 29, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 30, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 31, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, -1, -1, -1, -1, -1, -1, -1}, - {-1, -1, -1, -1, -1, -1, -1, -1}, - 0, - 0, - 0, - -1, - FALSE}, + H5C_t *cache_ptr = file_ptr->shared->cache; + int i; + herr_t result; + /* clang-format off */ + struct expected_entry_status expected[36] = + { + /* the expected array is used to maintain a table of the expected status of every + * entry used in this test. Note that since the function that processes this + * array only processes as much of it as it is told to, we don't have to + * worry about maintaining the status of entries that we haven't used yet. + */ + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { MONSTER_ENTRY_TYPE, 0, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 1, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 2, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 3, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 4, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 5, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 6, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 7, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 8, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 9, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 10, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 11, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 12, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 13, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 14, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 15, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 16, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 17, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 18, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 19, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 20, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 21, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 22, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 23, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 24, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 25, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 26, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 27, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 28, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 29, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 30, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 31, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,-1,-1}, 0, 0, 0, -1, FALSE}, }; + /* clang-format on */ H5C_auto_size_ctl_t saved_auto_size_ctl; H5C_auto_size_ctl_t test_auto_size_ctl = { /* int32_t version = */ H5C__CURR_AUTO_SIZE_CTL_VER, @@ -41038,14 +34558,10 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr) if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, + "Cache flush invalidate failed after flush op eviction test") - if (result < 0) { - - pass = FALSE; - failure_mssg = "Cache flush invalidate failed after flush op eviction test"; - } - else if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0)) { + if ((pass) && ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0))) { pass = FALSE; failure_mssg = "Unexpected cache len/size after cleanup of flush op eviction test"; @@ -41098,98 +34614,100 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr) /* reset cache min clean size to its expected value */ cache_ptr->min_clean_size = (1 * 1024 * 1024); - return; - } /* cedds__H5C__autoadjust__ageout__evict_aged_out_entries() */ /*------------------------------------------------------------------------- * Function: cedds__H5C_flush_invalidate_cache__bucket_scan() * - * Purpose: Note: We now use the index list when we scan the - * contents of the metadata cache, so in principal, - * this test is obsolete. However, even using the - * index list, restarts are possible, and must be - * handled gracefully. - * - * As it turns out, this test triggers index list - * scan restarts, and thus with minor changes is - * still a useful test. - * - * For this reason, with the exception of changing - * to check the index_scan_restart stat instead of - * hash bucket restarts, I'm leaving the test - * alone. If and when it starts to fail due to - * other changes, we can re-work it to test - * index list scan restarts explicitly. - * - * JRM -- 11/2/16 - * - * Verify that H5C_flush_invalidate_cache() can handle - * the removal from the cache of the next item in - * its scans of hash buckets. - * - * !!!!!!!!!!WARNING !!!!!!!!!! - * - * This test may fail to function correctly if the hash - * table size or hash function is altered. - * - * To setup the test, this function depends on the fact that - * H5C_flush_invalidate_cache() does alternating scans of the - * slist and the index. If this changes, the test will likely - * also cease to function correctly. - * - * The test relies on a known hash function and hash table - * size to select a set of test entries that will all hash - * to the same hash bucket -- call it the test hash bucket. - * It also relies on known behavior of the cache to place - * the entries in the test bucket in a known order. - * - * To avoid pre-mature flushes of the entries in the - * test hash bucket, all entries are initially clean, - * with the exception of the first entry which is dirty. - * It avoids premature flushing by being the parent in - * a flush dependency. The first entry in the test bucket - * also has a flush op which expunges the second entry -- - * setting up the failure. - * - * An additional dirty entry is added (which must hash - * to a different bucket, and must have a higher address - * than at least the first entry in the test hash bucket. - * This entry is the child in a flush dependency with the - * first entry in the above hash bucket, and contains - * a flush op to destroy this flush dependency. - * - * Since the first entry in the test hash bucket has a lower - * address that the other dirty entry, the scan of the - * slist encounters it first, and passes over it because - * it has a flush dependency height of 1. - * - * The scan then encounters the second dirty entry and flushes - * it -- causing it to destroy the flush dependency and thus - * reducing the flush dependency height of the first entry in - * the test hash bucket to zero. - * - * After completing a scan of the slist, - * H5C_flush_invalidate_cache() then scans the index, - * flushing all entries of flush dependency height zero. - * - * This sets up the potential error when the first entry - * in the test hash bucket is flushed -- expunging the - * second entry as a side effect. If - * H5C_flush_invalidate_cache() fails to detect this, - * it will attempt to continue its scan of the bucket with - * an entry that has been deleted from the cache. + * Purpose: Note: We now use the index list when we scan the + * contents of the metadata cache, so in principal, + * this test is obsolete. However, even using the + * index list, restarts are possible, and must be + * handled gracefully. + * + * As it turns out, this test triggers index list + * scan restarts, and thus with minor changes is + * still a useful test. + * + * For this reason, with the exception of changing + * to check the index_scan_restart stat instead of + * hash bucket restarts, I'm leaving the test + * alone. If and when it starts to fail due to + * other changes, we can re-work it to test + * index list scan restarts explicitly. + * + * JRM -- 11/2/16 + * + * Verify that H5C_flush_invalidate_cache() can handle + * the removal from the cache of the next item in + * its scans of hash buckets. + * + * !!!!!!!!!!WARNING !!!!!!!!!! + * + * This test may fail to function correctly if the hash + * table size or hash function is altered. + * + * To setup the test, this function depends on the fact that + * H5C_flush_invalidate_cache() does alternating scans of the + * slist and the index. If this changes, the test will likely + * also cease to function correctly. + * + * The test relies on a known hash function and hash table + * size to select a set of test entries that will all hash + * to the same hash bucket -- call it the test hash bucket. + * It also relies on known behavior of the cache to place + * the entries in the test bucket in a known order. + * + * To avoid pre-mature flushes of the entries in the + * test hash bucket, all entries are initially clean, + * with the exception of the first entry which is dirty. + * It avoids premature flushing by being the parent in + * a flush dependency. The first entry in the test bucket + * also has a flush op which expunges the second entry -- + * setting up the failure. + * + * An additional dirty entry is added (which must hash + * to a different bucket, and must have a higher address + * than at least the first entry in the test hash bucket. + * This entry is the child in a flush dependency with the + * first entry in the above hash bucket, and contains + * a flush op to destroy this flush dependency. + * + * Since the first entry in the test hash bucket has a lower + * address that the other dirty entry, the scan of the + * slist encounters it first, and passes over it because + * it has a flush dependency height of 1. + * + * The scan then encounters the second dirty entry and flushes + * it -- causing it to destroy the flush dependency and thus + * reducing the flush dependency height of the first entry in + * the test hash bucket to zero. + * + * After completing a scan of the slist, + * H5C_flush_invalidate_cache() then scans the index, + * flushing all entries of flush dependency height zero. + * + * This sets up the potential error when the first entry + * in the test hash bucket is flushed -- expunging the + * second entry as a side effect. If + * H5C_flush_invalidate_cache() fails to detect this, + * it will attempt to continue its scan of the bucket with + * an entry that has been deleted from the cache. * * Do nothing if pass is FALSE on entry. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 4/9/15 * * Modifications: * - * None. + * Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 * *------------------------------------------------------------------------- */ @@ -41197,116 +34715,30 @@ cedds__H5C__autoadjust__ageout__evict_aged_out_entries(H5F_t *file_ptr) static void cedds__H5C_flush_invalidate_cache__bucket_scan(H5F_t *file_ptr) { - H5C_t * cache_ptr = file_ptr->shared->cache; - int i; - int expected_hash_bucket = 0; - herr_t result; - haddr_t entry_addr; - test_entry_t * entry_ptr; - test_entry_t * base_addr = NULL; - struct H5C_cache_entry_t * scan_ptr; - struct expected_entry_status expected[5] = { - /* the expected array is used to maintain a table of the expected status of every - * entry used in this test. Note that since the function that processes this - * array only processes as much of it as it is told to, we don't have to - * worry about maintaining the status of entries that we haven't used yet. - */ - /* entry entry in at main flush dep flush dep child flush flush - flush */ - /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: - srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: - */ - {MONSTER_ENTRY_TYPE, - 0, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - TRUE, - TRUE, - FALSE, - FALSE, - {-1, 0, 0, 0, 0, 0, 0, 0}, - {-1, 0, 0, 0, 0, 0, 0, 0}, - 0, - 1, - 1, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 8, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, 0, 0, 0, 0, 0, 0, 0}, - {-1, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 16, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, 0, 0, 0, 0, 0, 0, 0}, - {-1, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 24, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - FALSE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {-1, 0, 0, 0, 0, 0, 0, 0}, - {-1, 0, 0, 0, 0, 0, 0, 0}, - 0, - 0, - 0, - -1, - FALSE}, - {MONSTER_ENTRY_TYPE, - 31, - MONSTER_ENTRY_SIZE, - TRUE, - TRUE, - TRUE, - FALSE, - FALSE, - TRUE, - FALSE, - FALSE, - {MONSTER_ENTRY_TYPE, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0}, - 1, - 0, - 0, - -1, - FALSE}, + H5C_t * cache_ptr = file_ptr->shared->cache; + int i; + int expected_hash_bucket = 0; + haddr_t entry_addr; + test_entry_t * entry_ptr; + test_entry_t * base_addr = NULL; + struct H5C_cache_entry_t *scan_ptr; + /* clang-format off */ + struct expected_entry_status expected[5] = + { + /* the expected array is used to maintain a table of the expected status of every + * entry used in this test. Note that since the function that processes this + * array only processes as much of it as it is told to, we don't have to + * worry about maintaining the status of entries that we haven't used yet. + */ + /* entry entry in at main flush dep flush dep child flush flush flush */ + /* type: index: size: cache: addr: dirty: prot: pinned: dsrlzd: srlzd: dest: par type[]: par idx[]: dep npart: dep nchd: dep ndirty chd: order: corked: */ + { MONSTER_ENTRY_TYPE, 0, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, {-1,0,0,0,0,0,0,0}, {-1,0,0,0,0,0,0,0}, 0, 1, 1, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 8, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,0,0,0,0,0,0,0}, {-1,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 16, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,0,0,0,0,0,0,0}, {-1,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 24, MONSTER_ENTRY_SIZE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, {-1,0,0,0,0,0,0,0}, {-1,0,0,0,0,0,0,0}, 0, 0, 0, -1, FALSE}, + { MONSTER_ENTRY_TYPE, 31, MONSTER_ENTRY_SIZE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, {MONSTER_ENTRY_TYPE,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, 1, 0, 0, -1, FALSE}, }; + /* clang-format on */ if (pass) { @@ -41499,14 +34931,10 @@ cedds__H5C_flush_invalidate_cache__bucket_scan(H5F_t *file_ptr) if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, + "Cache flush invalidate failed after flush op eviction test") - if (result < 0) { - - pass = FALSE; - failure_mssg = "Cache flush invalidate failed after flush op eviction test"; - } - else if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0)) { + if ((pass) && ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0))) { pass = FALSE; failure_mssg = "Unexpected cache len/size after cleanup of flush op eviction test"; @@ -41562,8 +34990,6 @@ cedds__H5C_flush_invalidate_cache__bucket_scan(H5F_t *file_ptr) /* reset cache min clean size to its expected value */ cache_ptr->min_clean_size = (1 * 1024 * 1024); - return; - } /* cedds__H5C_flush_invalidate_cache__bucket_scan() */ /*------------------------------------------------------------------------- @@ -41629,7 +35055,7 @@ check_stats(unsigned paged) if (!pass) { - HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s(): failure_mssg = \"%s\".\n", __func__, failure_mssg); } #else /* H5C_COLLECT_CACHE_STATS */ @@ -41647,26 +35073,34 @@ check_stats(unsigned paged) /*------------------------------------------------------------------------- * Function: check_stats__smoke_check_1() * - * Purpose: Test to see if the statistics collection code is working - * more or less as expected. Do this by performing a number - * of operations in the cache, and checking to verify that - * they result in the expected statistics. + * Purpose: Test to see if the statistics collection code is working + * more or less as expected. Do this by performing a number + * of operations in the cache, and checking to verify that + * they result in the expected statistics. * - * Note that this function is not intended to be a full test - * of the statistics collection facility -- only a cursory - * check that will serve as a place holder until more complete - * tests are implemented. + * Note that this function is not intended to be a full test + * of the statistics collection facility -- only a cursory + * check that will serve as a place holder until more complete + * tests are implemented. * * Do nothing if pass is FALSE on entry. * - * Return: void + * Return: void * - * Programmer: John Mainzer + * Programmer: John Mainzer * 4/22/15 * * Modifications: * - * None. + * Modified slist stats checks to allow for the case that + * the slist is disabled. + * + * Also added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via the + * H5C_FLUSH_CACHE macro. + * + * JRM -- 5/14/20 + * * *------------------------------------------------------------------------- */ @@ -41676,7 +35110,6 @@ check_stats__smoke_check_1(H5F_t *file_ptr) { H5C_t *cache_ptr = file_ptr->shared->cache; int i; - herr_t result; if (pass) { if (cache_ptr == NULL) { @@ -41736,13 +35169,15 @@ check_stats__smoke_check_1(H5F_t *file_ptr) failure_mssg = "Unexpected monster size entry stats in check_stats__smoke_check_1(1)."; } /* end if */ - if (pass) + if (pass) { + if ((cache_ptr->total_ht_insertions != 32) || (cache_ptr->total_ht_deletions != 0) || (cache_ptr->successful_ht_searches != 0) || (cache_ptr->total_successful_ht_search_depth != 0) || (cache_ptr->failed_ht_searches != 32) || (cache_ptr->total_failed_ht_search_depth != 48) || (cache_ptr->max_index_len != 32) || (cache_ptr->max_index_size != 2 * 1024 * 1024) || (cache_ptr->max_clean_index_size != 0) || (cache_ptr->max_dirty_index_size != 2 * 1024 * 1024) || - (cache_ptr->max_slist_len != 32) || (cache_ptr->max_slist_size != 2 * 1024 * 1024) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->max_slist_len != 32) || (cache_ptr->max_slist_size != 2 * 1024 * 1024))) || (cache_ptr->max_pl_len != 0) || (cache_ptr->max_pl_size != 0) || (cache_ptr->max_pel_len != 0) || (cache_ptr->max_pel_size != 0) || (cache_ptr->calls_to_msic != 0) || (cache_ptr->total_entries_skipped_in_msic != 0) || @@ -41754,6 +35189,7 @@ check_stats__smoke_check_1(H5F_t *file_ptr) pass = FALSE; failure_mssg = "Unexpected cache stats in check_stats__smoke_check_1(1)."; } /* end if */ + } #if H5C_COLLECT_CACHE_ENTRY_STATS if (pass) @@ -41806,17 +35242,19 @@ check_stats__smoke_check_1(H5F_t *file_ptr) failure_mssg = "Unexpected monster size entry stats in check_stats__smoke_check_1(2)."; } /* end if */ - if (pass) + if (pass) { + if ((cache_ptr->total_ht_insertions != 32) || (cache_ptr->total_ht_deletions != 0) || (cache_ptr->successful_ht_searches != 32) || (cache_ptr->total_successful_ht_search_depth != 96) || (cache_ptr->failed_ht_searches != 32) || (cache_ptr->total_failed_ht_search_depth != 48) || (cache_ptr->max_index_len != 32) || (cache_ptr->max_index_size != 2 * 1024 * 1024) || (cache_ptr->max_clean_index_size != 0) || - (cache_ptr->max_dirty_index_size != 2 * 1024 * 1024) || (cache_ptr->max_slist_len != 32) || - (cache_ptr->max_slist_size != 2 * 1024 * 1024) || (cache_ptr->max_pl_len != 1) || - (cache_ptr->max_pl_size != 64 * 1024) || (cache_ptr->max_pel_len != 0) || - (cache_ptr->max_pel_size != 0) || (cache_ptr->calls_to_msic != 0) || - (cache_ptr->total_entries_skipped_in_msic != 0) || + (cache_ptr->max_dirty_index_size != 2 * 1024 * 1024) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->max_slist_len != 32) || (cache_ptr->max_slist_size != 2 * 1024 * 1024))) || + (cache_ptr->max_pl_len != 1) || (cache_ptr->max_pl_size != 64 * 1024) || + (cache_ptr->max_pel_len != 0) || (cache_ptr->max_pel_size != 0) || + (cache_ptr->calls_to_msic != 0) || (cache_ptr->total_entries_skipped_in_msic != 0) || (cache_ptr->total_entries_scanned_in_msic != 0) || (cache_ptr->max_entries_skipped_in_msic != 0) || (cache_ptr->max_entries_scanned_in_msic != 0) || (cache_ptr->entries_scanned_to_make_space != 0) || (cache_ptr->slist_scan_restarts != 0) || @@ -41825,6 +35263,7 @@ check_stats__smoke_check_1(H5F_t *file_ptr) pass = FALSE; failure_mssg = "Unexpected cache stats in check_stats__smoke_check_1(2)."; } /* end if */ + } #if H5C_COLLECT_CACHE_ENTRY_STATS if (pass) @@ -41877,18 +35316,20 @@ check_stats__smoke_check_1(H5F_t *file_ptr) failure_mssg = "Unexpected monster size entry stats in check_stats__smoke_check_1(3)."; } /* end if */ - if (pass) + if (pass) { + if ((cache_ptr->total_ht_insertions != 33) || (cache_ptr->total_ht_deletions != 1) || (cache_ptr->successful_ht_searches != 32) || (cache_ptr->total_successful_ht_search_depth != 96) || (cache_ptr->failed_ht_searches != 33) || (cache_ptr->total_failed_ht_search_depth != 52) || (cache_ptr->max_index_len != 32) || (cache_ptr->max_index_size != 2 * 1024 * 1024) || (cache_ptr->max_clean_index_size != 2 * 1024 * 1024) || - (cache_ptr->max_dirty_index_size != 2 * 1024 * 1024) || (cache_ptr->max_slist_len != 32) || - (cache_ptr->max_slist_size != 2 * 1024 * 1024) || (cache_ptr->max_pl_len != 1) || - (cache_ptr->max_pl_size != 64 * 1024) || (cache_ptr->max_pel_len != 0) || - (cache_ptr->max_pel_size != 0) || (cache_ptr->calls_to_msic != 1) || - (cache_ptr->total_entries_skipped_in_msic != 0) || + (cache_ptr->max_dirty_index_size != 2 * 1024 * 1024) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->max_slist_len != 32) || (cache_ptr->max_slist_size != 2 * 1024 * 1024))) || + (cache_ptr->max_pl_len != 1) || (cache_ptr->max_pl_size != 64 * 1024) || + (cache_ptr->max_pel_len != 0) || (cache_ptr->max_pel_size != 0) || + (cache_ptr->calls_to_msic != 1) || (cache_ptr->total_entries_skipped_in_msic != 0) || (cache_ptr->total_entries_scanned_in_msic != 33) || (cache_ptr->max_entries_skipped_in_msic != 0) || (cache_ptr->max_entries_scanned_in_msic != 33) || (cache_ptr->entries_scanned_to_make_space != 33) || (cache_ptr->slist_scan_restarts != 0) || @@ -41897,6 +35338,7 @@ check_stats__smoke_check_1(H5F_t *file_ptr) pass = FALSE; failure_mssg = "Unexpected cache stats in check_stats__smoke_check_1(3)."; } /* end if */ + } #if H5C_COLLECT_CACHE_ENTRY_STATS if (pass) @@ -41926,14 +35368,10 @@ check_stats__smoke_check_1(H5F_t *file_ptr) if (pass) { - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); - - if (result < 0) { + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, + "Cache flush invalidate failed in check_stats__smoke_check_1()") - pass = FALSE; - failure_mssg = "Cache flush invalidate failed in check_stats__smoke_check_1()"; - } /* end if */ - else if ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0)) { + if ((pass) && ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0))) { pass = FALSE; failure_mssg = "Unexpected cache len/size after check_stats__smoke_check_1()"; @@ -41967,18 +35405,20 @@ check_stats__smoke_check_1(H5F_t *file_ptr) failure_mssg = "Unexpected monster size entry stats in check_stats__smoke_check_1(4)."; } /* end if */ - if (pass) + if (pass) { + if ((cache_ptr->total_ht_insertions != 33) || (cache_ptr->total_ht_deletions != 33) || (cache_ptr->successful_ht_searches != 33) || (cache_ptr->total_successful_ht_search_depth != 99) || (cache_ptr->failed_ht_searches != 33) || (cache_ptr->total_failed_ht_search_depth != 52) || (cache_ptr->max_index_len != 32) || (cache_ptr->max_index_size != 2 * 1024 * 1024) || (cache_ptr->max_clean_index_size != 2 * 1024 * 1024) || - (cache_ptr->max_dirty_index_size != 2 * 1024 * 1024) || (cache_ptr->max_slist_len != 32) || - (cache_ptr->max_slist_size != 2 * 1024 * 1024) || (cache_ptr->max_pl_len != 1) || - (cache_ptr->max_pl_size != 64 * 1024) || (cache_ptr->max_pel_len != 0) || - (cache_ptr->max_pel_size != 0) || (cache_ptr->calls_to_msic != 1) || - (cache_ptr->total_entries_skipped_in_msic != 0) || + (cache_ptr->max_dirty_index_size != 2 * 1024 * 1024) || + ((cache_ptr->slist_enabled) && + ((cache_ptr->max_slist_len != 32) || (cache_ptr->max_slist_size != 2 * 1024 * 1024))) || + (cache_ptr->max_pl_len != 1) || (cache_ptr->max_pl_size != 64 * 1024) || + (cache_ptr->max_pel_len != 0) || (cache_ptr->max_pel_size != 0) || + (cache_ptr->calls_to_msic != 1) || (cache_ptr->total_entries_skipped_in_msic != 0) || (cache_ptr->total_entries_scanned_in_msic != 33) || (cache_ptr->max_entries_skipped_in_msic != 0) || (cache_ptr->max_entries_scanned_in_msic != 33) || (cache_ptr->entries_scanned_to_make_space != 33) || (cache_ptr->slist_scan_restarts != 0) || @@ -41987,6 +35427,7 @@ check_stats__smoke_check_1(H5F_t *file_ptr) pass = FALSE; failure_mssg = "Unexpected cache stats in check_stats__smoke_check_1(4)."; } /* end if */ + } #if H5C_COLLECT_CACHE_ENTRY_STATS if (pass) @@ -42094,7 +35535,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) hid_t fcpl_id = H5P_DEFAULT; if (show_progress) /* 1 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); saved_fid = -1; @@ -42137,7 +35578,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) } if (show_progress) /* 2 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass && try_core_file_driver) { if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) == FAIL) { @@ -42154,7 +35595,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) core_file_driver_failed = TRUE; if (verbose) - HDfprintf(stdout, "%s: H5Fcreate() with CFD failed.\n", FUNC); + HDfprintf(stdout, "%s: H5Fcreate() with CFD failed.\n", __func__); } else { saved_fapl_id = fapl_id; @@ -42162,7 +35603,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) } if (show_progress) /* 3 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); /* if we either aren't using the core file driver, or a create * with the core file driver failed, try again with a regular file. @@ -42177,7 +35618,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) failure_mssg = "H5Fcreate() failed."; if (verbose) - HDfprintf(stdout, "%s: H5Fcreate() failed.\n", FUNC); + HDfprintf(stdout, "%s: H5Fcreate() failed.\n", __func__); } /* end if */ } /* end if */ @@ -42185,7 +35626,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) H5CX_push(); if (show_progress) /* 4 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { HDassert(fid >= 0); @@ -42195,7 +35636,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) failure_mssg = "H5Fflush() failed."; if (verbose) - HDfprintf(stdout, "%s: H5Fflush() failed.\n", FUNC); + HDfprintf(stdout, "%s: H5Fflush() failed.\n", __func__); } else { file_ptr = (H5F_t *)H5VL_object_verify(fid, H5I_FILE); @@ -42204,13 +35645,13 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) failure_mssg = "Can't get file_ptr."; if (verbose) - HDfprintf(stdout, "%s: H5Fflush() failed.\n", FUNC); + HDfprintf(stdout, "%s: H5Fflush() failed.\n", __func__); } } } if (show_progress) /* 5 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { @@ -42253,7 +35694,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) } if (show_progress) /* 6 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { if (cache_ptr == NULL) { @@ -42261,19 +35702,19 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) failure_mssg = "H5C_create() failed."; if (verbose) - HDfprintf(stdout, "%s: H5C_create() failed.\n", FUNC); + HDfprintf(stdout, "%s: H5C_create() failed.\n", __func__); } else if (cache_ptr->magic != H5C__H5C_T_MAGIC) { pass = FALSE; failure_mssg = "Bad cache_ptr magic."; if (verbose) - HDfprintf(stdout, "%s: Bad cache_ptr magic.\n", FUNC); + HDfprintf(stdout, "%s: Bad cache_ptr magic.\n", __func__); } } if (show_progress) /* 7 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { /* allocate space for test entries */ actual_base_addr = H5MF_alloc(file_ptr, H5FD_MEM_DEFAULT, (hsize_t)(ADDR_SPACE_SIZE + BASE_ADDR)); @@ -42283,7 +35724,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) failure_mssg = "H5MF_alloc() failed."; if (verbose) - HDfprintf(stdout, "%s: H5MF_alloc() failed.\n", FUNC); + HDfprintf(stdout, "%s: H5MF_alloc() failed.\n", __func__); } else if (actual_base_addr > BASE_ADDR) { /* If this happens, must increase BASE_ADDR so that the @@ -42294,14 +35735,14 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) failure_mssg = "actual_base_addr > BASE_ADDR"; if (verbose) - HDfprintf(stdout, "%s: actual_base_addr > BASE_ADDR.\n", FUNC); + HDfprintf(stdout, "%s: actual_base_addr > BASE_ADDR.\n", __func__); } saved_actual_base_addr = actual_base_addr; } if (show_progress) /* 8 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); if (pass) { /* Need to set this else all cache tests will fail */ @@ -42312,7 +35753,7 @@ setup_cache(size_t max_cache_size, size_t min_clean_size, unsigned paged) } if (show_progress) /* 9 */ - HDfprintf(stdout, "%s() - %0d -- pass = %d\n", FUNC, mile_stone++, (int)pass); + HDfprintf(stdout, "%s() - %0d -- pass = %d\n", __func__, mile_stone++, (int)pass); return (ret_val); } /* setup_cache() */ diff --git a/test/cache_api.c b/test/cache_api.c index 5d0f395..7858c65 100644 --- a/test/cache_api.c +++ b/test/cache_api.c @@ -478,7 +478,7 @@ check_fapl_mdc_api_calls(unsigned paged, hid_t fcpl_id) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return pass; @@ -821,7 +821,7 @@ check_file_mdc_api_calls(unsigned paged, hid_t fcpl_id) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return pass; @@ -1463,7 +1463,7 @@ mdc_api_call_smoke_check(int express_test, unsigned paged, hid_t fcpl_id) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return pass; @@ -1841,7 +1841,7 @@ check_fapl_mdc_api_errs(void) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return pass; @@ -1894,7 +1894,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: calling h5_fixname().\n", FUNC); + HDfprintf(stdout, "%s: calling h5_fixname().\n", __func__); } if (h5_fixname(FILENAME[0], H5P_DEFAULT, filename, sizeof(filename)) == NULL) { @@ -1908,7 +1908,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: calling H5Fcreate().\n", FUNC); + HDfprintf(stdout, "%s: calling H5Fcreate().\n", __func__); } file_id = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl_id, H5P_DEFAULT); @@ -1929,7 +1929,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 1.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 1.\n", __func__); } H5E_BEGIN_TRY @@ -1949,7 +1949,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 2.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 2.\n", __func__); } H5E_BEGIN_TRY @@ -1970,7 +1970,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 3.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fget_mdc_config() 3.\n", __func__); } H5E_BEGIN_TRY @@ -1993,7 +1993,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fset_mdc_config() 1.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fset_mdc_config() 1.\n", __func__); } H5E_BEGIN_TRY @@ -2013,7 +2013,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fset_mdc_config() 2.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fset_mdc_config() 2.\n", __func__); } H5E_BEGIN_TRY @@ -2033,7 +2033,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) while ((pass) && (i < NUM_INVALID_CONFIGS)) { if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fset_mdc_config() with invalid config %d.\n", FUNC, i); + HDfprintf(stdout, "%s: testing H5Fset_mdc_config() with invalid config %d.\n", __func__, i); } H5E_BEGIN_TRY @@ -2061,7 +2061,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fget_mdc_hit_rate() 1.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fget_mdc_hit_rate() 1.\n", __func__); } H5E_BEGIN_TRY @@ -2081,7 +2081,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fget_mdc_hit_rate() 2.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fget_mdc_hit_rate() 2.\n", __func__); } H5E_BEGIN_TRY @@ -2102,7 +2102,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Freset_mdc_hit_rate_stats().\n", FUNC); + HDfprintf(stdout, "%s: testing H5Freset_mdc_hit_rate_stats().\n", __func__); } H5E_BEGIN_TRY @@ -2123,7 +2123,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fget_mdc_size() 1.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fget_mdc_size() 1.\n", __func__); } H5E_BEGIN_TRY @@ -2143,7 +2143,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: testing H5Fget_mdc_size() 2.\n", FUNC); + HDfprintf(stdout, "%s: testing H5Fget_mdc_size() 2.\n", __func__); } if ((H5Fget_mdc_size(file_id, &max_size, NULL, NULL, NULL) < 0) || @@ -2162,7 +2162,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (show_progress) { - HDfprintf(stdout, "%s: cleaning up from tests.\n", FUNC); + HDfprintf(stdout, "%s: cleaning up from tests.\n", __func__); } if (H5Fclose(file_id) < 0) { @@ -2188,7 +2188,7 @@ check_file_mdc_api_errs(unsigned paged, hid_t fcpl_id) if (!pass) { - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); } return pass; @@ -2230,26 +2230,26 @@ main(void) invalid_configs = init_invalid_configs(); if (NULL == invalid_configs) { failure_mssg = "Unable to allocate memory for invalid configs."; - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return EXIT_FAILURE; } /* end if */ if ((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0) { failure_mssg = "H5Pcreate(H5P_FILE_CREATE) failed.\n"; - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return EXIT_FAILURE; } /* end if */ /* Set file space strategy to default or paged aggregation strategy */ if ((fcpl2_id = H5Pcopy(fcpl_id)) < 0) { failure_mssg = "H5Pcreate(H5P_FILE_CREATE) failed.\n"; - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return EXIT_FAILURE; } /* end if */ if (H5Pset_file_space_strategy(fcpl2_id, H5F_FSPACE_STRATEGY_PAGE, 1, (hsize_t)1) < 0) { failure_mssg = "H5Pset_file_space_strategy() failed.\n"; - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return EXIT_FAILURE; } /* end if */ @@ -2282,7 +2282,7 @@ main(void) if (H5Pclose(fcpl_id) < 0) { failure_mssg = "H5Pclose() failed.\n"; - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return EXIT_FAILURE; } /* end if */ diff --git a/test/cache_common.c b/test/cache_common.c index 9a65051..5fcbed5 100644 --- a/test/cache_common.c +++ b/test/cache_common.c @@ -446,8 +446,6 @@ addr_to_type_and_index(haddr_t addr, int32_t *type_ptr, int32_t *index_ptr) *type_ptr = type; *index_ptr = idx; - return; - } /* addr_to_type_and_index() */ /* Call back functions: */ @@ -733,9 +731,11 @@ deserialize(const void *image, size_t H5_ATTR_NDEBUG_UNUSED len, void *udata, hb else { if ((*(((const char *)image) + 2)) != (char)(idx & 0xFF)) { HDfprintf(stdout, "type = %d, idx = %d, addr = 0x%lx.\n", type, idx, (long)addr); - HDfprintf(stdout, "*image = 0x%x 0x%x 0x%x\n", (int)(*((const char *)image)), - (int)(*(((const char *)image) + 1)), (int)(*(((const char *)image) + 2))); - HDfprintf(stdout, "expected *image = 0x%x\n", (int)(idx & 0xFF), (int)((idx & 0xFF00) >> 8)); + HDfprintf(stdout, "*image = 0x%" PRIx8 " 0x%" PRIx8 " 0x%" PRIx8 "\n", + (*((const uint8_t *)image)), (*(((const uint8_t *)image) + 1)), + (*(((const uint8_t *)image) + 2))); + HDfprintf(stdout, "expected *image = 0x%02" PRIx32 "%02" PRIx32 "\n", (uint32_t)idx & 0xFF, + (((uint32_t)idx & 0xFF00) >> 8)); } /* end if */ HDassert((*((const char *)image)) == (char)(type & 0xFF)); HDassert((*(((const char *)image) + 1)) == (char)((idx & 0xFF00) >> 8)); @@ -1519,8 +1519,6 @@ add_flush_op(int target_type, int target_idx, int op_code, int type, int idx, hb (target_entry_ptr->flush_ops)[i].order_ptr = order_ptr; } - return; - } /* add_flush_op() */ /*------------------------------------------------------------------------- @@ -1590,8 +1588,6 @@ create_pinned_entry_dependency(H5F_t *file_ptr, int pinning_type, int pinning_id (pinned_entry_ptr->pinning_ref_count)++; } - return; - } /* create_pinned_entry_dependency() */ /*------------------------------------------------------------------------- @@ -1664,8 +1660,6 @@ dirty_entry(H5F_t *file_ptr, int32_t type, int32_t idx, hbool_t dirty_pin) } } - return; - } /* dirty_entry() */ /*------------------------------------------------------------------------- @@ -1695,7 +1689,7 @@ execute_flush_op(H5F_t *file_ptr, struct test_entry_t *entry_ptr, struct flush_o HDassert(cache_ptr != NULL); HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC); HDassert(entry_ptr != NULL); - HDassert(entry_ptr = entry_ptr->self); + HDassert(entry_ptr == entry_ptr->self); HDassert(entry_ptr->header.addr == entry_ptr->addr); HDassert((entry_ptr->flush_op_self_resize_in_progress) || (entry_ptr->header.size == entry_ptr->size)); HDassert(op_ptr != NULL); @@ -1803,8 +1797,6 @@ execute_flush_op(H5F_t *file_ptr, struct test_entry_t *entry_ptr, struct flush_o } } - return; - } /* execute_flush_op() */ /*------------------------------------------------------------------------- @@ -2030,8 +2022,6 @@ free_entry_arrays(void) HDfree(notify_entries); HDfree(orig_notify_entries); - return; - } /* free_entry_arrays() */ /*------------------------------------------------------------------------- @@ -2175,8 +2165,6 @@ reset_entries(void) } /* end for */ } /* end else */ - return; - } /* reset_entries() */ /*------------------------------------------------------------------------- @@ -2255,7 +2243,7 @@ resize_entry(H5F_t *file_ptr, int32_t type, int32_t idx, size_t new_size, hbool_ } else { - HDassert(entry_ptr->size = (entry_ptr->header).size); + HDassert(entry_ptr->size == (entry_ptr->header).size); } } } @@ -2268,8 +2256,6 @@ resize_entry(H5F_t *file_ptr, int32_t type, int32_t idx, size_t new_size, hbool_ } } - return; - } /* resize_entry() */ /*------------------------------------------------------------------------- @@ -2321,8 +2307,6 @@ verify_clean(void) } } - return; - } /* verify_clean() */ /*------------------------------------------------------------------------- @@ -2619,8 +2603,6 @@ verify_entry_status(H5C_t *cache_ptr, int tag, int num_entries, struct expected_ i++; } /* while */ - return; - } /* verify_entry_status() */ /*------------------------------------------------------------------------- @@ -2674,8 +2656,6 @@ verify_unprotected(void) } } - return; - } /* verify_unprotected() */ /*------------------------------------------------------------------------- @@ -2739,20 +2719,31 @@ expunge_entry(H5F_t *file_ptr, int32_t type, int32_t idx) } } - return; - } /* expunge_entry() */ /*------------------------------------------------------------------------- * Function: flush_cache() * * Purpose: Flush the specified cache, destroying all entries if - requested. If requested, dump stats first. + * requested. If requested, dump stats first. * * Return: void * * Programmer: John Mainzer - * 6/23/04 + * 6/23/04 + * + * Changes: Added code to setup and take down the skip list before + * and after calls to H5C_flush_cache(). Do this via calls + * to the H5C_FLUSH_CACHE macro. + * + * This is necessary, as H5C_flush() is called repeatedly + * during file flush. If we setup and took down the + * skip list on H5C_flush_cache(), we would find ourselves + * doing this repeatedly -- which is contrary to the + * objective of the exercise (avoiding as many skip list + * operations as possible). + * + * JRM -- 5/14/20 * *------------------------------------------------------------------------- */ @@ -2766,31 +2757,32 @@ flush_cache(H5F_t *file_ptr, hbool_t destroy_entries, hbool_t dump_stats, hbool_ if (pass) { H5C_t *cache_ptr; - herr_t result = 0; HDassert(file_ptr); cache_ptr = file_ptr->shared->cache; - if (destroy_entries) - result = H5C_flush_cache(file_ptr, H5C__FLUSH_INVALIDATE_FLAG); + if (destroy_entries) { - else - result = H5C_flush_cache(file_ptr, H5C__NO_FLAGS_SET); + H5C_FLUSH_CACHE(file_ptr, H5C__FLUSH_INVALIDATE_FLAG, "error in H5C_flush_cache().") + } + else { - if (dump_stats) - H5C_stats(cache_ptr, "test cache", dump_detailed_stats); + H5C_FLUSH_CACHE(file_ptr, H5C__NO_FLAGS_SET, "error in H5C_flush_cache().") + } - if (result < 0) { - pass = FALSE; - failure_mssg = "error in H5C_flush_cache()."; + if (dump_stats) { + + H5C_stats(cache_ptr, "test cache", dump_detailed_stats); } - else if ((destroy_entries) && - ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || - (cache_ptr->clean_index_size != 0) || (cache_ptr->dirty_index_size != 0))) { + + if ((pass) && (destroy_entries) && + ((cache_ptr->index_len != 0) || (cache_ptr->index_size != 0) || + (cache_ptr->clean_index_size != 0) || (cache_ptr->dirty_index_size != 0))) { if (verbose) { - HDfprintf(stdout, "%s: unexpected il/is/cis/dis = %lld/%lld/%lld/%lld.\n", FUNC, + + HDfprintf(stdout, "%s: unexpected il/is/cis/dis = %lld/%lld/%lld/%lld.\n", __func__, (long long)(cache_ptr->index_len), (long long)(cache_ptr->index_size), (long long)(cache_ptr->clean_index_size), (long long)(cache_ptr->dirty_index_size)); } @@ -2799,8 +2791,6 @@ flush_cache(H5F_t *file_ptr, hbool_t destroy_entries, hbool_t dump_stats, hbool_ } } - return; - } /* flush_cache() */ /*------------------------------------------------------------------------- @@ -2968,8 +2958,6 @@ insert_entry(H5F_t *file_ptr, int32_t type, int32_t idx, unsigned int flags) HDassert(((entry_ptr->header).type)->id == type); } /* end if */ - return; - } /* insert_entry() */ /*------------------------------------------------------------------------- @@ -3029,8 +3017,6 @@ mark_entry_dirty(int32_t type, int32_t idx) HDassert(((entry_ptr->header).type)->id == type); } - return; - } /* mark_entry_dirty() */ /*------------------------------------------------------------------------- @@ -3129,8 +3115,6 @@ move_entry(H5C_t *cache_ptr, int32_t type, int32_t idx, hbool_t main_addr) HDassert(entry_ptr->is_dirty); } - return; - } /* move_entry() */ /*------------------------------------------------------------------------- @@ -3297,8 +3281,6 @@ protect_entry_ro(H5F_t *file_ptr, int32_t type, int32_t idx) HDassert(((entry_ptr->header).type)->id == type); } - return; - } /* protect_entry_ro() */ /*------------------------------------------------------------------------- @@ -3355,8 +3337,6 @@ pin_entry(int32_t type, int32_t idx) } } /* end if */ - return; - } /* pin_entry() */ /*------------------------------------------------------------------------- @@ -3414,8 +3394,6 @@ unpin_entry(int32_t type, int32_t idx) HDassert(((entry_ptr->header).type)->id == type); } - return; - } /* unpin_entry() */ /*------------------------------------------------------------------------- @@ -3525,22 +3503,25 @@ unprotect_entry(H5F_t *file_ptr, int32_t type, int32_t idx, unsigned int flags) HDassert(entry_ptr->header.ro_ref_count == entry_ptr->ro_ref_count); } - return; - } /* unprotect_entry() */ /*------------------------------------------------------------------------- * Function: row_major_scan_forward() * * Purpose: Do a sequence of inserts, protects, unprotects, moves, - * destroys while scanning through the set of entries. If - * pass is false on entry, do nothing. + * destroys while scanning through the set of entries. If + * pass is false on entry, do nothing. * * Return: void * * Programmer: John Mainzer * 6/12/04 * + * Changes: Updated slist size == dirty index size checks to + * bypass the test if cache_ptr->slist_enabled is FALSE. + * + * JRM -- 5/8/20 + * *------------------------------------------------------------------------- */ void @@ -3555,7 +3536,7 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t int32_t local_max_index; if (verbose) - HDfprintf(stdout, "%s(): entering.\n", FUNC); + HDfprintf(stdout, "%s(): entering.\n", __func__); if (pass) { cache_ptr = file_ptr->shared->cache; @@ -3584,7 +3565,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "1(i, %d, %d) ", type, tmp_idx); insert_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3594,7 +3577,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "2(p, %d, %d) ", type, tmp_idx); protect_entry(file_ptr, type, tmp_idx); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3604,7 +3589,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "3(u, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ /* (don't decrement tmp_idx) */ @@ -3614,7 +3601,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "4(r, %d, %d, %d) ", type, tmp_idx, (int)move_to_main_addr); move_entry(cache_ptr, type, tmp_idx, move_to_main_addr); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3624,7 +3613,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "5(p, %d, %d) ", type, tmp_idx); protect_entry(file_ptr, type, tmp_idx); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx -= 2; @@ -3634,7 +3625,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "6(u, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ if (do_mult_ro_protects) { @@ -3645,7 +3638,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "7(p-ro, %d, %d) ", type, tmp_idx); protect_entry_ro(file_ptr, type, tmp_idx); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3655,7 +3650,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "8(p-ro, %d, %d) ", type, tmp_idx); protect_entry_ro(file_ptr, type, tmp_idx); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3665,7 +3662,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "9(p-ro, %d, %d) ", type, tmp_idx); protect_entry_ro(file_ptr, type, tmp_idx); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ /* (don't decrement tmp_idx) */ @@ -3675,7 +3674,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "10(u-ro, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3685,7 +3686,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "11(u-ro, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3695,7 +3698,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "12(u-ro, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ } /* if ( do_mult_ro_protects ) */ @@ -3704,7 +3709,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "13(p, %d, %d) ", type, idx); protect_entry(file_ptr, type, idx); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx = idx - lag + 2; @@ -3714,7 +3721,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "14(u, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ tmp_idx--; @@ -3724,7 +3733,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "15(p, %d, %d) ", type, tmp_idx); protect_entry(file_ptr, type, tmp_idx); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ if (do_destroys) { @@ -3736,7 +3747,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "16(u, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); break; case 1: @@ -3745,7 +3758,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "17(u, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__NO_FLAGS_SET); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ else { if (verbose) @@ -3753,7 +3768,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t unprotect_entry(file_ptr, type, tmp_idx, (dirty_unprotects ? H5C__DIRTIED_FLAG : H5C__NO_FLAGS_SET)); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end else */ break; @@ -3762,7 +3779,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "19(u-del, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__DELETED_FLAG); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); break; case 3: @@ -3771,7 +3790,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t HDfprintf(stdout, "20(u-del, %d, %d) ", type, tmp_idx); unprotect_entry(file_ptr, type, tmp_idx, H5C__DELETED_FLAG); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ else { if (verbose) @@ -3780,7 +3801,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t unprotect_entry(file_ptr, type, tmp_idx, (dirty_destroys ? H5C__DIRTIED_FLAG : H5C__NO_FLAGS_SET) | H5C__DELETED_FLAG); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end else */ break; @@ -3798,7 +3821,9 @@ row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t unprotect_entry(file_ptr, type, tmp_idx, (dirty_unprotects ? H5C__DIRTIED_FLAG : H5C__NO_FLAGS_SET)); - HDassert(cache_ptr->slist_size == cache_ptr->dirty_index_size); + + HDassert((!cache_ptr->slist_enabled) || + (cache_ptr->slist_size == cache_ptr->dirty_index_size)); } /* end if */ } /* end elsef */ @@ -3843,7 +3868,7 @@ hl_row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, h int32_t local_max_index; if (verbose) - HDfprintf(stdout, "%s(): entering.\n", FUNC); + HDfprintf(stdout, "%s(): entering.\n", __func__); if (pass) { @@ -3906,8 +3931,6 @@ hl_row_major_scan_forward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, h H5C_stats(cache_ptr, "test cache", display_detailed_stats); } - return; - } /* hl_row_major_scan_forward() */ /*------------------------------------------------------------------------- @@ -3937,7 +3960,7 @@ row_major_scan_backward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t int32_t local_max_index; if (verbose) - HDfprintf(stdout, "%s(): Entering.\n", FUNC); + HDfprintf(stdout, "%s(): Entering.\n", __func__); if (pass) { @@ -4168,8 +4191,6 @@ row_major_scan_backward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t H5C_stats(cache_ptr, "test cache", display_detailed_stats); } - return; - } /* row_major_scan_backward() */ /*------------------------------------------------------------------------- @@ -4199,7 +4220,7 @@ hl_row_major_scan_backward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, int32_t local_max_index; if (verbose) - HDfprintf(stdout, "%s(): entering.\n", FUNC); + HDfprintf(stdout, "%s(): entering.\n", __func__); if (pass) { @@ -4262,8 +4283,6 @@ hl_row_major_scan_backward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, H5C_stats(cache_ptr, "test cache", display_detailed_stats); } - return; - } /* hl_row_major_scan_backward() */ /*------------------------------------------------------------------------- @@ -4292,7 +4311,7 @@ col_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t int32_t local_max_index[NUMBER_OF_ENTRY_TYPES]; if (verbose) - HDfprintf(stdout, "%s: entering.\n", FUNC); + HDfprintf(stdout, "%s: entering.\n", __func__); if (pass) { int i; @@ -4356,8 +4375,6 @@ col_major_scan_forward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t H5C_stats(cache_ptr, "test cache", display_detailed_stats); } - return; - } /* col_major_scan_forward() */ /*------------------------------------------------------------------------- @@ -4388,7 +4405,7 @@ hl_col_major_scan_forward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, h int32_t local_max_index; if (verbose) - HDfprintf(stdout, "%s: entering.\n", FUNC); + HDfprintf(stdout, "%s: entering.\n", __func__); if (pass) { @@ -4461,8 +4478,6 @@ hl_col_major_scan_forward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, h H5C_stats(cache_ptr, "test cache", display_detailed_stats); } - return; - } /* hl_col_major_scan_forward() */ /*------------------------------------------------------------------------- @@ -4492,7 +4507,7 @@ col_major_scan_backward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t int32_t local_max_index[NUMBER_OF_ENTRY_TYPES]; if (verbose) - HDfprintf(stdout, "%s: entering.\n", FUNC); + HDfprintf(stdout, "%s: entering.\n", __func__); if (pass) { int i; @@ -4515,7 +4530,7 @@ col_major_scan_backward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t idx = local_max_index[NUMBER_OF_ENTRY_TYPES - 1] + lag; if (verbose) /* 1 */ - HDfprintf(stdout, "%s: point %d.\n", FUNC, mile_stone++); + HDfprintf(stdout, "%s: point %d.\n", __func__, mile_stone++); while ((pass) && ((idx + lag) >= 0)) { type = NUMBER_OF_ENTRY_TYPES - 1; @@ -4557,7 +4572,7 @@ col_major_scan_backward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t } if (verbose) /* 2 */ - HDfprintf(stdout, "%s: point %d.\n", FUNC, mile_stone++); + HDfprintf(stdout, "%s: point %d.\n", __func__, mile_stone++); if ((pass) && (display_stats)) { @@ -4565,9 +4580,7 @@ col_major_scan_backward(H5F_t *file_ptr, int32_t max_index, int32_t lag, hbool_t } if (verbose) - HDfprintf(stdout, "%s: exiting.\n", FUNC); - - return; + HDfprintf(stdout, "%s: exiting.\n", __func__); } /* col_major_scan_backward() */ @@ -4599,7 +4612,7 @@ hl_col_major_scan_backward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, int32_t local_max_index = -1; if (verbose) - HDfprintf(stdout, "%s: entering.\n", FUNC); + HDfprintf(stdout, "%s: entering.\n", __func__); if (pass) { @@ -4672,8 +4685,6 @@ hl_col_major_scan_backward(H5F_t *file_ptr, int32_t max_index, hbool_t verbose, H5C_stats(cache_ptr, "test cache", display_detailed_stats); } - return; - } /* hl_col_major_scan_backward() */ /*------------------------------------------------------------------------- @@ -5042,8 +5053,6 @@ check_and_validate_cache_hit_rate(hid_t file_id, double *hit_rate_ptr, hbool_t d failure_mssg = "Unexpectedly low hit rate."; } - return; - } /* check_and_validate_cache_hit_rate() */ /*------------------------------------------------------------------------- @@ -5161,8 +5170,6 @@ check_and_validate_cache_size(hid_t file_id, size_t *max_size_ptr, size_t *min_c (long)min_clean_size, (long)cur_size, (long)cur_num_entries); } - return; - } /* check_and_validate_cache_size() */ H5_ATTR_PURE hbool_t @@ -5323,8 +5330,6 @@ validate_mdc_config(hid_t file_id, H5AC_cache_config_t *ext_config_ptr, hbool_t } } - return; - } /* validate_mdc_config() */ #if 0 /* debugging functions -- normally commented out */ diff --git a/test/cache_common.h b/test/cache_common.h index 1f3f5ad..8f4e776 100644 --- a/test/cache_common.h +++ b/test/cache_common.h @@ -116,6 +116,62 @@ #define MAX_ADDR (haddr_t)(NOTIFY_ALT_BASE_ADDR + (NOTIFY_ENTRY_SIZE * NUM_NOTIFY_ENTRIES)) #define ADDR_SPACE_SIZE (haddr_t)(MAX_ADDR - BASE_ADDR) +/*********************************************************************** + * + * Macro: H5C_FLUSH_CACHE + * + * Purpose: Wrap a call to H5C_flush_cache() in calls to + * H5C_set_slist_enabled() to setup and take down the slist. + * + * This is necessary, as H5C_flush_cache() needs the + * slist to be active. Further, since it is called + * repeatedly during file flush, it would be inefficient + * for it to setup the slist on entry, and take it down + * on exit. + * + * Note that the slist need not be empty if the flags + * indicate a partial flush (i.e. + * H5C__FLUSH_MARKED_ENTRIES_FLAG). Compute clear_slist + * and pass it into H5C_set_slist_enabled as appropriate. + * + * On error, set pass to FALSE, and set failure_mssg + * to the supplied error message. + * + * Return: N/A + * + * Programmer: John Mainzer + * 5/14/20 + * + * Changes: None. + * + ***********************************************************************/ + +#define H5C_FLUSH_CACHE(file, flags, fail_mssg) \ + { \ + hbool_t clear_slist; \ + herr_t rslt; \ + \ + clear_slist = ((flags & H5C__FLUSH_MARKED_ENTRIES_FLAG) != 0); \ + \ + rslt = H5C_set_slist_enabled((file)->shared->cache, TRUE, FALSE); \ + \ + if (rslt >= 0) { \ + \ + rslt = H5C_flush_cache((file), (flags)); \ + } \ + \ + if (rslt >= 0) { \ + \ + rslt = H5C_set_slist_enabled((file)->shared->cache, FALSE, clear_slist); \ + } \ + \ + if (rslt < 0) { \ + \ + pass = FALSE; \ + failure_mssg = (fail_mssg); \ + } \ + } /* H5C_FLUSH_CACHE */ + #define MAX_PINS \ 8 /* Maximum number of entries that can be \ * directly pinned by a single entry. \ diff --git a/test/cache_image.c b/test/cache_image.c index f5f36bf..f63f04a 100644 --- a/test/cache_image.c +++ b/test/cache_image.c @@ -1475,7 +1475,7 @@ check_cache_image_ctl_flow_1(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -1721,7 +1721,7 @@ check_cache_image_ctl_flow_2(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -2095,7 +2095,7 @@ check_cache_image_ctl_flow_3(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -2431,7 +2431,7 @@ check_cache_image_ctl_flow_4(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -2720,7 +2720,7 @@ check_cache_image_ctl_flow_5(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -2971,7 +2971,7 @@ check_cache_image_ctl_flow_6(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -3420,7 +3420,7 @@ cache_image_smoke_check_1(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -3696,7 +3696,7 @@ cache_image_smoke_check_2(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -4084,7 +4084,7 @@ cache_image_smoke_check_3(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -4463,7 +4463,7 @@ cache_image_smoke_check_4(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; } /* cache_image_smoke_check_4() */ @@ -4984,7 +4984,7 @@ cache_image_smoke_check_5(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -5401,7 +5401,7 @@ cache_image_smoke_check_6(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -5757,7 +5757,7 @@ cache_image_api_error_check_1(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -6185,7 +6185,7 @@ cache_image_api_error_check_2(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -6440,7 +6440,7 @@ cache_image_api_error_check_3(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -6997,7 +6997,7 @@ cache_image_api_error_check_4(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -7455,7 +7455,7 @@ get_free_sections_test(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; @@ -7828,7 +7828,7 @@ evict_on_close_test(hbool_t single_file_vfd) } if (!pass) - HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", FUNC, failure_mssg); + HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n", __func__, failure_mssg); return !pass; #endif /* H5_HAVE_PARALLEL */ diff --git a/test/cache_tagging.c b/test/cache_tagging.c index bcddd5a..06de174 100644 --- a/test/cache_tagging.c +++ b/test/cache_tagging.c @@ -343,11 +343,20 @@ evict_entries(hid_t fid) /* Mark all entries investigated */ mark_all_entries_investigated(fid); + /* setup the skip list prior to calling H5C_flush_cache() */ + if (H5C_set_slist_enabled(f->shared->cache, TRUE, FALSE) < 0) + TEST_ERROR; + /* Evict all we can from the cache to examine full tag creation tree */ /* This function will likely return failure since the root group - * is still protected. Thus, don't check its return value. */ + * is still protected. Thus, don't check its return value. + */ H5C_flush_cache(f, H5C__FLUSH_INVALIDATE_FLAG); + /* shutdown the slist -- allow it to be non-empty */ + if (H5C_set_slist_enabled(f->shared->cache, FALSE, TRUE) < 0) + TEST_ERROR; + return 0; error: diff --git a/test/h5test.h b/test/h5test.h index 81925b9..3736537 100644 --- a/test/h5test.h +++ b/test/h5test.h @@ -89,7 +89,7 @@ H5TEST_DLLVAR MPI_Info h5_io_info_g; /* MPI INFO object for IO */ /* * Print the current location on the standard output stream. */ -#define AT() HDprintf(" at %s:%d in %s()...\n", __FILE__, __LINE__, FUNC); +#define AT() HDprintf(" at %s:%d in %s()...\n", __FILE__, __LINE__, __func__); /* * The name of the test is printed by saying TESTING("something") which will @@ -165,12 +165,8 @@ H5TEST_DLLVAR MPI_Info h5_io_info_g; /* MPI INFO object for IO */ goto error; \ } -/* - * Alarm definitions to wait up (terminate) a test that runs too long. - */ +/* Number of seconds to wait before killing a test (requires alarm(2)) */ #define H5_ALARM_SEC 1200 /* default is 20 minutes */ -#define ALARM_ON TestAlarmOn() -#define ALARM_OFF HDalarm(0) /* Flags for h5_fileaccess_flags() */ #define H5_FILEACCESS_VFD 0x01 diff --git a/test/hdfs.c b/test/hdfs.c index dfaa585..74fc2bd 100644 --- a/test/hdfs.c +++ b/test/hdfs.c @@ -102,7 +102,7 @@ */ #define JSFAILED_AT() \ { \ - HDprintf("*FAILED* at %s:%d in %s()...\n", __FILE__, __LINE__, FUNC); \ + HDprintf("*FAILED* at %s:%d in %s()...\n", __FILE__, __LINE__, __func__); \ } /*---------------------------------------------------------------------------- diff --git a/test/null_vol_connector.c b/test/null_vol_connector.c index b574a8e..2b375d8 100644 --- a/test/null_vol_connector.c +++ b/test/null_vol_connector.c @@ -15,9 +15,6 @@ * (registration, etc.). */ -/* Public HDF5 header */ -#include "hdf5.h" - /* For HDF5 plugin functionality */ #include "H5PLextern.h" diff --git a/test/ohdr.c b/test/ohdr.c index 7801b7a..b7af77f 100644 --- a/test/ohdr.c +++ b/test/ohdr.c @@ -121,8 +121,12 @@ test_cont(char *filename, hid_t fapl) FAIL_STACK_ERROR if (1 != H5O_link(&oh_locB, 1)) FAIL_STACK_ERROR + if (H5AC_prep_for_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_flush(f) < 0) FAIL_STACK_ERROR + if (H5AC_secure_from_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5O__expunge_chunks_test(&oh_locA) < 0) FAIL_STACK_ERROR @@ -1829,8 +1833,12 @@ main(void) FAIL_STACK_ERROR if (1 != H5O_link(&oh_loc, 1)) FAIL_STACK_ERROR + if (H5AC_prep_for_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_flush(f) < 0) FAIL_STACK_ERROR + if (H5AC_secure_from_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_expunge_entry(f, H5AC_OHDR, oh_loc.addr, H5AC__NO_FLAGS_SET) < 0) FAIL_STACK_ERROR if (NULL == H5O_msg_read(&oh_loc, H5O_MTIME_NEW_ID, &ro)) @@ -1846,8 +1854,12 @@ main(void) time_new = 33333333; if (H5O_msg_write(&oh_loc, H5O_MTIME_NEW_ID, 0, 0, &time_new) < 0) FAIL_STACK_ERROR + if (H5AC_prep_for_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_flush(f) < 0) FAIL_STACK_ERROR + if (H5AC_secure_from_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_expunge_entry(f, H5AC_OHDR, oh_loc.addr, H5AC__NO_FLAGS_SET) < 0) FAIL_STACK_ERROR if (NULL == H5O_msg_read(&oh_loc, H5O_MTIME_NEW_ID, &ro)) @@ -1877,8 +1889,12 @@ main(void) if (H5O_msg_create(&oh_loc, H5O_MTIME_ID, 0, 0, &time_new) < 0) FAIL_STACK_ERROR } /* end for */ + if (H5AC_prep_for_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_flush(f) < 0) FAIL_STACK_ERROR + if (H5AC_secure_from_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_expunge_entry(f, H5AC_OHDR, oh_loc.addr, H5AC__NO_FLAGS_SET) < 0) FAIL_STACK_ERROR @@ -1920,8 +1936,12 @@ main(void) time_new = (i + 1) * 1000 + 10; if (H5O_msg_create(&oh_loc, H5O_MTIME_NEW_ID, 0, 0, &time_new) < 0) FAIL_STACK_ERROR + if (H5AC_prep_for_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_flush(f) < 0) FAIL_STACK_ERROR + if (H5AC_secure_from_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_expunge_entry(f, H5AC_OHDR, oh_loc.addr, H5AC__NO_FLAGS_SET) < 0) FAIL_STACK_ERROR } /* end for */ @@ -1949,8 +1969,12 @@ main(void) time_new = 22222222; if (H5O_msg_create(&oh_loc, H5O_MTIME_NEW_ID, H5O_MSG_FLAG_CONSTANT, 0, &time_new) < 0) FAIL_STACK_ERROR + if (H5AC_prep_for_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_flush(f) < 0) FAIL_STACK_ERROR + if (H5AC_secure_from_file_flush(f) < 0) + FAIL_STACK_ERROR if (H5AC_expunge_entry(f, H5AC_OHDR, oh_loc.addr, H5AC__NO_FLAGS_SET) < 0) FAIL_STACK_ERROR if (NULL == H5O_msg_read(&oh_loc, H5O_MTIME_NEW_ID, &ro)) diff --git a/test/page_buffer.c b/test/page_buffer.c index f21c568..b04d1a2 100644 --- a/test/page_buffer.c +++ b/test/page_buffer.c @@ -310,8 +310,7 @@ error: } H5E_END_TRY; return (1); - -} /* create_file() */ +} /* create_file */ /*------------------------------------------------------------------------- * Function: open_file() @@ -353,11 +352,11 @@ open_file(char *filename, hid_t fapl, hsize_t page_size, size_t page_buffer_size if (NULL == (f = (H5F_t *)H5VL_object(file_id))) FAIL_STACK_ERROR; - if (f->shared->pb_ptr == NULL) + if (f->shared->page_buf == NULL) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->page_size != page_size) + if (f->shared->page_buf->page_size != page_size) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->max_size != page_buffer_size) + if (f->shared->page_buf->max_size != page_buffer_size) FAIL_STACK_ERROR; if ((grp_id = H5Gopen2(file_id, "GROUP", H5P_DEFAULT)) < 0) @@ -450,7 +449,7 @@ set_multi_split(const char *env_h5_drvr, hid_t fapl, hsize_t pagesize) /* Set memb_addr aligned */ for (mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt++) memb_addr[mt] = ((memb_addr[mt] + pagesize - 1) / pagesize) * pagesize; - } + } /* end else */ /* Set multi driver with new FAPLs */ if (H5Pset_fapl_multi(fapl, memb_map, memb_fapl_arr, (const char *const *)memb_name, memb_addr, @@ -459,8 +458,9 @@ set_multi_split(const char *env_h5_drvr, hid_t fapl, hsize_t pagesize) /* Free memb_name */ for (mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt++) - free(memb_name[mt]); - } + HDfree(memb_name[mt]); + + } /* end if */ return 0; @@ -534,7 +534,7 @@ test_args(hid_t orig_fapl, const char *env_h5_drvr) /* Test setting a page buffer with a size smaller than a single * page size - should fail */ - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) TEST_ERROR; if (H5Pset_file_space_page_size(fcpl, 512) < 0) @@ -568,7 +568,7 @@ test_args(hid_t orig_fapl, const char *env_h5_drvr) TEST_ERROR; /* Test setting a page buffer with a size equal to a single page size */ - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) TEST_ERROR; if (H5Pset_file_space_page_size(fcpl, 512) < 0) @@ -586,7 +586,7 @@ test_args(hid_t orig_fapl, const char *env_h5_drvr) /* Test setting a page buffer with a size slightly larger than a * single page size */ - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) TEST_ERROR; if (H5Pset_file_space_page_size(fcpl, 512) < 0) @@ -605,7 +605,7 @@ test_args(hid_t orig_fapl, const char *env_h5_drvr) TEST_ERROR; /* Test setting a large page buffer size and page size */ - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) TEST_ERROR; if (H5Pset_file_space_page_size(fcpl, 4194304) < 0) @@ -624,7 +624,7 @@ test_args(hid_t orig_fapl, const char *env_h5_drvr) TEST_ERROR; /* Test setting a 512 byte page buffer size and page size */ - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) TEST_ERROR; if (H5Pset_file_space_page_size(fcpl, 512) < 0) @@ -1200,7 +1200,7 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m * Get the number of pages inserted, and verify that it is the * expected value. */ - base_page_cnt = f->shared->pb_ptr->curr_pages; + base_page_cnt = f->shared->page_buf->curr_pages; if (base_page_cnt != 2) TEST_ERROR; @@ -1228,57 +1228,48 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m page_count++; - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) FAIL_STACK_ERROR; /* update elements 300 - 450, with values 300 - - this will bring two more pages into the page buffer. */ for (i = 0; i < 150; i++) data[i] = i + 300; - if (H5F_block_write(f, H5FD_MEM_DRAW, addr + (sizeof(int) * 300), sizeof(int) * 150, data) < 0) FAIL_STACK_ERROR; - page_count += 2; - - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) FAIL_STACK_ERROR; /* update elements 100 - 300, this will go to disk but also update existing pages in the page buffer. */ for (i = 0; i < 200; i++) data[i] = i + 100; - if (H5F_block_write(f, H5FD_MEM_DRAW, addr + (sizeof(int) * 100), sizeof(int) * 200, data) < 0) FAIL_STACK_ERROR; - - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) FAIL_STACK_ERROR; /* Update elements 225-300 - this will update an existing page in the PB */ /* Changes: 450 - 600; 150 */ for (i = 0; i < 150; i++) data[i] = i + 450; - if (H5F_block_write(f, H5FD_MEM_DRAW, addr + (sizeof(int) * 450), sizeof(int) * 150, data) < 0) FAIL_STACK_ERROR; - - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) FAIL_STACK_ERROR; /* Do a full page write to block 600-800 - should bypass the PB */ for (i = 0; i < 200; i++) data[i] = i + 600; - if (H5F_block_write(f, H5FD_MEM_DRAW, addr + (sizeof(int) * 600), sizeof(int) * 200, data) < 0) FAIL_STACK_ERROR; - - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) FAIL_STACK_ERROR; /* read elements 800 - 1200, this should not affect the PB, and should @@ -1286,7 +1277,6 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m */ if (H5F_block_read(f, H5FD_MEM_DRAW, addr + (sizeof(int) * 800), sizeof(int) * 400, data) < 0) FAIL_STACK_ERROR; - for (i = 0; i < 400; i++) { if (data[i] != -1) { HDfprintf(stderr, "Read different values than written\n"); @@ -1294,9 +1284,8 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m FAIL_STACK_ERROR; } } - - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) FAIL_STACK_ERROR; /* read elements 1200 - 1201, this should read -1 and bring in an @@ -1304,7 +1293,6 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m */ if (H5F_block_read(f, H5FD_MEM_DRAW, addr + (sizeof(int) * 1200), sizeof(int) * 1, data) < 0) FAIL_STACK_ERROR; - for (i = 0; i < 1; i++) { if (data[i] != -1) { HDfprintf(stderr, "Read different values than written\n"); @@ -1313,9 +1301,8 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m } } page_count++; - - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) TEST_ERROR; /* read elements 175 - 225, this should use the PB existing pages */ @@ -1323,7 +1310,6 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m /* read elements 175 - 225, this should use the PB existing pages */ if (H5F_block_read(f, H5FD_MEM_DRAW, addr + (sizeof(int) * 350), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - for (i = 0; i < 100; i++) { if (data[i] != i + 350) { HDfprintf(stderr, "Read different values than written\n"); @@ -1331,9 +1317,8 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m TEST_ERROR; } } - - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) TEST_ERROR; /* read elements 0 - 800 using the VFD. @@ -1346,7 +1331,6 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m */ if (H5FD_read(f->shared->lf, H5FD_MEM_DRAW, addr, sizeof(int) * 800, data) < 0) FAIL_STACK_ERROR; - i = 0; while (i < 800) { if ((vfd_swmr_mode) || (i >= 100 && i < 300) || i >= 600) { @@ -1372,8 +1356,8 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m if (H5F_block_read(f, H5FD_MEM_DRAW, addr, sizeof(int) * 800, data) < 0) FAIL_STACK_ERROR; - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) TEST_ERROR; for (i = 0; i < 800; i++) { @@ -1396,8 +1380,8 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m page_count -= 2; - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) TEST_ERROR; /* read elements 0 - 1000.. this should go to disk then update the @@ -1425,8 +1409,8 @@ test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr, bool vfd_swmr_m i++; } - if ((f->shared->pb_ptr->curr_pages != page_count + base_page_cnt) && - ((vfd_swmr_mode) && (f->shared->pb_ptr->curr_pages != base_page_cnt))) + if ((f->shared->page_buf->curr_pages != page_count + base_page_cnt) && + ((vfd_swmr_mode) && (f->shared->page_buf->curr_pages != base_page_cnt))) TEST_ERROR; if (H5Fclose(file_id) < 0) @@ -1541,7 +1525,7 @@ test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr) FAIL_STACK_ERROR; /* there should be no raw data pages in the page buffer -- verify this */ - if (f->shared->pb_ptr->curr_rd_pages != 0) + if (f->shared->page_buf->curr_rd_pages != 0) FAIL_STACK_ERROR; /* update the first 100 elements to have values 0-99 - this will be @@ -1557,7 +1541,7 @@ test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr) search_addr = addr; if ((H5PB_page_exists(f->shared, search_addr, &page_exists) < 0) || (!page_exists)) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 1) + if (f->shared->page_buf->curr_rd_pages != 1) FAIL_STACK_ERROR; /* update elements 300 - 450, with values 300 - 449 - this will @@ -1579,13 +1563,13 @@ test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr) search_addr = addr + sizeof(int) * 400; if ((H5PB_page_exists(f->shared, search_addr, &page_exists) < 0) || (!page_exists)) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 2) + if (f->shared->page_buf->curr_rd_pages != 2) FAIL_STACK_ERROR; /* at this point, the page buffer entries created at file open should * have been evicted. */ - if (f->shared->pb_ptr->curr_md_pages != 0) + if (f->shared->page_buf->curr_md_pages != 0) FAIL_STACK_ERROR; /* update elements 300-301, this will update page addr + 200 in @@ -1605,9 +1589,9 @@ test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr) search_addr = addr + sizeof(int) * 400; if ((H5PB_page_exists(f->shared, search_addr, &page_exists) < 0) || (!page_exists)) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 2) + if (f->shared->page_buf->curr_rd_pages != 2) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 2) + if (f->shared->page_buf->curr_pages != 2) FAIL_STACK_ERROR; /* read elements 1200 - 1201, this should read -1, bring in page @@ -1632,9 +1616,9 @@ test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr) search_addr = addr + sizeof(int) * 1200; if ((H5PB_page_exists(f->shared, search_addr, &page_exists) < 0) || (!page_exists)) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 2) + if (f->shared->page_buf->curr_rd_pages != 2) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 2) + if (f->shared->page_buf->curr_pages != 2) FAIL_STACK_ERROR; /* read elements 350 - 450, this should load page addr + 400 and move @@ -1659,9 +1643,9 @@ test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr) search_addr = addr + sizeof(int) * 400; if ((H5PB_page_exists(f->shared, search_addr, &page_exists) < 0) || (!page_exists)) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 2) + if (f->shared->page_buf->curr_rd_pages != 2) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 2) + if (f->shared->page_buf->curr_pages != 2) FAIL_STACK_ERROR; /* update elements 400 - 1400 to value 0, this will overwrite and @@ -1677,9 +1661,9 @@ test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr) search_addr = addr + sizeof(int) * 200; if ((H5PB_page_exists(f->shared, search_addr, &page_exists) < 0) || (!page_exists)) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 1) + if (f->shared->page_buf->curr_rd_pages != 1) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 1) + if (f->shared->page_buf->curr_pages != 1) FAIL_STACK_ERROR; if (H5Fclose(file_id) < 0) @@ -1759,7 +1743,7 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) int64_t base_meta_cnt = 0; int i; int num_elements = 1000; - H5PB_t *pb_ptr; + H5PB_t *page_buf; haddr_t meta_addr = HADDR_UNDEF; haddr_t raw_addr = HADDR_UNDEF; int * data = NULL; @@ -1806,10 +1790,10 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) */ HDassert(f); HDassert(f->shared); - HDassert(f->shared->pb_ptr); + HDassert(f->shared->page_buf); - base_raw_cnt = f->shared->pb_ptr->curr_rd_pages; - base_meta_cnt = f->shared->pb_ptr->curr_md_pages; + base_raw_cnt = f->shared->page_buf->curr_rd_pages; + base_meta_cnt = f->shared->page_buf->curr_md_pages; if (base_raw_cnt != 0) TEST_ERROR; @@ -1817,12 +1801,12 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (base_meta_cnt != 2) TEST_ERROR; - pb_ptr = f->shared->pb_ptr; + page_buf = f->shared->page_buf; - if (pb_ptr->min_md_pages != 5) + if (page_buf->min_md_pages != 5) TEST_ERROR; - if (pb_ptr->min_rd_pages != 0) + if (page_buf->min_rd_pages != 0) TEST_ERROR; if (HADDR_UNDEF == (meta_addr = H5MF_alloc(f, H5FD_MEM_SUPER, sizeof(int) * (size_t)num_elements))) @@ -1852,10 +1836,10 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 800), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != base_meta_cnt) + if (f->shared->page_buf->curr_pages != base_meta_cnt) FAIL_STACK_ERROR; - if (pb_ptr->curr_rd_pages != 0) + if (page_buf->curr_rd_pages != 0) TEST_ERROR; /* write all meta data, this would end up in page buffer */ @@ -1874,13 +1858,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_read(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 800), sizeof(int) * 50, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (pb_ptr->curr_md_pages != 5) + if (page_buf->curr_md_pages != 5) TEST_ERROR; - if (pb_ptr->curr_rd_pages != 0) + if (page_buf->curr_rd_pages != 0) TEST_ERROR; /* write and read more raw data and make sure that they don't end up in @@ -1901,13 +1885,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_read(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 900), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (pb_ptr->curr_md_pages != 5) + if (page_buf->curr_md_pages != 5) TEST_ERROR; - if (pb_ptr->curr_rd_pages != 0) + if (page_buf->curr_rd_pages != 0) TEST_ERROR; if (H5Fclose(file_id) < 0) @@ -1932,10 +1916,10 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) */ HDassert(f); HDassert(f->shared); - HDassert(f->shared->pb_ptr); + HDassert(f->shared->page_buf); - base_raw_cnt = f->shared->pb_ptr->curr_rd_pages; - base_meta_cnt = f->shared->pb_ptr->curr_md_pages; + base_raw_cnt = f->shared->page_buf->curr_rd_pages; + base_meta_cnt = f->shared->page_buf->curr_md_pages; if (base_raw_cnt != 0) TEST_ERROR; @@ -1943,11 +1927,11 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (base_meta_cnt != 0) TEST_ERROR; - pb_ptr = f->shared->pb_ptr; + page_buf = f->shared->page_buf; - if (pb_ptr->min_md_pages != 0) + if (page_buf->min_md_pages != 0) TEST_ERROR; - if (pb_ptr->min_rd_pages != 5) + if (page_buf->min_rd_pages != 5) FAIL_STACK_ERROR; if (HADDR_UNDEF == (meta_addr = H5MF_alloc(f, H5FD_MEM_SUPER, sizeof(int) * (size_t)num_elements))) @@ -1978,9 +1962,9 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 800), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 0) + if (f->shared->page_buf->curr_pages != 0) FAIL_STACK_ERROR; - if (pb_ptr->curr_md_pages != 0) + if (page_buf->curr_md_pages != 0) TEST_ERROR; /* write/read all raw data, this would end up in page buffer */ @@ -1999,13 +1983,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_read(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 800), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (pb_ptr->curr_rd_pages != 5) + if (page_buf->curr_rd_pages != 5) TEST_ERROR; - if (pb_ptr->curr_md_pages != 0) + if (page_buf->curr_md_pages != 0) TEST_ERROR; /* write and read more meta data and make sure that they don't end up in @@ -2026,13 +2010,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_read(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 900), sizeof(int) * 50, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (pb_ptr->curr_rd_pages != 5) + if (page_buf->curr_rd_pages != 5) TEST_ERROR; - if (pb_ptr->curr_md_pages != 0) + if (page_buf->curr_md_pages != 0) TEST_ERROR; if (H5Fclose(file_id) < 0) @@ -2062,21 +2046,20 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) * metadata entry counts. */ - base_raw_cnt = f->shared->pb_ptr->curr_rd_pages; - base_meta_cnt = f->shared->pb_ptr->curr_md_pages; + base_raw_cnt = f->shared->page_buf->curr_rd_pages; + base_meta_cnt = f->shared->page_buf->curr_md_pages; if (base_raw_cnt != 0) TEST_ERROR; if (base_meta_cnt != 2) TEST_ERROR; + page_buf = f->shared->page_buf; - pb_ptr = f->shared->pb_ptr; - - if (pb_ptr->min_md_pages != 2) + if (page_buf->min_md_pages != 2) TEST_ERROR; - if (pb_ptr->min_rd_pages != 2) + if (page_buf->min_rd_pages != 2) TEST_ERROR; if (HADDR_UNDEF == (meta_addr = H5MF_alloc(f, H5FD_MEM_SUPER, sizeof(int) * (size_t)num_elements))) @@ -2114,10 +2097,10 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 800), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 5 - base_meta_cnt) + if (f->shared->page_buf->curr_rd_pages != 5 - base_meta_cnt) TEST_ERROR; /* add 3 meta entries evicting 1 raw entry */ @@ -2130,13 +2113,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 400), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 3) + if (f->shared->page_buf->curr_md_pages != 3) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 2) + if (f->shared->page_buf->curr_rd_pages != 2) TEST_ERROR; /* adding more meta entires should replace meta entries since raw data @@ -2148,10 +2131,10 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 800), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 3) + if (f->shared->page_buf->curr_md_pages != 3) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 2) + if (f->shared->page_buf->curr_rd_pages != 2) TEST_ERROR; /* bring existing raw entires up the LRU */ @@ -2164,10 +2147,10 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_read(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 350), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 2) + if (f->shared->page_buf->curr_md_pages != 2) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 3) + if (f->shared->page_buf->curr_rd_pages != 3) TEST_ERROR; /* read a metadata entry to force the flush of the metadata entries @@ -2187,10 +2170,10 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_read(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 550), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 2) + if (f->shared->page_buf->curr_md_pages != 2) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 3) + if (f->shared->page_buf->curr_rd_pages != 3) TEST_ERROR; /* adding 2 meta entries should replace 2 entires at the bottom @@ -2202,34 +2185,30 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_read(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 242), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 2) + if (f->shared->page_buf->curr_md_pages != 2) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 3) + if (f->shared->page_buf->curr_rd_pages != 3) TEST_ERROR; if (H5Fclose(file_id) < 0) FAIL_STACK_ERROR; HDprintf("\tMinimum metadata threshold = 20%%\n"); - /* keep 5 pages at max in the page buffer and 1 meta page minimum */ if (H5Pset_page_buffer_size(fapl, sizeof(int) * 1000, 39, 0) < 0) TEST_ERROR; - /* create the file */ if ((file_id = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) FAIL_STACK_ERROR; - /* Get a pointer to the internal file object */ if (NULL == (f = (H5F_t *)H5VL_object(file_id))) FAIL_STACK_ERROR; + page_buf = f->shared->page_buf; - pb_ptr = f->shared->pb_ptr; - - if (pb_ptr->min_md_pages != 1) + if (page_buf->min_md_pages != 1) TEST_ERROR; - if (pb_ptr->min_rd_pages != 0) + if (page_buf->min_rd_pages != 0) TEST_ERROR; if (HADDR_UNDEF == (meta_addr = H5MF_alloc(f, H5FD_MEM_SUPER, sizeof(int) * (size_t)num_elements))) @@ -2267,13 +2246,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 800), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 1) + if (f->shared->page_buf->curr_md_pages != 1) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 4) + if (f->shared->page_buf->curr_rd_pages != 4) TEST_ERROR; /* add 2 meta entries evicting 2 raw entries */ @@ -2283,13 +2262,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 200), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 3) + if (f->shared->page_buf->curr_md_pages != 3) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 2) + if (f->shared->page_buf->curr_rd_pages != 2) TEST_ERROR; /* bring the rest of the raw entries up the LRU */ @@ -2306,13 +2285,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 100), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 1) + if (f->shared->page_buf->curr_md_pages != 1) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 4) + if (f->shared->page_buf->curr_rd_pages != 4) TEST_ERROR; /* write one more raw entry which should replace another raw entry @@ -2321,13 +2300,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_DRAW, raw_addr + (sizeof(int) * 300), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 1) + if (f->shared->page_buf->curr_md_pages != 1) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 4) + if (f->shared->page_buf->curr_rd_pages != 4) TEST_ERROR; /* write a metadata entry that should replace the metadata entry @@ -2336,13 +2315,13 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) if (H5F_block_write(f, H5FD_MEM_SUPER, meta_addr + (sizeof(int) * 500), sizeof(int) * 100, data) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_pages != 5) + if (f->shared->page_buf->curr_pages != 5) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->curr_md_pages != 1) + if (f->shared->page_buf->curr_md_pages != 1) TEST_ERROR; - if (f->shared->pb_ptr->curr_rd_pages != 4) + if (f->shared->page_buf->curr_rd_pages != 4) TEST_ERROR; if (H5Fclose(file_id) < 0) @@ -2361,19 +2340,19 @@ test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr) return 0; error: + H5E_BEGIN_TRY { - if (fapl != H5I_INVALID_HID) - H5Pclose(fapl); - if (fcpl != H5I_INVALID_HID) - H5Pclose(fcpl); - if (file_id != H5I_INVALID_HID) - H5Fclose(file_id); - if (data != NULL) + H5Pclose(fapl); + H5Pclose(fcpl); + H5Fclose(file_id); + if (data) HDfree(data); } H5E_END_TRY; + return 1; + } /* test_min_threshold */ /*------------------------------------------------------------------------- @@ -2442,7 +2421,7 @@ test_stats_collection(hid_t orig_fapl, const char *env_h5_drvr) if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR; - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) TEST_ERROR; if (H5Pset_file_space_page_size(fcpl, sizeof(int) * 200) < 0) @@ -2465,10 +2444,10 @@ test_stats_collection(hid_t orig_fapl, const char *env_h5_drvr) */ HDassert(f); HDassert(f->shared); - HDassert(f->shared->pb_ptr); + HDassert(f->shared->page_buf); - base_raw_cnt = f->shared->pb_ptr->curr_rd_pages; - base_meta_cnt = f->shared->pb_ptr->curr_md_pages; + base_raw_cnt = f->shared->page_buf->curr_rd_pages; + base_meta_cnt = f->shared->page_buf->curr_md_pages; if (base_raw_cnt != 0) TEST_ERROR; @@ -2575,47 +2554,50 @@ test_stats_collection(hid_t orig_fapl, const char *env_h5_drvr) FAIL_STACK_ERROR; /* was 9, 16, 0 -- review this */ - if ((f->shared->pb_ptr->accesses[0] != 10) || (f->shared->pb_ptr->accesses[1] != 16) || - (f->shared->pb_ptr->accesses[2] != 0)) { + if ((f->shared->page_buf->accesses[0] != 10) || (f->shared->page_buf->accesses[1] != 16) || + (f->shared->page_buf->accesses[2] != 0)) { - HDfprintf(stderr, "accesses[] = {%d, %d, %d}. {10, 16, 0} expected\n", f->shared->pb_ptr->accesses[0], - f->shared->pb_ptr->accesses[1], f->shared->pb_ptr->accesses[2]); + HDfprintf(stderr, "accesses[] = {%" PRId64 ", %" PRId64 ", %" PRId64 "}. {10, 16, 0} expected\n", + f->shared->page_buf->accesses[0], f->shared->page_buf->accesses[1], + f->shared->page_buf->accesses[2]); TEST_ERROR; } /* was 2, 1, 1 -- review this */ - if ((f->shared->pb_ptr->bypasses[0] != 0) || (f->shared->pb_ptr->bypasses[1] != 1) || - (f->shared->pb_ptr->bypasses[2] != 1)) { + if ((f->shared->page_buf->bypasses[0] != 0) || (f->shared->page_buf->bypasses[1] != 1) || + (f->shared->page_buf->bypasses[2] != 1)) { - HDfprintf(stderr, "bypasses[] = {%d, %d, %d}. {0, 1, 1} expected\n", f->shared->pb_ptr->bypasses[0], - f->shared->pb_ptr->bypasses[1], f->shared->pb_ptr->bypasses[2]); + HDfprintf(stderr, "bypasses[] = {%" PRId64 ", %" PRId64 ", %" PRId64 "}. {0, 1, 1} expected\n", + f->shared->page_buf->bypasses[0], f->shared->page_buf->bypasses[1], + f->shared->page_buf->bypasses[2]); TEST_ERROR; } - if ((f->shared->pb_ptr->hits[0] != 0) || (f->shared->pb_ptr->hits[1] != 4) || - (f->shared->pb_ptr->hits[2] != 0)) { + if ((f->shared->page_buf->hits[0] != 0) || (f->shared->page_buf->hits[1] != 4) || + (f->shared->page_buf->hits[2] != 0)) { - HDfprintf(stderr, "hits[] = {%d, %d, %d}. {0, 4, 0} expected\n", f->shared->pb_ptr->hits[0], - f->shared->pb_ptr->hits[1], f->shared->pb_ptr->hits[2]); + HDfprintf(stderr, "hits[] = {%" PRId64 ", %" PRId64 ", %" PRId64 "}. {0, 4, 0} expected\n", + f->shared->page_buf->hits[0], f->shared->page_buf->hits[1], f->shared->page_buf->hits[2]); TEST_ERROR; } /* was 9, 16. 0 -- review this */ - if ((f->shared->pb_ptr->misses[0] != 10) || (f->shared->pb_ptr->misses[1] != 16) || - (f->shared->pb_ptr->misses[2] != 0)) { + if ((f->shared->page_buf->misses[0] != 10) || (f->shared->page_buf->misses[1] != 16) || + (f->shared->page_buf->misses[2] != 0)) { - HDfprintf(stderr, "misses[] = {%d, %d, %d}. {10, 16, 0} expected\n", f->shared->pb_ptr->misses[0], - f->shared->pb_ptr->misses[1], f->shared->pb_ptr->misses[2]); + HDfprintf(stderr, "misses[] = {%" PRId64 ", %" PRId64 ", %" PRId64 "}. {10, 16, 0} expected\n", + f->shared->page_buf->misses[0], f->shared->page_buf->misses[1], + f->shared->page_buf->misses[2]); TEST_ERROR; } /* was 7, 9, 0 -- review this */ - if ((f->shared->pb_ptr->evictions[0] != 9) || (f->shared->pb_ptr->evictions[1] != 9) || - (f->shared->pb_ptr->evictions[2] != 0)) { + if ((f->shared->page_buf->evictions[0] != 9) || (f->shared->page_buf->evictions[1] != 9) || + (f->shared->page_buf->evictions[2] != 0)) { - HDfprintf(stderr, "evictions[] = {%d, %d, %d}. {%d, %d, 0} expected\n", - f->shared->pb_ptr->evictions[0], f->shared->pb_ptr->evictions[1], - f->shared->pb_ptr->evictions[2], 7, 9); + HDfprintf(stderr, "evictions[] = {%" PRId64 ", %" PRId64 ", %" PRId64 "}. {7, 9, 0} expected\n", + f->shared->page_buf->evictions[0], f->shared->page_buf->evictions[1], + f->shared->page_buf->evictions[2]); TEST_ERROR; } @@ -2669,7 +2651,6 @@ test_stats_collection(hid_t orig_fapl, const char *env_h5_drvr) if (H5Freset_page_buffering_stats(file_id) < 0) FAIL_STACK_ERROR; - if (H5Fget_page_buffering_stats(file_id, accesses, hits, misses, evictions, bypasses) < 0) FAIL_STACK_ERROR; @@ -2693,7 +2674,7 @@ test_stats_collection(hid_t orig_fapl, const char *env_h5_drvr) TEST_ERROR; if (evictions[1] != 0) TEST_ERROR; - } + } /* end block */ if (H5Fclose(file_id) < 0) FAIL_STACK_ERROR; @@ -2709,13 +2690,10 @@ test_stats_collection(hid_t orig_fapl, const char *env_h5_drvr) error: H5E_BEGIN_TRY { - if (fapl != H5I_INVALID_HID) - H5Pclose(fapl); - if (fcpl != H5I_INVALID_HID) - H5Pclose(fcpl); - if (file_id != H5I_INVALID_HID) - H5Fclose(file_id); - if (data != NULL) + H5Pclose(fapl); + H5Pclose(fcpl); + H5Fclose(file_id); + if (data) HDfree(data); } H5E_END_TRY; @@ -2767,7 +2745,7 @@ verify_page_buffering_disabled(hid_t orig_fapl, const char *env_h5_drvr) if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) FAIL_STACK_ERROR; - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) FAIL_STACK_ERROR; if (H5Pset_file_space_page_size(fcpl, 4096) < 0) @@ -2792,7 +2770,7 @@ verify_page_buffering_disabled(hid_t orig_fapl, const char *env_h5_drvr) if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) FAIL_STACK_ERROR; - if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, 1) < 0) + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0) FAIL_STACK_ERROR; if (H5Pset_file_space_page_size(fcpl, 4096) < 0) @@ -2832,12 +2810,9 @@ error: H5E_BEGIN_TRY { - if (fapl != H5I_INVALID_HID) - H5Pclose(fapl); - if (fcpl != H5I_INVALID_HID) - H5Pclose(fcpl); - if (file_id != H5I_INVALID_HID) - H5Fclose(file_id); + H5Pclose(fapl); + H5Pclose(fcpl); + H5Fclose(file_id); } H5E_END_TRY; @@ -3264,7 +3239,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool * Get the number of pages inserted, and verify that it is the * expected value. */ - base_page_cnt = f->shared->pb_ptr->curr_pages; + base_page_cnt = f->shared->page_buf->curr_pages; if (base_page_cnt != 1) TEST_ERROR; @@ -3355,7 +3330,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 1; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) @@ -3389,13 +3364,14 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 0) || (f->shared->pb_ptr->md_write_splits != 0)) + if ((f->shared->page_buf->md_read_splits != 0) || (f->shared->page_buf->md_write_splits != 0)) TEST_ERROR; - if ((f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 4) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 3) || (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 1)) + if ((f->shared->page_buf->accesses[H5PB__STATS_MD] != 4) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 3) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 1)) TEST_ERROR; /* 2) splittable md entry that is page aligned and exactly two @@ -3430,7 +3406,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 3; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) @@ -3464,25 +3440,25 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 0) || (f->shared->pb_ptr->md_write_splits != 0)) + if ((f->shared->page_buf->md_read_splits != 0) || (f->shared->page_buf->md_write_splits != 0)) TEST_ERROR; if (vfd_swmr_mode) { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->hits[H5PB__STATS_MPMDE] != 3) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 1) || - (f->shared->pb_ptr->loads[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MPMDE] != 1)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->hits[H5PB__STATS_MPMDE] != 3) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 1) || + (f->shared->page_buf->loads[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->insertions[H5PB__STATS_MPMDE] != 1)) TEST_ERROR; } else { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->hits[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 2) || - (f->shared->pb_ptr->loads[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MPMDE] != 0)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->accesses[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->hits[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 2) || + (f->shared->page_buf->loads[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->insertions[H5PB__STATS_MPMDE] != 0)) TEST_ERROR; } @@ -3506,7 +3482,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 5; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) @@ -3540,14 +3516,15 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 2) || (f->shared->pb_ptr->md_write_splits != 2)) + if ((f->shared->page_buf->md_read_splits != 2) || (f->shared->page_buf->md_write_splits != 2)) TEST_ERROR; - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MD] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 8) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 6) || (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 2)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MD] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 8) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 6) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 2)) TEST_ERROR; /* 4) splittable md entry that is exactly one page and one byte @@ -3572,19 +3549,19 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 7; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->md_write_splits != 1) + if (f->shared->page_buf->md_write_splits != 1) TEST_ERROR; if (H5F_block_read(f, H5FD_MEM_SUPER, start_addr, test_len, read_buf) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->md_read_splits != 1) + if (f->shared->page_buf->md_read_splits != 1) TEST_ERROR; for (i = 0; i < (int)test_len; i++) { @@ -3612,14 +3589,15 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 2) || (f->shared->pb_ptr->md_write_splits != 2)) + if ((f->shared->page_buf->md_read_splits != 2) || (f->shared->page_buf->md_write_splits != 2)) TEST_ERROR; - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MD] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 8) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 6) || (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 2)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MD] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 8) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 6) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 2)) TEST_ERROR; /* 5) splittable md entry that is exactly one page and two bytes @@ -3643,7 +3621,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 9; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) @@ -3677,14 +3655,15 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 2) || (f->shared->pb_ptr->md_write_splits != 2)) + if ((f->shared->page_buf->md_read_splits != 2) || (f->shared->page_buf->md_write_splits != 2)) TEST_ERROR; - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MD] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 12) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 9) || (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 3) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 3) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 3)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MD] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 12) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 9) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 3) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 3) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 3)) TEST_ERROR; /* 6) splittable md entry that is two bytes long, and starts one @@ -3708,7 +3687,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 11; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) @@ -3742,14 +3721,15 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 2) || (f->shared->pb_ptr->md_write_splits != 2)) + if ((f->shared->page_buf->md_read_splits != 2) || (f->shared->page_buf->md_write_splits != 2)) TEST_ERROR; - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MD] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 8) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 6) || (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 2)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MD] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 8) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 6) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 2)) TEST_ERROR; /* 7) splittable md entry that is page aligned and is exactly two @@ -3791,7 +3771,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 13; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) @@ -3825,31 +3805,31 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 2) || (f->shared->pb_ptr->md_write_splits != 2)) + if ((f->shared->page_buf->md_read_splits != 2) || (f->shared->page_buf->md_write_splits != 2)) TEST_ERROR; if (vfd_swmr_mode) { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 4) || - (f->shared->pb_ptr->hits[H5PB__STATS_MPMDE] != 3) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 3) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 1) || - (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->loads[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MPMDE] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 1)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 4) || + (f->shared->page_buf->hits[H5PB__STATS_MPMDE] != 3) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 3) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 1) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->loads[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MPMDE] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 1)) TEST_ERROR; } else { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 4) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 3) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 2) || - (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 1)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 4) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 3) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 2) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 1)) TEST_ERROR; } @@ -3893,19 +3873,19 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 15; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->md_write_splits != 1) + if (f->shared->page_buf->md_write_splits != 1) TEST_ERROR; if (H5F_block_read(f, H5FD_MEM_SUPER, start_addr, test_len, read_buf) < 0) FAIL_STACK_ERROR; - if (f->shared->pb_ptr->md_read_splits != 1) + if (f->shared->page_buf->md_read_splits != 1) TEST_ERROR; for (i = 0; i < (int)test_len; i++) { @@ -3933,31 +3913,31 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 2) || (f->shared->pb_ptr->md_write_splits != 2)) + if ((f->shared->page_buf->md_read_splits != 2) || (f->shared->page_buf->md_write_splits != 2)) TEST_ERROR; if (vfd_swmr_mode) { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 4) || - (f->shared->pb_ptr->hits[H5PB__STATS_MPMDE] != 3) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 3) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 1) || - (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->loads[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MPMDE] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 1)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 4) || + (f->shared->page_buf->hits[H5PB__STATS_MPMDE] != 3) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 3) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 1) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->loads[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MPMDE] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 1)) TEST_ERROR; } else { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 4) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 3) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 2) || - (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 1)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 4) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 3) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 2) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 1)) TEST_ERROR; } @@ -3998,7 +3978,7 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool for (i = 0; i < (int)test_len; i++) write_buf[i] = 17; - if (H5PB_reset_stats(f->shared->pb_ptr) < 0) + if (H5PB_reset_stats(f->shared->page_buf) < 0) FAIL_STACK_ERROR; if (H5F_block_write(f, H5FD_MEM_SUPER, start_addr, test_len, write_buf) < 0) @@ -4032,31 +4012,31 @@ md_entry_splitting_boundary_test(hid_t orig_fapl, const char *env_h5_drvr, bool } } - if ((f->shared->pb_ptr->md_read_splits != 2) || (f->shared->pb_ptr->md_write_splits != 2)) + if ((f->shared->page_buf->md_read_splits != 2) || (f->shared->page_buf->md_write_splits != 2)) TEST_ERROR; if (vfd_swmr_mode) { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 8) || - (f->shared->pb_ptr->hits[H5PB__STATS_MPMDE] != 3) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 6) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 1) || - (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->loads[H5PB__STATS_MPMDE] != 0) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MPMDE] != 1) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 2)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->accesses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 8) || + (f->shared->page_buf->hits[H5PB__STATS_MPMDE] != 3) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 6) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 1) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->loads[H5PB__STATS_MPMDE] != 0) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->insertions[H5PB__STATS_MPMDE] != 1) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 2)) TEST_ERROR; } else { - if ((f->shared->pb_ptr->bypasses[H5PB__STATS_MPMDE] != 4) || - (f->shared->pb_ptr->accesses[H5PB__STATS_MD] != 8) || - (f->shared->pb_ptr->hits[H5PB__STATS_MD] != 6) || - (f->shared->pb_ptr->misses[H5PB__STATS_MPMDE] != 2) || - (f->shared->pb_ptr->misses[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->loads[H5PB__STATS_MD] != 2) || - (f->shared->pb_ptr->insertions[H5PB__STATS_MD] != 2)) + if ((f->shared->page_buf->bypasses[H5PB__STATS_MPMDE] != 4) || + (f->shared->page_buf->accesses[H5PB__STATS_MD] != 8) || + (f->shared->page_buf->hits[H5PB__STATS_MD] != 6) || + (f->shared->page_buf->misses[H5PB__STATS_MPMDE] != 2) || + (f->shared->page_buf->misses[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->loads[H5PB__STATS_MD] != 2) || + (f->shared->page_buf->insertions[H5PB__STATS_MD] != 2)) TEST_ERROR; } @@ -4141,12 +4121,12 @@ main(void) HDputs("Skip page buffering test because paged aggregation is disabled for multi/split drivers"); HDputs("Furthermore, VFD SWMR is not (yet) expected to work with multi/split drivers"); HDexit(EXIT_SUCCESS); - } + } /* end if */ if ((fapl = h5_fileaccess()) < 0) { nerrors++; PUTS_ERROR("Can't get VFD-dependent fapl") - } + } /* end if */ /* Push API context */ if (H5CX_push() < 0) diff --git a/test/ros3.c b/test/ros3.c index 54518f4..b7b27ed 100644 --- a/test/ros3.c +++ b/test/ros3.c @@ -106,7 +106,7 @@ */ #define JSFAILED_AT() \ { \ - HDprintf("*FAILED* at %s:%d in %s()...\n", __FILE__, __LINE__, FUNC); \ + HDprintf("*FAILED* at %s:%d in %s()...\n", __FILE__, __LINE__, __func__); \ } /*---------------------------------------------------------------------------- diff --git a/test/s3comms.c b/test/s3comms.c index 6202af3..cec7a27 100644 --- a/test/s3comms.c +++ b/test/s3comms.c @@ -96,7 +96,7 @@ */ #define JSFAILED_AT() \ { \ - HDprintf("*FAILED* at %s:%d in %s()...\n", __FILE__, __LINE__, FUNC); \ + HDprintf("*FAILED* at %s:%d in %s()...\n", __FILE__, __LINE__, __func__); \ } /*---------------------------------------------------------------------------- diff --git a/test/swmr_addrem_writer.c b/test/swmr_addrem_writer.c index 9455653..5f0bba0 100644 --- a/test/swmr_addrem_writer.c +++ b/test/swmr_addrem_writer.c @@ -170,7 +170,7 @@ addrem_records(hid_t fid, unsigned verbose, unsigned long nops, unsigned long fl hid_t file_sid; /* Dataset's space ID */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Decide whether to shrink or expand, and by how much */ count[1] = (hsize_t)HDrandom() % (MAX_SIZE_CHANGE * 2) + 1; diff --git a/test/swmr_common.c b/test/swmr_common.c index d59f7a7..46c80cf 100644 --- a/test/swmr_common.c +++ b/test/swmr_common.c @@ -97,7 +97,7 @@ char VDS_DSET_NAME[NAME_LEN] = "vds_dset"; *------------------------------------------------------------------------- */ symbol_info_t * -choose_dataset(unsigned *levelp, unsigned *offsetp) +choose_dataset(unsigned *levelp, unsigned *offsetp, hbool_t verbose) { static unsigned ncalls = 0; unsigned level; /* The level of the dataset */ @@ -110,7 +110,7 @@ choose_dataset(unsigned *levelp, unsigned *offsetp) offset = (unsigned)(HDrandom() % (int)symbol_count[level]); ++ncalls; - if ((ncalls % 1000) == 0) { + if ((ncalls % 1000) == 0 && verbose) { fprintf(stderr, "%s: call %u chose level %u offset %u\n", __func__, ncalls, level, offset); } if (levelp != NULL) diff --git a/test/swmr_common.h b/test/swmr_common.h index 7e0ee23..3a3f41d 100644 --- a/test/swmr_common.h +++ b/test/swmr_common.h @@ -64,7 +64,7 @@ H5TEST_DLLVAR unsigned symbol_count[NLEVELS]; extern "C" { #endif -H5TEST_DLL symbol_info_t *choose_dataset(unsigned *, unsigned *); +H5TEST_DLL symbol_info_t *choose_dataset(unsigned *, unsigned *, hbool_t); H5TEST_DLL hid_t create_symbol_datatype(void); H5TEST_DLL int generate_name(char *name_buf, unsigned level, unsigned count); H5TEST_DLL int generate_symbols(void); diff --git a/test/swmr_reader.c b/test/swmr_reader.c index 5e79f87..cc16b92 100644 --- a/test/swmr_reader.c +++ b/test/swmr_reader.c @@ -249,7 +249,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned symbol_info_t *sym; /* Symbol to use */ /* Determine the symbol, within all symbols */ - if (NULL == (sym = choose_dataset(NULL, NULL))) + if (NULL == (sym = choose_dataset(NULL, NULL, verbose))) return -1; sym_rand[v] = sym; diff --git a/test/swmr_remove_reader.c b/test/swmr_remove_reader.c index 3beb35d..0850b0b 100644 --- a/test/swmr_remove_reader.c +++ b/test/swmr_remove_reader.c @@ -244,7 +244,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nseconds, uns symbol_info_t *sym; /* Symbol to use */ /* Determine the symbol, within all symbols */ - if (NULL == (sym = choose_dataset(NULL, NULL))) + if (NULL == (sym = choose_dataset(NULL, NULL, verbose))) return -1; sym_rand[v] = sym; diff --git a/test/swmr_remove_writer.c b/test/swmr_remove_writer.c index fddff12..e209285 100644 --- a/test/swmr_remove_writer.c +++ b/test/swmr_remove_writer.c @@ -156,7 +156,7 @@ remove_records(hid_t fid, unsigned verbose, unsigned long nshrinks, unsigned lon hsize_t remove_size; /* Size to reduce dataset dimension by */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Shrink the dataset's dataspace */ remove_size = (hsize_t)HDrandom() % MAX_REMOVE_SIZE + 1; diff --git a/test/swmr_sparse_reader.c b/test/swmr_sparse_reader.c index af7ded3..6c1bd19 100644 --- a/test/swmr_sparse_reader.c +++ b/test/swmr_sparse_reader.c @@ -232,7 +232,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nrecords, uns unsigned long file_u; /* Attribute sequence number (writer's "u") */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Fill in "nrecords" field. Note that this depends on the writer * using the same algorithm and "nrecords" */ diff --git a/test/swmr_sparse_writer.c b/test/swmr_sparse_writer.c index f7460ee..2b46bb2 100644 --- a/test/swmr_sparse_writer.c +++ b/test/swmr_sparse_writer.c @@ -177,7 +177,7 @@ add_records(hid_t fid, unsigned verbose, unsigned long nrecords, unsigned long f hbool_t corked; /* Whether the dataset was corked */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* If this is the first time the dataset has been opened, extend it and * add the sequence attribute */ diff --git a/test/swmr_start_write.c b/test/swmr_start_write.c index bc0d0d2..9c51402 100644 --- a/test/swmr_start_write.c +++ b/test/swmr_start_write.c @@ -241,7 +241,7 @@ add_records(hid_t fid, hbool_t verbose, FILE *verbose_file, unsigned long nrecor hid_t file_sid; /* Dataset's space ID */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Set the record's ID (equal to its position) */ record.rec_id = symbol->nrecords; diff --git a/test/swmr_writer.c b/test/swmr_writer.c index 40f4d68..6743f45 100644 --- a/test/swmr_writer.c +++ b/test/swmr_writer.c @@ -177,7 +177,7 @@ add_records(hid_t fid, hbool_t verbose, FILE *verbose_file, unsigned long nrecor hid_t file_sid; /* Dataset's space ID */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Set the record's ID (equal to its position) */ record.rec_id = symbol->nrecords; diff --git a/test/tarray.c b/test/tarray.c index 8b518cf..af167a7 100644 --- a/test/tarray.c +++ b/test/tarray.c @@ -157,8 +157,9 @@ test_array_atomic_1d(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -490,8 +491,9 @@ test_array_array_atomic(void) /* Check the array dimensions */ for (i = 0; i < ndims1; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -668,8 +670,9 @@ test_array_compound_atomic(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -889,8 +892,9 @@ test_array_compound_array(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -951,9 +955,9 @@ test_array_compound_array(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf( - "Nested array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Nested array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -1210,8 +1214,9 @@ test_array_vlen_atomic(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -1440,8 +1445,9 @@ test_array_vlen_array(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -1472,8 +1478,9 @@ test_array_vlen_array(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -2081,9 +2088,9 @@ test_compat(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf( - "Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ @@ -2129,9 +2136,9 @@ test_compat(void) /* Check the array dimensions */ for (i = 0; i < ndims; i++) if (rdims1[i] != tdims1[i]) { - TestErrPrintf( - "Array dimension information doesn't match!, rdims1[%d]=%llu, tdims1[%d]=%llu\n", i, - rdims1[i], i, tdims1[i]); + TestErrPrintf("Array dimension information doesn't match!, rdims1[%d]=%" PRIuHSIZE + ", tdims1[%d]=%" PRIuHSIZE "\n", + i, rdims1[i], i, tdims1[i]); continue; } /* end if */ diff --git a/test/testframe.c b/test/testframe.c index f805997..d3f0211 100644 --- a/test/testframe.c +++ b/test/testframe.c @@ -320,9 +320,9 @@ PerformTests(void) MESSAGE(5, ("===============================================\n")); Test[Loop].NumErrors = num_errs; Test_parameters = Test[Loop].Parameters; - ALARM_ON; + TestAlarmOn(); Test[Loop].Call(); - ALARM_OFF; + TestAlarmOff(); Test[Loop].NumErrors = num_errs - Test[Loop].NumErrors; MESSAGE(5, ("===============================================\n")); MESSAGE(5, ("There were %d errors detected.\n\n", (int)Test[Loop].NumErrors)); @@ -620,12 +620,15 @@ SetTest(const char *testname, int action) } } -/* - * Enable alarm on test execution, configurable by environment variable +/* Enable a test timer that will kill long-running tests, the time is configurable + * via an environment variable. + * + * Only useful on POSIX systems where alarm(2) is present. */ void TestAlarmOn(void) { +#ifdef H5_HAVE_ALARM char * env_val = HDgetenv("HDF5_ALARM_SECONDS"); /* Alarm environment */ unsigned long alarm_sec = H5_ALARM_SEC; /* Number of seconds before alarm goes off */ @@ -635,4 +638,15 @@ TestAlarmOn(void) /* Set the number of seconds before alarm goes off */ HDalarm((unsigned)alarm_sec); +#endif +} + +/* Disable the test timer */ +void +TestAlarmOff(void) +{ +#ifdef H5_HAVE_ALARM + /* Set the number of seconds to zero */ + HDalarm(0); +#endif } diff --git a/test/testvfdswmr.sh.in b/test/testvfdswmr.sh.in index 1fccfe6..d187d97 100644 --- a/test/testvfdswmr.sh.in +++ b/test/testvfdswmr.sh.in @@ -27,17 +27,9 @@ srcdir=@srcdir@ ## test parameters ############################################################################### -Nreaders=5 # number of readers to launch -Nrdrs_spa=3 # number of sparse readers to launch -Nrecords=400000 # number of records to write -Nrecs_rem=40000 # number of times to shrink -Nrecs_spa=20000 # number of records to write in the sparse test -Nsecs_add=5 # number of seconds per read interval -Nsecs_rem=3 # number of seconds per read interval -Nsecs_addrem=8 # number of seconds per read interval nerrors=0 nsofterrors=0 # soft errors are expected to occur some of the time - # on a couple of nondeterministic tests. + # on a couple of nondeterministic tests. ############################################################################### ## test parameters for vfd_swmr_bigset_writer.c and vfd_swmr_group_writer.c @@ -46,35 +38,16 @@ nsofterrors=0 # soft errors are expected to occur some of the time ## 1: Default run. ## 2+: Quick run ############################################################################### +# if [[ -z $HDF5TestExpress ]]; then # Set to default when not set HDF5TestExpress=1 fi -## -##Default setting -BIGSET_n=25 # -n option: # of iterations -BIGSET_few_s=20 # -s option: # of datasets (for few_big test) -BIGSET_many_s=200 # -s option: # of datasets (for many_small test) -GROUP_n=40 # -n option: # of groups (for group test) -GROUP_attr_n=1 # -n option: # of groups (for group attribute test) -GROUP_op_n=1 # -n option: # of groups (for group attribute test) - -if [[ "$HDF5TestExpress" -eq 0 ]] ; then # Setting for exhaustive run - BIGSET_n=50 - BIGSET_few_s=40 - BIGSET_many_s=400 - GROUP_n=400 - GROUP_attr_n=2 - GROUP_op_n=2 -elif [[ "$HDF5TestExpress" -gt 1 ]]; then # Setting for quick run - BIGSET_n=10 - BIGSET_few_s=10 - BIGSET_many_s=100 - GROUP_n=20 -fi ############################################################################### -## definitions for message file to coordinate test runs +## For legacy tests: +## definitions for message file to coordinate test runs ############################################################################### +# WRITER_MESSAGE=VFD_SWMR_WRITER_MESSAGE # The message file created by writer that the open is complete # This should be the same as the define in "./swmr_common.h" MESSAGE_TIMEOUT=300 # Message timeout length in secs @@ -83,30 +56,33 @@ MESSAGE_TIMEOUT=300 # Message timeout length in secs ############################################################################### ## For attrdset test: definitions for fifo files to coordinate test runs ############################################################################### +# ATTRDSET_FIFO_WRITER_TO_READER=fifo_attrdset_writer_to_reader ATTRDSET_FIFO_READER_TO_WRITER=fifo_attrdset_reader_to_writer ############################################################################### ## For dsetops test: definitions for fifo files to coordinate test runs ############################################################################### +# DSETOPS_FIFO_WRITER_TO_READER=fifo_dsetops_writer_to_reader DSETOPS_FIFO_READER_TO_WRITER=fifo_dsetops_reader_to_writer ############################################################################### +## For dsetchks test: definitions for fifo files to coordinate test runs +############################################################################### +# +DSETCHKS_FIFO_WRITER_TO_READER=fifo_dsetchks_writer_to_reader +DSETCHKS_FIFO_READER_TO_WRITER=fifo_dsetchks_reader_to_writer + +############################################################################### ## short hands and function definitions ############################################################################### +# DPRINT=: # Set to "echo Debug:" for debugging printing, # else ":" for noop. IFDEBUG=: # Set to null to turn on debugging, else ":" for noop. -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -# -TESTING() { - SPACES=" " - echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' -} - +# For legacy tests: # To wait for the writer message file or till the maximum # of seconds is reached # $1 is the message file to wait for # This performs similar function as the routine h5_wait_message() in test/h5test.c @@ -165,10 +141,15 @@ if [ $rc -ne 0 ] ; then exit 0 fi -all_tests="generator expand shrink expand_shrink sparse vlstr_null vlstr_oob zoo groups attrdset dsetops" -all_tests="${all_tests} groups_attrs os_groups_attrs groups_ops os_groups_ops few_big many_small" +all_tests="generator expand shrink expand_shrink sparse vlstr_null vlstr_oob zoo" +all_tests="${all_tests} groups groups_attrs groups_ops few_big many_small attrdset" tests=${all_tests} +# For exhaustive run, add: os_groups_attrs, os_groups_ops, dsetops, dsetchks +if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run + all_tests="${all_tests} os_groups_attrs os_groups_ops dsetops dsetchks" +fi + if [ $# -gt 0 ]; then tests= fi @@ -211,13 +192,38 @@ mkdir vfd_swmr_test cd vfd_swmr_test - +############################################################################### +# +# Legacy SWMR tests +# +############################################################################### +# +# +# Default setting +Nreaders=5 # number of readers to launch +Nrdrs_spa=3 # number of sparse readers to launch +Nrecords=200000 # number of records to write +Nrecs_rem=40000 # number of times to shrink +Nrecs_spa=20000 # number of records to write in the sparse test +Nsecs_add=5 # number of seconds per read interval +Nsecs_rem=3 # number of seconds per read interval +Nsecs_addrem=8 # number of seconds per read interval +compress_list=("") # No filter for default and quick runs +# +# +# Setting for exhaustive run +if [[ "$HDF5TestExpress" -eq 0 ]] ; then + Nrecords=400000 # Increase the number of records to write + compress_list=("" "-c 5") # Enable filter +fi +# +# # Loop over index types for index_type in "-i ea" "-i b2" do # Try without compression, only; uncomment "-c 5" to try with compression. - for compress in "" "-c 5" + for compress in "${compress_list[@]}"; do echo echo "** Loop testing parameters: $index_type $compress" @@ -261,7 +267,7 @@ do echo launch the vfd_swmr_writer seed="" # Put -r <random seed> command here catch_out_err_and_rc vfd_swmr_writer \ - ../vfd_swmr_writer -o $Nrecords $seed & + ../vfd_swmr_writer -q -o $Nrecords $seed & pid_writer=$! $DPRINT pid_writer=$pid_writer @@ -270,14 +276,14 @@ do # # Launch the Readers #declare -a seeds=(<seed1> <seed2> <seed3> ... ) - echo launch $Nreaders vfd_swmr_readers + echo launch $Nreaders vfd_swmr_readers ......may take some time...... pid_readers="" n=0 while [ $n -lt $Nreaders ]; do #seed="-r ${seeds[$n]}" seed="" catch_out_err_and_rc vfd_swmr_reader.$n \ - ../vfd_swmr_reader $Nsecs_add $seed & + ../vfd_swmr_reader -q $Nsecs_add $seed & pid_readers="$pid_readers $!" n=`expr $n + 1` done @@ -328,7 +334,7 @@ do echo launch the vfd_swmr_remove_writer seed="" # Put -r <random seed> command here catch_out_err_and_rc vfd_swmr_writer \ - ../vfd_swmr_remove_writer -o $Nrecs_rem $seed & + ../vfd_swmr_remove_writer -q -o $Nrecs_rem $seed & pid_writer=$! $DPRINT pid_writer=$pid_writer @@ -339,12 +345,12 @@ do #declare -a seeds=(<seed1> <seed2> <seed3> ... ) n=0 pid_readers="" - echo launch $Nreaders swmr_remove_readers + echo launch $Nreaders swmr_remove_readers ......may take some time ...... while [ $n -lt $Nreaders ]; do #seed="-r ${seeds[$n]}" seed="" catch_out_err_and_rc vfd_swmr_reader.$n \ - ../vfd_swmr_remove_reader $Nsecs_rem $seed & + ../vfd_swmr_remove_reader -q $Nsecs_rem $seed & pid_readers="$pid_readers $!" n=`expr $n + 1` done @@ -396,7 +402,7 @@ do # Launch the Writer (not in parallel - just to rebuild the datasets) echo launch the vfd_swmr_writer seed="" # Put -r <random seed> command here - ../vfd_swmr_writer -W $Nrecords $seed + ../vfd_swmr_writer -q -W $Nrecords $seed if test $? -ne 0; then echo writer had error nerrors=`expr $nerrors + 1` @@ -409,7 +415,7 @@ do echo launch the vfd_swmr_addrem_writer seed="" # Put -r <random seed> command here catch_out_err_and_rc vfd_swmr_writer \ - ../vfd_swmr_addrem_writer $Nrecords $seed & + ../vfd_swmr_addrem_writer -q $Nrecords $seed & pid_writer=$! $DPRINT pid_writer=$pid_writer @@ -420,12 +426,12 @@ do #declare -a seeds=(<seed1> <seed2> <seed3> ... ) n=0 pid_readers="" - echo launch $Nreaders vfd_swmr_remove_readers + echo launch $Nreaders vfd_swmr_remove_readers ...... may take some time ...... while [ $n -lt $Nreaders ]; do #seed="-r ${seeds[$n]}" seed="" catch_out_err_and_rc vfd_swmr_reader.$n \ - ../vfd_swmr_remove_reader $Nsecs_addrem $seed & + ../vfd_swmr_remove_reader -q $Nsecs_addrem $seed & pid_readers="$pid_readers $!" n=`expr $n + 1` done @@ -483,7 +489,7 @@ do # Launch the Sparse writer echo launch the vfd_swmr_sparse_writer catch_out_err_and_rc vfd_swmr_writer nice -n 20 \ - ../vfd_swmr_sparse_writer $Nrecs_spa & + ../vfd_swmr_sparse_writer -q $Nrecs_spa & pid_writer=$! $DPRINT pid_writer=$pid_writer @@ -493,7 +499,7 @@ do # Launch the Sparse readers n=0 pid_readers="" - echo launch $Nrdrs_spa vfd_swmr_sparse_readers + echo launch $Nrdrs_spa vfd_swmr_sparse_readers ..... may take some time ...... while [ $n -lt $Nrdrs_spa ]; do # The sparse reader spits out a LOT of data so it's set to 'quiet' catch_out_err_and_rc vfd_swmr_reader.$n \ @@ -540,9 +546,15 @@ do done done +############################################################################### +# +# "vlstr_null" and "vlstr_oob" tests # # Test variable-length strings, expecting errors. # +############################################################################### +# +# for ty in null oob; do if [ ${ty} = null ]; then @@ -555,7 +567,7 @@ for ty in null oob; do echo "## VL string 2 - expect out-of-bounds access" fi - echo launch vfd_swmr_vlstr_writer + echo launch vfd_swmr_vlstr_writer ..... may take some time ...... catch_out_err_and_rc vfd_swmr_vlstr_writer \ ../vfd_swmr_vlstr_writer -n 500 -q -t ${ty} & pid_writer=$! @@ -591,10 +603,16 @@ for ty in null oob; do rm -f vfd_swmr_vlstr_reader.*.{out,rc} done +############################################################################### +# +# "zoo" tests # # Make sure that a "zoo"---the variety of HDF5 object types---can be # read and written by VFD SWMR. # +############################################################################### +# +# if [ ${do_zoo:-no} = yes ]; then rm -f ./shared_tick_num echo launch vfd_swmr_zoo_writer @@ -632,110 +650,34 @@ if [ ${do_zoo:-no} = yes ]; then rm -f vfd_swmr_zoo_reader.*.{out,rc} fi -# attrdset test -for options in "-p -g -a 10 -v -m -d 10 -c 3 -u 5" "-k -a 20 -v -m -d 5"; do - # - # Test a few big datasets of one and two dimensions. - # - if [ ${do_attrdset:-no} = no ]; then - continue - fi - - # Clean up any existing fifo files from previous runs - if [ -e ./$ATTRDSET_FIFO_WRITER_TO_READER ]; then # If writer fifo file is found - rm -f ./$ATTRDSET_FIFO_WRITER_TO_READER - fi - if [ -e ./$ATTRDSET_FIFO_READER_TO_WRITER ]; then # If reader fifo file is found - rm -f ./$ATTRDSET_FIFO_READER_TO_WRITER - fi - - echo launch vfd_swmr_attrdset_writer attrdset, options $options - catch_out_err_and_rc vfd_swmr_attrdset_writer \ - ../vfd_swmr_attrdset_writer $options & - pid_writer=$! - - catch_out_err_and_rc vfd_swmr_attrdset_reader \ - ../vfd_swmr_attrdset_reader $options & - pid_reader=$! - - # Wait for the reader to finish before signaling the - # writer to quit: the writer holds the file open so that the - # reader will find the shadow file when it opens - # the .h5 file. - wait $pid_reader - wait $pid_writer - - # Collect exit code of the reader - if [ $(cat vfd_swmr_attrdset_reader.rc) -ne 0 ]; then - echo reader had error - nerrors=$((nerrors + 1)) - fi - - # Collect exit code of the writer - if [ $(cat vfd_swmr_attrdset_writer.rc) -ne 0 ]; then - echo writer had error - nerrors=$((nerrors + 1)) - fi - - # Clean up output files - rm -f vfd_swmr_attrdset_writer.{out,rc} - rm -f vfd_swmr_attrdset_reader.*.{out,rc} -done - -# dsetops test -for options in "-p -e 20 -t" "-g -m 5 -n 2 -s 10 -w 7" "-k -m 10 -n 5 -r 5 -l 10"; do - # - # - if [ ${do_dsetops:-no} = no ]; then - continue - fi - # Clean up any existing fifo files from previous runs - if [ -e ./$DSETOPS_FIFO_WRITER_TO_READER ]; then # If writer fifo file is found - rm -f ./$DSETOPS_FIFO_WRITER_TO_READER - fi - if [ -e ./$DSETOPS_FIFO_READER_TO_WRITER ]; then # If reader fifo file is found - rm -f ./$DSETOPS_FIFO_READER_TO_WRITER - fi - # - echo launch vfd_swmr_dsetops_writer dsetops, options $options - catch_out_err_and_rc vfd_swmr_dsetops_writer \ - ../vfd_swmr_dsetops_writer $options & - pid_writer=$! - - catch_out_err_and_rc vfd_swmr_dsetops_reader \ - ../vfd_swmr_dsetops_reader $options & - pid_reader=$! - - # Wait for the reader to finish before signaling the - # writer to quit: the writer holds the file open so that the - # reader will find the shadow file when it opens - # the .h5 file. - wait $pid_reader - wait $pid_writer - - # Collect exit code of the reader - if [ $(cat vfd_swmr_dsetops_reader.rc) -ne 0 ]; then - echo reader had error - nerrors=$((nerrors + 1)) - fi - - # Collect exit code of the writer - if [ $(cat vfd_swmr_dsetops_writer.rc) -ne 0 ]; then - echo writer had error - nerrors=$((nerrors + 1)) - fi - - # Clean up output files - rm -f vfd_swmr_dsetops_writer.{out,rc} - rm -f vfd_swmr_dsetops_reader.*.{out,rc} -done +############################################################################### +# +# "groups" test # -# Make sure that we can create GROUP_n groups (20, 40, or 400 depending on the HDF5TestExpress level) +# Make sure that we can create GROUP_n groups +# (10, 20, or 400 depending on the HDF5TestExpress level) # while a reader waits for each to appear. # +############################################################################### +# +# +# Default setting +# +GROUP_n=20 # -n option: # of groups (for "groups" test) +# +# +# Setting for exhaustive and quick runs +# +if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run + GROUP_n=400 +elif [[ "$HDF5TestExpress" -gt 1 ]]; then # quick run + GROUP_n=10 +fi +# +# if [ ${do_groups:-no} = yes ]; then - echo launch vfd_swmr_group_writer + echo launch vfd_swmr_group_writer ......may take some time...... catch_out_err_and_rc vfd_swmr_group_writer \ ../vfd_swmr_group_writer -q -c 10 -n $GROUP_n & pid_writer=$! @@ -768,17 +710,37 @@ if [ ${do_groups:-no} = yes ]; then rm -f vfd_swmr_group_reader.*.{out,rc} fi +############################################################################### +# +# "groups_attrs" test +# # The group attribute test takes longer. -# So for standard run and quick run, we -# shorten the number of tests. The standard -# run covers all the features we need to -# test. The quick run doesn't cover the -# attribute storage change between dense and -# compact. -# The exhaustive run tries to test a feature -# per test from scratch. -# +# So for standard run and quick run, we shorten the number of tests. +# The standard run covers all the features we need to test. +# The quick run doesn't cover the attribute storage change +# between dense and compact. +# The exhaustive run tries to test a feature per test from scratch. +# +############################################################################### +# +# +# Default setting +# +GROUP_attr_n=1 # -n option: # of groups (for group attribute test) grp_attr_list=( + "dense-del-to-compact" + "modify" + "remove-vstr" + "modify-vstr" + "del-ohr-block" + ) +# +# +# Setting for exhaustive and quick runs +# +if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run + GROUP_attr_n=2 + grp_attr_list=( "compact" "dense" "compact-del" @@ -792,33 +754,22 @@ grp_attr_list=( "add-ohr-block" "del-ohr-block" ) -grp_sub_attr_list=( - "dense-del-to-compact" - "modify" - "remove-vstr" - "modify-vstr" - "del-ohr-block" - ) - -grp_short_sub_attr_list=( +elif [[ "$HDF5TestExpress" -gt 1 ]] ; then # quick run + grp_attr_list=( "dense" "modify" "remove-vstr" "modify-vstr" "del-ohr-block" ) - -if [[ "$HDF5TestExpress" -eq 1 ]] ; then #Setting for standard run - grp_attr_list=("${grp_sub_attr_list[@]}") -elif [[ "$HDF5TestExpress" -gt 1 ]] ; then #Setting for quick run - grp_attr_list=("${grp_short_sub_attr_list[@]}") fi - +# +# for options in ${grp_attr_list[*]}; do if [ ${do_groups_attrs:-no} = no ]; then continue fi - echo launch vfd_swmr_group attribute: $options + echo launch vfd_swmr_group attribute: $options ......may take some time...... catch_out_err_and_rc vfd_swmr_group_writer \ ../vfd_swmr_group_writer -q -c 1 -n $GROUP_attr_n -a 1 -A $options & pid_writer=$! @@ -851,6 +802,12 @@ for options in ${grp_attr_list[*]}; do rm -f vfd_swmr_group_reader.*.{out,rc} done +############################################################################### +# +# "os_groups_attrs" test +# +# Only for exhaustive run +# # The following tests are for add/del/modify attributes for # groups created with the old-style. # Check https://portal.hdfgroup.org/display/HDF5/Groups for @@ -859,6 +816,9 @@ done # and deletion tests. Other test names have the same meaning # as those of the new-style group tests. # +############################################################################### +# +# os_grp_attr_list=( "compact" "compact-del" @@ -868,22 +828,14 @@ os_grp_attr_list=( "modify-vstr" "add-ohr-block" "del-ohr-block" - ) -os_grp_sub_attr_list=( - "modify" - "remove-vstr" - "modify-vstr" - "del-ohr-block" - ) -if [[ "$HDF5TestExpress" -gt 0 ]] ; then #Setting for standard run - os_grp_attr_list=("${os_grp_sub_attr_list[@]}") -fi - + ) +# +# for options in ${os_grp_attr_list[*]}; do if [ ${do_os_groups_attrs:-no} = no ]; then continue fi - echo launch vfd_swmr_group attribute with old-style group: $options + echo launch vfd_swmr_group attribute with old-style group: $options ......may take some time...... catch_out_err_and_rc vfd_swmr_group_writer \ ../vfd_swmr_group_writer -q -G -c 1 -n $GROUP_attr_n -a 1 -A $options & pid_writer=$! @@ -916,34 +868,55 @@ for options in ${os_grp_attr_list[*]}; do rm -f vfd_swmr_group_reader.*.{out,rc} done +############################################################################### +# +# "groups_ops" tests +# # The group operation test takes longer. -# So for the quick run, we -# shorten the number of tests. +# So for the quick run, we shorten the number of tests. # The essential features are covered. +# +############################################################################### +# +# +# Default setting +# +GROUP_op_n=1 # -n option: # of groups (for group operation test) grp_op_list=( "grp-creation" "grp-deletion" "grp-move" + "grp-compact-t-dense" + "grp-dense-t-compact" + ) +# +# +# Setting for exhaustive and quick run +# +if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run + GROUP_op_n=2 + grp_op_list=( + "grp-creation" + "grp-deletion" + "grp-move" "grp-ins-links" "grp-del-links" "grp-compact-t-dense" "grp-dense-t-compact" ) -grp_sub_op_list=( +elif [[ "$HDF5TestExpress" -gt 1 ]] ; then # quick run + grp_op_list=( "grp-move" "grp-dense-t-compact" ) - - -if [[ "$HDF5TestExpress" -gt 1 ]] ; then #Setting for express run - grp_op_list=("${grp_sub_op_list[@]}") fi - +# +# for options in ${grp_op_list[*]}; do if [ ${do_groups_ops:-no} = no ]; then continue fi - echo launch vfd_swmr_group operations: $options + echo launch vfd_swmr_group operations: $options ......may take some time...... catch_out_err_and_rc vfd_swmr_group_writer \ ../vfd_swmr_group_writer -q -c 1 -n $GROUP_op_n -O $options & pid_writer=$! @@ -976,7 +949,17 @@ for options in ${grp_op_list[*]}; do rm -f vfd_swmr_group_reader.*.{out,rc} done +############################################################################### +# +# Setting for "os_groups_ops" test +# +# Only for exhaustive run +# # Test the group operations for old-style +# +############################################################################### +# +# os_grp_op_list=( "grp-creation" "grp-deletion" @@ -984,22 +967,13 @@ os_grp_op_list=( "grp-ins-links" "grp-del-links" ) -os_grp_sub_op_list=( - "grp-move" - "grp-ins-links" - "grp-del-links" - ) - - -if [[ "$HDF5TestExpress" -gt 1 ]] ; then #Setting for express run - os_grp_op_list=("${os_grp_sub_op_list[@]}") -fi - +# +# for options in ${os_grp_op_list[*]}; do if [ ${do_os_groups_ops:-no} = no ]; then continue fi - echo launch vfd_swmr_group operations with old-style group: $options + echo launch vfd_swmr_group operations with old-style group: $options ......may take some time...... catch_out_err_and_rc vfd_swmr_group_writer \ ../vfd_swmr_group_writer -q -G -c 1 -n $GROUP_op_n -O $options & pid_writer=$! @@ -1033,6 +1007,36 @@ for options in ${os_grp_op_list[*]}; do done # bigset test for smaller chunks +======= + +############################################################################### +# +# Setting for bigset (few_big and many_small) tests +# +############################################################################### +# +# +# Default setting +# +BIGSET_n=25 # -n option: # of iterations +BIGSET_few_s=10 # -s option: # of datasets (for few_big test) +BIGSET_many_s=100 # -s option: # of datasets (for many_small test) +# +# +# Setting for exhaustive and quick runs +# +if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run + BIGSET_n=50 + BIGSET_few_s=40 + BIGSET_many_s=1000 +elif [[ "$HDF5TestExpress" -gt 1 ]]; then # quick run + BIGSET_n=10 + BIGSET_few_s=3 + BIGSET_many_s=50 +fi +# +# + for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F" "-d 1 -M -F"; do if [ ${do_many_small:-no} = no ]; then continue @@ -1097,7 +1101,7 @@ for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F if [ ${do_few_big:-no} = no ]; then continue fi - echo launch vfd_swmr_bigset_writer few big, options $options + echo launch vfd_swmr_bigset_writer few big, options $options ......may take some time...... catch_out_err_and_rc vfd_swmr_bigset_writer \ ../vfd_swmr_bigset_writer -n $BIGSET_n $options -s $BIGSET_few_s -r 256 -c 256 -q -l 3 & pid_writer=$! @@ -1131,6 +1135,196 @@ for options in "-d 1" "-d 1 -F" "-d 2" "-d 2 -F" "-d 1 -V" "-d 1 -M" "-d 1 -V -F done ############################################################################### +# +# "attrdset" test +# +############################################################################### +# +# +# Default setting +# +attrdset_list=( + "-g -a 8 -v -m -d 8 -c 3 -u 5 -q" + ) +# +# +# Setting for exhaustive +# +if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run + attrdset_list=( + "-p -g -a 10 -v -m -d 10 -c 3 -u 5 -q" + "-k -a 20 -v -m -d 5 -q" + ) +fi +# +# +for options in "${attrdset_list[@]}"; do + if [ ${do_attrdset:-no} = no ]; then + continue + fi + + # Clean up any existing fifo files from previous runs + if [ -e ./$ATTRDSET_FIFO_WRITER_TO_READER ]; then # If writer fifo file is found + rm -f ./$ATTRDSET_FIFO_WRITER_TO_READER + fi + if [ -e ./$ATTRDSET_FIFO_READER_TO_WRITER ]; then # If reader fifo file is found + rm -f ./$ATTRDSET_FIFO_READER_TO_WRITER + fi + + echo launch vfd_swmr_attrdset_writer attrdset, options $options ......may take some time...... + catch_out_err_and_rc vfd_swmr_attrdset_writer \ + ../vfd_swmr_attrdset_writer $options & + pid_writer=$! + + catch_out_err_and_rc vfd_swmr_attrdset_reader \ + ../vfd_swmr_attrdset_reader $options & + pid_reader=$! + + # Wait for the reader to finish before signaling the + # writer to quit: the writer holds the file open so that the + # reader will find the shadow file when it opens + # the .h5 file. + wait $pid_reader + wait $pid_writer + + # Collect exit code of the reader + if [ $(cat vfd_swmr_attrdset_reader.rc) -ne 0 ]; then + echo reader had error + nerrors=$((nerrors + 1)) + fi + + # Collect exit code of the writer + if [ $(cat vfd_swmr_attrdset_writer.rc) -ne 0 ]; then + echo writer had error + nerrors=$((nerrors + 1)) + fi + + # Clean up output files + rm -f vfd_swmr_attrdset_writer.{out,rc} + rm -f vfd_swmr_attrdset_reader.*.{out,rc} +done + +############################################################################### +# +# "dsetops" test +# +# Only for exhaustive run +# +############################################################################### +# +# +for options in "-p -e 20 -t -q" "-g -m 5 -n 2 -s 10 -w 7 -q" "-k -m 10 -n 5 -r 5 -l 10 -q"; do + # + # + if [ ${do_dsetops:-no} = no ]; then + continue + fi + # Clean up any existing fifo files from previous runs + if [ -e ./$DSETOPS_FIFO_WRITER_TO_READER ]; then # If writer fifo file is found + rm -f ./$DSETOPS_FIFO_WRITER_TO_READER + fi + if [ -e ./$DSETOPS_FIFO_READER_TO_WRITER ]; then # If reader fifo file is found + rm -f ./$DSETOPS_FIFO_READER_TO_WRITER + fi + # + echo launch vfd_swmr_dsetops_writer dsetops, options $options ......may take some time...... + catch_out_err_and_rc vfd_swmr_dsetops_writer \ + ../vfd_swmr_dsetops_writer $options & + pid_writer=$! + + catch_out_err_and_rc vfd_swmr_dsetops_reader \ + ../vfd_swmr_dsetops_reader $options & + pid_reader=$! + + # Wait for the reader to finish before signaling the + # writer to quit: the writer holds the file open so that the + # reader will find the shadow file when it opens + # the .h5 file. + wait $pid_reader + wait $pid_writer + + # Collect exit code of the reader + if [ $(cat vfd_swmr_dsetops_reader.rc) -ne 0 ]; then + echo reader had error + nerrors=$((nerrors + 1)) + fi + + # Collect exit code of the writer + if [ $(cat vfd_swmr_dsetops_writer.rc) -ne 0 ]; then + echo writer had error + nerrors=$((nerrors + 1)) + fi + + # Clean up output files + rm -f vfd_swmr_dsetops_writer.{out,rc} + rm -f vfd_swmr_dsetops_reader.*.{out,rc} +done + +############################################################################### +# +# "dsetchks" test +# +# Only for exhaustive run +# +############################################################################### +# +# +dsetchks_list=( + "-s -m 8 -n 3 -g 1 -q" + "-i -o -g 3 -q" + "-f -p 4 -q" + "-e -m 3 -n 5 -t 1 -q" + "-r -m 11 -n 5 -l 7 -q" + "-f -x 5 -y 2 -q" + ) +for options in "${dsetchks_list[@]}"; do + # + # + if [ ${do_dsetchks:-no} = no ]; then + continue + fi + # Clean up any existing fifo files from previous runs + if [ -e ./$DSETCHKS_FIFO_WRITER_TO_READER ]; then # If writer fifo file is found + rm -f ./$DSETCHKS_FIFO_WRITER_TO_READER + fi + if [ -e ./$DSETCHKS_FIFO_READER_TO_WRITER ]; then # If reader fifo file is found + rm -f ./$DSETCHKS_FIFO_READER_TO_WRITER + fi + # + echo launch vfd_swmr_dsetchks_writer dsetchks, options $options ......may take some time...... + catch_out_err_and_rc vfd_swmr_dsetchks_writer \ + ../vfd_swmr_dsetchks_writer $options & + pid_writer=$! + + catch_out_err_and_rc vfd_swmr_dsetchks_reader \ + ../vfd_swmr_dsetchks_reader $options & + pid_reader=$! + + # Wait for the reader to finish before signaling the + # writer to quit: the writer holds the file open so that the + # reader will find the shadow file when it opens + # the .h5 file. + wait $pid_reader + wait $pid_writer + + # Collect exit code of the reader + if [ $(cat vfd_swmr_dsetchks_reader.rc) -ne 0 ]; then + echo reader had error + nerrors=$((nerrors + 1)) + fi + + # Collect exit code of the writer + if [ $(cat vfd_swmr_dsetchks_writer.rc) -ne 0 ]; then + echo writer had error + nerrors=$((nerrors + 1)) + fi + + # Clean up output files + rm -f vfd_swmr_dsetchks_writer.{out,rc} + rm -f vfd_swmr_dsetchks_reader.*.{out,rc} +done + +############################################################################### ## Report and exit ############################################################################### cd .. diff --git a/test/vfd_swmr_addrem_writer.c b/test/vfd_swmr_addrem_writer.c index 3cc0f48..e1e4cca 100644 --- a/test/vfd_swmr_addrem_writer.c +++ b/test/vfd_swmr_addrem_writer.c @@ -45,8 +45,6 @@ #ifndef H5_HAVE_WIN32_API -#include <err.h> /* errx(3) */ - static hid_t open_skeleton(const char *filename, unsigned verbose); static int addrem_records(hid_t fid, unsigned verbose, unsigned long nops, unsigned long flush_count); static void usage(void); @@ -82,14 +80,18 @@ open_skeleton(const char *filename, unsigned verbose) HDassert(filename); - if ((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0) - errx(EXIT_FAILURE, "%s.%d: H5Pcreate failed", __func__, __LINE__); + if ((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0) { + HDfprintf(stderr, "%s.%d: H5Pcreate failed", __func__, __LINE__); + goto error; + } - if (H5Pset_chunk_cache(dapl, H5D_CHUNK_CACHE_NSLOTS_DEFAULT, 0, H5D_CHUNK_CACHE_W0_DEFAULT) < 0) - errx(EXIT_FAILURE, "H5Pset_chunk_cache failed"); + if (H5Pset_chunk_cache(dapl, H5D_CHUNK_CACHE_NSLOTS_DEFAULT, 0, H5D_CHUNK_CACHE_W0_DEFAULT) < 0) { + HDfprintf(stderr, "H5Pset_chunk_cache failed"); + goto error; + } /* Allocate memory for the configuration structure */ - if ((config = calloc(1, sizeof(*config))) == NULL) + if ((config = HDcalloc(1, sizeof(*config))) == NULL) goto error; /* config, tick_len, max_lag, writer, flush_raw_data, md_pages_reserved, md_file_path */ @@ -213,7 +215,7 @@ addrem_records(hid_t fid, unsigned verbose, unsigned long nops, unsigned long fl symbol_info_t *symbol; /* Symbol to write record to */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Decide whether to shrink or expand, and by how much */ count[1] = (hsize_t)HDrandom() % (MAX_SIZE_CHANGE * 2) + 1; @@ -314,20 +316,20 @@ error: static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: vfd_swmr_addrem_writer [-q] [-f <# of operations between flushing\n"); - printf(" file contents>] [-r <random seed>] <# of operations>\n"); - printf("\n"); - printf("<# of operations between flushing file contents> should be 0 (for\n"); - printf("no flushing) or between 1 and (<# of operations> - 1).\n"); - printf("\n"); - printf("<# of operations> must be specified.\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given), flushing every 1000 operations\n"); - printf("('-f 1000'), and will generate a random seed (no -r given).\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: vfd_swmr_addrem_writer [-q] [-f <# of operations between flushing\n"); + HDprintf(" file contents>] [-r <random seed>] <# of operations>\n"); + HDprintf("\n"); + HDprintf("<# of operations between flushing file contents> should be 0 (for\n"); + HDprintf("no flushing) or between 1 and (<# of operations> - 1).\n"); + HDprintf("\n"); + HDprintf("<# of operations> must be specified.\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given), flushing every 1000 operations\n"); + HDprintf("('-f 1000'), and will generate a random seed (no -r given).\n"); + HDprintf("\n"); HDexit(1); } /* usage() */ diff --git a/test/vfd_swmr_attrdset_writer.c b/test/vfd_swmr_attrdset_writer.c index dea5841..48dfe9d 100644 --- a/test/vfd_swmr_attrdset_writer.c +++ b/test/vfd_swmr_attrdset_writer.c @@ -185,33 +185,33 @@ static const hid_t badhid = H5I_INVALID_HID; static void usage(const char *progname) { - fprintf(stderr, - "usage: %s -a nattrs [-p] [-g] [-k] [-v] [-m]\n" - " [-d dattrs] [-u nticks] [-c csteps] [-S] [-N]\n" - "\n" - "-p: create a dataset with compact layout\n" - "-g: create a dataset with contiguous layout\n" - "-k: create datasets with chunked layout for the 5 indexing types\n" - "-m: modify attributes to all datasets after addition\n" - "-v: add variable length attribute to datasets\n" - " (default is H5T_NATIVE_UINT32)\n" - "-a nattrs: add `nattrs` attributes to all datasets\n" - "-d dattrs: delete `dattrs` attributes to all datasets after addition\n" - "-u nticks: `nticks` ticks for the reader to wait before verification\n" - " (default is 4)\n" - "-c csteps: `csteps` steps communication interval between reader and writer\n" - " (default is 1)\n" - "-S: do not use VFD SWMR\n" - "-N: do not use named pipes for test synchronization\n" - "-b: write data in big-endian byte order if no -v option\n" - " (default is H5T_NATIVE_UINT32)\n\n" - "Note:\n" - "1. Require to specify at least -p, -g or -k option\n" - "2. -c <csteps> option cannot exceed -a <nattrs> option\n" - "3. -d <dattrs> option cannot exceed -a <nattrs> option\n" - "\n", - progname); - exit(EXIT_FAILURE); + HDfprintf(stderr, + "usage: %s -a nattrs [-p] [-g] [-k] [-v] [-m]\n" + " [-d dattrs] [-u nticks] [-c csteps] [-S] [-N]\n" + "\n" + "-p: create a dataset with compact layout\n" + "-g: create a dataset with contiguous layout\n" + "-k: create datasets with chunked layout for the 5 indexing types\n" + "-m: modify attributes to all datasets after addition\n" + "-v: add variable length attribute to datasets\n" + " (default is H5T_NATIVE_UINT32)\n" + "-a nattrs: add `nattrs` attributes to all datasets\n" + "-d dattrs: delete `dattrs` attributes to all datasets after addition\n" + "-u nticks: `nticks` ticks for the reader to wait before verification\n" + " (default is 4)\n" + "-c csteps: `csteps` steps communication interval between reader and writer\n" + " (default is 1)\n" + "-S: do not use VFD SWMR\n" + "-N: do not use named pipes for test synchronization\n" + "-b: write data in big-endian byte order if no -v option\n" + " (default is H5T_NATIVE_UINT32)\n\n" + "Note:\n" + "1. Require to specify at least -p, -g or -k option\n" + "2. -c <csteps> option cannot exceed -a <nattrs> option\n" + "3. -d <dattrs> option cannot exceed -a <nattrs> option\n" + "\n", + progname); + HDexit(EXIT_FAILURE); } /* usage() */ /* @@ -269,17 +269,17 @@ state_init(state_t *s, int argc, char **argv) case 'u': case 'c': errno = 0; - tmp = strtoul(optarg, &end, 0); + tmp = HDstrtoul(optarg, &end, 0); if (end == optarg || *end != '\0') { - printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg); TEST_ERROR; } else if (errno != 0) { - printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg); TEST_ERROR; } else if (tmp > UINT_MAX) { - printf("`-%c` argument `%lu` too large\n", ch, tmp); + HDprintf("`-%c` argument `%lu` too large\n", ch, tmp); TEST_ERROR; } @@ -304,33 +304,33 @@ state_init(state_t *s, int argc, char **argv) /* Require to specify at least -p, -g or -k option */ if (!s->compact && !s->contig && !s->chunked) { - printf("Require to specify at least -p, -g or -k option\n"); + HDprintf("Require to specify at least -p, -g or -k option\n"); usage(s->progname); goto error; } /* -c <csteps> cannot be zero */ if (!s->csteps) { - printf("communication interval cannot be zero\n"); + HDprintf("communication interval cannot be zero\n"); TEST_ERROR; } /* -c <csteps> and -a <nattrs> options */ if (s->asteps && s->csteps > s->asteps) { - printf("communication interval is out of bounds\n"); + HDprintf("communication interval is out of bounds\n"); TEST_ERROR; } /* -d and -a */ if (s->dattrs > s->asteps) { - printf("# of attributes to be deleted exceeds # of attributes created\n"); + HDprintf("# of attributes to be deleted exceeds # of attributes created\n"); TEST_ERROR; } /* Dataspace for attributes added to datasets */ /* Dataspace for compact and contiguous datasets */ if ((s->one_by_one_sid = H5Screate_simple(1, &dims, &dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } @@ -374,63 +374,63 @@ create_dsets(const state_t *s, dsets_state_t *ds) wdata.b[1] = 3; if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_layout(dcpl, H5D_COMPACT) < 0) { - printf("H5Pset_layout failed\n"); + HDprintf("H5Pset_layout failed\n"); TEST_ERROR; } /* Create compound datatype */ if ((cmpd_tid = H5Tcreate(H5T_COMPOUND, sizeof(cmpd))) < 0) { - printf("H5Tcreate failed\n"); + HDprintf("H5Tcreate failed\n"); TEST_ERROR; } /* Create the array for the second element in the compound type */ if ((array_tid = H5Tarray_create2(H5T_NATIVE_INT, 1, &dims)) < 0) { - printf("H5Tarray_create2 failed\n"); + HDprintf("H5Tarray_create2 failed\n"); TEST_ERROR; } /* First element in the compound type */ if (H5Tinsert(cmpd_tid, "a", HOFFSET(cmpd, a), H5T_NATIVE_INT) < 0) { - printf("H5Tinsert failed\n"); + HDprintf("H5Tinsert failed\n"); TEST_ERROR; } /* Second element in the compound type */ if (H5Tinsert(cmpd_tid, "b", HOFFSET(cmpd, b), array_tid) < 0) { - printf("H5Tinsert failed\n"); + HDprintf("H5Tinsert failed\n"); TEST_ERROR; } /* Create the compact dataset with compound datatype */ if ((ds->compact_did = H5Dcreate2(s->file, DSET_COMPACT_NAME, cmpd_tid, s->one_by_one_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 compact dataset failed\n"); + HDprintf("H5Dcreate2 compact dataset failed\n"); TEST_ERROR; } /* Write data to the dataset */ if (H5Dwrite(ds->compact_did, cmpd_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &wdata) < 0) { - printf("H5Dwrite to compact dataset failed\n"); + HDprintf("H5Dwrite to compact dataset failed\n"); TEST_ERROR; } /* In order to trigger continuation block if -p is used alone by itself */ if ((tmp_did = H5Dcreate2(s->file, "JUNK_IGNORE", cmpd_tid, s->one_by_one_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 failed\n"); + HDprintf("H5Dcreate2 failed\n"); TEST_ERROR; } if (H5Dclose(tmp_did) < 0) { - printf("H5Dclose failed\n"); + HDprintf("H5Dclose failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } } @@ -442,61 +442,61 @@ create_dsets(const state_t *s, dsets_state_t *ds) unsigned def_min_dense = 0; if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_layout(dcpl, H5D_CONTIGUOUS) < 0) { - printf("H5Pset_layout failed\n"); + HDprintf("H5Pset_layout failed\n"); TEST_ERROR; } if (H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) { - printf("H5Pset_alloc_time failed\n"); + HDprintf("H5Pset_alloc_time failed\n"); TEST_ERROR; } if (H5Pget_attr_phase_change(dcpl, &def_max_compact, &def_min_dense) < 0) { - printf("H5Pget_attr_phase_change failed\n"); + HDprintf("H5Pget_attr_phase_change failed\n"); TEST_ERROR; } if (H5Pset_attr_phase_change(dcpl, def_max_compact + 2, def_min_dense + 2) < 0) { - printf("H5Pset_attr_phase_change failed\n"); + HDprintf("H5Pset_attr_phase_change failed\n"); TEST_ERROR; } /* Create the named datatype */ if ((dtid = H5Tcopy(H5T_NATIVE_INT)) < 0) { - printf("H5Tcopy failed\n"); + HDprintf("H5Tcopy failed\n"); TEST_ERROR; } if (H5Tcommit2(s->file, "named_dtype", dtid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) { - printf("H5Tcommit2 failed\n"); + HDprintf("H5Tcommit2 failed\n"); TEST_ERROR; } /* Create the contiguous dataset with the named datatype */ if ((ds->contig_did = H5Dcreate2(s->file, DSET_CONTIG_NAME, dtid, s->one_by_one_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 contiguous dataset failed\n"); + HDprintf("H5Dcreate2 contiguous dataset failed\n"); TEST_ERROR; } /* Write to the dataset */ if (H5Dwrite(ds->contig_did, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &wdata1) < 0) { - printf("H5Dwrite to contiguous dataset failed\n"); + HDprintf("H5Dwrite to contiguous dataset failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Tclose(dtid) < 0) { - printf("H5Tclose failed\n"); + HDprintf("H5Tclose failed\n"); TEST_ERROR; } } @@ -525,27 +525,27 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Create variable length datatype */ if ((vl_tid = H5Tcopy(H5T_C_S1)) < 0) { - printf("H5Tcopy failed\n"); + HDprintf("H5Tcopy failed\n"); TEST_ERROR; } if (H5Tset_size(vl_tid, H5T_VARIABLE) < 0) { - printf("H5Tset_size failed\n"); + HDprintf("H5Tset_size failed\n"); TEST_ERROR; } if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_layout(dcpl, H5D_CHUNKED) < 0) { - printf("H5Pset_layout failed\n"); + HDprintf("H5Pset_layout failed\n"); TEST_ERROR; } if (H5Pset_chunk(dcpl, 1, dims1) < 0) { - printf("H5Pset_chunk failed\n"); + HDprintf("H5Pset_chunk failed\n"); TEST_ERROR; } @@ -553,18 +553,18 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Chunked, dims=max_dims=chunk_dims */ if ((sid = H5Screate_simple(1, dims1, dims1)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } if ((ds->single_did = H5Dcreate2(s->file, DSET_SINGLE_NAME, vl_tid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset: single index failed\n"); + HDprintf("H5Dcreate2 chunked dataset: single index failed\n"); TEST_ERROR; } if (H5Dwrite(ds->single_did, vl_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &vdata) < 0) { - printf("H5Dwrite to chunked dataset: single index failed\n"); + HDprintf("H5Dwrite to chunked dataset: single index failed\n"); TEST_ERROR; } @@ -572,33 +572,33 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Chunked, dims=max_dims, early allocation */ if (H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) { - printf("H5Pset_alloc_time\n"); + HDprintf("H5Pset_alloc_time\n"); TEST_ERROR; } if (H5Pset_chunk(dcpl, 1, chunk_dims1) < 0) { - printf("H5Pset_chunk failed\n"); + HDprintf("H5Pset_chunk failed\n"); TEST_ERROR; } if ((ds->implicit_did = H5Dcreate2(s->file, DSET_IMPLICIT_NAME, vl_tid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset: implicit index failed\n"); + HDprintf("H5Dcreate2 chunked dataset: implicit index failed\n"); TEST_ERROR; } if (H5Dwrite(ds->implicit_did, vl_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &vdata) < 0) { - printf("H5Dwrite to chunked dataset: implicit index failed\n"); + HDprintf("H5Dwrite to chunked dataset: implicit index failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Sclose(sid) < 0) { - printf("H5Sclose failed\n"); + HDprintf("H5Sclose failed\n"); TEST_ERROR; } @@ -606,38 +606,38 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Chunked, fixed max_dims */ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_chunk(dcpl, 1, chunk_dims1) < 0) { - printf("H5Pset_chunk failed\n"); + HDprintf("H5Pset_chunk failed\n"); TEST_ERROR; } if ((sid = H5Screate_simple(1, dims1, max_dims1)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } if ((ds->fa_did = H5Dcreate2(s->file, DSET_FA_NAME, vl_tid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreaet2 chunked dataset: fa index failed\n"); + HDprintf("H5Dcreaet2 chunked dataset: fa index failed\n"); TEST_ERROR; } if (H5Dwrite(ds->fa_did, vl_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &vdata) < 0) { - printf("H5Dwrite to chunked dataset: fa index failed\n"); + HDprintf("H5Dwrite to chunked dataset: fa index failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Sclose(sid) < 0) { - printf("H5Sclose failed\n"); + HDprintf("H5Sclose failed\n"); TEST_ERROR; } @@ -645,28 +645,28 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Chunked, 1 unlimited max_dims */ if ((sid = H5Screate_simple(2, dims2, max_dims2)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_chunk(dcpl, 2, chunk_dims2) < 0) { - printf("H5Pset_chunk failed\n"); + HDprintf("H5Pset_chunk failed\n"); TEST_ERROR; } if ((ds->ea_did = H5Dcreate2(s->file, DSET_EA_NAME, vl_tid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset: ea index failed\n"); + HDprintf("H5Dcreate2 chunked dataset: ea index failed\n"); TEST_ERROR; } if (H5Dwrite(ds->ea_did, vl_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &vdata2) < 0) { - printf("H5Dwrite to chunked dataset: ea index failed\n"); + HDprintf("H5Dwrite to chunked dataset: ea index failed\n"); TEST_ERROR; } @@ -675,33 +675,33 @@ create_dsets(const state_t *s, dsets_state_t *ds) max_dims2[0] = H5S_UNLIMITED; if ((sid = H5Screate_simple(2, dims2, max_dims2)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } if ((ds->bt2_did = H5Dcreate2(s->file, DSET_BT2_NAME, vl_tid, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset: bt2 index failed\n"); + HDprintf("H5Dcreate2 chunked dataset: bt2 index failed\n"); TEST_ERROR; } if (H5Dwrite(ds->bt2_did, vl_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, &vdata2) < 0) { - printf("H5Dwrite to chunked dataset: bt2 index failed\n"); + HDprintf("H5Dwrite to chunked dataset: bt2 index failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Sclose(sid) < 0) { - printf("H5Sclose failed\n"); + HDprintf("H5Sclose failed\n"); TEST_ERROR; } if (H5Tclose(vl_tid) < 0) { - printf("H5Tclose failed\n"); + HDprintf("H5Tclose failed\n"); TEST_ERROR; } } @@ -743,7 +743,7 @@ open_dsets(const state_t *s, dsets_state_t *ds) if (s->compact) { if (!open_dset_real(s->file, &ds->compact_did, DSET_COMPACT_NAME, &ds->p_max_compact, &ds->p_min_dense)) { - printf("open_dset_real() for compact dataset failed\n"); + HDprintf("open_dset_real() for compact dataset failed\n"); TEST_ERROR; } } @@ -751,7 +751,7 @@ open_dsets(const state_t *s, dsets_state_t *ds) if (s->contig) { if (!open_dset_real(s->file, &ds->contig_did, DSET_CONTIG_NAME, &ds->g_max_compact, &ds->g_min_dense)) { - printf("open_dset_real() for contiguous dataset failed\n"); + HDprintf("open_dset_real() for contiguous dataset failed\n"); TEST_ERROR; } } @@ -759,26 +759,26 @@ open_dsets(const state_t *s, dsets_state_t *ds) if (s->chunked) { if (!open_dset_real(s->file, &ds->single_did, DSET_SINGLE_NAME, &ds->single_max_compact, &ds->single_min_dense)) { - printf("open_dset_real() for chunked dataset: single failed\n"); + HDprintf("open_dset_real() for chunked dataset: single failed\n"); TEST_ERROR; } if (!open_dset_real(s->file, &ds->implicit_did, DSET_IMPLICIT_NAME, &ds->implicit_max_compact, &ds->implicit_min_dense)) { - printf("open_dset_real() for chunked dataset: implicit failed\n"); + HDprintf("open_dset_real() for chunked dataset: implicit failed\n"); TEST_ERROR; } if (!open_dset_real(s->file, &ds->fa_did, DSET_FA_NAME, &ds->fa_max_compact, &ds->fa_min_dense)) { - printf("open_dset_real() for chunked dataset: fa failed\n"); + HDprintf("open_dset_real() for chunked dataset: fa failed\n"); TEST_ERROR; } if (!open_dset_real(s->file, &ds->ea_did, DSET_FA_NAME, &ds->ea_max_compact, &ds->ea_min_dense)) { - printf("open_dset_real() for chunked dataset: ea failed\n"); + HDprintf("open_dset_real() for chunked dataset: ea failed\n"); TEST_ERROR; } if (!open_dset_real(s->file, &ds->bt2_did, DSET_BT2_NAME, &ds->bt2_max_compact, &ds->bt2_min_dense)) { - printf("open_dset_real() for chunked dataset: bt2 failed\n"); + HDprintf("open_dset_real() for chunked dataset: bt2 failed\n"); TEST_ERROR; } } @@ -800,22 +800,22 @@ open_dset_real(hid_t fid, hid_t *did, const char *name, unsigned *max_compact, u hid_t dcpl = badhid; if ((*did = H5Dopen2(fid, name, H5P_DEFAULT)) < 0) { - printf("H5Dopen dataset failed\n"); + HDprintf("H5Dopen dataset failed\n"); TEST_ERROR; } if ((dcpl = H5Dget_create_plist(*did)) < 0) { - printf("H5Dget_create_plist failed\n"); + HDprintf("H5Dget_create_plist failed\n"); TEST_ERROR; } if (H5Pget_attr_phase_change(dcpl, max_compact, min_dense) < 0) { - printf("H5Dget_attr_phase_change failed\n"); + HDprintf("H5Dget_attr_phase_change failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } @@ -839,37 +839,37 @@ static bool close_dsets(const dsets_state_t *ds) { if (ds->compact_did != badhid && H5Dclose(ds->compact_did) < 0) { - printf("H5Dclose compact dataset failed\n"); + HDprintf("H5Dclose compact dataset failed\n"); TEST_ERROR; } if (ds->contig_did != badhid && H5Dclose(ds->contig_did) < 0) { - printf("H5Dclose contig dataset failed\n"); + HDprintf("H5Dclose contig dataset failed\n"); TEST_ERROR; } if (ds->single_did != badhid && H5Dclose(ds->single_did) < 0) { - printf("H5Dclose chunked dataset: single index failed\n"); + HDprintf("H5Dclose chunked dataset: single index failed\n"); TEST_ERROR; } if (ds->implicit_did != badhid && H5Dclose(ds->implicit_did) < 0) { - printf("H5Dclose chunked dataset: implicit index failed\n"); + HDprintf("H5Dclose chunked dataset: implicit index failed\n"); TEST_ERROR; } if (ds->fa_did >= 0 && H5Dclose(ds->fa_did) < 0) { - printf("H5Dclose chunked dataset: fa index failed\n"); + HDprintf("H5Dclose chunked dataset: fa index failed\n"); TEST_ERROR; } if (ds->ea_did >= 0 && H5Dclose(ds->ea_did) < 0) { - printf("H5Dclose chunked dataset: ea index failed\n"); + HDprintf("H5Dclose chunked dataset: ea index failed\n"); TEST_ERROR; } if (ds->bt2_did >= 0 && H5Dclose(ds->bt2_did) < 0) { - printf("H5Dclose chunked dataset: bt2 index failed\n"); + HDprintf("H5Dclose chunked dataset: bt2 index failed\n"); TEST_ERROR; } @@ -1007,17 +1007,17 @@ add_attr(const state_t *s, hid_t did, unsigned int which) if (s->vl_attr) { if ((vl_tid = H5Tcopy(H5T_C_S1)) < 0) { - printf("H5Tcopy failed\n"); + HDprintf("H5Tcopy failed\n"); TEST_ERROR; } if (H5Tset_size(vl_tid, H5T_VARIABLE) < 0) { - printf("H5Tset_size failed\n"); + HDprintf("H5Tset_size failed\n"); TEST_ERROR; } if ((val = HDmalloc(sizeof("9999999999"))) == NULL) { - printf("H5Dmalloc failed\n"); + HDprintf("H5Dmalloc failed\n"); TEST_ERROR; } @@ -1030,24 +1030,24 @@ add_attr(const state_t *s, hid_t did, unsigned int which) /* Attach the attribute to the dataset */ if ((aid = H5Acreate2(did, name, tid, s->one_by_one_sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - printf("H5Acreate2 failed\n"); + HDprintf("H5Acreate2 failed\n"); TEST_ERROR; } /* Write to the attribure */ if (H5Awrite(aid, tid, s->vl_attr ? &val : (const void *)&which) < 0) { - printf("H5Awrite failed\n"); + HDprintf("H5Awrite failed\n"); TEST_ERROR; } /* Close the attribute */ if (H5Aclose(aid) < 0) { - printf("H5Aclose failed\n"); + HDprintf("H5Aclose failed\n"); TEST_ERROR; } if (vl_tid >= 0 && H5Tclose(vl_tid) < 0) { - printf("H5Tclose failed\n"); + HDprintf("H5Tclose failed\n"); TEST_ERROR; } @@ -1088,17 +1088,18 @@ modify_attr(const state_t *s, hid_t did, unsigned int which) if (s->vl_attr) { if ((vl_tid = H5Tcopy(H5T_C_S1)) < 0) { - printf("H5Tcopy failed\n"); + HDprintf("H5Tcopy failed\n"); TEST_ERROR; } if (H5Tset_size(vl_tid, H5T_VARIABLE) < 0) { - printf("H5Tset_size failed\n"); + HDprintf("H5Tset_size failed\n"); TEST_ERROR; } - if ((val = HDmalloc(sizeof("9999999999"))) == NULL) { - printf("HDmalloc failed\n"); + /* Needs to fit "%u %c", below */ + if ((val = HDmalloc(10 + 3)) == NULL) { + HDprintf("HDmalloc failed\n"); TEST_ERROR; } @@ -1113,24 +1114,24 @@ modify_attr(const state_t *s, hid_t did, unsigned int which) /* Open the attribute to the dataset */ if ((aid = H5Aopen(did, name, H5P_DEFAULT)) < 0) { - printf("H5Aopen failed\n"); + HDprintf("H5Aopen failed\n"); TEST_ERROR; } /* Write to the attribure */ if (H5Awrite(aid, tid, s->vl_attr ? &val : (const void *)&tmp_val) < 0) { - printf("H5Awrite failed\n"); + HDprintf("H5Awrite failed\n"); TEST_ERROR; } /* Close the attribute */ if (H5Aclose(aid) < 0) { - printf("H5Aclose failed\n"); + HDprintf("H5Aclose failed\n"); TEST_ERROR; } if (vl_tid >= 0 && H5Tclose(vl_tid) < 0) { - printf("H5Tclose failed\n"); + HDprintf("H5Tclose failed\n"); TEST_ERROR; } @@ -1164,7 +1165,7 @@ delete_attr(hid_t did, unsigned int which) /* Delete the attribute to the dataset */ if (H5Adelete(did, name) < 0) { - printf("H5Adelete failed\n"); + HDprintf("H5Adelete failed\n"); TEST_ERROR; } @@ -1319,19 +1320,20 @@ verify_add_or_modify_attr(unsigned action, hid_t did, char *attr_name, unsigned char vl_which[sizeof("attr-9999999999")]; char * read_vl_which = NULL; bool is_vl = false; - hid_t aid, atid; - bool ret; + hid_t aid = H5I_INVALID_HID; + hid_t atid = H5I_INVALID_HID; + bool ret = FALSE; HDassert(did != badhid); HDassert(action == ADD_ATTR || action == MODIFY_ATTR); if ((aid = H5Aopen(did, attr_name, H5P_DEFAULT)) < 0) { - printf("H5Aopen failed\n"); + HDprintf("H5Aopen failed\n"); TEST_ERROR; } if ((atid = H5Aget_type(aid)) < 0) { - printf("H5Aget_type failed\n"); + HDprintf("H5Aget_type failed\n"); TEST_ERROR; } @@ -1342,23 +1344,23 @@ verify_add_or_modify_attr(unsigned action, hid_t did, char *attr_name, unsigned HDsprintf(vl_which, "%u %c", which, 'M'); if ((read_vl_which = HDmalloc(sizeof("9999999999"))) == NULL) { - printf("HDmalloc failed\n"); + HDprintf("HDmalloc failed\n"); TEST_ERROR; } } if (H5Aread(aid, atid, is_vl ? (void *)&read_vl_which : (void *)&read_which) < 0) { - printf("H5Aread failed\n"); + HDprintf("H5Aread failed\n"); TEST_ERROR; } if (H5Aclose(aid) < 0) { - printf("H5Aclose failed\n"); + HDprintf("H5Aclose failed\n"); TEST_ERROR; } if (H5Tclose(atid) < 0) { - printf("H5Tclose failed\n"); + HDprintf("H5Tclose failed\n"); TEST_ERROR; } @@ -1398,7 +1400,7 @@ verify_delete_attr(hid_t did, char *attr_name) int ret; if ((ret = H5Aexists(did, attr_name)) < 0) { - printf("H5Aexists failed\n"); + HDprintf("H5Aexists failed\n"); TEST_ERROR; } else if (!ret) /* attribute does not exist */ @@ -1478,7 +1480,7 @@ verify_storage_cont_real(hid_t did, unsigned int which, unsigned cut_point) /* Get the object information */ if (H5Oget_native_info(did, &ninfo, H5O_NATIVE_INFO_HDR | H5O_NATIVE_INFO_META_SIZE) < 0) { - printf("H5Oget_native_info failed\n"); + HDprintf("H5Oget_native_info failed\n"); TEST_ERROR; } @@ -1524,36 +1526,36 @@ np_init(np_state_t *np, bool writer) /* If the named pipes are present at the start of the test, remove them */ if (HDaccess(np->fifo_writer_to_reader, F_OK) == 0) if (HDremove(np->fifo_writer_to_reader) != 0) { - printf("HDremove fifo_writer_to_reader failed\n"); + HDprintf("HDremove fifo_writer_to_reader failed\n"); TEST_ERROR; } if (HDaccess(np->fifo_reader_to_writer, F_OK) == 0) if (HDremove(np->fifo_reader_to_writer) != 0) { - printf("HDremove fifo_reader_to_writer failed\n"); + HDprintf("HDremove fifo_reader_to_writer failed\n"); TEST_ERROR; } /* Writer creates two named pipes(FIFO) */ if (HDmkfifo(np->fifo_writer_to_reader, 0600) < 0) { - printf("HDmkfifo fifo_writer_to_reader failed\n"); + HDprintf("HDmkfifo fifo_writer_to_reader failed\n"); TEST_ERROR; } if (HDmkfifo(np->fifo_reader_to_writer, 0600) < 0) { - printf("HDmkfifo fifo_reader_to_writer failed\n"); + HDprintf("HDmkfifo fifo_reader_to_writer failed\n"); TEST_ERROR; } } /* Both the writer and reader open the pipes */ if ((np->fd_writer_to_reader = HDopen(np->fifo_writer_to_reader, O_RDWR)) < 0) { - printf("HDopen fifo_writer_to_reader failed\n"); + HDprintf("HDopen fifo_writer_to_reader failed\n"); TEST_ERROR; } if ((np->fd_reader_to_writer = HDopen(np->fifo_reader_to_writer, O_RDWR)) < 0) { - printf("HDopen fifo_reader_to_writer failed\n"); + HDprintf("HDopen fifo_reader_to_writer failed\n"); TEST_ERROR; } @@ -1572,24 +1574,24 @@ np_close(np_state_t *np, bool writer) { /* Both the writer and reader close the named pipes */ if (HDclose(np->fd_writer_to_reader) < 0) { - printf("HDclose fd_writer_to_reader failed\n"); + HDprintf("HDclose fd_writer_to_reader failed\n"); TEST_ERROR; } if (HDclose(np->fd_reader_to_writer) < 0) { - printf("HDclose fd_reader_to_writer failed\n"); + HDprintf("HDclose fd_reader_to_writer failed\n"); TEST_ERROR; } /* Reader finishes last and deletes the named pipes */ if (!writer) { if (HDremove(np->fifo_writer_to_reader) != 0) { - printf("HDremove fifo_writer_to_reader failed\n"); + HDprintf("HDremove fifo_writer_to_reader failed\n"); TEST_ERROR; } if (HDremove(np->fifo_reader_to_writer) != 0) { - printf("HDremove fifo_reader_to_writer failed\n"); + HDprintf("HDremove fifo_reader_to_writer failed\n"); TEST_ERROR; } } @@ -1609,7 +1611,7 @@ np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_ /* The action fails */ if (!result) { - printf("attribute action failed\n"); + HDprintf("attribute action failed\n"); H5_FAILED(); AT(); @@ -1627,7 +1629,7 @@ np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_ /* Bump up the value of notify to tell the reader to start reading */ np->notify++; if (HDwrite(np->fd_writer_to_reader, &np->notify, sizeof(int)) < 0) { - printf("HDwrite failed\n"); + HDprintf("HDwrite failed\n"); TEST_ERROR; } @@ -1644,7 +1646,7 @@ np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_ /* Handshake between writer and reader */ if (!np_confirm_verify_notify(np->fd_reader_to_writer, step, s, np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } } @@ -1665,7 +1667,7 @@ np_reader(bool result, unsigned step, const state_t *s, np_state_t *np) { /* The verification fails */ if (!result) { - printf("verify action failed\n"); + HDprintf("verify action failed\n"); H5_FAILED(); AT(); @@ -1682,7 +1684,7 @@ np_reader(bool result, unsigned step, const state_t *s, np_state_t *np) /* Send back the same notify value for acknowledgement: * --inform the writer to move to the next step */ if (HDwrite(np->fd_reader_to_writer, &np->notify, sizeof(int)) < 0) { - printf("HDwrite failed\n"); + HDprintf("HDwrite failed\n"); TEST_ERROR; } } @@ -1704,17 +1706,17 @@ np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np if (step % s->csteps == 0) { np->verify++; if (HDread(fd, &np->notify, sizeof(int)) < 0) { - printf("HDread failed\n"); + HDprintf("HDread failed\n"); TEST_ERROR; } if (np->notify == -1) { - printf("reader/writer failed to verify\n"); + HDprintf("reader/writer failed to verify\n"); TEST_ERROR; } if (np->notify != np->verify) { - printf("received message %d, expecting %d\n", np->notify, np->verify); + HDprintf("received message %d, expecting %d\n", np->notify, np->verify); TEST_ERROR; } } @@ -1734,7 +1736,7 @@ np_reader_no_verification(const state_t *s, np_state_t *np, H5F_vfd_swmr_config_ { if (s->use_np) { if (!np_confirm_verify_notify(np->fd_writer_to_reader, 0, s, np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } } @@ -1746,7 +1748,7 @@ np_reader_no_verification(const state_t *s, np_state_t *np, H5F_vfd_swmr_config_ /* Send back the same notify value for acknowledgement: * --inform the writer to move to the next step */ if (HDwrite(np->fd_reader_to_writer, &np->notify, sizeof(int)) < 0) { - printf("HDwrite failed\n"); + HDprintf("HDwrite failed\n"); TEST_ERROR; } } @@ -1761,9 +1763,10 @@ error: int main(int argc, char **argv) { - hid_t fapl, fcpl; + hid_t fapl = H5I_INVALID_HID; + hid_t fcpl = H5I_INVALID_HID; unsigned step; - bool writer; + bool writer = FALSE; state_t s; const char * personality; H5F_vfd_swmr_config_t config; @@ -1773,18 +1776,18 @@ main(int argc, char **argv) bool result; if (!state_init(&s, argc, argv)) { - printf("state_init() failed\n"); + HDprintf("state_init() failed\n"); TEST_ERROR; } - personality = strstr(s.progname, "vfd_swmr_attrdset_"); + personality = HDstrstr(s.progname, "vfd_swmr_attrdset_"); - if (personality != NULL && strcmp(personality, "vfd_swmr_attrdset_writer") == 0) + if (personality != NULL && HDstrcmp(personality, "vfd_swmr_attrdset_writer") == 0) writer = true; - else if (personality != NULL && strcmp(personality, "vfd_swmr_attrdset_reader") == 0) + else if (personality != NULL && HDstrcmp(personality, "vfd_swmr_attrdset_reader") == 0) writer = false; else { - printf("unknown personality, expected vfd_swmr_attrdset_{reader,writer}\n"); + HDprintf("unknown personality, expected vfd_swmr_attrdset_{reader,writer}\n"); TEST_ERROR; } @@ -1793,45 +1796,45 @@ main(int argc, char **argv) /* use_latest_format, use_vfd_swmr, only_meta_page, config */ if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, &config)) < 0) { - printf("vfd_swmr_create_fapl() failed\n"); + HDprintf("vfd_swmr_create_fapl() failed\n"); TEST_ERROR; } if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, false, 1) < 0) { - printf("H5Pset_file_space_strategy failed\n"); + HDprintf("H5Pset_file_space_strategy failed\n"); TEST_ERROR; } if (writer) { if ((s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) { - printf("H5Fcreate failed\n"); + HDprintf("H5Fcreate failed\n"); TEST_ERROR; } if (!create_dsets(&s, &ds)) { - printf("create_dsets() failed\n"); + HDprintf("create_dsets() failed\n"); TEST_ERROR; } } else { if ((s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl)) < 0) { - printf("H5Fopen failed\n"); + HDprintf("H5Fopen failed\n"); TEST_ERROR; } if (!open_dsets(&s, &ds)) { - printf("open_dsets() failed\n"); + HDprintf("open_dsets() failed\n"); TEST_ERROR; } } /* Initiailze named pipes */ if (s.use_np && !np_init(&np, writer)) { - printf("np_init() failed\n"); + HDprintf("np_init() failed\n"); TEST_ERROR; } @@ -1842,7 +1845,7 @@ main(int argc, char **argv) result = attr_dsets_action(ADD_ATTR, &s, &ds, step); if (s.use_np && !np_writer(result, step, &s, &np, &config)) { - printf("np_writer() for addition failed\n"); + HDprintf("np_writer() for addition failed\n"); TEST_ERROR; } } @@ -1851,7 +1854,7 @@ main(int argc, char **argv) /* Need to sync up writer/reader before moving onto the next phase */ if (s.use_np && !np_writer(true, 0, &s, &np, &config)) { - printf("np_writer() for modification failed\n"); + HDprintf("np_writer() for modification failed\n"); TEST_ERROR; } @@ -1862,7 +1865,7 @@ main(int argc, char **argv) result = attr_dsets_action(MODIFY_ATTR, &s, &ds, step); if (s.use_np && !np_writer(result, step, &s, &np, &config)) { - printf("np_writer() for modification failed\n"); + HDprintf("np_writer() for modification failed\n"); TEST_ERROR; } } @@ -1872,7 +1875,7 @@ main(int argc, char **argv) /* Need to sync up writer/reader before moving onto the next phase */ if (s.use_np && !np_writer(true, 0, &s, &np, &config)) { - printf("np_writer() for deletion failed\n"); + HDprintf("np_writer() for deletion failed\n"); TEST_ERROR; } @@ -1883,7 +1886,7 @@ main(int argc, char **argv) result = attr_dsets_action(DELETE_ATTR, &s, &ds, step); if (s.use_np && !np_writer(result, step, &s, &np, &config)) { - printf("np_writer() for deletion failed\n"); + HDprintf("np_writer() for deletion failed\n"); TEST_ERROR; } } @@ -1896,7 +1899,7 @@ main(int argc, char **argv) dbgf(2, "Verifying...attribute %d\n", step); if (s.use_np && !np_confirm_verify_notify(np.fd_writer_to_reader, step, &s, &np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } @@ -1906,7 +1909,7 @@ main(int argc, char **argv) result = verify_attr_dsets_action(ADD_ATTR, &s, &ds, step); if (s.use_np && !np_reader(result, step, &s, &np)) { - printf("np_reader() for verifying addition failed\n"); + HDprintf("np_reader() for verifying addition failed\n"); TEST_ERROR; } } @@ -1914,7 +1917,7 @@ main(int argc, char **argv) if (s.mod_attr) { /* Need to sync up writer/reader before moving onto the next phase */ if (!np_reader_no_verification(&s, &np, &config)) { - printf("np_reader_no_verification() for verifying modification failed\n"); + HDprintf("np_reader_no_verification() for verifying modification failed\n"); TEST_ERROR; } @@ -1923,7 +1926,7 @@ main(int argc, char **argv) dbgf(2, "Verifying...modify attribute %d\n", step); if (s.use_np && !np_confirm_verify_notify(np.fd_writer_to_reader, step, &s, &np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } @@ -1933,7 +1936,7 @@ main(int argc, char **argv) result = verify_attr_dsets_action(MODIFY_ATTR, &s, &ds, step); if (s.use_np && !np_reader(result, step, &s, &np)) { - printf("np_reader() for verifying modification failed\n"); + HDprintf("np_reader() for verifying modification failed\n"); TEST_ERROR; } } @@ -1943,7 +1946,7 @@ main(int argc, char **argv) /* Need to sync up writer/reader before moving onto the next phase */ if (!np_reader_no_verification(&s, &np, &config)) { - printf("np_reader_no_verification() for verifying modification failed\n"); + HDprintf("np_reader_no_verification() for verifying modification failed\n"); TEST_ERROR; } @@ -1952,7 +1955,7 @@ main(int argc, char **argv) dbgf(2, "Verifying...delete attribute %d\n", step); if (s.use_np && !np_confirm_verify_notify(np.fd_writer_to_reader, step, &s, &np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } @@ -1962,7 +1965,7 @@ main(int argc, char **argv) result = verify_attr_dsets_action(DELETE_ATTR, &s, &ds, step); if (s.use_np && !np_reader(result, step, &s, &np)) { - printf("np_reader() for verifying deletion failed\n"); + HDprintf("np_reader() for verifying deletion failed\n"); TEST_ERROR; } } @@ -1970,32 +1973,32 @@ main(int argc, char **argv) } if (!close_dsets(&ds)) { - printf("close_dsets() failed\n"); + HDprintf("close_dsets() failed\n"); TEST_ERROR; } if (H5Pclose(fapl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Pclose(fcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Fclose(s.file) < 0) { - printf("H5Fclose failed\n"); + HDprintf("H5Fclose failed\n"); TEST_ERROR; } if (H5Sclose(s.one_by_one_sid) < 0) { - printf("H5Sclose failed\n"); + HDprintf("H5Sclose failed\n"); TEST_ERROR; } if (s.use_np && !np_close(&np, writer)) { - printf("np_close() failed\n"); + HDprintf("np_close() failed\n"); TEST_ERROR; } diff --git a/test/vfd_swmr_dsetchks_writer.c b/test/vfd_swmr_dsetchks_writer.c new file mode 100644 index 0000000..25066d8 --- /dev/null +++ b/test/vfd_swmr_dsetchks_writer.c @@ -0,0 +1,2274 @@ +/* + * 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 COPYING file, which can be found at the root of the source code + * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. + * If you do not have access to either file, you may request a copy from + * help@hdfgroup.org. + */ + +/* + * Purpose: To test chunk operations for chunked dataset specifically: + * --chunked datasets with the 5 indexing types: + * 1. single (dims=max_dims=chunk_dims, default incremental allocation) + * 2. implicit (dims=max_dims, early allocation, no filter) + * 3. fixed array (fixed max_dims, default incremental allocation) + * 4. extensible array (1 unlimited max_dims, default incremental allocation) + * 5. btree2 (2 unlimited max_dims, default incremental allocation) + * + * --with compression--H5Pset_deflate(dcpl) + * --with fill values--H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillval); + * + * Types of chunk operations: + * -- writes that cover a single chunk + * -- writes that cover a partial chunk + * -- writes that cover multiple chunks + * -- writes that cover multiple partial chunks + * + * For fa, ea, bt2 indexes: + * --increase size of dataset dimensions + * --decrease size of dataset dimensions + */ +#include "hdf5.h" +#include "testhdf5.h" +#include "vfd_swmr_common.h" + +#ifndef H5_HAVE_WIN32_API + +#define READER_WAIT_TICKS 4 + +/* Names for datasets */ +#define DSET_SINGLE_NAME "chunked_single" +#define DSET_IMPLICIT_NAME "chunked_implicit" +#define DSET_FA_NAME "chunked_fa" +#define DSET_EA_NAME "chunked_ea" +#define DSET_BT2_NAME "chunked_bt2" + +/* Operations for testing */ +#define GWRITES 1 /* Writes that cover a single chunk per write */ +#define PWRITES 2 /* Writes that cover a partial chunk per write */ +#define TWRITES 3 /* Writes that cover multiple chunks per write */ +#define LWRITES 4 /* Writes that cover multiple partial chunks per write */ +#define INCR_EXT 5 /* Increase dataset dimenion sizes */ +#define DECR_EXT 6 /* Decrease dataset dimension sizes */ + +/* Fill values */ +#define FILL_INIT 1 /* Fill value used when creating the datasets */ +#define FILL_FULL 7 /* Fill value used when writing a full chunk */ +#define FILL_PARTIAL 9 /* Fill value used when writing partial chunk(s) */ + +#define MULTI_CHUNKS 2 + +/* Structure to hold info for options specified */ +typedef struct { + char filename[PATH_MAX]; /* File name */ + char progname[PATH_MAX]; /* Program name */ + hid_t file; /* File ID */ + hid_t filetype; /* Datatype ID */ + unsigned int update_interval; /* For -u option */ + unsigned int csteps; /* For -c <csteps> option */ + bool use_np; /* For -N option */ + bool use_vfd_swmr; /* For -S option */ + bool use_filter; /* For -o option */ + + bool single_index; /* -s option: create a chunked dataset with single chunk index */ + bool implicit_index; /* -i option: create a chunked datasets with implicit chunk index */ + bool fa_index; /* -f option: create a chunked dataset with fixed array index */ + bool ea_index; /* -e option: create a chunked dataset with extensible array index */ + bool bt2_index; /* -r option: create a chunked dataset with version 2 btree index */ + + unsigned int rows; /* -m <rows> option for the chunked datasets */ + unsigned int cols; /* -n <cols option for the chunked datasets */ + + unsigned int gwrites; /* -s <gwrites> option: writes that cover a single chunk per write */ + unsigned int pwrites; /* -p <pwrites> option: writes that cover a partial chunk per write */ + unsigned int twrites; /* -t <twrites> option: writes that cover multiple chunks per write */ + unsigned int lwrites; /* -l <lwrites> option: writes that cover multiple partial chunks per write */ + + unsigned int xincrs; /* -x <xincrs> option */ + unsigned int ydecrs; /* -y <ydecrs> option */ +} state_t; + +/* Initializations for state_t */ +#define ALL_HID_INITIALIZER \ + (state_t) \ + { \ + .filename = "", .file = H5I_INVALID_HID, .filetype = H5T_NATIVE_UINT32, \ + .update_interval = READER_WAIT_TICKS, .csteps = 1, .use_np = true, .use_vfd_swmr = true, \ + .use_filter = false, .single_index = false, .implicit_index = false, .fa_index = false, \ + .ea_index = false, .bt2_index = false, .rows = 10, .cols = 5, .gwrites = 0, .pwrites = 0, \ + .twrites = 0, .lwrites = 0, .xincrs = 0, .ydecrs = 0 \ + } + +/* Structure to hold info for different dataset types */ +typedef struct { + hsize_t chunk_dims[2]; /* Chunk dimensions for all datasets except single_did */ + hsize_t scaled_dims[2]; + hsize_t multi_scaled[2]; + hid_t single_did; /* ID for chunked dataset: single index */ + hid_t implicit_did; /* ID for chunked dataset: implicit index */ + hid_t fa_did; /* ID for chunked dataset: fixed array index */ + hid_t ea_did; /* ID for chunked dataset: extensible array index */ + hid_t bt2_did; /* ID for chunked dataset: version 2 btree index */ +} dsets_state_t; + +/* Initializations for dsets_state_t */ +#define DSETS_INITIALIZER \ + (dsets_state_t) \ + { \ + .single_did = H5I_INVALID_HID, .implicit_did = H5I_INVALID_HID, .fa_did = H5I_INVALID_HID, \ + .ea_did = H5I_INVALID_HID, .bt2_did = H5I_INVALID_HID \ + } + +/* Structure to hold info for named pipes */ +typedef struct { + const char *fifo_writer_to_reader; /* Name of fifo for writer to reader */ + const char *fifo_reader_to_writer; /* Name of fifo for reader to writer */ + int fd_writer_to_reader; /* File ID for fifo from writer to reader */ + int fd_reader_to_writer; /* File ID for fifo from reader to writer */ + int notify; /* Value to notify between writer and reader */ + int verify; /* Value to verify between writer and reader */ +} np_state_t; + +/* Initializations for np_state_t */ +#define NP_INITIALIZER \ + (np_state_t) \ + { \ + .fifo_writer_to_reader = "./fifo_dsetchks_writer_to_reader", \ + .fifo_reader_to_writer = "./fifo_dsetchks_reader_to_writer", .fd_writer_to_reader = -1, \ + .fd_reader_to_writer = -1, .notify = 0, .verify = 0 \ + } + +static bool state_init(state_t *, int, char **); + +static bool np_init(np_state_t *np, bool writer); +static bool np_close(np_state_t *np, bool writer); +static bool np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, + H5F_vfd_swmr_config_t *config); +static bool np_reader(bool result, unsigned step, const state_t *s, np_state_t *np); +static bool np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np); + +static bool create_dsets(const state_t *s, dsets_state_t *ds); +static bool open_dsets(const state_t *s, dsets_state_t *ds); +static bool close_dsets(const dsets_state_t *ds); +static void set_chunk_scaled_dims(const state_t *s, dsets_state_t *ds); + +static bool perform_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config, + np_state_t *np); + +static bool write_dsets_chunks(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned step); +static void setup_selection(unsigned action, unsigned which, const state_t *s, const dsets_state_t *ds, + hsize_t *start, hsize_t *stride, hsize_t *count, hsize_t *block); +static void check_set_edge_block(const state_t *s, const dsets_state_t *ds, unsigned i, unsigned j, + hsize_t *block); +static void check_set_partial_block(unsigned action, const hsize_t *dims, hsize_t *block, hsize_t *start); +static bool write_dset(unsigned action, hid_t did, hid_t tid, hsize_t *start, hsize_t *stride, hsize_t *count, + hsize_t *block); +static bool write_dset_single(unsigned action, const state_t *s, const dsets_state_t *ds); + +static bool dsets_extent(unsigned action, const state_t *s, const dsets_state_t *ds); +static bool dset_extent_real(unsigned action, hid_t did, const hsize_t *chunk_dims); + +static bool verify_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config, + np_state_t *np); + +static bool verify_dsets_chunks(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which); +static bool verify_read_dset(unsigned action, hid_t did, hid_t tid, hsize_t *start, hsize_t *stride, + hsize_t *count, hsize_t *block); +static bool verify_read_dset_single(unsigned action, const state_t *s, const dsets_state_t *ds); + +static bool verify_dsets_extent(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which); +static bool verify_dset_extent_real(unsigned action, hid_t did, unsigned rows, unsigned cols, unsigned which); + +static const hid_t badhid = H5I_INVALID_HID; + +static void +usage(const char *progname) +{ + fprintf(stderr, + "usage: %s \n" + " [-s] [-i] [-f] [-e] [-r]\n" + " [-m rows] [-n cols]\n" + " [-g gwrites] [-p pwrites] [-t twrites] [-l lwrites]\n" + " [-x xincrs] [-y decrs]\n" + " [-u nticks] [-c csteps] [-S] [-N] [-q] [-b] [-o]\n", + progname); + + fprintf( + stderr, + "\n" + "-s: create a 2-d chunked dataset with single index\n" + "-i: create a 2-d chunked dataset with implicit index\n" + "-f: create a 2-d chunked dataset with fixed array index\n" + "-e: create a 2-d chunked dataset with extensible array index\n" + "-r: create a 2-d chunked dataset with v2 btree index\n" + "-m rows: # of <rows> rows for the datasets\n" + "-n cols: # of <cols> columns for the chunked datasets\n" + "-g gwrites: perform <gwrites> writes that cover a single chunk per write to datasets\n" + "-p pwrites: perform <pwrites> writes that cover a single partial chunk per write to datasets\n" + "-t twrites: perform <twrites> writes that cover multiple chunks per write to datasets\n" + "-l lwrites: perform <lwrites> writes that cover multiple partial chunks per write to datasets\n" + "-x xincrs: increase dataset dimension size by 1 for <xincrs> times to datasets\n" + "-y ydecrs: decrease dataset dimension size by 1 for <ydecrs> times to datasets\n" + "-u nticks: `nticks` ticks for the reader to wait before verification\n" + " (default is 4)\n" + "-c csteps: `csteps` steps communication interval between reader and writer\n" + " (default is 1)\n" + "-S: do not use VFD SWMR\n" + "-N: do not use named pipes for test synchronization\n" + "-q: silence printouts, few messages\n" + "-b: write data in big-endian byte order\n" + " (default is H5T_NATIVE_UINT32)\n\n" + "-o: enable compression (deflate filter) for the datasets\n"); + + fprintf( + stderr, + "\n" + "Note:\n" + "1. Require to specify at least -s, -i, -f, -e or -r option\n" + "2. -m and -n options: <rows> and <cols> have to be > 0.\n" + "3. The chunk size for datasets is <rows>/2 by <cols/2>\n" + "4. The maximum dimension for dataset with fixed array index is: <rows>*2 by <cols>*2\n" + "5. Writes to dataset with single index:\n" + " -g and -t options will be the same: write one single chunk\n" + " -p and -l options will be the same: write one single partial chunk\n" + "6. Writes to dataset with implicit/fixed array/extensible array/v2 btree index:\n" + " i) Partial chunk writes to datasets via -p or -l option:\n" + " Apply only to a single or a multiple chunk with size > 2 in both dimensions\n" + " Otherwise, the whole chunk (single or multiple) is written\n" + " ii) Multiple chunk writes to datasets via -t or -l option:\n" + " Will expand the chunk size by 2 for both dimensions\n" + "7. Increase/decrease dataset dimension sizes to datasets:\n" + " Apply only for datasets with fixed array/extensible array/v2 btree index\n" + " -x option: for dataset with fixed array index, the increase cannot exceed maximum dimension\n" + " -y option: the decrease cannot go below the dataset's chunk size\n" + "8. -c <csteps> option cannot exceed the input for the following options:\n" + " -g <gwrites> or -p <pwrites> or\n" + " -t <twrites> or -l <lwrites> or\n" + " -x <xincrs> or -y <ydecrs>\n" + "\n"); + + exit(EXIT_FAILURE); +} /* usage() */ + +/* + * Initialize option info in state_t + */ +static bool +state_init(state_t *s, int argc, char **argv) +{ + unsigned long tmp; + int ch; + char tfile[PATH_MAX]; + char * end; + + *s = ALL_HID_INITIALIZER; + esnprintf(tfile, sizeof(tfile), "%s", argv[0]); + esnprintf(s->progname, sizeof(s->progname), "%s", basename(tfile)); + + while ((ch = getopt(argc, argv, "siferom:n:x:y:g:p:t:l:bqSNu:c:")) != -1) { + switch (ch) { + + case 's': /* A chunked dataset with single index */ + s->single_index = true; + break; + + case 'i': /* A chunked dataset with implicit index */ + s->implicit_index = true; + break; + + case 'f': /* A chunked dataset with fixed array index */ + s->fa_index = true; + break; + + case 'e': /* A chunked dataset with extensible array index */ + s->ea_index = true; + break; + + case 'r': /* A chunked dataset with version 2 btree index */ + s->bt2_index = true; + break; + + case 'o': /* A chunked dataset with version 2 btree index */ + s->use_filter = true; + break; + + case 'q': /* Be quiet: few/no progress messages */ + verbosity = 0; + break; + + case 'b': /* Write data in big-endian byte order */ + s->filetype = H5T_STD_U32BE; + break; + + case 'S': /* Disable VFD SWMR */ + s->use_vfd_swmr = false; + break; + + case 'N': /* Disable named pipes synchronization */ + s->use_np = false; + break; + + case 'm': /* # of rows for datasets */ + case 'n': /* # of cols for datasets */ + case 'x': /* Increase by 1 for <xincrs> times */ + case 'y': /* Decrease by 1 for <ydecdrs> times */ + case 'g': /* # of writes that cover a single chunk per write */ + case 'p': /* # of writes that cover a single partial chunk per write */ + case 't': /* # of writes that cover multiple chunks per write */ + case 'l': /* # of writes that cover multiple partial chunks per write */ + case 'u': /* Ticks for reader to wait before verification */ + case 'c': /* Communication interval */ + errno = 0; + tmp = strtoul(optarg, &end, 0); + if (end == optarg || *end != '\0') { + printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + TEST_ERROR; + } + else if (errno != 0) { + printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + TEST_ERROR; + } + else if (tmp > UINT_MAX) { + printf("`-%c` argument `%lu` too large\n", ch, tmp); + TEST_ERROR; + } + + if (ch == 'm') + s->rows = (unsigned)tmp; + else if (ch == 'n') + s->cols = (unsigned)tmp; + else if (ch == 'x') + s->xincrs = (unsigned)tmp; + else if (ch == 'y') + s->ydecrs = (unsigned)tmp; + else if (ch == 'g') + s->gwrites = (unsigned)tmp; + else if (ch == 'p') + s->pwrites = (unsigned)tmp; + else if (ch == 't') + s->twrites = (unsigned)tmp; + else if (ch == 'l') + s->lwrites = (unsigned)tmp; + else if (ch == 'u') + s->update_interval = (unsigned)tmp; + else if (ch == 'c') + s->csteps = (unsigned)tmp; + + break; + + case '?': + default: + usage(s->progname); + break; + } + } + argc -= optind; + argv += optind; + + /* Require to specify at least -s or -i or -f or -e or -r option */ + if (!s->single_index && !s->implicit_index && !s->fa_index && !s->ea_index && !s->bt2_index) { + printf("Require to specify at least -s or -i or -f or -e or -r option\n"); + usage(s->progname); + goto error; + } + + /* -x or -y option only apply to dataset with fixed/extensible array/v2 btree index */ + if ((s->single_index || s->implicit_index) && (s->xincrs || s->ydecrs)) { + printf("-x or -y option not applicable to dataset with single or implicit index\n"); + usage(s->progname); + goto error; + } + + /* rows and cols cannot be zero */ + if (s->rows == 0 || s->cols == 0) { + printf("-m <rows> or -n <cols> cannot be zero\n"); + TEST_ERROR; + } + + /* -c <csteps> cannot be zero */ + if (!s->csteps) { + printf("communication interval cannot be zero\n"); + TEST_ERROR; + } + + /* -c <csteps> and -g <gwrites> options */ + if (s->gwrites && s->csteps > s->gwrites) { + printf("communication interval with -g <gwrites> is out of bounds\n"); + TEST_ERROR; + } + + /* -c <csteps> and -p <pwrites> options */ + if (s->pwrites && s->csteps > s->pwrites) { + printf("communication interval with -p <pwrites> is out of bounds\n"); + TEST_ERROR; + } + + /* -c <csteps> and -t <twrites> options */ + if (s->twrites && s->csteps > s->twrites) { + printf("communication interval with -t <twrites> is out of bounds\n"); + TEST_ERROR; + } + + /* -c <csteps> and -l <lwrites> options */ + if (s->lwrites && s->csteps > s->lwrites) { + printf("communication interval with -l <lwrites> is out of bounds\n"); + TEST_ERROR; + } + + /* -c <csteps> and -x <xincrs> options */ + if (s->xincrs && s->csteps > s->xincrs) { + printf("communication interval with -x <xincrs> is out of bounds\n"); + TEST_ERROR; + } + + /* -c <csteps> and -y <ydecrs> options */ + if (s->ydecrs && s->csteps > s->ydecrs) { + printf("communication interval with -y <ydecrs> is out of bounds\n"); + TEST_ERROR; + } + + /* The test file name */ + esnprintf(s->filename, sizeof(s->filename), "vfd_swmr_dsetchks.h5"); + + return true; + +error: + return false; + +} /* state_init() */ + +/* + * Create the specified datasets: + * --2-dimensional chunked datasets + * --chunk dimension is rows/2 by cols/2 + * --fill value is FILL_INIT + * --deflate filter if specified + * --dataset with single index if specified + * --dataset with implicit index if specified + * --dataset with fixeda array index if specified + * --dataset with extensible array index if specified + * --dataset with bt2 index if specified + */ +static bool +create_dsets(const state_t *s, dsets_state_t *ds) +{ + hid_t dcpl = badhid; + hid_t dcpl2 = badhid; + hid_t sid = badhid; + hsize_t dims[2]; + unsigned fillval = FILL_INIT; + + *ds = DSETS_INITIALIZER; + set_chunk_scaled_dims(s, ds); + + dims[0] = s->rows; + dims[1] = s->cols; + + /* Create dataset creation property list */ + /* Set properties in dcpl that are common for all the datasets */ + if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { + printf("H5Pcreate failed\n"); + TEST_ERROR; + } + + /* Set to chunked layout */ + if (H5Pset_layout(dcpl, H5D_CHUNKED) < 0) { + printf("H5Pset_layout failed\n"); + TEST_ERROR; + } + + /* Set fill value to FILL_INIT */ + if (H5Pset_fill_value(dcpl, s->filetype, &fillval) < 0) { + printf("H5Pset_fill_value failed\n"); + goto error; + } + + /* Set to use filter as specified */ + if (s->use_filter) { + if (H5Pset_deflate(dcpl, 5) < 0) { + printf("H5Pset_deflate failed\n"); + goto error; + } + } + + /* Create 2-D chunked dataset with single index */ + /* Chunked, dims=max_dims=chunk_dims */ + if (s->single_index) { + + if ((dcpl2 = H5Pcopy(dcpl)) < 0) { + printf("H5Tcopy failed\n"); + TEST_ERROR; + } + + if (H5Pset_chunk(dcpl2, 2, dims) < 0) { + printf("H5Pset_chunk failed\n"); + TEST_ERROR; + } + + if ((sid = H5Screate_simple(2, dims, dims)) < 0) { + printf("H5Screate_simple failed\n"); + TEST_ERROR; + } + + /* Create the chunked dataset: single index */ + if ((ds->single_did = H5Dcreate2(s->file, DSET_SINGLE_NAME, s->filetype, sid, H5P_DEFAULT, dcpl2, + H5P_DEFAULT)) < 0) { + printf("H5Dcreate2 chunked dataset:single index failed\n"); + TEST_ERROR; + } + + if (H5Pclose(dcpl2) < 0) { + printf("H5Pclose failed\n"); + TEST_ERROR; + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + } + + /* Chunk size is common for datasets with implicit/fa/ea/bt2 index */ + if (H5Pset_chunk(dcpl, 2, ds->chunk_dims) < 0) { + printf("H5Pset_chunk failed\n"); + TEST_ERROR; + } + + /* Create 2-D chunked dataset with implicit index */ + /* Chunked, dims=max_dims, early allocation */ + if (s->implicit_index) { + + if ((dcpl2 = H5Pcopy(dcpl)) < 0) { + printf("H5Pcopy failed\n"); + TEST_ERROR; + } + + if (H5Pset_alloc_time(dcpl2, H5D_ALLOC_TIME_EARLY) < 0) { + printf("H5Pset_alloc_time\n"); + TEST_ERROR; + } + + if ((sid = H5Screate_simple(2, dims, dims)) < 0) { + printf("H5Screate_simple failed\n"); + TEST_ERROR; + } + + /* Create the chunked dataset: implicit index */ + if ((ds->implicit_did = H5Dcreate2(s->file, DSET_IMPLICIT_NAME, s->filetype, sid, H5P_DEFAULT, dcpl2, + H5P_DEFAULT)) < 0) { + printf("H5Dcreate2 chunked dataset:implicit index failed\n"); + TEST_ERROR; + } + + if (H5Pclose(dcpl2) < 0) { + printf("H5Pclose failed\n"); + TEST_ERROR; + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + } + + /* Create 2-D chunked dataset with fixed array index */ + /* Chunked, fixed max_dims */ + if (s->fa_index) { + hsize_t max_dims[2]; + + max_dims[0] = dims[0] * 2; + max_dims[1] = dims[1] * 2; + + if ((sid = H5Screate_simple(2, dims, max_dims)) < 0) { + printf("H5Screate_simple failed\n"); + TEST_ERROR; + } + + /* Create the chunked dataset (fixed array index) with the named datatype */ + if ((ds->fa_did = + H5Dcreate2(s->file, DSET_FA_NAME, s->filetype, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { + printf("H5Dcreate2 chunked dataset: fa index failed\n"); + TEST_ERROR; + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + } + + /* Create 2-D chunked dataset with extensible array index */ + /* Chunked, 1 unlimited max_dims */ + if (s->ea_index) { + hsize_t max_dims[2]; + + max_dims[0] = dims[0] * 2; + max_dims[1] = H5S_UNLIMITED; + + if ((sid = H5Screate_simple(2, dims, max_dims)) < 0) { + printf("H5Screate_simple failed\n"); + TEST_ERROR; + } + + /* Create the chunked dataset (extensible array index) with the named datatype */ + if ((ds->ea_did = + H5Dcreate2(s->file, DSET_EA_NAME, s->filetype, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { + printf("H5Dcreate2 chunked dataset: ea index failed\n"); + TEST_ERROR; + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + } + + /* Create 2-D chunked dataset with bt2 index */ + /* Chunked, 2 unlimited max_dims */ + if (s->bt2_index) { + hsize_t max_dims[2]; + + max_dims[0] = max_dims[1] = H5S_UNLIMITED; + + if ((sid = H5Screate_simple(2, dims, max_dims)) < 0) { + printf("H5Screate_simple failed\n"); + TEST_ERROR; + } + + /* Create the chunked dataset (btree2 index) with the named datatype */ + if ((ds->bt2_did = + H5Dcreate2(s->file, DSET_BT2_NAME, s->filetype, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { + printf("H5Dcreate2 chunked dataset: bt2 index failed\n"); + TEST_ERROR; + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + } + + if (H5Pclose(dcpl) < 0) { + printf("H5Pclose failed\n"); + TEST_ERROR; + } + + return true; + +error: + H5E_BEGIN_TRY + { + H5Pclose(dcpl); + H5Pclose(dcpl2); + H5Sclose(sid); + H5Dclose(ds->single_did); + H5Dclose(ds->implicit_did); + H5Dclose(ds->fa_did); + H5Dclose(ds->ea_did); + H5Dclose(ds->bt2_did); + } + H5E_END_TRY; + + return false; + +} /* create_dsets() */ + +/* + * Open the specified datasets. + */ +static bool +open_dsets(const state_t *s, dsets_state_t *ds) +{ + *ds = DSETS_INITIALIZER; + set_chunk_scaled_dims(s, ds); + + /* Dataset with single index */ + if (s->single_index) { + if ((ds->single_did = H5Dopen2(s->file, DSET_SINGLE_NAME, H5P_DEFAULT)) < 0) { + printf("H5Dopen dataset with single index failed\n"); + TEST_ERROR; + } + } + + /* Dataset with implicit index */ + if (s->implicit_index) { + if ((ds->implicit_did = H5Dopen2(s->file, DSET_IMPLICIT_NAME, H5P_DEFAULT)) < 0) { + printf("H5Dopen dataset with implicit index failed\n"); + TEST_ERROR; + } + } + + /* Dataset with fixed array index */ + if (s->fa_index) { + if ((ds->fa_did = H5Dopen2(s->file, DSET_FA_NAME, H5P_DEFAULT)) < 0) { + printf("H5Dopen dataset with fa index failed\n"); + TEST_ERROR; + } + } + + /* Dataset with extensible array index */ + if (s->ea_index) { + if ((ds->ea_did = H5Dopen2(s->file, DSET_EA_NAME, H5P_DEFAULT)) < 0) { + printf("H5Dopen dataset with ea index failed\n"); + TEST_ERROR; + } + } + + /* Dataset with v2 btree index */ + if (s->bt2_index) { + if ((ds->bt2_did = H5Dopen2(s->file, DSET_BT2_NAME, H5P_DEFAULT)) < 0) { + printf("H5Dopen dataset with ea index failed\n"); + TEST_ERROR; + } + } + + return true; + +error: + return false; + +} /* open_dsets() */ + +/* + * Initialize the following 3 fields in ds: + * --chunk_dims[]: chunk sizes for datasets with implicit/fa/ea/bt2 index + * --scaled_dims[]: # of chunks in x and y dimensions + * --multi_scaled[]: # of multiple chunks (2 chunks) in x and y dimensions + */ +static void +set_chunk_scaled_dims(const state_t *s, dsets_state_t *ds) +{ + /* Default chunk size is s->rows/2 or s->cols/2 but not less than 1 */ + ds->chunk_dims[0] = MAX(1, s->rows / 2); + ds->chunk_dims[1] = MAX(1, s->cols / 2); + + /* # of chunks in x and y dimensions */ + ds->scaled_dims[0] = (s->rows + ds->chunk_dims[0] - 1) / ds->chunk_dims[0]; + ds->scaled_dims[1] = (s->cols + ds->chunk_dims[1] - 1) / ds->chunk_dims[1]; + + /* # of "multiple chunks" (2-chunks) in x and y dimensions */ + ds->multi_scaled[0] = (ds->scaled_dims[0] + MULTI_CHUNKS - 1) / MULTI_CHUNKS; + ds->multi_scaled[1] = (ds->scaled_dims[1] + MULTI_CHUNKS - 1) / MULTI_CHUNKS; + +} /* set_chunk_scaled_dims() */ + +/* + * Close the specified datasets + */ +static bool +close_dsets(const dsets_state_t *ds) +{ + /* Close dataset with single index */ + if (ds->single_did != badhid && H5Dclose(ds->single_did) < 0) { + printf("close_dset_real() dataset: single index failed\n"); + TEST_ERROR; + } + + /* Close dataset with implicit index */ + if (ds->implicit_did != badhid && H5Dclose(ds->implicit_did) < 0) { + printf("close_dset_real() dataset: implicit index failed\n"); + TEST_ERROR; + } + + /* Close dataset with fixed array index */ + if (ds->fa_did != badhid && H5Dclose(ds->fa_did) < 0) { + printf("close_dset_real() dataset: fa index failed\n"); + TEST_ERROR; + } + + /* Close dataset with extensible array index */ + if (ds->ea_did != badhid && H5Dclose(ds->ea_did) < 0) { + printf("close_dset_real() : ea index failed\n"); + TEST_ERROR; + } + + /* Close dataset with v2 btree index */ + if (ds->bt2_did != badhid && H5Dclose(ds->bt2_did) < 0) { + printf("close_dset_real() dataset: bt2 index failed\n"); + TEST_ERROR; + } + + return true; + +error: + H5E_BEGIN_TRY + { + H5Dclose(ds->single_did); + H5Dclose(ds->implicit_did); + H5Dclose(ds->fa_did); + H5Dclose(ds->ea_did); + H5Dclose(ds->bt2_did); + } + H5E_END_TRY; + + return false; + +} /* close_dsets() */ + +/* + * Writer + */ + +/* + * Perform the operations for the specified datasets: + * + * Dataset with single index: + * --only 1 write is performed because this dataset only has a single chunk + * + * Dataset with implicit/fixed array/extensible array/version 2 btree index: + * --GWRITES: writes that cover a single chunk per write + * --PWRITES: writes that cover a partial chunk per write + * --TWRITES: writes that cover multiple chunks per write + * --LWRITES: writes that cover multiple partial chunks per write + * + * Dataset with fixed array/extensible array/version 2 btree index: + * --INCR_EXT: increase dataset dimension sizes + * --DECR_EXT: decrease dataset dimenions sizes + */ +static bool +perform_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config, np_state_t *np) +{ + unsigned step; + unsigned allowed_writes; + bool result; + + /* Dataset with single index */ + if (s->single_index) { + /* Perform single full chunk write */ + /* gwrites and twrites are the same */ + /* Doesn't matter how many writes, only perform once */ + if (s->gwrites || s->twrites) { + dbgf(2, "Perform single full chunk write to dataset with single index; only perform 1 write\n"); + + result = write_dset_single(GWRITES, s, ds); + + if (s->use_np && !np_writer(result, 0, s, np, config)) { + printf("np_writer() for addition failed\n"); + TEST_ERROR; + } + } + + /* Perform a single partial chunk write */ + /* pwrites and lwrites are the same */ + /* Doesn't matter how many writes, only perform once */ + if (s->pwrites || s->lwrites) { + dbgf(2, + "Perform single partial chunk write to dataset with single index; only perform 1 write\n"); + + result = write_dset_single(PWRITES, s, ds); + + if (s->use_np && !np_writer(result, 0, s, np, config)) { + printf("np_writer() for addition failed\n"); + TEST_ERROR; + } + } + } + + /* Datasets with implicit/fa/ea/bt2 index */ + if (s->implicit_index || s->fa_index || s->ea_index || s->bt2_index) { + + /* Perform single full chunk writes */ + if (s->gwrites) { + allowed_writes = (unsigned)(ds->scaled_dims[0] * ds->scaled_dims[1]); + dbgf(2, "The allowed -g writes is %u; you specify %u writes\n", allowed_writes, s->gwrites); + + for (step = 0; (step < s->gwrites && step < allowed_writes); step++) { + dbgf(2, "Perform single full chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + result = write_dsets_chunks(GWRITES, s, ds, step); + + if (s->use_np && !np_writer(result, step, s, np, config)) { + printf("np_writer() for single full chunk writes failed\n"); + TEST_ERROR; + } + } + } + + /* Perform single partial chunk writes */ + if (s->pwrites) { + allowed_writes = (unsigned)(ds->scaled_dims[0] * ds->scaled_dims[1]); + dbgf(2, "The allowed -p writes is %u; you specify %u writes\n", allowed_writes, s->pwrites); + + for (step = 0; (step < s->pwrites && step < allowed_writes); step++) { + dbgf(2, "Perform single partial chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + result = write_dsets_chunks(PWRITES, s, ds, step); + + if (s->use_np && !np_writer(result, step, s, np, config)) { + printf("np_writer() for partial single chunk writes failed\n"); + TEST_ERROR; + } + } + } + + /* Perform multiple full chunk writes */ + if (s->twrites) { + allowed_writes = (unsigned)(ds->multi_scaled[0] * ds->multi_scaled[1]); + dbgf(2, "The allowed -t writes is %u; you specify %u writes\n", allowed_writes, s->twrites); + + for (step = 0; (step < s->twrites && step < allowed_writes); step++) { + dbgf(2, "Perform multiple full chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + result = write_dsets_chunks(TWRITES, s, ds, step); + + if (s->use_np && !np_writer(result, step, s, np, config)) { + printf("np_writer() for multiple full chunk writes failed\n"); + TEST_ERROR; + } + } + } + + /* Perform multiple partial chunk writes */ + if (s->lwrites) { + allowed_writes = (unsigned)(ds->multi_scaled[0] * ds->multi_scaled[1]); + dbgf(2, "The allowed -l writes is %u; you specify %u writes\n", allowed_writes, s->lwrites); + + for (step = 0; (step < s->lwrites && step < allowed_writes); step++) { + dbgf(2, + "Perform multiple partial chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + result = write_dsets_chunks(LWRITES, s, ds, step); + + if (s->use_np && !np_writer(result, step, s, np, config)) { + printf("np_writer() for multiple partial chunk writes failed\n"); + TEST_ERROR; + } + } + } + + /* Increase dataset dimensions: apply only to fa/ea/bt2 index */ + if (!s->implicit_index && s->xincrs) { + for (step = 0; step < s->xincrs; step++) { + dbgf(2, "Increase dataset dimension sizes by %u for datasets with fa/ea/bt2 index\n", + step + 1); + + result = dsets_extent(INCR_EXT, s, ds); + + if (s->use_np && !np_writer(result, step, s, np, config)) { + printf("np_writer() for increasing dimension sizes failed\n"); + TEST_ERROR; + } + } + } + + /* Decrease dataset dimensions: apply only to fa/ea/bt2 index */ + if (!s->implicit_index && s->ydecrs) { + for (step = 0; step < s->ydecrs; step++) { + dbgf(2, "Decrease dataset dimension sizes by %u for datasets with fa/ea/bt2 index\n", + step + 1); + + result = dsets_extent(DECR_EXT, s, ds); + + if (s->use_np && !np_writer(result, step, s, np, config)) { + printf("np_writer() for decreasing dimension sizes failed\n"); + TEST_ERROR; + } + } + } + } + + return true; + +error: + return false; + +} /* perform_dsets_operations() */ + +/* + * Perform the "action" for each of the specified datasets: + * GWRITES: perform `which` write that covers a single chunk + * PWRITES: perform `which` write that covers a partial chunk + * TWRITES: perform `which` write that covers multiple chunks + * LWRITEs: perform `which` write that covers multiple partial chunks + */ +static bool +write_dsets_chunks(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which) +{ + hsize_t start[2] = {0, 0}; + hsize_t stride[2] = {0, 0}; + hsize_t count[2] = {0, 0}; + hsize_t block[2] = {0, 0}; + + HDassert(s->implicit_index || s->fa_index || s->ea_index || s->bt2_index); + + /* Set up selection info according to the specified action */ + setup_selection(action, which, s, ds, start, stride, count, block); + + if (s->implicit_index) { + if (!write_dset(action, ds->implicit_did, s->filetype, start, stride, count, block)) { + printf("H5Dwrite to chunked dataset: implicit index dataset failed\n"); + TEST_ERROR; + } + } + + if (s->fa_index) { + if (!write_dset(action, ds->fa_did, s->filetype, start, stride, count, block)) { + printf("H5Dwrite to chunked dataset: fa index dataset failed\n"); + TEST_ERROR; + } + } + + if (s->ea_index) { + if (!write_dset(action, ds->ea_did, s->filetype, start, stride, count, block)) { + printf("H5Dwrite to chunked dataset: ea index dataset failed\n"); + TEST_ERROR; + } + } + + if (s->bt2_index) { + if (!write_dset(action, ds->bt2_did, s->filetype, start, stride, count, block)) { + printf("H5Dwrite to chunked dataset: bt2 index dataset failed\n"); + TEST_ERROR; + } + } + + return true; + +error: + return false; + +} /* write_dsets_chunks() */ + +/* + * Set up selection info: start, stride, count, block + */ +static void +setup_selection(unsigned action, unsigned which, const state_t *s, const dsets_state_t *ds, hsize_t *start, + hsize_t *stride, hsize_t *count, hsize_t *block) +{ + unsigned i, j, m, n; + bool end = false; + hsize_t chunk_dims[2]; + + HDassert(action == GWRITES || action == PWRITES || action == TWRITES || action == LWRITES); + + count[0] = 1; + count[1] = 1; + stride[0] = 1; + stride[1] = 1; + + /* Single or multiple chunk writes */ + if (action == GWRITES || action == PWRITES) { + block[0] = chunk_dims[0] = ds->chunk_dims[0]; + block[1] = chunk_dims[1] = ds->chunk_dims[1]; + + for (i = 0; i < ds->scaled_dims[0] && !end; i++) { + for (j = 0; j < ds->scaled_dims[1]; j++) { + + /* Determine which chunk to write */ + if (which == (i * ds->scaled_dims[1] + j)) { + start[0] = i * ds->chunk_dims[0]; + start[1] = j * ds->chunk_dims[1]; + + /* If an edge chunk, determine the block size */ + check_set_edge_block(s, ds, i, j, block); + + end = true; + break; + } /* end if */ + } /* end for */ + } /* end for */ + + /* Check and set partial chunk write */ + if (action == PWRITES) + check_set_partial_block(action, chunk_dims, block, start); + + /* Partial or multiple partial chunk writes */ + } + else if (action == TWRITES || action == LWRITES) { + /* Multiple chunk writes: the block covers 2 chunks in each dimension */ + block[0] = chunk_dims[0] = ds->chunk_dims[0] * 2; + block[1] = chunk_dims[1] = ds->chunk_dims[1] * 2; + + for (i = 0, m = 0; i < ds->scaled_dims[0] && !end; i += 2, m++) { + for (j = 0, n = 0; j < ds->scaled_dims[1]; j += 2, n++) { + if (which == (m * ds->multi_scaled[1] + n)) { + start[0] = i * ds->chunk_dims[0]; + start[1] = j * ds->chunk_dims[1]; + + /* If an edge chunk, determine the block size */ + check_set_edge_block(s, ds, i, j, block); + + end = true; + break; + + } /* end if */ + } /* end for */ + } /* end for */ + + /* Check and set multiple partial chunk write */ + if (action == LWRITES) + check_set_partial_block(action, chunk_dims, block, start); + } + +} /* setup_selection() */ + +/* + * Check if "i" or "j" is an edge block. + * If so, determine the block size. + */ +static void +check_set_edge_block(const state_t *s, const dsets_state_t *ds, unsigned i, unsigned j, hsize_t *block) +{ + + if (i == (ds->scaled_dims[0] - 1)) { + if ((ds->scaled_dims[0] * ds->chunk_dims[0]) >= s->rows) + block[0] = s->rows - i * ds->chunk_dims[0]; + } + + if (j == (ds->scaled_dims[1] - 1)) { + if ((ds->scaled_dims[1] * ds->chunk_dims[1]) >= s->cols) + block[1] = s->cols - (j * ds->chunk_dims[1]); + } + +} /* check_set_edge_block() */ + +/* + * Determine the starting offset and the partial block size if the block is: + * --a full chunk or a multiple full chunks + * --the block size is at least 2 + * Otherwise, nothing is done i.e. the whole block is applied + */ +static void +check_set_partial_block(unsigned action, const hsize_t *chunk_dims, hsize_t *block, hsize_t *start) +{ + HDassert(action == PWRITES || action == LWRITES); + + /* Apply only to full chunk or multi full chunks with block size > 2 */ + if (block[0] == chunk_dims[0] && block[1] == chunk_dims[1]) { + + if (block[0] > 2) { + start[0] += 1; + block[0] -= 2; + }; + + if (block[1] > 2) { + start[1] += 1; + block[1] -= 2; + }; + } + +} /* check_set_partial_block() */ + +/* + * Make the selection and then write to the dataset. + */ +static bool +write_dset(unsigned action, hid_t did, hid_t tid, hsize_t *start, hsize_t *stride, hsize_t *count, + hsize_t *block) +{ + hid_t sid = badhid; + hid_t mem_sid = badhid; + hsize_t mem_dims[2]; + unsigned int *buf = NULL; + unsigned i; + + if ((sid = H5Dget_space(did)) < 0) { + printf("H5Sget_space failed\n"); + TEST_ERROR; + } + + if (H5Sselect_hyperslab(sid, H5S_SELECT_SET, start, stride, count, block) < 0) { + printf("H5Sselect_hyperslab failed\n"); + TEST_ERROR; + } + + mem_dims[0] = block[0]; + mem_dims[1] = block[1]; + + if ((mem_sid = H5Screate_simple(2, mem_dims, NULL)) < 0) { + printf("H5Screate_simple failed\n"); + TEST_ERROR; + } + + /* Allocate the buffer for writing */ + if ((buf = HDmalloc(block[0] * block[1] * sizeof(unsigned int))) == NULL) { + printf("HDmalloc failed\n"); + TEST_ERROR; + } + + /* Fill the value to be written depending on full or partial writes */ + for (i = 0; i < (block[0] * block[1]); i++) { + if (action == GWRITES || action == TWRITES) + buf[i] = FILL_FULL; + else + buf[i] = FILL_PARTIAL; + } + + if (H5Dwrite(did, tid, mem_sid, sid, H5P_DEFAULT, buf) < 0) { + printf("H5Dwrite failed\n"); + TEST_ERROR; + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + + if (buf) + HDfree(buf); + + return true; + +error: + H5E_BEGIN_TRY + { + H5Sclose(sid); + H5Sclose(mem_sid); + } + H5E_END_TRY; + + if (buf) + HDfree(buf); + + return false; + +} /* write_dset() */ + +/* + * Increase or decrease the dimenion sizes for the specified datasets. + */ +static bool +dsets_extent(unsigned action, const state_t *s, const dsets_state_t *ds) +{ + unsigned nerrors = 0; + bool ret = true; + + HDassert(s->fa_index || s->ea_index || s->bt2_index); + HDassert(action == INCR_EXT || action == DECR_EXT); + + if (s->fa_index) { + dbgf(2, "Setting dataset extent for FA dataset\n"); + if (!dset_extent_real(action, ds->fa_did, ds->chunk_dims)) { + ++nerrors; + } + } + + if (s->ea_index) { + dbgf(2, "Setting dataset extent for EA dataset\n"); + if (!dset_extent_real(action, ds->ea_did, ds->chunk_dims)) + ++nerrors; + } + + if (s->bt2_index) { + dbgf(2, "Setting dataset extent for BT2 dataset\n"); + if (!dset_extent_real(action, ds->bt2_did, ds->chunk_dims)) + ++nerrors; + } + + if (nerrors) + ret = false; + + return (ret); + +} /* dsets_extent() */ + +/* + * Perform the real work of increasing/decreasing the dataset dimension sizes + */ +static bool +dset_extent_real(unsigned action, hid_t did, const hsize_t *chunk_dims) +{ + hsize_t dims[2]; + hsize_t max_dims[2]; + hsize_t new[2]; + hid_t sid = badhid; + + if ((sid = H5Dget_space(did)) < 0) { + printf("H5Sget_space failed\n"); + TEST_ERROR; + } + + if (H5Sget_simple_extent_dims(sid, dims, max_dims) < 0) { + printf("H5Sget_simple_extent_dims failed\n"); + TEST_ERROR; + } + + switch (action) { + + case INCR_EXT: + new[0] = dims[0] + 1; + new[1] = dims[1] + 1; + + /* Cannot increase to more than maximum dimension (both dims) for FA dataset */ + /* Cannot increase to more than maximum dimension (dim 0) for EA dataset */ + if ((max_dims[0] != H5S_UNLIMITED && new[0] > max_dims[0]) || + (max_dims[1] != H5S_UNLIMITED && new[1] > max_dims[1])) { + printf("Cannot exceed maximum dimension for dataset\n"); + TEST_ERROR; + } + + break; + + case DECR_EXT: + new[0] = dims[0] - 1; + new[1] = dims[1] - 1; + + if (new[0] < chunk_dims[0] || new[1] < chunk_dims[1]) { + printf("Cannot decrease to less than chunk dimension\n"); + TEST_ERROR; + } + break; + + default: + HDassert(0 && "Unknown action?!?"); + + } /* end switch */ + + if (H5Dset_extent(did, new) < 0) { + printf("H5Dset_extent for dataset failed\n"); + TEST_ERROR; + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + + return true; + +error: + H5E_BEGIN_TRY + { + H5Sclose(sid); + } + H5E_END_TRY; + + return false; +} /* dset_extent_real() */ + +/* + * Write to dataset with single index: only 1 chunk is written + */ +static bool +write_dset_single(unsigned action, const state_t *s, const dsets_state_t *ds) +{ + hsize_t count[2] = {1, 1}; + hsize_t stride[2] = {1, 1}; + hsize_t start[2] = {0, 0}; + hsize_t block[2] = {s->rows, s->cols}; + + HDassert(action == GWRITES || action == PWRITES || action == TWRITES || action == LWRITES); + HDassert(s->single_index); + + /* Check and set partial chunk write */ + if (action == PWRITES || action == LWRITES) + check_set_partial_block(action, block, block, start); + + if (!write_dset(action, ds->single_did, s->filetype, start, stride, count, block)) { + printf("H5Dwrite to dataset with single index dataset failed\n"); + TEST_ERROR; + } + + return true; + +error: + return false; + +} /* write_dset_single() */ + +/* + * Reader + */ + +/* + * Verify the operations for the specified datasets: + * + * Dataset with single index: + * --verify only 1 write because this dataset only has a single chunk + * + * Dataset with implicit/fixed array/extensible array/version 2 btree index: + * --GWRITES: verify writes that cover a single chunk per write + * --PWRITES: verify writes that cover a partial chunk per write + * --TWRITES: verify writes that cover multiple chunks per write + * --LWRITES: verify writes that cover multiple partial chunks per write + * + * Dataset with fixed array/extensible array/version 2 btree index: + * --INCR_EXT: verify the increase to dataset dimension sizes + * --DECR_EXT: verify the decrease to dataset dimensions sizes + */ +static bool +verify_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config, np_state_t *np) +{ + unsigned step; + unsigned allowed_writes; + bool result; + + /* Verify dataset with single index */ + if (s->single_index) { + /* Verify a single full chunk write to dataset with single index */ + /* gwrites and twrites are the same */ + /* Doesn't matter how many writes, only perform once */ + if (s->gwrites || s->twrites) { + dbgf(2, "Verify single full chunk write to dataset with single index; only verify 1 write\n"); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, 0, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_read_dset_single(GWRITES, s, ds); + + if (s->use_np && !np_reader(result, 0, s, np)) { + printf("np_reader() for verifying addition failed\n"); + TEST_ERROR; + } + } + + /* Verify a single partial chunk write to dataset with single index */ + /* pwrites and lwrites are the same */ + /* Doesn't matter how many writes, only perform once */ + if (s->pwrites || s->lwrites) { + dbgf(2, "Verify single partial chunk write to dataset with single index; only verify 1 write\n"); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, 0, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_read_dset_single(PWRITES, s, ds); + + if (s->use_np && !np_reader(result, 0, s, np)) { + printf("np_reader() for verifying addition failed\n"); + TEST_ERROR; + } + } + } + + /* Verify datasets with implicit/fa/ea/bt2 index */ + if (s->implicit_index || s->fa_index || s->ea_index || s->bt2_index) { + + /* Verify single full chunk writes */ + if (s->gwrites) { + allowed_writes = (unsigned)(ds->scaled_dims[0] * ds->scaled_dims[1]); + dbgf(2, "The allowed -g writes is %u; you specify %u writes\n", allowed_writes, s->gwrites); + + for (step = 0; (step < s->gwrites && step < allowed_writes); step++) { + dbgf(2, "Verify single full chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_dsets_chunks(GWRITES, s, ds, step); + + if (s->use_np && !np_reader(result, step, s, np)) { + printf("np_reader() for verification failed\n"); + TEST_ERROR; + } + } + } + + /* Verify single partial chunk writes */ + if (s->pwrites) { + allowed_writes = (unsigned)(ds->scaled_dims[0] * ds->scaled_dims[1]); + dbgf(2, "The allowed -p writes is %u; you specify %u writes\n", allowed_writes, s->pwrites); + + for (step = 0; (step < s->pwrites && step < allowed_writes); step++) { + dbgf(2, "Verify single partial chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_dsets_chunks(PWRITES, s, ds, step); + + if (s->use_np && !np_reader(result, step, s, np)) { + printf("np_reader() for verification failed\n"); + TEST_ERROR; + } + } + } + + /* Verify multiple full chunk writes */ + if (s->twrites) { + allowed_writes = (unsigned)(ds->multi_scaled[0] * ds->multi_scaled[1]); + dbgf(2, "The allowed -t writes is %u; you specify %u writes\n", allowed_writes, s->twrites); + + for (step = 0; (step < s->twrites && step < allowed_writes); step++) { + dbgf(2, "Verify multiple full chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_dsets_chunks(TWRITES, s, ds, step); + + if (s->use_np && !np_reader(result, step, s, np)) { + printf("np_reader() for verification failed\n"); + TEST_ERROR; + } + } + } + + /* Verify multiple partial chunk writes */ + if (s->lwrites) { + allowed_writes = (unsigned)(ds->multi_scaled[0] * ds->multi_scaled[1]); + dbgf(2, "The allowed -l writes is %u; you specify %u writes\n", allowed_writes, s->lwrites); + + for (step = 0; (step < s->lwrites && step < allowed_writes); step++) { + dbgf(2, + "Verify multiple partial chunk writes #%u to datasets with implicit/fa/ea/bt2 index\n", + step); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_dsets_chunks(LWRITES, s, ds, step); + + if (s->use_np && !np_reader(result, step, s, np)) { + printf("np_reader() for verification failed\n"); + TEST_ERROR; + } + } + } + + /* Verify increase to dataset dimensions: apply only for fa, ea and bt2 index */ + if (!s->implicit_index && s->xincrs) { + for (step = 0; step < s->xincrs; step++) { + dbgf(2, "Verify increase to dimension sizes by %u for datasets with fa/ea/bt2 index\n", + step + 1); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_dsets_extent(INCR_EXT, s, ds, step + 1); + + if (s->use_np && !np_reader(result, step, s, np)) { + printf("np_reader() for failed\n"); + TEST_ERROR; + } + } + } + + /* Verify decrease to dataset dimensions: apply only for fa, ea and bt2 index */ + if (!s->implicit_index && s->ydecrs) { + for (step = 0; step < s->ydecrs; step++) { + dbgf(2, "Verify decrease to dimension sizes by %u for datasets with fa/ea/bt2 index\n", + step + 1); + + if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + /* Wait for a few ticks for the update to happen */ + decisleep(config->tick_len * s->update_interval); + + result = verify_dsets_extent(DECR_EXT, s, ds, step + 1); + + if (s->use_np && !np_reader(result, step, s, np)) { + printf("np_reader() for verification failed\n"); + TEST_ERROR; + } + } + } + } + + return true; + +error: + + return false; + +} /* verify_dsets_operations() */ + +/* + * Verify the data read from each of the specified datasets: + * GWRITES: verify `which` write that covers a single chunk + * PWRITES: verify `which` write that covers a partial chunk + * TWRITES: verify `which` write that covers multiple chunks + * LWRITEs: verify `which` write that covers multiple partial chunks + */ +static bool +verify_dsets_chunks(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which) +{ + hsize_t start[2] = {0, 0}; + hsize_t stride[2] = {0, 0}; + hsize_t count[2] = {0, 0}; + hsize_t block[2] = {0, 0}; + unsigned int *vbuf = NULL; + + HDassert(s->implicit_index || s->fa_index || s->ea_index || s->bt2_index); + + /* Set up selection according to the specified action */ + setup_selection(action, which, s, ds, start, stride, count, block); + + if (s->implicit_index) { + if (!verify_read_dset(action, ds->implicit_did, s->filetype, start, stride, count, block)) { + printf("verify_read_dset() to dataset with implicit index failed\n"); + TEST_ERROR; + } + } + + if (s->fa_index) { + if (!verify_read_dset(action, ds->fa_did, s->filetype, start, stride, count, block)) { + printf("verify_read_dset() to dataset with fixed array index failed\n"); + TEST_ERROR; + } + } + + if (s->ea_index) { + if (!verify_read_dset(action, ds->ea_did, s->filetype, start, stride, count, block)) { + printf("verify_read_dset() to dataset with extensible array index failed\n"); + TEST_ERROR; + } + } + + if (s->bt2_index) { + if (!verify_read_dset(action, ds->bt2_did, s->filetype, start, stride, count, block)) { + printf("verify_read_dset() to dataset with bt2 index failed\n"); + TEST_ERROR; + } + } + + return true; + +error: + + return false; + +} /* verify_dsets_chunks() */ + +/* + * Verify the data read from the dataset is as expected. + */ +static bool +verify_read_dset(unsigned action, hid_t did, hid_t tid, hsize_t *start, hsize_t *stride, hsize_t *count, + hsize_t *block) +{ + hid_t mem_sid = badhid; + hid_t sid = badhid; + hsize_t mem_dims[2]; + unsigned int *rbuf = NULL; + unsigned i; + + /* Refresh the dataset */ + if (H5Drefresh(did) < 0) { + printf("H5Drefresh dataset failed\n"); + TEST_ERROR; + } + + if ((sid = H5Dget_space(did)) < 0) { + printf("H5Dget_space dataset failed\n"); + TEST_ERROR; + } + + /* Make the selection the file dataspace */ + if (H5Sselect_hyperslab(sid, H5S_SELECT_SET, start, stride, count, block) < 0) { + printf("H5Sselect to dataset failed\n"); + TEST_ERROR; + } + + mem_dims[0] = block[0]; + mem_dims[1] = block[1]; + if ((mem_sid = H5Screate_simple(2, mem_dims, NULL)) < 0) { + printf("H5Screate_simple failed\n"); + TEST_ERROR; + } + + /* Allocate the buffer for reading */ + if ((rbuf = HDmalloc(block[0] * block[1] * sizeof(unsigned int))) == NULL) { + printf("HDmalloc failed\n"); + TEST_ERROR; + } + + /* Read the data from the dataset into `rbuf` */ + if (H5Dread(did, tid, mem_sid, sid, H5P_DEFAULT, rbuf) < 0) { + printf("H5Dread from dataset failed\n"); + TEST_ERROR; + } + + /* Verify the data read in `rbuf` is as the fill value expected */ + for (i = 0; i < block[0] * block[1]; i++) { + if (action == GWRITES || action == TWRITES) { + if (rbuf[i] != FILL_FULL) { + printf("Invalid value for dataset for GWRITES/TWRITES\n"); + TEST_ERROR; + } + } + else { + HDassert(action == PWRITES || action == LWRITES); + if (rbuf[i] != FILL_PARTIAL) { + printf("Invalid value for dataset for GWRITES/TWRITES\n"); + TEST_ERROR; + } + } + } + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + + if (H5Sclose(mem_sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + + if (rbuf) + HDfree(rbuf); + + return true; + +error: + H5E_BEGIN_TRY + { + H5Sclose(sid); + H5Sclose(mem_sid); + } + H5E_END_TRY; + + if (rbuf) + HDfree(rbuf); + + return false; + +} /* verify_read_dset() */ + +/* + * Verify the increase or decrease of dimenion sizes for the specified datasets. + */ +static bool +verify_dsets_extent(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which) +{ + unsigned rows = s->rows; + unsigned cols = s->cols; + + HDassert(action == INCR_EXT || action == DECR_EXT); + HDassert(s->fa_index || s->ea_index || s->bt2_index); + + /* s->xincrs can be 0 or the increased extent of the dataset */ + if (action == DECR_EXT) { + rows = s->rows + s->xincrs; + cols = s->cols + s->xincrs; + } + + if (s->fa_index) { + dbgf(2, "Verify dataset extent for FA dataset\n"); + if (!verify_dset_extent_real(action, ds->fa_did, rows, cols, which)) { + printf("verify_read_dset() to dataset with fixed array index failed\n"); + TEST_ERROR; + } + } + + if (s->ea_index) { + dbgf(2, "Verify dataset extent for EA dataset\n"); + if (!verify_dset_extent_real(action, ds->fa_did, rows, cols, which)) { + printf("verify_read_dset() to dataset with fixed array index failed\n"); + TEST_ERROR; + } + } + + if (s->bt2_index) { + dbgf(2, "Verify dataset extent for BT2 dataset\n"); + if (!verify_dset_extent_real(action, ds->bt2_did, rows, cols, which)) { + printf("verify_read_dset() to dataset with fixed array index failed\n"); + TEST_ERROR; + } + } + + return true; + +error: + return false; + +} /* verify_dsets_extent() */ + +/* + * Do the real work of verifying the increase/decrease for the dataset dimension sizes + */ +static bool +verify_dset_extent_real(unsigned action, hid_t did, unsigned rows, unsigned cols, unsigned which) +{ + hsize_t dims[2]; + hid_t sid = badhid; + + /* Refresh the dataset */ + if (H5Drefresh(did) < 0) { + printf("H5Drefresh dataset failed\n"); + TEST_ERROR; + } + + if ((sid = H5Dget_space(did)) < 0) { + printf("H5Dget_space dataset failed\n"); + TEST_ERROR; + } + + if (H5Sget_simple_extent_dims(sid, dims, NULL) < 0) { + printf("H5Sget_simple_extent_dims() failed\n"); + TEST_ERROR; + } + + switch (action) { + + case INCR_EXT: + if (dims[0] != (rows + which) || dims[1] != (cols + which)) + TEST_ERROR + + break; + + case DECR_EXT: + if (dims[0] != (rows - which) || dims[1] != (cols - which)) + TEST_ERROR + break; + + default: + HDassert(0 && "Unknown action?!?"); + + } /* end switch */ + + if (H5Sclose(sid) < 0) { + printf("H5Sclose failed\n"); + TEST_ERROR; + } + + return true; + +error: + H5E_BEGIN_TRY + { + H5Sclose(sid); + } + H5E_END_TRY; + + return false; +} /* verify_dset_extent_real() */ + +/* + * Verify that the data read from the dataset with single index is as unexpected. + */ +static bool +verify_read_dset_single(unsigned action, const state_t *s, const dsets_state_t *ds) +{ + hsize_t block[2] = {s->rows, s->cols}; + hsize_t count[2] = {1, 1}; + hsize_t stride[2] = {1, 1}; + hsize_t start[2] = {0, 0}; + + HDassert(action == GWRITES || action == PWRITES); + HDassert(s->single_index); + + if (action == PWRITES) + check_set_partial_block(action, block, block, start); + + if (!verify_read_dset(action, ds->single_did, s->filetype, start, stride, count, block)) { + printf("verify_read_dset() to dataset with single index failed\n"); + TEST_ERROR; + } + + return true; + +error: + return false; + +} /* verify_read_dset_single() */ + +/* + * Named pipes handling + */ + +/* + * Initialize the named pipes for test synchronization. + */ +static bool +np_init(np_state_t *np, bool writer) +{ + *np = NP_INITIALIZER; + + /* + * Use two named pipes(FIFO) to coordinate the writer and reader for + * two-way communication so that the two sides can move forward together. + * One is for the writer to write to the reader. + * The other one is for the reader to signal the writer. + */ + if (writer) { + /* If the named pipes are present at the start of the test, remove them */ + if (HDaccess(np->fifo_writer_to_reader, F_OK) == 0) + if (HDremove(np->fifo_writer_to_reader) != 0) { + printf("HDremove fifo_writer_to_reader failed\n"); + TEST_ERROR; + } + + if (HDaccess(np->fifo_reader_to_writer, F_OK) == 0) + if (HDremove(np->fifo_reader_to_writer) != 0) { + printf("HDremove fifo_reader_to_writer failed\n"); + TEST_ERROR; + } + + /* Writer creates two named pipes(FIFO) */ + if (HDmkfifo(np->fifo_writer_to_reader, 0600) < 0) { + printf("HDmkfifo fifo_writer_to_reader failed\n"); + TEST_ERROR; + } + + if (HDmkfifo(np->fifo_reader_to_writer, 0600) < 0) { + printf("HDmkfifo fifo_reader_to_writer failed\n"); + TEST_ERROR; + } + } + + /* Both the writer and reader open the pipes */ + if ((np->fd_writer_to_reader = HDopen(np->fifo_writer_to_reader, O_RDWR)) < 0) { + printf("HDopen fifo_writer_to_reader failed\n"); + TEST_ERROR; + } + + if ((np->fd_reader_to_writer = HDopen(np->fifo_reader_to_writer, O_RDWR)) < 0) { + printf("HDopen fifo_reader_to_writer failed\n"); + TEST_ERROR; + } + + return true; + +error: + return false; + +} /* np_init() */ + +/* + * Close the named pipes. + */ +static bool +np_close(np_state_t *np, bool writer) +{ + /* Both the writer and reader close the named pipes */ + if (HDclose(np->fd_writer_to_reader) < 0) { + printf("HDclose fd_writer_to_reader failed\n"); + TEST_ERROR; + } + + if (HDclose(np->fd_reader_to_writer) < 0) { + printf("HDclose fd_reader_to_writer failed\n"); + TEST_ERROR; + } + + /* Reader finishes last and deletes the named pipes */ + if (!writer) { + if (HDremove(np->fifo_writer_to_reader) != 0) { + printf("HDremove fifo_writer_to_reader failed\n"); + TEST_ERROR; + } + + if (HDremove(np->fifo_reader_to_writer) != 0) { + printf("HDremove fifo_reader_to_writer failed\n"); + TEST_ERROR; + } + } + return true; + +error: + return false; +} /* np_close() */ + +/* + * Writer synchronization depending on the result from the action performed. + */ +static bool +np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_swmr_config_t *config) +{ + unsigned int i; + + /* The action fails */ + if (!result) { + printf("action failed\n"); + H5_FAILED(); + AT(); + + /* At communication interval, notify the reader about the failure and quit */ + if (step % s->csteps == 0) { + np->notify = -1; + HDwrite(np->fd_writer_to_reader, &np->notify, sizeof(int)); + goto error; + } + /* The action succeeds */ + } + else { + /* At communication interval, notify the reader and wait for its response */ + if (step % s->csteps == 0) { + /* Bump up the value of notify to tell the reader to start reading */ + np->notify++; + if (HDwrite(np->fd_writer_to_reader, &np->notify, sizeof(int)) < 0) { + printf("HDwrite failed\n"); + TEST_ERROR; + } + + /* During the wait, writer makes repeated HDF5 API calls + * to trigger EOT at approximately the correct time */ + for (i = 0; i < config->max_lag + 1; i++) { + decisleep(config->tick_len); + H5E_BEGIN_TRY + { + H5Aexists(s->file, "nonexistent"); + } + H5E_END_TRY; + } + + /* Handshake between writer and reader */ + if (!np_confirm_verify_notify(np->fd_reader_to_writer, step, s, np)) { + printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + TEST_ERROR; + } + } + } + return true; + +error: + return false; + +} /* np_writer() */ + +/* + * + * Reader synchronization depending on the result from the verification. + */ +static bool +np_reader(bool result, unsigned step, const state_t *s, np_state_t *np) +{ + /* The verification fails */ + if (!result) { + printf("verify action failed\n"); + H5_FAILED(); + AT(); + + /* At communication interval, tell the writer about the failure and exit */ + if (step % s->csteps == 0) { + np->notify = -1; + HDwrite(np->fd_reader_to_writer, &np->notify, sizeof(int)); + goto error; + } + /* The verification succeeds */ + } + else { + if (step % s->csteps == 0) { + /* Send back the same notify value for acknowledgement: + * --inform the writer to move to the next step */ + if (HDwrite(np->fd_reader_to_writer, &np->notify, sizeof(int)) < 0) { + printf("HDwrite failed\n"); + TEST_ERROR; + } + } + } + return true; + +error: + return false; + +} /* np_reader() */ + +/* + * Handshake between writer and reader: + * Confirm `verify` is same as `notify`. + */ +static bool +np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np) +{ + if (step % s->csteps == 0) { + np->verify++; + if (HDread(fd, &np->notify, sizeof(int)) < 0) { + printf("HDread failed\n"); + TEST_ERROR; + } + + if (np->notify == -1) { + printf("reader/writer failed to verify\n"); + TEST_ERROR; + } + + if (np->notify != np->verify) { + printf("received message %d, expecting %d\n", np->notify, np->verify); + TEST_ERROR; + } + } + + return true; + +error: + return false; +} /* np_confirm_verify_notify() */ + +/* + * Main + */ +int +main(int argc, char **argv) +{ + hid_t fapl, fcpl; + bool writer; + state_t s; + const char * personality; + H5F_vfd_swmr_config_t config; + np_state_t np; + dsets_state_t ds; + + if (!state_init(&s, argc, argv)) { + printf("state_init() failed\n"); + TEST_ERROR; + } + + personality = HDstrstr(s.progname, "vfd_swmr_dsetchks_"); + + if (personality != NULL && HDstrcmp(personality, "vfd_swmr_dsetchks_writer") == 0) + writer = true; + else if (personality != NULL && HDstrcmp(personality, "vfd_swmr_dsetchks_reader") == 0) + writer = false; + else { + printf("unknown personality, expected vfd_swmr_dsetchks_{reader,writer}\n"); + TEST_ERROR; + } + + /* config, tick_len, max_lag, writer, flush_raw_data, md_pages_reserved, md_file_path */ + init_vfd_swmr_config(&config, 4, 7, writer, FALSE, 128, "./dsetchks-shadow"); + + /* use_latest_format, use_vfd_swmr, only_meta_page, config */ + if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, &config)) < 0) { + printf("vfd_swmr_create_fapl() failed\n"); + TEST_ERROR; + } + + if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { + printf("H5Pcreate failed\n"); + TEST_ERROR; + } + + if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, false, 1) < 0) { + printf("H5Pset_file_space_strategy failed\n"); + TEST_ERROR; + } + + if (writer) { + if ((s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) { + printf("H5Fcreate failed\n"); + TEST_ERROR; + } + + if (!create_dsets(&s, &ds)) { + printf("create_dsets() failed\n"); + TEST_ERROR; + } + } + else { + if ((s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl)) < 0) { + printf("H5Fopen failed\n"); + TEST_ERROR; + } + if (!open_dsets(&s, &ds)) { + printf("open_dsets() failed\n"); + TEST_ERROR; + } + } + + /* Initiailze named pipes */ + if (s.use_np && !np_init(&np, writer)) { + printf("np_init() failed\n"); + TEST_ERROR; + } + + if (writer) { + + if (!perform_dsets_operations(&s, &ds, &config, &np)) { + printf("perform_dsets_operations() failed\n"); + TEST_ERROR; + } + } + else { + + if (!verify_dsets_operations(&s, &ds, &config, &np)) { + printf("perform_dsets_operations() failed\n"); + TEST_ERROR; + } + } + + if (!close_dsets(&ds)) { + printf("close_dsets() failed\n"); + TEST_ERROR; + } + + if (H5Pclose(fapl) < 0) { + printf("H5Pclose failed\n"); + TEST_ERROR; + } + + if (H5Pclose(fcpl) < 0) { + printf("H5Pclose failed\n"); + TEST_ERROR; + } + + if (H5Fclose(s.file) < 0) { + printf("H5Fclose failed\n"); + TEST_ERROR; + } + + if (s.use_np && !np_close(&np, writer)) { + printf("np_close() failed\n"); + TEST_ERROR; + } + + return EXIT_SUCCESS; + +error: + H5E_BEGIN_TRY + { + H5Pclose(fapl); + H5Pclose(fcpl); + H5Fclose(s.file); + } + H5E_END_TRY; + + if (s.use_np && np.fd_writer_to_reader >= 0) + HDclose(np.fd_writer_to_reader); + + if (s.use_np && np.fd_reader_to_writer >= 0) + HDclose(np.fd_reader_to_writer); + + if (s.use_np && !writer) { + HDremove(np.fifo_writer_to_reader); + HDremove(np.fifo_reader_to_writer); + } + + return EXIT_FAILURE; +} /* main */ + +#else /* H5_HAVE_WIN32_API */ + +int +main(void) +{ + HDfprintf(stderr, "Non-POSIX platform. Skipping.\n"); + return EXIT_SUCCESS; +} /* end main() */ + +#endif /* H5_HAVE_WIN32_API */ diff --git a/test/vfd_swmr_dsetops_writer.c b/test/vfd_swmr_dsetops_writer.c index 8c21806..66d0410 100644 --- a/test/vfd_swmr_dsetops_writer.c +++ b/test/vfd_swmr_dsetops_writer.c @@ -169,42 +169,42 @@ static const hid_t badhid = H5I_INVALID_HID; static void usage(const char *progname) { - fprintf(stderr, - "usage: %s \n" - " [-p] [-e elmts] [-o]\n" - " [-g] [-k] [-m rows] [-n cols]\n" - " [-s swrites] [-r rwrites] [-l lwrites] [-w writes]\n" - " [-u nticks] [-c csteps] [-S] [-N] [-q] [-b]\n" - "\n" - "-p: create a dataset with compact layout\n" - "-e elmts: # of <elmts> for the compact dataset\n" - " (default is 16380)\n" - "-t: perform write to the compact dataset\n" - "-g: create a dataset with contiguous layout\n" - "-k: create 5 datasets with chunked layout for the 5 indexing types\n" - "-m rows: # of <rows> rows for the contiguous and/or chunked datasets\n" - "-n cols: # of <cols> columns for the contiguous and/or chunked datasets\n" - "-s swrites: perform sequential writes to all datasets\n" - "-r rwrites: perform random writes to all datasets\n" - "-l lwrites: perform hyperslab writes to all datasets\n" - " # of rows to write: every other element is selected per row\n" - "-w wwrites: perform raw data modifications to all datasets\n" - "-u nticks: `nticks` ticks for the reader to wait before verification\n" - " (default is 4)\n" - "-c csteps: `csteps` steps communication interval between reader and writer\n" - " (default is 1)\n" - "-S: do not use VFD SWMR\n" - "-N: do not use named pipes for test synchronization\n" - "-q: silence printouts, few messages\n" - "-b: write data in big-endian byte order\n" - " (default is H5T_NATIVE_UINT32)\n\n" - "Note:\n" - "1. Require to specify at least -p, -g or -k option\n" - "2. -c <csteps> option cannot exceed -s <swrites> or -r <rwrites>\n" - " or -l <lwrites> or -w <wwrites> option\n" - "\n", - progname); - exit(EXIT_FAILURE); + HDfprintf(stderr, + "usage: %s \n" + " [-p] [-e elmts] [-o]\n" + " [-g] [-k] [-m rows] [-n cols]\n" + " [-s swrites] [-r rwrites] [-l lwrites] [-w writes]\n" + " [-u nticks] [-c csteps] [-S] [-N] [-q] [-b]\n" + "\n" + "-p: create a dataset with compact layout\n" + "-e elmts: # of <elmts> for the compact dataset\n" + " (default is 16380)\n" + "-t: perform write to the compact dataset\n" + "-g: create a dataset with contiguous layout\n" + "-k: create 5 datasets with chunked layout for the 5 indexing types\n" + "-m rows: # of <rows> rows for the contiguous and/or chunked datasets\n" + "-n cols: # of <cols> columns for the contiguous and/or chunked datasets\n" + "-s swrites: perform sequential writes to all datasets\n" + "-r rwrites: perform random writes to all datasets\n" + "-l lwrites: perform hyperslab writes to all datasets\n" + " # of rows to write: every other element is selected per row\n" + "-w wwrites: perform raw data modifications to all datasets\n" + "-u nticks: `nticks` ticks for the reader to wait before verification\n" + " (default is 4)\n" + "-c csteps: `csteps` steps communication interval between reader and writer\n" + " (default is 1)\n" + "-S: do not use VFD SWMR\n" + "-N: do not use named pipes for test synchronization\n" + "-q: silence printouts, few messages\n" + "-b: write data in big-endian byte order\n" + " (default is H5T_NATIVE_UINT32)\n\n" + "Note:\n" + "1. Require to specify at least -p, -g or -k option\n" + "2. -c <csteps> option cannot exceed -s <swrites> or -r <rwrites>\n" + " or -l <lwrites> or -w <wwrites> option\n" + "\n", + progname); + HDexit(EXIT_FAILURE); } /* usage() */ /* @@ -221,7 +221,7 @@ state_init(state_t *s, int argc, char **argv) *s = ALL_HID_INITIALIZER; if (H5_basename(argv[0], &tfile) < 0) { - printf("H5_basename failed\n"); + HDprintf("H5_basename failed\n"); TEST_ERROR; } @@ -272,17 +272,17 @@ state_init(state_t *s, int argc, char **argv) case 'u': /* ticks for raeder to wait before verification */ case 'c': /* communication interval */ errno = 0; - tmp = strtoul(optarg, &end, 0); + tmp = HDstrtoul(optarg, &end, 0); if (end == optarg || *end != '\0') { - printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg); TEST_ERROR; } else if (errno != 0) { - printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg); TEST_ERROR; } else if (tmp > UINT_MAX) { - printf("`-%c` argument `%lu` too large\n", ch, tmp); + HDprintf("`-%c` argument `%lu` too large\n", ch, tmp); TEST_ERROR; } @@ -318,44 +318,44 @@ state_init(state_t *s, int argc, char **argv) /* Require to specify at least -p or -g or -k option */ if (!s->compact && !s->contig && !s->chunked) { - printf("Require to specify at least -p or -g or -k option\n"); + HDprintf("Require to specify at least -p or -g or -k option\n"); usage(s->progname); goto error; } /* -e <elmts> */ if (s->compact_elmts > MAX_COMPACT_ELMS) { - printf("size of compact dataset cannot exceed 16380 elements\n"); + HDprintf("size of compact dataset cannot exceed 16380 elements\n"); TEST_ERROR; } /* -c <csteps> cannot be zero */ if (!s->csteps) { - printf("communication interval cannot be zero\n"); + HDprintf("communication interval cannot be zero\n"); TEST_ERROR; } /* -c <csteps> and -s <swrites> options */ if (s->swrites && s->csteps > s->swrites) { - printf("communication interval with sequential writes is out of bounds\n"); + HDprintf("communication interval with sequential writes is out of bounds\n"); TEST_ERROR; } /* -c <csteps> and -r <rwrites> options */ if (s->rwrites && s->csteps > s->rwrites) { - printf("communication interval with random writes is out of bounds\n"); + HDprintf("communication interval with random writes is out of bounds\n"); TEST_ERROR; } /* -c <csteps> and -l <lwrites> options */ if (s->lwrites && s->csteps > s->lwrites) { - printf("communication interval with hyperslab writes is out of bounds\n"); + HDprintf("communication interval with hyperslab writes is out of bounds\n"); TEST_ERROR; } /* -c <csteps> and -w <wwrites> options */ if (s->wwrites && s->csteps > s->wwrites) { - printf("communication interval with raw data modification is out of bounds\n"); + HDprintf("communication interval with raw data modification is out of bounds\n"); TEST_ERROR; } @@ -382,12 +382,12 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Create the named datatype that will be used by compact and contiguous datasets */ if ((dtid = H5Tcopy(s->filetype)) < 0) { - printf("H5Tcopy failed\n"); + HDprintf("H5Tcopy failed\n"); TEST_ERROR; } if (H5Tcommit2(s->file, "named_dtype", dtid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) { - printf("H5Tcommit2 failed\n"); + HDprintf("H5Tcommit2 failed\n"); TEST_ERROR; } @@ -396,11 +396,11 @@ create_dsets(const state_t *s, dsets_state_t *ds) hsize_t dims[1]; if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_layout(dcpl, H5D_COMPACT) < 0) { - printf("H5Pset_layout failed\n"); + HDprintf("H5Pset_layout failed\n"); TEST_ERROR; } @@ -408,19 +408,19 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Dataspace for compact dataset */ if ((ds->compact_sid = H5Screate_simple(1, dims, dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } /* Create the compact dataset with named datatype */ if ((ds->compact_did = H5Dcreate2(s->file, DSET_COMPACT_NAME, dtid, ds->compact_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 compact dataset failed\n"); + HDprintf("H5Dcreate2 compact dataset failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } } @@ -434,29 +434,29 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Dataspace for contiguous dataset */ if ((ds->contig_sid = H5Screate_simple(2, dims, dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_layout(dcpl, H5D_CONTIGUOUS) < 0) { - printf("H5Pset_layout failed\n"); + HDprintf("H5Pset_layout failed\n"); TEST_ERROR; } /* Create the contiguous dataset with the named datatype */ if ((ds->contig_did = H5Dcreate2(s->file, DSET_CONTIG_NAME, dtid, ds->contig_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 contiguous dataset failed\n"); + HDprintf("H5Dcreate2 contiguous dataset failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } } @@ -475,12 +475,12 @@ create_dsets(const state_t *s, dsets_state_t *ds) chunk_dims[1] = MAX(1, s->cols / 2); if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_layout(dcpl, H5D_CHUNKED) < 0) { - printf("H5Pset_layout failed\n"); + HDprintf("H5Pset_layout failed\n"); TEST_ERROR; } @@ -488,19 +488,19 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Chunked, dims=max_dims=chunk_dims */ if (H5Pset_chunk(dcpl, 2, dims) < 0) { - printf("H5Pset_chunk failed\n"); + HDprintf("H5Pset_chunk failed\n"); TEST_ERROR; } if ((ds->single_sid = H5Screate_simple(2, dims, dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } /* Create the chunked dataset (single index) with the named datatype */ if ((ds->single_did = H5Dcreate2(s->file, DSET_SINGLE_NAME, dtid, ds->single_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset:single index failed\n"); + HDprintf("H5Dcreate2 chunked dataset:single index failed\n"); TEST_ERROR; } @@ -508,29 +508,29 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Chunked, dims=max_dims, early allocation */ if (H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0) { - printf("H5Pset_alloc_time\n"); + HDprintf("H5Pset_alloc_time\n"); TEST_ERROR; } if (H5Pset_chunk(dcpl, 2, chunk_dims) < 0) { - printf("H5Pset_chunk failed\n"); + HDprintf("H5Pset_chunk failed\n"); TEST_ERROR; } if ((ds->implicit_sid = H5Screate_simple(2, dims, dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } /* Create the chunked dataset (implicit index) with the named datatype */ if ((ds->implicit_did = H5Dcreate2(s->file, DSET_IMPLICIT_NAME, dtid, ds->implicit_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset:implicit index failed\n"); + HDprintf("H5Dcreate2 chunked dataset:implicit index failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } @@ -538,12 +538,12 @@ create_dsets(const state_t *s, dsets_state_t *ds) /* Chunked, fixed max_dims */ if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_chunk(dcpl, 2, chunk_dims) < 0) { - printf("H5Pset_chunk failed\n"); + HDprintf("H5Pset_chunk failed\n"); TEST_ERROR; } @@ -551,14 +551,14 @@ create_dsets(const state_t *s, dsets_state_t *ds) max_dims[1] = dims[1] + 10; if ((ds->fa_sid = H5Screate_simple(2, dims, max_dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } /* Create the chunked dataset (fixed array index) with the named datatype */ if ((ds->fa_did = H5Dcreate2(s->file, DSET_FA_NAME, dtid, ds->fa_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreaet2 chunked dataset: fa index failed\n"); + HDprintf("H5Dcreaet2 chunked dataset: fa index failed\n"); TEST_ERROR; } @@ -567,14 +567,14 @@ create_dsets(const state_t *s, dsets_state_t *ds) max_dims[1] = H5S_UNLIMITED; if ((ds->ea_sid = H5Screate_simple(2, dims, max_dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } /* Create the chunked dataset (extensible array index) with the named datatype */ if ((ds->ea_did = H5Dcreate2(s->file, DSET_EA_NAME, dtid, ds->ea_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset: ea index failed\n"); + HDprintf("H5Dcreate2 chunked dataset: ea index failed\n"); TEST_ERROR; } @@ -583,25 +583,25 @@ create_dsets(const state_t *s, dsets_state_t *ds) max_dims[0] = H5S_UNLIMITED; if ((ds->bt2_sid = H5Screate_simple(2, dims, max_dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } /* Create the chunked dataset (btree2 index) with the named datatype */ if ((ds->bt2_did = H5Dcreate2(s->file, DSET_BT2_NAME, dtid, ds->bt2_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 chunked dataset: bt2 index failed\n"); + HDprintf("H5Dcreate2 chunked dataset: bt2 index failed\n"); TEST_ERROR; } if (H5Pclose(dcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } } if (H5Tclose(dtid) < 0) { - printf("H5Tclose failed\n"); + HDprintf("H5Tclose failed\n"); TEST_ERROR; } @@ -643,7 +643,7 @@ open_dsets(const state_t *s, dsets_state_t *ds) if (s->compact) { if (!open_dset_real(s, &ds->compact_did, &ds->compact_sid, DSET_COMPACT_NAME)) { - printf("open_dset_real() for compact dataset failed\n"); + HDprintf("open_dset_real() for compact dataset failed\n"); TEST_ERROR; } } @@ -651,7 +651,7 @@ open_dsets(const state_t *s, dsets_state_t *ds) if (s->contig) { if (!open_dset_real(s, &ds->contig_did, &ds->contig_sid, DSET_CONTIG_NAME)) { - printf("open_dset_real() for contiguous dataset failed\n"); + HDprintf("open_dset_real() for contiguous dataset failed\n"); TEST_ERROR; } } @@ -659,27 +659,27 @@ open_dsets(const state_t *s, dsets_state_t *ds) if (s->chunked) { if (!open_dset_real(s, &ds->single_did, &ds->single_sid, DSET_SINGLE_NAME)) { - printf("open_dset_real() for chunked dataset: single index failed\n"); + HDprintf("open_dset_real() for chunked dataset: single index failed\n"); TEST_ERROR; } if (!open_dset_real(s, &ds->implicit_did, &ds->implicit_sid, DSET_IMPLICIT_NAME)) { - printf("open_dset_real() for chunked dataset: implicit index failed\n"); + HDprintf("open_dset_real() for chunked dataset: implicit index failed\n"); TEST_ERROR; } if (!open_dset_real(s, &ds->fa_did, &ds->fa_sid, DSET_FA_NAME)) { - printf("open_dset_real() for chunked dataset: fa index failed\n"); + HDprintf("open_dset_real() for chunked dataset: fa index failed\n"); TEST_ERROR; } if (!open_dset_real(s, &ds->ea_did, &ds->ea_sid, DSET_EA_NAME)) { - printf("open_dset_real() for chunked dataset: ea index failed\n"); + HDprintf("open_dset_real() for chunked dataset: ea index failed\n"); TEST_ERROR; } if (!open_dset_real(s, &ds->bt2_did, &ds->bt2_sid, DSET_BT2_NAME)) { - printf("open_dset_real() for chunked dataset: bt2 index failed\n"); + HDprintf("open_dset_real() for chunked dataset: bt2 index failed\n"); TEST_ERROR; } } @@ -701,12 +701,12 @@ open_dset_real(const state_t *s, hid_t *did, hid_t *sid, const char *name) hsize_t dims[2]; if ((*did = H5Dopen2(s->file, name, H5P_DEFAULT)) < 0) { - printf("H5Dopen dataset failed\n"); + HDprintf("H5Dopen dataset failed\n"); TEST_ERROR; } if ((*sid = H5Dget_space(*did)) < 0) { - printf("H5Dget_space failed\n"); + HDprintf("H5Dget_space failed\n"); TEST_ERROR; } if (H5Sget_simple_extent_dims(*sid, dims, NULL) < 0) @@ -743,37 +743,37 @@ static bool close_dsets(const dsets_state_t *ds) { if (!close_dset_real(ds->compact_did, ds->compact_sid)) { - printf("H5Dclose compact dataset failed\n"); + HDprintf("H5Dclose compact dataset failed\n"); TEST_ERROR; } if (!close_dset_real(ds->contig_did, ds->contig_sid)) { - printf("H5Dclose contiguous dataset failed\n"); + HDprintf("H5Dclose contiguous dataset failed\n"); TEST_ERROR; } if (!close_dset_real(ds->single_did, ds->single_sid)) { - printf("H5Dclose chunked dataset: single index failed\n"); + HDprintf("H5Dclose chunked dataset: single index failed\n"); TEST_ERROR; } if (!close_dset_real(ds->implicit_did, ds->implicit_sid)) { - printf("H5Dclose chunked dataset: implicit index failed\n"); + HDprintf("H5Dclose chunked dataset: implicit index failed\n"); TEST_ERROR; } if (!close_dset_real(ds->fa_did, ds->fa_sid)) { - printf("H5Dclose chunked dataset: fa index failed\n"); + HDprintf("H5Dclose chunked dataset: fa index failed\n"); TEST_ERROR; } if (!close_dset_real(ds->ea_did, ds->ea_sid)) { - printf("H5Dclose chunked dataset: ea index failed\n"); + HDprintf("H5Dclose chunked dataset: ea index failed\n"); TEST_ERROR; } if (!close_dset_real(ds->bt2_did, ds->bt2_sid)) { - printf("H5Dclose chunked dataset: bt2 index failed\n"); + HDprintf("H5Dclose chunked dataset: bt2 index failed\n"); TEST_ERROR; } @@ -791,12 +791,12 @@ static bool close_dset_real(hid_t did, hid_t sid) { if (did != badhid && H5Dclose(did) < 0) { - printf("H5Dclose dataset failed\n"); + HDprintf("H5Dclose dataset failed\n"); TEST_ERROR; } if (sid != badhid && H5Sclose(sid) < 0) { - printf("H5Sclose dataspace for dataset failed\n"); + HDprintf("H5Sclose dataspace for dataset failed\n"); TEST_ERROR; } @@ -841,7 +841,7 @@ write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t * result = dsets_action(SEQ_WRITE, s, ds, step); if (s->use_np && !np_writer(result, step, s, np, config)) { - printf("np_writer() for sequential writes failed\n"); + HDprintf("np_writer() for sequential writes failed\n"); TEST_ERROR; } } @@ -858,11 +858,11 @@ write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t * dbgf(2, "Random writes %u to dataset\n", step); newstep = (unsigned int)HDrandom() % (s->rows * s->cols); - printf("Random step is %u\n", newstep); + HDprintf("Random step is %u\n", newstep); result = dsets_action(RANDOM_WRITE, s, ds, newstep); if (s->use_np && !np_writer(result, step, s, np, config)) { - printf("np_writer() for random writes failed\n"); + HDprintf("np_writer() for random writes failed\n"); TEST_ERROR; } } @@ -878,7 +878,7 @@ write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t * result = dsets_action(HYPER_WRITE, s, ds, k); if (s->use_np && !np_writer(result, step, s, np, config)) { - printf("np_writer() for hyperslab writes failed\n"); + HDprintf("np_writer() for hyperslab writes failed\n"); TEST_ERROR; } } @@ -893,7 +893,7 @@ write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t * result = dsets_action(MODIFY_DATA, s, ds, step); if (s->use_np && !np_writer(result, step, s, np, config)) { - printf("np_writer() for modify raw data failed\n"); + HDprintf("np_writer() for modify raw data failed\n"); TEST_ERROR; } } @@ -925,7 +925,7 @@ dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigne /* Set up selection, dataspace and data buffer according to the specified action */ if (!dset_setup(action, which, s, start, stride, count, block, &mem_sid, &wbuf)) { - printf("dset_setup() failed\n"); + HDprintf("dset_setup() failed\n"); TEST_ERROR; } @@ -934,7 +934,7 @@ dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigne if (!write_dset(ds->contig_did, s->filetype, mem_sid, ds->contig_sid, start, stride, count, block, wbuf)) { - printf("H5Dwrite to contiguous dataset failed\n"); + HDprintf("H5Dwrite to contiguous dataset failed\n"); TEST_ERROR; } } @@ -944,28 +944,28 @@ dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigne if (!write_dset(ds->single_did, s->filetype, mem_sid, ds->single_sid, start, stride, count, block, wbuf)) { - printf("H5Dwrite to chunked dataset: single index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: single index dataset failed\n"); TEST_ERROR; } if (!write_dset(ds->implicit_did, s->filetype, mem_sid, ds->implicit_sid, start, stride, count, block, wbuf)) { - printf("H5Dwrite to chunked dataset: implicit index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: implicit index dataset failed\n"); TEST_ERROR; } if (!write_dset(ds->fa_did, s->filetype, mem_sid, ds->fa_sid, start, stride, count, block, wbuf)) { - printf("H5Dwrite to chunked dataset: fa index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: fa index dataset failed\n"); TEST_ERROR; } if (!write_dset(ds->ea_did, s->filetype, mem_sid, ds->ea_sid, start, stride, count, block, wbuf)) { - printf("H5Dwrite to chunked dataset: ea index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: ea index dataset failed\n"); TEST_ERROR; } if (!write_dset(ds->bt2_did, s->filetype, mem_sid, ds->bt2_sid, start, stride, count, block, wbuf)) { - printf("H5Dwrite to chunked dataset: bt2 index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: bt2 index dataset failed\n"); TEST_ERROR; } } @@ -1026,7 +1026,7 @@ dset_setup(unsigned action, unsigned which, const state_t *s, hsize_t *start, hs /* Allocating the buffer for writing */ if ((tmp_buf = HDmalloc(count[1] * sizeof(unsigned int))) == NULL) { - printf("HDmalloc failed\n"); + HDprintf("HDmalloc failed\n"); TEST_ERROR; } @@ -1074,12 +1074,12 @@ write_dset(hid_t did, hid_t tid, hid_t mem_sid, hid_t file_sid, hsize_t *start, { if (H5Sselect_hyperslab(file_sid, H5S_SELECT_SET, start, stride, count, block) < 0) { - printf("H5Sselect to dataset failed\n"); + HDprintf("H5Sselect to dataset failed\n"); TEST_ERROR; } if (H5Dwrite(did, tid, mem_sid, file_sid, H5P_DEFAULT, buf) < 0) { - printf("H5Dwrite to dataset failed\n"); + HDprintf("H5Dwrite to dataset failed\n"); TEST_ERROR; } @@ -1100,7 +1100,7 @@ write_dset_compact(const state_t *s, const dsets_state_t *ds) unsigned i; if ((buf = HDmalloc(s->compact_elmts * sizeof(unsigned int))) == NULL) { - printf("HDmalloc buffer for compact dataset failed\n"); + HDprintf("HDmalloc buffer for compact dataset failed\n"); goto error; } @@ -1108,7 +1108,7 @@ write_dset_compact(const state_t *s, const dsets_state_t *ds) buf[i] = i + 1; if (H5Dwrite(ds->compact_did, s->filetype, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) { - printf("H5Dwrite to compact dataset failed\n"); + HDprintf("H5Dwrite to compact dataset failed\n"); TEST_ERROR; } @@ -1149,7 +1149,7 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con dbgf(2, "Verify sequential writes %u to dataset\n", step); if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } @@ -1159,7 +1159,7 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con result = verify_dsets_action(SEQ_WRITE, s, ds, step); if (s->use_np && !np_reader(result, step, s, np)) { - printf("np_reader() for verifying addition failed\n"); + HDprintf("np_reader() for verifying addition failed\n"); TEST_ERROR; } } @@ -1176,10 +1176,10 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con dbgf(2, "Verify random writes %u to dataset\n", step); newstep = (unsigned int)HDrandom() % (s->rows * s->cols); - printf("Random step is %u\n", newstep); + HDprintf("Random step is %u\n", newstep); if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } @@ -1189,7 +1189,7 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con result = verify_dsets_action(RANDOM_WRITE, s, ds, newstep); if (s->use_np && !np_reader(result, step, s, np)) { - printf("np_reader() for verifying addition failed\n"); + HDprintf("np_reader() for verifying addition failed\n"); TEST_ERROR; } } @@ -1203,7 +1203,7 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con dbgf(2, "Verify hyperslab writes %u to dataset\n", step); if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } @@ -1213,7 +1213,7 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con result = verify_dsets_action(HYPER_WRITE, s, ds, k); if (s->use_np && !np_reader(result, step, s, np)) { - printf("np_reader() for verifying addition failed\n"); + HDprintf("np_reader() for verifying addition failed\n"); TEST_ERROR; } } @@ -1226,7 +1226,7 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con dbgf(2, "Verify raw data modification %u to dataset\n", step); if (s->use_np && !np_confirm_verify_notify(np->fd_writer_to_reader, step, s, np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } @@ -1236,7 +1236,7 @@ verify_write_dset_contig_chunked(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_con result = verify_dsets_action(MODIFY_DATA, s, ds, step); if (s->use_np && !np_reader(result, step, s, np)) { - printf("np_reader() for verifying addition failed\n"); + HDprintf("np_reader() for verifying addition failed\n"); TEST_ERROR; } } @@ -1269,7 +1269,7 @@ verify_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, /* Set up selection, dataspace and data buffer according to the specified action */ if (!dset_setup(action, which, s, start, stride, count, block, &mem_sid, &vbuf)) { - printf("dset_setup() failed\n"); + HDprintf("dset_setup() failed\n"); TEST_ERROR; } @@ -1277,7 +1277,7 @@ verify_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, if (s->contig) { if (!verify_read_dset(ds->contig_did, s->filetype, mem_sid, ds->contig_sid, start, stride, count, block, vbuf)) { - printf("H5Dwrite to contiguous dataset failed\n"); + HDprintf("H5Dwrite to contiguous dataset failed\n"); TEST_ERROR; } } @@ -1287,31 +1287,31 @@ verify_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, if (!verify_read_dset(ds->single_did, s->filetype, mem_sid, ds->single_sid, start, stride, count, block, vbuf)) { - printf("H5Dwrite to chunked dataset: single index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: single index dataset failed\n"); TEST_ERROR; } if (!verify_read_dset(ds->implicit_did, s->filetype, mem_sid, ds->implicit_sid, start, stride, count, block, vbuf)) { - printf("H5Dwrite to chunked dataset: implicit index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: implicit index dataset failed\n"); TEST_ERROR; } if (!verify_read_dset(ds->fa_did, s->filetype, mem_sid, ds->fa_sid, start, stride, count, block, vbuf)) { - printf("H5Dwrite to chunked dataset: fa index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: fa index dataset failed\n"); TEST_ERROR; } if (!verify_read_dset(ds->ea_did, s->filetype, mem_sid, ds->ea_sid, start, stride, count, block, vbuf)) { - printf("H5Dwrite to chunked dataset: ea index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: ea index dataset failed\n"); TEST_ERROR; } if (!verify_read_dset(ds->bt2_did, s->filetype, mem_sid, ds->bt2_sid, start, stride, count, block, vbuf)) { - printf("H5Dwrite to chunked dataset: bt2 index dataset failed\n"); + HDprintf("H5Dwrite to chunked dataset: bt2 index dataset failed\n"); TEST_ERROR; } } @@ -1342,25 +1342,25 @@ verify_read_dset(hid_t did, hid_t tid, hid_t mem_sid, hid_t file_sid, hsize_t *s /* Refresh the dataset */ if (H5Drefresh(did) < 0) { - printf("H5Drefresh dataset failed\n"); + HDprintf("H5Drefresh dataset failed\n"); TEST_ERROR; } /* Allocate the buffer for reading */ if ((rbuf = HDmalloc(count[1] * sizeof(unsigned int))) == NULL) { - printf("HDmalloc failed\n"); + HDprintf("HDmalloc failed\n"); TEST_ERROR; } /* Make the selection the file dataspace */ if (H5Sselect_hyperslab(file_sid, H5S_SELECT_SET, start, stride, count, block) < 0) { - printf("H5Sselect to dataset failed\n"); + HDprintf("H5Sselect to dataset failed\n"); TEST_ERROR; } /* Read the data from the dataset into `rbuf` */ if (H5Dread(did, tid, mem_sid, file_sid, H5P_DEFAULT, rbuf) < 0) { - printf("H5Dread from dataset failed\n"); + HDprintf("H5Dread from dataset failed\n"); TEST_ERROR; } @@ -1391,18 +1391,18 @@ verify_read_dset_compact(const state_t *s, const dsets_state_t *ds) unsigned i; if ((rbuf = HDmalloc(s->compact_elmts * sizeof(unsigned int))) == NULL) { - printf("HDmalloc buffer for compact dataset failed\n"); + HDprintf("HDmalloc buffer for compact dataset failed\n"); goto error; } if (H5Dread(ds->compact_did, s->filetype, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf) < 0) { - printf("H5Dwrite to compact dataset failed\n"); + HDprintf("H5Dwrite to compact dataset failed\n"); TEST_ERROR; } for (i = 0; i < s->compact_elmts; i++) if (rbuf[i] != (i + 1)) { - printf("Invalid value for compact dataset element\n"); + HDprintf("Invalid value for compact dataset element\n"); TEST_ERROR; } @@ -1440,36 +1440,36 @@ np_init(np_state_t *np, bool writer) /* If the named pipes are present at the start of the test, remove them */ if (HDaccess(np->fifo_writer_to_reader, F_OK) == 0) if (HDremove(np->fifo_writer_to_reader) != 0) { - printf("HDremove fifo_writer_to_reader failed\n"); + HDprintf("HDremove fifo_writer_to_reader failed\n"); TEST_ERROR; } if (HDaccess(np->fifo_reader_to_writer, F_OK) == 0) if (HDremove(np->fifo_reader_to_writer) != 0) { - printf("HDremove fifo_reader_to_writer failed\n"); + HDprintf("HDremove fifo_reader_to_writer failed\n"); TEST_ERROR; } /* Writer creates two named pipes(FIFO) */ if (HDmkfifo(np->fifo_writer_to_reader, 0600) < 0) { - printf("HDmkfifo fifo_writer_to_reader failed\n"); + HDprintf("HDmkfifo fifo_writer_to_reader failed\n"); TEST_ERROR; } if (HDmkfifo(np->fifo_reader_to_writer, 0600) < 0) { - printf("HDmkfifo fifo_reader_to_writer failed\n"); + HDprintf("HDmkfifo fifo_reader_to_writer failed\n"); TEST_ERROR; } } /* Both the writer and reader open the pipes */ if ((np->fd_writer_to_reader = HDopen(np->fifo_writer_to_reader, O_RDWR)) < 0) { - printf("HDopen fifo_writer_to_reader failed\n"); + HDprintf("HDopen fifo_writer_to_reader failed\n"); TEST_ERROR; } if ((np->fd_reader_to_writer = HDopen(np->fifo_reader_to_writer, O_RDWR)) < 0) { - printf("HDopen fifo_reader_to_writer failed\n"); + HDprintf("HDopen fifo_reader_to_writer failed\n"); TEST_ERROR; } @@ -1488,24 +1488,24 @@ np_close(np_state_t *np, bool writer) { /* Both the writer and reader close the named pipes */ if (HDclose(np->fd_writer_to_reader) < 0) { - printf("HDclose fd_writer_to_reader failed\n"); + HDprintf("HDclose fd_writer_to_reader failed\n"); TEST_ERROR; } if (HDclose(np->fd_reader_to_writer) < 0) { - printf("HDclose fd_reader_to_writer failed\n"); + HDprintf("HDclose fd_reader_to_writer failed\n"); TEST_ERROR; } /* Reader finishes last and deletes the named pipes */ if (!writer) { if (HDremove(np->fifo_writer_to_reader) != 0) { - printf("HDremove fifo_writer_to_reader failed\n"); + HDprintf("HDremove fifo_writer_to_reader failed\n"); TEST_ERROR; } if (HDremove(np->fifo_reader_to_writer) != 0) { - printf("HDremove fifo_reader_to_writer failed\n"); + HDprintf("HDremove fifo_reader_to_writer failed\n"); TEST_ERROR; } } @@ -1525,7 +1525,7 @@ np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_ /* The action fails */ if (!result) { - printf("attribute action failed\n"); + HDprintf("attribute action failed\n"); H5_FAILED(); AT(); @@ -1543,7 +1543,7 @@ np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_ /* Bump up the value of notify to tell the reader to start reading */ np->notify++; if (HDwrite(np->fd_writer_to_reader, &np->notify, sizeof(int)) < 0) { - printf("HDwrite failed\n"); + HDprintf("HDwrite failed\n"); TEST_ERROR; } @@ -1560,7 +1560,7 @@ np_writer(bool result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_ /* Handshake between writer and reader */ if (!np_confirm_verify_notify(np->fd_reader_to_writer, step, s, np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } } @@ -1581,7 +1581,7 @@ np_reader(bool result, unsigned step, const state_t *s, np_state_t *np) { /* The verification fails */ if (!result) { - printf("verify action failed\n"); + HDprintf("verify action failed\n"); H5_FAILED(); AT(); @@ -1598,7 +1598,7 @@ np_reader(bool result, unsigned step, const state_t *s, np_state_t *np) /* Send back the same notify value for acknowledgement: * --inform the writer to move to the next step */ if (HDwrite(np->fd_reader_to_writer, &np->notify, sizeof(int)) < 0) { - printf("HDwrite failed\n"); + HDprintf("HDwrite failed\n"); TEST_ERROR; } } @@ -1620,17 +1620,17 @@ np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np if (step % s->csteps == 0) { np->verify++; if (HDread(fd, &np->notify, sizeof(int)) < 0) { - printf("HDread failed\n"); + HDprintf("HDread failed\n"); TEST_ERROR; } if (np->notify == -1) { - printf("reader/writer failed to verify\n"); + HDprintf("reader/writer failed to verify\n"); TEST_ERROR; } if (np->notify != np->verify) { - printf("received message %d, expecting %d\n", np->notify, np->verify); + HDprintf("received message %d, expecting %d\n", np->notify, np->verify); TEST_ERROR; } } @@ -1647,9 +1647,9 @@ error: int main(int argc, char **argv) { - hid_t fapl, fcpl; - unsigned step; - bool writer; + hid_t fapl = H5I_INVALID_HID; + hid_t fcpl = H5I_INVALID_HID; + bool writer = FALSE; state_t s; const char * personality; H5F_vfd_swmr_config_t config; @@ -1658,18 +1658,18 @@ main(int argc, char **argv) bool result; if (!state_init(&s, argc, argv)) { - printf("state_init() failed\n"); + HDprintf("state_init() failed\n"); TEST_ERROR; } personality = HDstrstr(s.progname, "vfd_swmr_dsetops_"); - if (personality != NULL && strcmp(personality, "vfd_swmr_dsetops_writer") == 0) + if (personality != NULL && HDstrcmp(personality, "vfd_swmr_dsetops_writer") == 0) writer = true; - else if (personality != NULL && strcmp(personality, "vfd_swmr_dsetops_reader") == 0) + else if (personality != NULL && HDstrcmp(personality, "vfd_swmr_dsetops_reader") == 0) writer = false; else { - printf("unknown personality, expected vfd_swmr_dsetops_{reader,writer}\n"); + HDprintf("unknown personality, expected vfd_swmr_dsetops_{reader,writer}\n"); TEST_ERROR; } @@ -1678,45 +1678,45 @@ main(int argc, char **argv) /* use_latest_format, use_vfd_swmr, only_meta_page, config */ if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, &config)) < 0) { - printf("vfd_swmr_create_fapl() failed\n"); + HDprintf("vfd_swmr_create_fapl() failed\n"); TEST_ERROR; } if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, false, 1) < 0) { - printf("H5Pset_file_space_strategy failed\n"); + HDprintf("H5Pset_file_space_strategy failed\n"); TEST_ERROR; } if (writer) { if ((s.file = H5Fcreate(s.filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0) { - printf("H5Fcreate failed\n"); + HDprintf("H5Fcreate failed\n"); TEST_ERROR; } if (!create_dsets(&s, &ds)) { - printf("create_dsets() failed\n"); + HDprintf("create_dsets() failed\n"); TEST_ERROR; } } else { if ((s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl)) < 0) { - printf("H5Fopen failed\n"); + HDprintf("H5Fopen failed\n"); TEST_ERROR; } if (!open_dsets(&s, &ds)) { - printf("open_dsets() failed\n"); + HDprintf("open_dsets() failed\n"); TEST_ERROR; } } /* Initiailze named pipes */ if (s.use_np && !np_init(&np, writer)) { - printf("np_init() failed\n"); + HDprintf("np_init() failed\n"); TEST_ERROR; } @@ -1729,7 +1729,7 @@ main(int argc, char **argv) result = write_dset_compact(&s, &ds); if (s.use_np && !np_writer(result, 0, &s, &np, &config)) { - printf("np_writer() for addition failed\n"); + HDprintf("np_writer() for addition failed\n"); TEST_ERROR; } } @@ -1737,7 +1737,7 @@ main(int argc, char **argv) if (s.contig || s.chunked) { /* Perform writes for contiguous and/or chunked datasets */ if (!write_dset_contig_chunked(&s, &ds, &config, &np)) { - printf("write_dset_contig_chunked() failed\n"); + HDprintf("write_dset_contig_chunked() failed\n"); TEST_ERROR; } } @@ -1749,7 +1749,7 @@ main(int argc, char **argv) dbgf(2, "Verify writes to compact dataset\n"); if (s.use_np && !np_confirm_verify_notify(np.fd_writer_to_reader, 0, &s, &np)) { - printf("np_confirm_verify_notify() verify/notify not in sync failed\n"); + HDprintf("np_confirm_verify_notify() verify/notify not in sync failed\n"); TEST_ERROR; } /* Wait for a few ticks for the update to happen */ @@ -1758,7 +1758,7 @@ main(int argc, char **argv) result = verify_read_dset_compact(&s, &ds); if (s.use_np && !np_reader(result, 0, &s, &np)) { - printf("np_reader() for verifying addition failed\n"); + HDprintf("np_reader() for verifying addition failed\n"); TEST_ERROR; } } @@ -1767,34 +1767,34 @@ main(int argc, char **argv) /* Verify writes for contiguous and/or chunked datasets */ if (!verify_write_dset_contig_chunked(&s, &ds, &config, &np)) { - printf("verify_write_dset_contig_chunked() failed\n"); + HDprintf("verify_write_dset_contig_chunked() failed\n"); TEST_ERROR; } } } if (!close_dsets(&ds)) { - printf("close_dsets() failed\n"); + HDprintf("close_dsets() failed\n"); TEST_ERROR; } if (H5Pclose(fapl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Pclose(fcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Fclose(s.file) < 0) { - printf("H5Fclose failed\n"); + HDprintf("H5Fclose failed\n"); TEST_ERROR; } if (s.use_np && !np_close(&np, writer)) { - printf("np_close() failed\n"); + HDprintf("np_close() failed\n"); TEST_ERROR; } diff --git a/test/vfd_swmr_generator.c b/test/vfd_swmr_generator.c index 8a81e01..de3ad3d 100644 --- a/test/vfd_swmr_generator.c +++ b/test/vfd_swmr_generator.c @@ -197,7 +197,7 @@ gen_skeleton(const char *filename, hbool_t verbose, hbool_t vfd_swmr_write, int HDfprintf(stderr, "Creating datasets\n"); #if 0 /* delete this once the race condiditon bug is fixed */ /* JRM */ - sleep(1); + HDsleep(1); #endif /* JRM */ /* Create the datasets */ @@ -264,23 +264,23 @@ gen_skeleton(const char *filename, hbool_t verbose, hbool_t vfd_swmr_write, int static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: swmr_generator [-q] [-s] [-c <deflate compression level>]\n"); - printf(" [-i <index type>] [-r <random seed>]\n"); - printf("\n"); - printf("NOTE: The random seed option is only used by the sparse test. Other\n"); - printf(" tests specify the random seed as a reader/writer option.\n"); - printf("\n"); - printf("<deflate compression level> should be -1 (for no compression) or 0-9\n"); - printf("\n"); - printf("<index type> should be b2 or ea\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given), no VFD_SWMR_WRITE mode (no '-s' given) no\n"); - printf("compression ('-c -1'), v1 b-tree indexing (-i b1), and will generate a random\n"); - printf("seed (no -r given).\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: swmr_generator [-q] [-s] [-c <deflate compression level>]\n"); + HDprintf(" [-i <index type>] [-r <random seed>]\n"); + HDprintf("\n"); + HDprintf("NOTE: The random seed option is only used by the sparse test. Other\n"); + HDprintf(" tests specify the random seed as a reader/writer option.\n"); + HDprintf("\n"); + HDprintf("<deflate compression level> should be -1 (for no compression) or 0-9\n"); + HDprintf("\n"); + HDprintf("<index type> should be b2 or ea\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given), no VFD_SWMR_WRITE mode (no '-s' given) no\n"); + HDprintf("compression ('-c -1'), v1 b-tree indexing (-i b1), and will generate a random\n"); + HDprintf("seed (no -r given).\n"); + HDprintf("\n"); HDexit(1); } /* end usage() */ diff --git a/test/vfd_swmr_group_writer.c b/test/vfd_swmr_group_writer.c index 6d93125..b43a3a5 100644 --- a/test/vfd_swmr_group_writer.c +++ b/test/vfd_swmr_group_writer.c @@ -24,7 +24,7 @@ #ifndef H5_HAVE_WIN32_API #define READER_WAIT_TICKS 3 -#define VS_ATTR_NAME_LEN 21 +#define VS_ATTR_NAME_LEN 27 typedef struct { hid_t file, filetype, one_by_one_sid; @@ -63,76 +63,76 @@ typedef struct { static void usage(const char *progname) { - fprintf(stderr, - "usage: %s [-S] [-G] [-a steps] [-b] [-c] [-n iterations]\n" - " [-N] [-q] [-u numb_ticks] [-A at_pattern] [-O grp_op_pattern]\n" - "\n" - "-S: do not use VFD SWMR\n" - "-G: old-style type of group\n" - "-a steps: `steps` between adding attributes\n" - "-b: write data in big-endian byte order\n" - "-c steps: `steps` between communication between the writer and reader\n" - "-n ngroups: the number of groups\n" - "-N: do not use named pipes, \n" - " mainly for running the writer and reader seperately\n" - "-u numb_ticks: `numb_ticks` for the reader to wait before verification\n" - "-A at_pattern: `at_pattern' for different attribute tests\n" - " The value of `at_pattern` is one of the following:\n" - " `compact` - Attributes added in compact storage\n" - " `dense` - An attribute added in dense storage\n" - " `compact-del` - Attributes added and then one\n" - " attribute deleted, in compact \n" - " `dense-del` - Attributes added until the storage\n" - " is dense then an attribute deleted\n" - " the storge still in dense\n" - " `compact-add-to-dense` - Attributes added first in compact\n" - " then in dense storage\n" - " `dense-del-to-compact` - Attributes added until the storage\n" - " is dense, then several attributes \n" - " deleted, the storage changed to\n" - " compact\n" - " `modify` - An attribute added then modified\n" - " `add-vstr` - A VL string attribute added\n" - " `remove-vstr` - A VL string attribute added then\n" - " deleted\n" - " `modify-vstr` - A VL string attribute added then \n" - " modified \n" - " `add-ohr-block` - An attribute is added and this forces\n" - " the creation of object header\n" - " continuation block \n" - " `del-ohr-block` - An attribute is added and this forces\n" - " the creation of object header\n" - " continuation block and then this \n" - " attribute is deleted so the \n" - " object header continuation block is \n" - " removed. \n" - "-O grp_op_pattern: `grp_op_pattern' for different group operation tests\n" - " The value of `grp_op_pattern` is one of the following:\n" - " `grp-creation` - A group is created.\n" - " `grp-deletion` - An existing group is deleted.\n" - " `grp-move` - A group is moved to become \n" - " another group. \n" - " `grp-ins-links` - Links are inserted, including\n" - " both hard and soft links. \n" - " `grp-del-links` - Links are deleted, including\n" - " both hard ans soft links. \n" - " `grp-compact-t-dense` - Links are inserted to the group.\n" - " The link storage of this group \n" - " changed from compact to dense. \n" - " The links include both hard and\n" - " soft links. \n" - " `grp-dense-t-compact` - Links are inserted to the group\n" - " The link storage of this group \n" - " changed from compact to dense. \n" - " Then several links are deleted.\n" - " The link storage changed from \n" - " dense to compact again. \n" - " The links include both hard and\n" - " soft links. \n" - "-q: silence printouts, few messages\n" - "\n", - progname); - exit(EXIT_FAILURE); + HDfprintf(stderr, + "usage: %s [-S] [-G] [-a steps] [-b] [-c] [-n iterations]\n" + " [-N] [-q] [-u numb_ticks] [-A at_pattern] [-O grp_op_pattern]\n" + "\n" + "-S: do not use VFD SWMR\n" + "-G: old-style type of group\n" + "-a steps: `steps` between adding attributes\n" + "-b: write data in big-endian byte order\n" + "-c steps: `steps` between communication between the writer and reader\n" + "-n ngroups: the number of groups\n" + "-N: do not use named pipes, \n" + " mainly for running the writer and reader seperately\n" + "-u numb_ticks: `numb_ticks` for the reader to wait before verification\n" + "-A at_pattern: `at_pattern' for different attribute tests\n" + " The value of `at_pattern` is one of the following:\n" + " `compact` - Attributes added in compact storage\n" + " `dense` - An attribute added in dense storage\n" + " `compact-del` - Attributes added and then one\n" + " attribute deleted, in compact \n" + " `dense-del` - Attributes added until the storage\n" + " is dense then an attribute deleted\n" + " the storge still in dense\n" + " `compact-add-to-dense` - Attributes added first in compact\n" + " then in dense storage\n" + " `dense-del-to-compact` - Attributes added until the storage\n" + " is dense, then several attributes \n" + " deleted, the storage changed to\n" + " compact\n" + " `modify` - An attribute added then modified\n" + " `add-vstr` - A VL string attribute added\n" + " `remove-vstr` - A VL string attribute added then\n" + " deleted\n" + " `modify-vstr` - A VL string attribute added then \n" + " modified \n" + " `add-ohr-block` - An attribute is added and this forces\n" + " the creation of object header\n" + " continuation block \n" + " `del-ohr-block` - An attribute is added and this forces\n" + " the creation of object header\n" + " continuation block and then this \n" + " attribute is deleted so the \n" + " object header continuation block is \n" + " removed. \n" + "-O grp_op_pattern: `grp_op_pattern' for different group operation tests\n" + " The value of `grp_op_pattern` is one of the following:\n" + " `grp-creation` - A group is created.\n" + " `grp-deletion` - An existing group is deleted.\n" + " `grp-move` - A group is moved to become \n" + " another group. \n" + " `grp-ins-links` - Links are inserted, including\n" + " both hard and soft links. \n" + " `grp-del-links` - Links are deleted, including\n" + " both hard ans soft links. \n" + " `grp-compact-t-dense` - Links are inserted to the group.\n" + " The link storage of this group \n" + " changed from compact to dense. \n" + " The links include both hard and\n" + " soft links. \n" + " `grp-dense-t-compact` - Links are inserted to the group\n" + " The link storage of this group \n" + " changed from compact to dense. \n" + " Then several links are deleted.\n" + " The link storage changed from \n" + " dense to compact again. \n" + " The links include both hard and\n" + " soft links. \n" + "-q: silence printouts, few messages\n" + "\n", + progname); + HDexit(EXIT_FAILURE); } static bool @@ -147,7 +147,7 @@ state_init(state_t *s, int argc, char **argv) *s = ALL_HID_INITIALIZER; if (H5_basename(argv[0], &tfile) < 0) { - printf("H5_basename failed\n"); + HDprintf("H5_basename failed\n"); TEST_ERROR; } @@ -171,15 +171,15 @@ state_init(state_t *s, int argc, char **argv) errno = 0; tmp = HDstrtoul(optarg, &end, 0); if (end == optarg || *end != '\0') { - printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg); TEST_ERROR; } else if (errno != 0) { - printf("couldn't parse `-%c` argument `%s`\n", ch, optarg); + HDprintf("couldn't parse `-%c` argument `%s`\n", ch, optarg); TEST_ERROR; } else if (tmp > UINT_MAX) { - printf("`-%c` argument `%lu` too large\n", ch, tmp); + HDprintf("`-%c` argument `%lu` too large\n", ch, tmp); TEST_ERROR; } @@ -214,7 +214,7 @@ state_init(state_t *s, int argc, char **argv) else if (HDstrcmp(optarg, "grp-dense-t-compact") == 0) s->grp_op_pattern = 'T'; else { - printf("Invalid -O argument \"%s\"", optarg); + HDprintf("Invalid -O argument \"%s\"", optarg); TEST_ERROR; } break; @@ -244,7 +244,7 @@ state_init(state_t *s, int argc, char **argv) else if (HDstrcmp(optarg, "del-ohr-block") == 0) s->at_pattern = 'R'; else { - printf("Invalid -A argument \"%s\"", optarg); + HDprintf("Invalid -A argument \"%s\"", optarg); TEST_ERROR; } break; @@ -267,29 +267,29 @@ state_init(state_t *s, int argc, char **argv) if (!s->grp_op_test) { if (s->asteps < 1 || s->asteps > s->nsteps) { - printf("attribute interval is out of bounds\n"); + HDprintf("attribute interval is out of bounds\n"); TEST_ERROR; } } if (s->grp_op_test && s->attr_test) { - printf("Cannot test both group operation and attribute tests!\n"); - printf("Attribute tests are ignored.\n"); + HDprintf("Cannot test both group operation and attribute tests!\n"); + HDprintf("Attribute tests are ignored.\n"); } if (s->csteps < 1 || s->csteps > s->nsteps) { - printf("communication interval is out of bounds\n"); + HDprintf("communication interval is out of bounds\n"); TEST_ERROR; } if (argc > 0) { - printf("unexpected command-line arguments\n"); + HDprintf("unexpected command-line arguments\n"); TEST_ERROR; } /* space for attributes */ if ((s->one_by_one_sid = H5Screate_simple(1, &dims, &dims)) < 0) { - printf("H5Screate_simple failed\n"); + HDprintf("H5Screate_simple failed\n"); TEST_ERROR; } @@ -323,7 +323,7 @@ np_wr_send_receive(state_t *s) /* Bump up the value of notify to notice the reader to start to read */ s->np_notify++; if (HDwrite(s->np_fd_w_to_r, &(s->np_notify), sizeof(int)) < 0) { - printf("HDwrite failed\n"); + HDprintf("HDwrite failed\n"); TEST_ERROR; } @@ -342,17 +342,17 @@ np_wr_send_receive(state_t *s) * going to the next step */ (s->np_verify)++; if (HDread(s->np_fd_r_to_w, &(s->np_notify), sizeof(int)) < 0) { - printf("HDread failed\n"); + HDprintf("HDread failed\n"); TEST_ERROR; } if (s->np_notify == -1) { - printf("reader failed to verify group or attribute operation.\n"); + HDprintf("reader failed to verify group or attribute operation.\n"); TEST_ERROR; } if (s->np_notify != s->np_verify) { - printf("received message %d, expecting %d\n", s->np_notify, s->np_verify); + HDprintf("received message %d, expecting %d\n", s->np_notify, s->np_verify); TEST_ERROR; } @@ -384,17 +384,17 @@ np_rd_receive(state_t *s) /* Receive the notify that the writer bumped up the value */ if (HDread(s->np_fd_w_to_r, &(s->np_notify), sizeof(int)) < 0) { - printf("HDread failed\n"); + HDprintf("HDread failed\n"); TEST_ERROR; } if (s->np_notify == -1) { - printf("writer failed to create group or carry out an attribute operation.\n"); + HDprintf("writer failed to create group or carry out an attribute operation.\n"); TEST_ERROR; } if (s->np_notify != s->np_verify) { - printf("received message %d, expecting %d\n", s->np_notify, s->np_verify); + HDprintf("received message %d, expecting %d\n", s->np_notify, s->np_verify); TEST_ERROR; } @@ -418,7 +418,7 @@ np_rd_send(state_t *s) if (HDwrite(s->np_fd_r_to_w, &(s->np_notify), sizeof(int)) < 0) { H5_FAILED(); AT(); - printf("HDwrite failed\n"); + HDprintf("HDwrite failed\n"); return false; } else @@ -471,19 +471,19 @@ check_ohr_num_chunk(hid_t g, bool one_chunk_ohr) /* Get the object information */ if (H5Oget_native_info(g, &ninfo, H5O_NATIVE_INFO_HDR) < 0) { - printf("H5Oget_native_info failed\n"); + HDprintf("H5Oget_native_info failed\n"); TEST_ERROR; } if (true == one_chunk_ohr) { if (ninfo.hdr.nchunks != 1) { - printf("Object header should have only one chunk,but it is not.\n"); + HDprintf("Object header should have only one chunk,but it is not.\n"); TEST_ERROR; } } else { if (ninfo.hdr.nchunks <= 1) { - printf("Object header should have more than one chunk,but it is not.\n"); + HDprintf("Object header should have more than one chunk,but it is not.\n"); TEST_ERROR; } } @@ -541,7 +541,7 @@ add_attr(state_t *s, hid_t oid, unsigned int which, unsigned num_attrs, const ch /* Need to obtain native datatype for H5Aread */ if ((amtype = H5Tget_native_type(atype, H5T_DIR_ASCEND)) < 0) { - printf("H5Tget_native_type failed\n"); + HDprintf("H5Tget_native_type failed\n"); TEST_ERROR; } @@ -551,7 +551,7 @@ add_attr(state_t *s, hid_t oid, unsigned int which, unsigned num_attrs, const ch /* Construct attribute name like attr-0-0 */ HDsprintf(attrname, aname_fmt, which, u); if ((aid = H5Acreate2(oid, attrname, atype, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - printf("H5Acreate2 failed\n"); + HDprintf("H5Acreate2 failed\n"); TEST_ERROR; } @@ -561,13 +561,13 @@ add_attr(state_t *s, hid_t oid, unsigned int which, unsigned num_attrs, const ch /* Write data into the attribute */ if (H5Awrite(aid, amtype, &attr_value) < 0) { - printf("H5Awrite failed\n"); + HDprintf("H5Awrite failed\n"); TEST_ERROR; } /* Close attribute */ if (H5Aclose(aid) < 0) { - printf("H5Aclose failed\n"); + HDprintf("H5Aclose failed\n"); TEST_ERROR; } @@ -575,8 +575,8 @@ add_attr(state_t *s, hid_t oid, unsigned int which, unsigned num_attrs, const ch * we need to check if this test behaves as expected. */ if (s->at_pattern == 'a' || s->at_pattern == 'R') { if (false == check_ohr_num_chunk(oid, false)) { - printf("An object header continuation block should be created. \n"); - printf("But it is not.\n"); + HDprintf("An object header continuation block should be created. \n"); + HDprintf("But it is not.\n"); TEST_ERROR; } } @@ -698,7 +698,7 @@ add_vlstr_attr(state_t *s, hid_t g, unsigned int which) /* Allocate buffer for the VL string value */ astr_val = HDmalloc(VS_ATTR_NAME_LEN); if (astr_val == NULL) { - printf("Allocate memory for VL string failed.\n"); + HDprintf("Allocate memory for VL string failed.\n"); TEST_ERROR; } @@ -710,32 +710,32 @@ add_vlstr_attr(state_t *s, hid_t g, unsigned int which) /* Create a datatype to refer to. */ if ((atype = H5Tcopy(H5T_C_S1)) < 0) { - printf("Cannot create variable length datatype.\n"); + HDprintf("Cannot create variable length datatype.\n"); TEST_ERROR; } if (H5Tset_size(atype, H5T_VARIABLE) < 0) { - printf("Cannot set variable length datatype.\n"); + HDprintf("Cannot set variable length datatype.\n"); TEST_ERROR; } /* Generate the VL string attribute.*/ if ((aid = H5Acreate2(g, name, atype, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - printf("H5Acreate2 failed.\n"); + HDprintf("H5Acreate2 failed.\n"); TEST_ERROR; } if (H5Awrite(aid, atype, &astr_val) < 0) { - printf("H5Awrite failed.\n"); + HDprintf("H5Awrite failed.\n"); TEST_ERROR; } if (H5Tclose(atype) < 0) { - printf("H5Tclose() failed\n"); + HDprintf("H5Tclose() failed\n"); TEST_ERROR; } if (H5Aclose(aid) < 0) { - printf("H5Aclose() failed\n"); + HDprintf("H5Aclose() failed\n"); TEST_ERROR; } @@ -835,7 +835,7 @@ del_one_attr(state_t *s, hid_t obj_id, bool is_dense, bool is_vl_or_ohrc, unsign /* Delete the attribute */ if (H5Adelete(obj_id, attrname) < 0) { - printf("H5Adelete() failed\n"); + HDprintf("H5Adelete() failed\n"); TEST_ERROR; } @@ -843,7 +843,7 @@ del_one_attr(state_t *s, hid_t obj_id, bool is_dense, bool is_vl_or_ohrc, unsign * we need to check if this test behaves as expected. */ if (s->at_pattern == 'R') { if (false == check_ohr_num_chunk(obj_id, true)) { - printf("The object header chunk should not continue. \n"); + HDprintf("The object header chunk should not continue. \n"); TEST_ERROR; } } @@ -947,12 +947,12 @@ modify_attr(state_t *s, hid_t g, const char *aname_fmt, unsigned int which) HDsprintf(attrname, aname_fmt, which, 0); if ((aid = H5Aopen(g, attrname, H5P_DEFAULT)) < 0) { - printf("H5Aopen failed\n"); + HDprintf("H5Aopen failed\n"); TEST_ERROR; } if ((amtype = H5Tget_native_type(s->filetype, H5T_DIR_ASCEND)) < 0) { - printf("H5Tget_native_type failed\n"); + HDprintf("H5Tget_native_type failed\n"); TEST_ERROR; } @@ -960,15 +960,15 @@ modify_attr(state_t *s, hid_t g, const char *aname_fmt, unsigned int which) modify_value = which + 10000; if (H5Awrite(aid, amtype, &modify_value) < 0) { - printf("H5Awrite failed\n"); + HDprintf("H5Awrite failed\n"); TEST_ERROR; } if (H5Tclose(amtype) < 0) { - printf("H5Tclose failed\n"); + HDprintf("H5Tclose failed\n"); TEST_ERROR; } if (H5Aclose(aid) < 0) { - printf("H5Aclose failed\n"); + HDprintf("H5Aclose failed\n"); TEST_ERROR; } @@ -1037,7 +1037,7 @@ modify_vlstr_attr(state_t *s, hid_t g, unsigned int which) astr_val = HDmalloc(VS_ATTR_NAME_LEN); if (astr_val == NULL) { - printf("Allocate memory for VL string failed.\n"); + HDprintf("Allocate memory for VL string failed.\n"); TEST_ERROR; } @@ -1049,35 +1049,35 @@ modify_vlstr_attr(state_t *s, hid_t g, unsigned int which) /* Create a datatype to refer to. */ if ((atype = H5Tcopy(H5T_C_S1)) < 0) { - printf("Cannot create variable length datatype.\n"); + HDprintf("Cannot create variable length datatype.\n"); TEST_ERROR; } if (H5Tset_size(atype, H5T_VARIABLE) < 0) { - printf("Cannot set variable length datatype.\n"); + HDprintf("Cannot set variable length datatype.\n"); TEST_ERROR; } /* Open this attribute. */ if ((aid = H5Aopen(g, name, H5P_DEFAULT)) < 0) { - printf("H5Aopen failed.\n"); + HDprintf("H5Aopen failed.\n"); TEST_ERROR; } dbgf(1, "The modified VL string value is %s \n", astr_val); if (H5Awrite(aid, atype, &astr_val) < 0) { - printf("H5Awrite failed.\n"); + HDprintf("H5Awrite failed.\n"); TEST_ERROR; } if (H5Tclose(atype) < 0) { - printf("H5Tclose() failed\n"); + HDprintf("H5Tclose() failed\n"); TEST_ERROR; } if (H5Aclose(aid) < 0) { - printf("H5Aclose() failed\n"); + HDprintf("H5Aclose() failed\n"); TEST_ERROR; } @@ -1202,7 +1202,7 @@ add_attrs_compact(state_t *s, hid_t g, hid_t gcpl, unsigned int which) * storage and the minimal number of attributes to be stored in * dense storage. */ if (H5Pget_attr_phase_change(gcpl, &max_compact, &min_dense) < 0) { - printf("H5Pget_attr_phase_change() failed\n"); + HDprintf("H5Pget_attr_phase_change() failed\n"); TEST_ERROR; } } @@ -1258,7 +1258,7 @@ add_attrs_compact_dense(state_t *s, hid_t g, hid_t gcpl, unsigned int which) bool ret_value = false; if (H5Pget_attr_phase_change(gcpl, &max_compact, &min_dense) < 0) { - printf("H5Pget_attr_phase_change failed\n"); + HDprintf("H5Pget_attr_phase_change failed\n"); TEST_ERROR; } @@ -1325,7 +1325,7 @@ del_attrs_compact_dense_compact(state_t *s, hid_t obj_id, hid_t gcpl, unsigned i * storage and the minimal number of attributes to be stored in * dense storage. */ if (H5Pget_attr_phase_change(gcpl, &max_compact, &min_dense) < 0) { - printf("H5Pget_attr_phase_change failed\n"); + HDprintf("H5Pget_attr_phase_change failed\n"); TEST_ERROR; } u = max_compact + 1; @@ -1334,7 +1334,7 @@ del_attrs_compact_dense_compact(state_t *s, hid_t obj_id, hid_t gcpl, unsigned i for (u--; u >= (min_dense - 1); u--) { HDsprintf(attrname, aname_format, which, max_compact - u); if (H5Adelete(obj_id, attrname) < 0) { - printf("H5Adelete failed\n"); + HDprintf("H5Adelete failed\n"); TEST_ERROR; } @@ -1363,7 +1363,7 @@ del_attrs_compact_dense_compact(state_t *s, hid_t obj_id, hid_t gcpl, unsigned i HDsprintf(attrname, adname_format, max_compact + which, 0); if (H5Adelete(obj_id, attrname) < 0) { - printf("H5Adelete failed\n"); + HDprintf("H5Adelete failed\n"); TEST_ERROR; } /* Again we need to notify the reader via Named pipe. */ @@ -1483,7 +1483,7 @@ add_del_attrs_compact_dense(state_t *s, hid_t g, hid_t gcpl, unsigned int which) unsigned min_dense = 0; if (H5Pget_attr_phase_change(gcpl, &max_compact, &min_dense) < 0) { - printf("H5Pget_attr_phase_change failed\n"); + HDprintf("H5Pget_attr_phase_change failed\n"); TEST_ERROR; } @@ -1729,7 +1729,7 @@ write_group(state_t *s, unsigned int which) H5G_info_t group_info; if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } @@ -1740,21 +1740,21 @@ write_group(state_t *s, unsigned int which) else { gcpl = H5Pcreate(H5P_GROUP_CREATE); if (gcpl < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } /* If we test the dense storage, change the attribute phase. */ if (s->at_pattern == 'd') { if (H5Pset_attr_phase_change(gcpl, 0, 0) < 0) { - printf("H5Pset_attr_phase_change failed for the dense storage.\n"); + HDprintf("H5Pset_attr_phase_change failed for the dense storage.\n"); TEST_ERROR; } } } if ((g = H5Gcreate2(s->file, name, H5P_DEFAULT, gcpl, H5P_DEFAULT)) < 0) { - printf("H5Gcreate2 failed\n"); + HDprintf("H5Gcreate2 failed\n"); TEST_ERROR; } @@ -1762,25 +1762,25 @@ write_group(state_t *s, unsigned int which) if (s->at_pattern == 'a' || s->at_pattern == 'R') { if ((dummy_d = H5Dcreate2(g, "Dataset", H5T_NATIVE_INT, s->one_by_one_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - printf("H5Dcreate2 failed\n"); + HDprintf("H5Dcreate2 failed\n"); TEST_ERROR; } } if (H5Gget_info(g, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } if (s->old_style_grp) { if (group_info.storage_type != H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Old-styled group test: but the group is not in old-style. \n"); + HDprintf("Old-styled group test: but the group is not in old-style. \n"); TEST_ERROR; } dbgf(2, "Writer: group is created with the old-style.\n"); } else { if (group_info.storage_type == H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("The created group should NOT be in old-style . \n"); + HDprintf("The created group should NOT be in old-style . \n"); TEST_ERROR; } dbgf(2, "Writer: group is created with the new-style.\n"); @@ -1790,8 +1790,8 @@ write_group(state_t *s, unsigned int which) * we need to check if this test behaves as expected. */ if (s->at_pattern == 'a' || s->at_pattern == 'R') { if (false == check_ohr_num_chunk(g, true)) { - printf("An object header continuation block should NOT be created. \n"); - printf("But it is created.\n"); + HDprintf("An object header continuation block should NOT be created. \n"); + HDprintf("But it is created.\n"); TEST_ERROR; } } @@ -1820,17 +1820,17 @@ write_group(state_t *s, unsigned int which) if (s->at_pattern == 'a' || s->at_pattern == 'R') { if (H5Dclose(dummy_d) < 0) { - printf("H5Dclose failed\n"); + HDprintf("H5Dclose failed\n"); TEST_ERROR; } } if (H5Gclose(g) < 0) { - printf("H5Gclose failed\n"); + HDprintf("H5Gclose failed\n"); TEST_ERROR; } if (!s->old_style_grp && H5Pclose(gcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } @@ -1882,19 +1882,19 @@ check_attr_storage_type(hid_t g, bool is_compact) /* Get the object information */ if (H5Oget_native_info(g, &ninfo, H5O_NATIVE_INFO_HDR | H5O_NATIVE_INFO_META_SIZE) < 0) { - printf("H5Oget_native_info failed\n"); + HDprintf("H5Oget_native_info failed\n"); TEST_ERROR; } if (is_compact) { if (ninfo.meta_size.attr.index_size != 0 || ninfo.meta_size.attr.heap_size != 0) { - printf("Should be in compact storage,but it is not.\n"); + HDprintf("Should be in compact storage,but it is not.\n"); TEST_ERROR; } } else { if (ninfo.meta_size.attr.index_size == 0 || ninfo.meta_size.attr.heap_size == 0) { - printf("Should be in dense storage,but it is not.\n"); + HDprintf("Should be in dense storage,but it is not.\n"); TEST_ERROR; } } @@ -1973,35 +1973,35 @@ vrfy_attr(state_t *s, hid_t g, unsigned int which, const char *aname, unsigned i dbgf(1, "verifying attribute %s on group %u equals %u\n", aname, g_which, which); if ((amtype = H5Tget_native_type(s->filetype, H5T_DIR_ASCEND)) < 0) { - printf("H5Tget_native_type failed\n"); + HDprintf("H5Tget_native_type failed\n"); TEST_ERROR; } if ((aid = H5Aopen(g, aname, H5P_DEFAULT)) < 0) { - printf("H5Aopen failed\n"); + HDprintf("H5Aopen failed\n"); TEST_ERROR; } if (H5Aread(aid, amtype, &read_which) < 0) { - printf("H5Aread failed\n"); + HDprintf("H5Aread failed\n"); TEST_ERROR; } if (H5Aclose(aid) < 0) { - printf("H5Aclose failed\n"); + HDprintf("H5Aclose failed\n"); TEST_ERROR; } if (read_which != which) { - printf("reader: the add_attribute verfication failed,expected value is %d\n", which); - printf("reader: the add_attribute verfication failed, the value is %d\n", read_which); - printf("The add_attribute verification failed\n"); + HDprintf("reader: the add_attribute verfication failed,expected value is %d\n", which); + HDprintf("reader: the add_attribute verfication failed, the value is %d\n", read_which); + HDprintf("The add_attribute verification failed\n"); TEST_ERROR; } if (!s->old_style_grp && check_storage == true) { if (false == check_attr_storage_type(g, is_compact)) { - printf("The attribute storage type is wrong. \n"); + HDprintf("The attribute storage type is wrong. \n"); TEST_ERROR; } dbgf(2, "reader: finish checking the storage type: %d\n", s->np_notify); @@ -2011,9 +2011,9 @@ vrfy_attr(state_t *s, hid_t g, unsigned int which, const char *aname, unsigned i * we need to check if this test behaves as expected. */ if (s->at_pattern == 'a' || s->at_pattern == 'R') { if (false == check_ohr_num_chunk(g, false)) { - printf("An object header continuation block should be created. \n"); - printf("But it is not.\n"); - printf("Verification of 'object header continuation block test' failed.\n"); + HDprintf("An object header continuation block should be created. \n"); + HDprintf("But it is not.\n"); + HDprintf("Verification of 'object header continuation block test' failed.\n"); TEST_ERROR; } } @@ -2021,7 +2021,7 @@ vrfy_attr(state_t *s, hid_t g, unsigned int which, const char *aname, unsigned i /* If the read value is expected, send back an OK message to the writer. */ if (s->use_named_pipes && s->attr_test == true) { if (np_rd_send(s) == false) { - printf("named pipe reader send message error\n"); + HDprintf("named pipe reader send message error\n"); TEST_ERROR; } dbgf(2, "reader: finish sending back the message: %d\n", s->np_notify); @@ -2138,35 +2138,35 @@ verify_modify_attr(state_t *s, hid_t g, unsigned int which) /* Go ahead to read the attribute. */ esnprintf(attrname, sizeof(attrname), aname_fmt, which); if ((amtype = H5Tget_native_type(s->filetype, H5T_DIR_ASCEND)) < 0) { - printf("H5Tget_native_type failed\n"); + HDprintf("H5Tget_native_type failed\n"); TEST_ERROR; } if ((aid = H5Aopen(g, attrname, H5P_DEFAULT)) < 0) { - printf("H5Aopen failed\n"); + HDprintf("H5Aopen failed\n"); TEST_ERROR; } if (H5Aread(aid, amtype, &read_which) < 0) { - printf("H5Aread failed\n"); + HDprintf("H5Aread failed\n"); TEST_ERROR; } if (H5Tclose(amtype) < 0) { - printf("H5Tclose failed.\n"); + HDprintf("H5Tclose failed.\n"); TEST_ERROR; } if (H5Aclose(aid) < 0) { - printf("H5Aclose failed\n"); + HDprintf("H5Aclose failed\n"); TEST_ERROR; } /* verify the modified value */ if (read_which != (which + 10000)) { - printf("reader: the modified_attr() expected value is %d\n", which + 10000); - printf("reader: the modified_attr() actual value is %d\n", read_which); - printf("The modify_attribute verification failed.\n"); + HDprintf("reader: the modified_attr() expected value is %d\n", which + 10000); + HDprintf("reader: the modified_attr() actual value is %d\n", read_which); + HDprintf("The modify_attribute verification failed.\n"); TEST_ERROR; } @@ -2253,7 +2253,7 @@ verify_group_vlstr_attr(state_t *s, hid_t g, unsigned int which, bool vrfy_mod) /* Go ahead to read the VL string attribute. */ astr_val_exp = HDmalloc(VS_ATTR_NAME_LEN); if (astr_val_exp == NULL) { - printf("Allocate memory for expected buffer failed.\n"); + HDprintf("Allocate memory for expected buffer failed.\n"); TEST_ERROR; } @@ -2271,41 +2271,41 @@ verify_group_vlstr_attr(state_t *s, hid_t g, unsigned int which, bool vrfy_mod) dbgf(1, "expected vl attr is= %s\n", astr_val_exp); if ((aid = H5Aopen(g, name, H5P_DEFAULT)) < 0) { - printf("H5Aopen failed\n"); + HDprintf("H5Aopen failed\n"); TEST_ERROR; } /* Create a VL string datatype */ if ((atype = H5Tcopy(H5T_C_S1)) < 0) { - printf("Cannot create variable length datatype.\n"); + HDprintf("Cannot create variable length datatype.\n"); TEST_ERROR; } if (H5Tset_size(atype, H5T_VARIABLE) < 0) { - printf("Cannot set variable length datatype.\n"); + HDprintf("Cannot set variable length datatype.\n"); TEST_ERROR; } if (H5Aread(aid, atype, &astr_val) < 0) { - printf("Cannot read the attribute.\n"); + HDprintf("Cannot read the attribute.\n"); TEST_ERROR; } dbgf(1, "read attr is= %s\n", astr_val); if (HDstrcmp(astr_val, astr_val_exp) != 0) { - printf("reader: the vl add_attribute verfication failed,expected value is %s\n", astr_val_exp); - printf("reader: the vl add_attribute verfication failed, the value is %s\n", astr_val); - printf("The vl add_attribute verification failed\n"); + HDprintf("reader: the vl add_attribute verfication failed,expected value is %s\n", astr_val_exp); + HDprintf("reader: the vl add_attribute verfication failed, the value is %s\n", astr_val); + HDprintf("The vl add_attribute verification failed\n"); TEST_ERROR; } if (H5Tclose(atype) < 0) { - printf("H5Tclose failed.\n"); + HDprintf("H5Tclose failed.\n"); TEST_ERROR; } if (H5Aclose(aid) < 0) { - printf("H5Aclose failed.\n"); + HDprintf("H5Aclose failed.\n"); TEST_ERROR; } @@ -2402,18 +2402,18 @@ verify_del_one_attr(state_t *s, hid_t g, const char *aname, bool check_storage, dbgf(1, " attribute %s is successfully deleted. \n", aname); } else if (attr_exists == TRUE) { - printf("The supposed deleted attribute %s still exists \n", aname); - printf("verify_del_attrs_compact() test failed \n"); + HDprintf("The supposed deleted attribute %s still exists \n", aname); + HDprintf("verify_del_attrs_compact() test failed \n"); TEST_ERROR; } else { - printf("H5Aexists_by_name failed \n"); + HDprintf("H5Aexists_by_name failed \n"); TEST_ERROR; } if (!s->old_style_grp && check_storage == true) { if (false == check_attr_storage_type(g, is_compact)) { - printf("The attribute storage type is wrong. \n"); + HDprintf("The attribute storage type is wrong. \n"); TEST_ERROR; } dbgf(2, "reader: finish checking the storage type: %d\n", s->np_notify); @@ -2423,9 +2423,9 @@ verify_del_one_attr(state_t *s, hid_t g, const char *aname, bool check_storage, * we need to check if this test behaves as expected. */ if (s->at_pattern == 'R') { if (false == check_ohr_num_chunk(g, true)) { - printf("An object header continuation block should be removed. \n"); - printf("But it is NOT.\n"); - printf("Verification of an 'object header continuation block test' failed.\n"); + HDprintf("An object header continuation block should be removed. \n"); + HDprintf("But it is NOT.\n"); + HDprintf("Verification of an 'object header continuation block test' failed.\n"); TEST_ERROR; } } @@ -2903,15 +2903,15 @@ verify_group_attribute(state_t *s, hid_t g, unsigned int which) max_compact = 2; else { if ((gcpl = H5Gget_create_plist(g)) < 0) { - printf("H5Gget_create_plist failed\n"); + HDprintf("H5Gget_create_plist failed\n"); TEST_ERROR; } if (H5Pget_attr_phase_change(gcpl, &max_compact, &min_dense) < 0) { - printf("H5Pget_attr_phase_change failed\n"); + HDprintf("H5Pget_attr_phase_change failed\n"); TEST_ERROR; } if (H5Pclose(gcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } } @@ -3025,33 +3025,33 @@ verify_group(state_t *s, unsigned int which) } if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } esnprintf(name, sizeof(name), "/group-%u", which); if ((g = H5Gopen(s->file, name, H5P_DEFAULT)) < 0) { - printf("H5Gopen failed\n"); + HDprintf("H5Gopen failed\n"); TEST_ERROR; } if (H5Gget_info(g, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } dbgf(2, "Storage info is %d\n", group_info.storage_type); if (s->old_style_grp) { if (group_info.storage_type != H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Reader - Old-styled group: but the group is not in old-style. \n"); + HDprintf("Reader - Old-styled group: but the group is not in old-style. \n"); TEST_ERROR; } dbgf(2, "Reader: verify that the group is created with the old-style.\n"); } else { if (group_info.storage_type == H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Reader - The created group should NOT be in old-style . \n"); + HDprintf("Reader - The created group should NOT be in old-style . \n"); TEST_ERROR; } dbgf(2, "Reader: verify that the group is created with the new-style.\n"); @@ -3061,9 +3061,9 @@ verify_group(state_t *s, unsigned int which) * we need to check if this test behaves as expected. */ if (s->at_pattern == 'a' || s->at_pattern == 'R') { if (false == check_ohr_num_chunk(g, true)) { - printf("An object header continuation block should NOT be created. \n"); - printf("But it is created.\n"); - printf("Verification of an 'object header continuation block test' failed.\n"); + HDprintf("An object header continuation block should NOT be created. \n"); + HDprintf("But it is created.\n"); + HDprintf("Verification of an 'object header continuation block test' failed.\n"); TEST_ERROR; } } @@ -3083,7 +3083,7 @@ verify_group(state_t *s, unsigned int which) result = true; if (H5Gclose(g) < 0) { - printf("H5Gclose failed\n"); + HDprintf("H5Gclose failed\n"); TEST_ERROR; } @@ -3140,49 +3140,49 @@ create_group_id(state_t *s, unsigned int which, bool dense_to_compact) H5G_info_t group_info; if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } gcpl = H5Pcreate(H5P_GROUP_CREATE); if (gcpl < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (dense_to_compact) { if (H5Pset_link_phase_change(gcpl, 2, 2) < 0) { - printf("H5Pset_link_phase_change failed for dense to compact.\n"); + HDprintf("H5Pset_link_phase_change failed for dense to compact.\n"); TEST_ERROR; } } else { if (H5Pset_link_phase_change(gcpl, 1, 1) < 0) { - printf("H5Pset_attr_phase_change failed for compact to dense.\n"); + HDprintf("H5Pset_attr_phase_change failed for compact to dense.\n"); TEST_ERROR; } } esnprintf(name, sizeof(name), "/group-%u", which); if ((g = H5Gcreate2(s->file, name, H5P_DEFAULT, gcpl, H5P_DEFAULT)) < 0) { - printf("H5Gcreate2 failed\n"); + HDprintf("H5Gcreate2 failed\n"); TEST_ERROR; } if (H5Gget_info(g, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } /* The storage type should always be compact when a group is created. */ if (group_info.storage_type != H5G_STORAGE_TYPE_COMPACT) { - printf("New-style group link storage test:. \n"); - printf(" still be compact after group creation. \n"); + HDprintf("New-style group link storage test:. \n"); + HDprintf(" still be compact after group creation. \n"); TEST_ERROR; } if (H5Pclose(gcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } @@ -3244,7 +3244,7 @@ close_group_id(state_t *s, hid_t g) { if (H5Gclose(g) < 0) { - printf("H5Gclose failed\n"); + HDprintf("H5Gclose failed\n"); TEST_ERROR; } @@ -3302,38 +3302,38 @@ create_group(state_t *s, unsigned int which) H5G_info_t group_info; if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } esnprintf(name, sizeof(name), "/group-%u", which); if ((g = H5Gcreate2(s->file, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) { - printf("H5Gcreate2 failed\n"); + HDprintf("H5Gcreate2 failed\n"); TEST_ERROR; } if (H5Gget_info(g, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } if (s->old_style_grp) { if (group_info.storage_type != H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Old-styled group test: but the group is not in old-style. \n"); + HDprintf("Old-styled group test: but the group is not in old-style. \n"); TEST_ERROR; } dbgf(2, "Writer: group is created with the old-style.\n"); } else { if (group_info.storage_type == H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("The created group should NOT be in old-style . \n"); + HDprintf("The created group should NOT be in old-style . \n"); TEST_ERROR; } dbgf(2, "Writer: group is created with the new-style.\n"); } if (H5Gclose(g) < 0) { - printf("H5Gclose failed\n"); + HDprintf("H5Gclose failed\n"); TEST_ERROR; } @@ -3405,38 +3405,38 @@ delete_one_link(state_t *s, hid_t obj_id, const char *name, short link_storage, H5G_info_t group_info; if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } if (H5Ldelete(obj_id, name, H5P_DEFAULT) < 0) { - printf("H5Ldelete failed\n"); + HDprintf("H5Ldelete failed\n"); TEST_ERROR; } if (link_storage > 0) { if (s->old_style_grp) { - printf("Old style group doesn't support the indexed storage.\n"); + HDprintf("Old style group doesn't support the indexed storage.\n"); TEST_ERROR; } if (H5Gget_info(obj_id, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } if (link_storage == 1) { if (group_info.storage_type != H5G_STORAGE_TYPE_COMPACT) { - printf("The group link storage should be compact. \n"); + HDprintf("The group link storage should be compact. \n"); TEST_ERROR; } } else { if (group_info.storage_type != H5G_STORAGE_TYPE_DENSE) { - printf("The group link storage should be dense. \n"); + HDprintf("The group link storage should be dense. \n"); TEST_ERROR; } } @@ -3535,12 +3535,12 @@ move_one_group(state_t *s, hid_t obj_id, const char *name, const char *newname, { if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } if (H5Lmove(obj_id, name, obj_id, newname, H5P_DEFAULT, H5P_DEFAULT) < 0) { - printf("H5Ldelete failed\n"); + HDprintf("H5Ldelete failed\n"); TEST_ERROR; } @@ -3649,7 +3649,7 @@ insert_one_link(state_t *s, hid_t obj_id, const char *name, const char *newname, H5G_info_t group_info; if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } @@ -3659,13 +3659,13 @@ insert_one_link(state_t *s, hid_t obj_id, const char *name, const char *newname, if (is_hard) { if (link_storage > 0) { if (H5Lcreate_hard(s->file, name, obj_id, newname, H5P_DEFAULT, H5P_DEFAULT) < 0) { - printf("H5Lcreate_hard failed\n"); + HDprintf("H5Lcreate_hard failed\n"); TEST_ERROR; } } else { if (H5Lcreate_hard(obj_id, name, obj_id, newname, H5P_DEFAULT, H5P_DEFAULT) < 0) { - printf("H5Lcreate_hard failed\n"); + HDprintf("H5Lcreate_hard failed\n"); TEST_ERROR; } } @@ -3673,13 +3673,13 @@ insert_one_link(state_t *s, hid_t obj_id, const char *name, const char *newname, else { if (link_storage > 0) { if (H5Lcreate_soft("/", obj_id, newname, H5P_DEFAULT, H5P_DEFAULT) < 0) { - printf("H5Lcreate_soft failed\n"); + HDprintf("H5Lcreate_soft failed\n"); TEST_ERROR; } } else { if (H5Lcreate_soft(name, obj_id, newname, H5P_DEFAULT, H5P_DEFAULT) < 0) { - printf("H5Lcreate_soft failed.\n"); + HDprintf("H5Lcreate_soft failed.\n"); TEST_ERROR; } } @@ -3688,24 +3688,24 @@ insert_one_link(state_t *s, hid_t obj_id, const char *name, const char *newname, if (link_storage > 0) { if (s->old_style_grp) { - printf("Old style group doesn't support dense or compact storage.\n"); + HDprintf("Old style group doesn't support dense or compact storage.\n"); TEST_ERROR; } if (H5Gget_info(obj_id, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } if (link_storage == 1) { if (group_info.storage_type != H5G_STORAGE_TYPE_COMPACT) { - printf("The group link storage should be compact. \n"); + HDprintf("The group link storage should be compact. \n"); TEST_ERROR; } } else { if (group_info.storage_type != H5G_STORAGE_TYPE_DENSE) { - printf("The group link storage should be dense. \n"); + HDprintf("The group link storage should be dense. \n"); TEST_ERROR; } } @@ -3846,7 +3846,7 @@ transit_storage_compact_to_dense(state_t *s, unsigned int which) hid_t g = create_group_id(s, which, false); if (g < 0) { - printf("create_group_id failed\n"); + HDprintf("create_group_id failed\n"); TEST_ERROR; } @@ -3854,19 +3854,19 @@ transit_storage_compact_to_dense(state_t *s, unsigned int which) esnprintf(name, sizeof(name), "/group-%u", which); esnprintf(hd_name, sizeof(hd_name), "hd-group-%u", which); if (insert_one_link(s, g, name, hd_name, true, 1, which) == false) { - printf("insert_one_link for compact storage failed\n"); + HDprintf("insert_one_link for compact storage failed\n"); TEST_ERROR; } /* Then insert a soft link, the storage becomes dense. */ esnprintf(st_name, sizeof(st_name), "st-group-%u", which); if (insert_one_link(s, g, name, st_name, false, 2, which) == false) { - printf("insert_one_link for dense storage failed\n"); + HDprintf("insert_one_link for dense storage failed\n"); TEST_ERROR; } if (close_group_id(s, g) == false) { - printf("insert_one_link for dense storage failed\n"); + HDprintf("insert_one_link for dense storage failed\n"); TEST_ERROR; } @@ -3913,7 +3913,7 @@ transit_storage_dense_to_compact(state_t *s, unsigned int which) hid_t g = create_group_id(s, which, true); if (g < 0) { - printf("create_group_id failed\n"); + HDprintf("create_group_id failed\n"); TEST_ERROR; } @@ -3921,38 +3921,38 @@ transit_storage_dense_to_compact(state_t *s, unsigned int which) esnprintf(name, sizeof(name), "/group-%u", which); esnprintf(hd_name, sizeof(hd_name), "hd-group-%u", which); if (insert_one_link(s, g, name, hd_name, true, 1, which) == false) { - printf("insert_one_link for compact storage failed\n"); + HDprintf("insert_one_link for compact storage failed\n"); TEST_ERROR; } /* Insert a link, storage is still compact. */ esnprintf(st_name, sizeof(st_name), "st-group-%u", which); if (insert_one_link(s, g, name, st_name, false, 1, which) == false) { - printf("insert_one_link for compact storage failed\n"); + HDprintf("insert_one_link for compact storage failed\n"); TEST_ERROR; } /* Insert a link, storage becomes dense. */ esnprintf(st2_name, sizeof(st2_name), "st2-group-%u", which); if (insert_one_link(s, g, name, st2_name, false, 2, which) == false) { - printf("insert_one_link for dense storage failed\n"); + HDprintf("insert_one_link for dense storage failed\n"); TEST_ERROR; } /* Delete a link, storage is still dense */ if (delete_one_link(s, g, st_name, 2, which) == false) { - printf("delete_one_link for dense storage failed\n"); + HDprintf("delete_one_link for dense storage failed\n"); TEST_ERROR; } /* Delete another link, storage becomes compact */ if (delete_one_link(s, g, st2_name, 1, which) == false) { - printf("delete_one_link for compact storage failed\n"); + HDprintf("delete_one_link for compact storage failed\n"); TEST_ERROR; } if (close_group_id(s, g) == false) { - printf("insert_one_link for dense storage failed\n"); + HDprintf("insert_one_link for dense storage failed\n"); TEST_ERROR; } @@ -4072,40 +4072,40 @@ vrfy_create_group(state_t *s, unsigned int which) } if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } esnprintf(name, sizeof(name), "/group-%u", which); if ((g = H5Gopen(s->file, name, H5P_DEFAULT)) < 0) { - printf("H5Gopen failed\n"); + HDprintf("H5Gopen failed\n"); TEST_ERROR; } if (H5Gget_info(g, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } dbgf(2, "Storage info is %d\n", group_info.storage_type); if (s->old_style_grp) { if (group_info.storage_type != H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Reader - Old-styled group: but the group is not in old-style. \n"); + HDprintf("Reader - Old-styled group: but the group is not in old-style. \n"); TEST_ERROR; } dbgf(2, "Reader: verify that the group is created with the old-style.\n"); } else { if (group_info.storage_type == H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Reader - The created group should NOT be in old-style . \n"); + HDprintf("Reader - The created group should NOT be in old-style . \n"); TEST_ERROR; } dbgf(2, "Reader: verify that the group is created with the new-style.\n"); } if (H5Gclose(g) < 0) { - printf("H5Gclose failed\n"); + HDprintf("H5Gclose failed\n"); TEST_ERROR; } @@ -4189,69 +4189,69 @@ vrfy_create_group_id(state_t *s, unsigned int which, bool dense_to_compact) } if (which >= s->nsteps) { - printf("Number of the created groups is out of bounds\n"); + HDprintf("Number of the created groups is out of bounds\n"); TEST_ERROR; } esnprintf(name, sizeof(name), "/group-%u", which); if ((g = H5Gopen(s->file, name, H5P_DEFAULT)) < 0) { - printf("H5Gopen failed\n"); + HDprintf("H5Gopen failed\n"); TEST_ERROR; } if ((gcpl = H5Gget_create_plist(g)) < 0) { - printf("H5Gget_create_plist failed\n"); + HDprintf("H5Gget_create_plist failed\n"); TEST_ERROR; } if (H5Pget_link_phase_change(gcpl, &max_compact, &min_dense) < 0) { - printf("H5Pget_link_phase_change failed\n"); + HDprintf("H5Pget_link_phase_change failed\n"); TEST_ERROR; } if (dense_to_compact) { if (max_compact != 2) { - printf("For storage check from dense to compact:\n"); - printf(" The max_compact should be 2.\n"); - printf(" But the actual value is %d.\n", max_compact); + HDprintf("For storage check from dense to compact:\n"); + HDprintf(" The max_compact should be 2.\n"); + HDprintf(" But the actual value is %d.\n", max_compact); TEST_ERROR; } else if (min_dense != 2) { - printf("For storage check from dense to compact:\n"); - printf(" The min_dense should be 2.\n"); - printf(" But the actual value is %d.\n", min_dense); + HDprintf("For storage check from dense to compact:\n"); + HDprintf(" The min_dense should be 2.\n"); + HDprintf(" But the actual value is %d.\n", min_dense); TEST_ERROR; } } else { if (max_compact != 1) { - printf("For storage check from dense to compact:\n"); - printf(" The max_compact should be 1.\n"); - printf(" But the actual value is %d.\n", max_compact); + HDprintf("For storage check from dense to compact:\n"); + HDprintf(" The max_compact should be 1.\n"); + HDprintf(" But the actual value is %d.\n", max_compact); TEST_ERROR; } else if (min_dense != 1) { - printf("For storage check from dense to compact:\n"); - printf(" The min_dense should be 1.\n"); - printf(" But the actual value is %d.\n", min_dense); + HDprintf("For storage check from dense to compact:\n"); + HDprintf(" The min_dense should be 1.\n"); + HDprintf(" But the actual value is %d.\n", min_dense); TEST_ERROR; } } if (H5Pclose(gcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Gget_info(g, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } /* When the group is created, the storage type is always compact. */ if (group_info.storage_type != H5G_STORAGE_TYPE_COMPACT) { - printf("Old-styled group test: but the group is not in old-style. \n"); + HDprintf("Old-styled group test: but the group is not in old-style. \n"); TEST_ERROR; } @@ -4324,7 +4324,7 @@ vrfy_close_group_id(state_t *s, hid_t g) } if (H5Gclose(g) < 0) { - printf("H5Gclose failed\n"); + HDprintf("H5Gclose failed\n"); TEST_ERROR; } @@ -4403,18 +4403,18 @@ vrfy_one_link_exist(state_t *s, hid_t obj_id, const char *name, bool expect_exis link_exists = H5Lexists(obj_id, name, H5P_DEFAULT); if (link_exists < 0) { - printf("H5Lexists error\n"); + HDprintf("H5Lexists error\n"); TEST_ERROR; } else if (link_exists == 1) { if (expect_exist == false) { - printf("This link should be moved or deleted but it still exists.\n"); + HDprintf("This link should be moved or deleted but it still exists.\n"); TEST_ERROR; } } else if (link_exists == 0) { if (expect_exist == true) { - printf("This link should exist but it is moved or deleted.\n"); + HDprintf("This link should exist but it is moved or deleted.\n"); TEST_ERROR; } } @@ -4422,24 +4422,24 @@ vrfy_one_link_exist(state_t *s, hid_t obj_id, const char *name, bool expect_exis if (link_storage > 0) { if (s->old_style_grp) { - printf("Old style group doesn't support the indexed storage.\n"); + HDprintf("Old style group doesn't support the indexed storage.\n"); TEST_ERROR; } if (H5Gget_info(obj_id, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } if (link_storage == 1) { if (group_info.storage_type != H5G_STORAGE_TYPE_COMPACT) { - printf("The group link storage should be compact. \n"); + HDprintf("The group link storage should be compact. \n"); TEST_ERROR; } } else { if (group_info.storage_type != H5G_STORAGE_TYPE_DENSE) { - printf("The group link storage should be dense. \n"); + HDprintf("The group link storage should be dense. \n"); TEST_ERROR; } } @@ -4555,48 +4555,48 @@ vrfy_move_one_group(state_t *s, hid_t obj_id, const char *name, const char *newn } if (which >= s->nsteps) { - printf("Number of created groups is out of bounds\n"); + HDprintf("Number of created groups is out of bounds\n"); TEST_ERROR; } link_exists = H5Lexists(obj_id, name, H5P_DEFAULT); if (link_exists < 0) { - printf("H5Lexists error\n"); + HDprintf("H5Lexists error\n"); TEST_ERROR; } else if (link_exists == 1) { - printf("This link should be moved but it still exists.\n"); + HDprintf("This link should be moved but it still exists.\n"); TEST_ERROR; } if ((g = H5Gopen(obj_id, newname, H5P_DEFAULT)) < 0) { - printf("H5Gopen failed\n"); + HDprintf("H5Gopen failed\n"); TEST_ERROR; } if (H5Gget_info(g, &group_info) < 0) { - printf("H5Gget_info failed\n"); + HDprintf("H5Gget_info failed\n"); TEST_ERROR; } dbgf(2, "Storage info is %d\n", group_info.storage_type); if (s->old_style_grp) { if (group_info.storage_type != H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Reader - Old-styled group: but the group is not in old-style. \n"); + HDprintf("Reader - Old-styled group: but the group is not in old-style. \n"); TEST_ERROR; } dbgf(2, "Reader: verify that the group is created with the old-style.\n"); } else { if (group_info.storage_type == H5G_STORAGE_TYPE_SYMBOL_TABLE) { - printf("Reader - The created group should NOT be in old-style . \n"); + HDprintf("Reader - The created group should NOT be in old-style . \n"); TEST_ERROR; } dbgf(2, "Reader: verify that the group is created with the new-style.\n"); } if (H5Gclose(g) < 0) { - printf("H5Gclose failed\n"); + HDprintf("H5Gclose failed\n"); TEST_ERROR; } @@ -4779,24 +4779,24 @@ vrfy_transit_storage_compact_to_dense(state_t *s, unsigned int which) g = vrfy_create_group_id(s, which, false); if (g < 0) { - printf("verify create_group_id failed\n"); + HDprintf("verify create_group_id failed\n"); TEST_ERROR; } esnprintf(hd_name, sizeof(hd_name), "hd-group-%u", which); if (vrfy_one_link_exist(s, g, hd_name, true, 1) == false) { - printf("verify the compact storage failed for 'link compact to dense' test\n"); + HDprintf("verify the compact storage failed for 'link compact to dense' test\n"); TEST_ERROR; } esnprintf(st_name, sizeof(st_name), "st-group-%u", which); if (vrfy_one_link_exist(s, g, st_name, true, 2) == false) { - printf("verify the dense link storage failed for 'link compact to dense' test\n"); + HDprintf("verify the dense link storage failed for 'link compact to dense' test\n"); TEST_ERROR; } if (vrfy_close_group_id(s, g) == false) { - printf("verify the group close for 'link compact to dense' test\n"); + HDprintf("verify the group close for 'link compact to dense' test\n"); TEST_ERROR; } return true; @@ -4842,45 +4842,45 @@ vrfy_transit_storage_dense_to_compact(state_t *s, unsigned int which) g = vrfy_create_group_id(s, which, true); if (g < 0) { - printf("verify create_group_id failed\n"); + HDprintf("verify create_group_id failed\n"); TEST_ERROR; } /* Add a link, verify it is still the compact storage */ esnprintf(hd_name, sizeof(hd_name), "hd-group-%u", which); if (vrfy_one_link_exist(s, g, hd_name, true, 1) == false) { - printf("verify the compact storage failed for 'link compact to dense' test\n"); + HDprintf("verify the compact storage failed for 'link compact to dense' test\n"); TEST_ERROR; } /* Add another link, verify it is still the compact storage */ esnprintf(st_name, sizeof(st_name), "st-group-%u", which); if (vrfy_one_link_exist(s, g, st_name, true, 1) == false) { - printf("verify the compact link storage failed for 'link compact to dense' test\n"); + HDprintf("verify the compact link storage failed for 'link compact to dense' test\n"); TEST_ERROR; } /* Add the third link, verify it becomes the dense storage */ esnprintf(st2_name, sizeof(st2_name), "st2-group-%u", which); if (vrfy_one_link_exist(s, g, st2_name, true, 2) == false) { - printf("verify the dense link storage failed for 'link compact to dense' test\n"); + HDprintf("verify the dense link storage failed for 'link compact to dense' test\n"); TEST_ERROR; } /* Remove a link, verify the link doesn't exist and still dense storage */ if (vrfy_one_link_exist(s, g, st_name, false, 2) == false) { - printf("verify the dense link storage failed for 'link compact to dense' test\n"); + HDprintf("verify the dense link storage failed for 'link compact to dense' test\n"); TEST_ERROR; } /* Remove a link, verify the link doesn't exist and it becomes compact storage */ if (vrfy_one_link_exist(s, g, st2_name, false, 1) == false) { - printf("verify the compact link storage failed for 'link compact to dense' test\n"); + HDprintf("verify the compact link storage failed for 'link compact to dense' test\n"); TEST_ERROR; } if (vrfy_close_group_id(s, g) == false) { - printf("verify the group close for 'link compact to dense' test\n"); + HDprintf("verify the group close for 'link compact to dense' test\n"); TEST_ERROR; } return true; @@ -4969,7 +4969,7 @@ main(int argc, char **argv) bool vg_ret = false; if (!state_init(&s, argc, argv)) { - printf("state_init failed\n"); + HDprintf("state_init failed\n"); TEST_ERROR; } @@ -4980,7 +4980,7 @@ main(int argc, char **argv) else if (personality != NULL && HDstrcmp(personality, "vfd_swmr_group_reader") == 0) writer = false; else { - printf("unknown personality, expected vfd_swmr_group_{reader,writer}\n"); + HDprintf("unknown personality, expected vfd_swmr_group_{reader,writer}\n"); TEST_ERROR; } @@ -4993,17 +4993,17 @@ main(int argc, char **argv) * should be used as the second parameter of H5Pset_libver_bound(). * Also pass the use_vfd_swmr, only_meta_page, config to vfd_swmr_create_fapl().*/ if ((fapl = vfd_swmr_create_fapl(!s.old_style_grp, s.use_vfd_swmr, true, &config)) < 0) { - printf("vfd_swmr_create_fapl failed\n"); + HDprintf("vfd_swmr_create_fapl failed\n"); TEST_ERROR; } if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { - printf("H5Pcreate failed\n"); + HDprintf("H5Pcreate failed\n"); TEST_ERROR; } if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, false, 1) < 0) { - printf("H5Pset_file_space_strategy failed\n"); + HDprintf("H5Pset_file_space_strategy failed\n"); TEST_ERROR; } @@ -5013,7 +5013,7 @@ main(int argc, char **argv) s.file = H5Fopen(s.filename, H5F_ACC_RDONLY, fapl); if (s.file < 0) { - printf("H5Fcreate/open failed\n"); + HDprintf("H5Fcreate/open failed\n"); TEST_ERROR; } @@ -5024,24 +5024,24 @@ main(int argc, char **argv) if (s.use_named_pipes && writer) { /* Writer creates two named pipes(FIFO) */ if (HDmkfifo(fifo_writer_to_reader, 0600) < 0) { - printf("HDmkfifo failed\n"); + HDprintf("HDmkfifo failed\n"); TEST_ERROR; } if (HDmkfifo(fifo_reader_to_writer, 0600) < 0) { - printf("HDmkfifo failed\n"); + HDprintf("HDmkfifo failed\n"); TEST_ERROR; } } /* Both the writer and reader open the pipes */ if (s.use_named_pipes && (fd_writer_to_reader = HDopen(fifo_writer_to_reader, O_RDWR)) < 0) { - printf("HDopen failed\n"); + HDprintf("HDopen failed\n"); TEST_ERROR; } if (s.use_named_pipes && (fd_reader_to_writer = HDopen(fifo_reader_to_writer, O_RDWR)) < 0) { - printf("HDopen failed\n"); + HDprintf("HDopen failed\n"); TEST_ERROR; } @@ -5078,7 +5078,7 @@ main(int argc, char **argv) /* At communication interval, notifies the reader about the failure and quit */ if (s.use_named_pipes && s.attr_test != true && s.grp_op_test != true && step % s.csteps == 0) np_send_error(&s, true); - printf("write_group failed at step %d\n", step); + HDprintf("write_group failed at step %d\n", step); TEST_ERROR; } else { @@ -5088,7 +5088,7 @@ main(int argc, char **argv) step % s.csteps == 0) { if (np_wr_send_receive(&s) == false) { - printf("writer: write group - verification failed.\n"); + HDprintf("writer: write group - verification failed.\n"); TEST_ERROR; } } @@ -5115,7 +5115,7 @@ main(int argc, char **argv) if (vg_ret == false) { - printf("verify_group_operations failed\n"); + HDprintf("verify_group_operations failed\n"); /* At communication interval, tell the writer about the failure and exit */ if (s.use_named_pipes && s.attr_test != true && s.grp_op_test != true && step % s.csteps == 0) @@ -5137,45 +5137,45 @@ main(int argc, char **argv) } if (H5Pclose(fapl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Pclose(fcpl) < 0) { - printf("H5Pclose failed\n"); + HDprintf("H5Pclose failed\n"); TEST_ERROR; } if (H5Sclose(s.one_by_one_sid) < 0) { - printf("H5Sclose failed\n"); + HDprintf("H5Sclose failed\n"); TEST_ERROR; } if (H5Fclose(s.file) < 0) { - printf("H5Fclose failed\n"); + HDprintf("H5Fclose failed\n"); TEST_ERROR; } /* Both the writer and reader close the named pipes */ if (s.use_named_pipes && HDclose(fd_writer_to_reader) < 0) { - printf("HDclose failed\n"); + HDprintf("HDclose failed\n"); TEST_ERROR; } if (s.use_named_pipes && HDclose(fd_reader_to_writer) < 0) { - printf("HDclose failed\n"); + HDprintf("HDclose failed\n"); TEST_ERROR; } /* Reader finishes last and deletes the named pipes */ if (s.use_named_pipes && !writer) { if (HDremove(fifo_writer_to_reader) != 0) { - printf("HDremove failed\n"); + HDprintf("HDremove failed\n"); TEST_ERROR; } if (HDremove(fifo_reader_to_writer) != 0) { - printf("HDremove failed\n"); + HDprintf("HDremove failed\n"); TEST_ERROR; } } diff --git a/test/vfd_swmr_reader.c b/test/vfd_swmr_reader.c index ea923e1..bd29f54 100644 --- a/test/vfd_swmr_reader.c +++ b/test/vfd_swmr_reader.c @@ -100,19 +100,19 @@ check_dataset(hid_t fid, hbool_t verbose, FILE *verbose_file, const char *sym_na /* Open dataset for symbol */ if ((dsid = H5Dopen2(fid, sym_name, H5P_DEFAULT)) < 0) { - fprintf(stderr, "%s.%d: H5Dopen2 failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Dopen2 failed\n", __func__, __LINE__); goto error; } /* Get the dataset's dataspace */ if ((file_sid = H5Dget_space(dsid)) < 0) { - fprintf(stderr, "%s.%d: H5Dget_space failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Dget_space failed\n", __func__, __LINE__); goto error; } /* Get the number of elements (= records, for 1-D datasets) */ if ((snpoints = H5Sget_simple_extent_npoints(file_sid)) < 0) { - fprintf(stderr, "%s.%d: H5Sget_simple_extent_npoints failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Sget_simple_extent_npoints failed\n", __func__, __LINE__); goto error; } @@ -126,14 +126,14 @@ check_dataset(hid_t fid, hbool_t verbose, FILE *verbose_file, const char *sym_na /* Choose the last record in the dataset */ start[1] = (hsize_t)(snpoints - 1); if (H5Sselect_hyperslab(file_sid, H5S_SELECT_SET, start, NULL, count, NULL) < 0) { - fprintf(stderr, "%s.%d: H5Sselect_hyperslab failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Sselect_hyperslab failed\n", __func__, __LINE__); goto error; } /* Read record from dataset */ record->rec_id = UINT64_MAX; if (H5Dread(dsid, symbol_tid, rec_sid, file_sid, H5P_DEFAULT, record) < 0) { - fprintf(stderr, "%s.%d: H5Dread failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Dread failed\n", __func__, __LINE__); goto error; } @@ -153,21 +153,21 @@ check_dataset(hid_t fid, hbool_t verbose, FILE *verbose_file, const char *sym_na ", # of records = %" PRIdHSIZE ", record->rec_id = %" PRIu64 "\n", (intmax_t)tv.tv_sec, (intmax_t)tv.tv_usec, sym_name, snpoints, record->rec_id); } /* end if */ - fprintf(stderr, "%s.%d: record value %" PRIu64 " != %" PRIuHSIZE "\n", __func__, __LINE__, - record->rec_id, start[1]); + HDfprintf(stderr, "%s.%d: record value %" PRIu64 " != %" PRIuHSIZE "\n", __func__, __LINE__, + record->rec_id, start[1]); goto error; } /* end if */ } /* end if */ /* Close the dataset's dataspace */ if (H5Sclose(file_sid) < 0) { - fprintf(stderr, "%s.%d: H5Sclose failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Sclose failed\n", __func__, __LINE__); goto error; } /* Close dataset for symbol */ if (H5Dclose(dsid) < 0) { - fprintf(stderr, "%s.%d: H5Dclose failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Dclose failed\n", __func__, __LINE__); goto error; } @@ -257,7 +257,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned if (ncommon > 0) { /* Allocate array to hold pointers to symbols for common datasets */ if (NULL == (sym_com = (symbol_info_t **)HDmalloc(sizeof(symbol_info_t *) * ncommon))) { - fprintf(stderr, "%s.%d: malloc failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: malloc failed\n", __func__, __LINE__); goto error; } @@ -280,7 +280,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned if (nrandom > 0) { /* Allocate array to hold pointers to symbols for random datasets */ if (NULL == (sym_rand = (symbol_info_t **)HDmalloc(sizeof(symbol_info_t *) * nrandom))) { - fprintf(stderr, "%s.%d: malloc failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: malloc failed\n", __func__, __LINE__); goto error; } @@ -289,7 +289,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned symbol_info_t *sym; /* Symbol to use */ /* Determine the symbol, within all symbols */ - if (NULL == (sym = choose_dataset(NULL, NULL))) + if (NULL == (sym = choose_dataset(NULL, NULL, verbose))) return -1; sym_rand[v] = sym; @@ -301,7 +301,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned /* Create a dataspace for the record to read */ if ((mem_sid = H5Screate(H5S_SCALAR)) < 0) { - fprintf(stderr, "%s.%d: H5Screate failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Screate failed\n", __func__, __LINE__); goto error; } @@ -315,7 +315,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned /* Allocate memory for the configuration structure */ if ((config = (H5F_vfd_swmr_config_t *)HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))) == NULL) { - fprintf(stderr, "%s.%d: malloc failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: malloc failed\n", __func__, __LINE__); goto error; } @@ -324,7 +324,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned /* use_latest_format, use_vfd_swmr, only_meta_page, config */ if ((fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, config)) < 0) { - fprintf(stderr, "%s.%d: vfd_swmr_create_fapl failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: vfd_swmr_create_fapl failed\n", __func__, __LINE__); goto error; } @@ -368,12 +368,12 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned const int fill_count = check_dataset(fid, verbose, verbose_file, sym_com[v]->name, &record, mem_sid); if (fill_count < 0) { - fprintf(stderr, "%s.%d: check_dataset failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: check_dataset failed\n", __func__, __LINE__); goto error; } HDmemset(&record, 0, sizeof(record)); if (fill_count > 0) { - fprintf(stderr, "common dataset: read fill at %d records\n", fill_count); + HDfprintf(stderr, "common dataset: read fill at %d records\n", fill_count); } } /* end for */ } /* end if */ @@ -390,12 +390,12 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned const int fill_count = check_dataset(fid, verbose, verbose_file, sym_rand[v]->name, &record, mem_sid); if (fill_count < 0) { - fprintf(stderr, "%s.%d: check_dataset failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: check_dataset failed\n", __func__, __LINE__); goto error; } HDmemset(&record, 0, sizeof(record)); if (fill_count > 0) { - fprintf(stderr, "random dataset: read fill at %d records\n", fill_count); + HDfprintf(stderr, "random dataset: read fill at %d records\n", fill_count); } } /* end for */ } /* end if */ @@ -406,7 +406,7 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned /* Close the file */ if (H5Fclose(fid) < 0) { - fprintf(stderr, "%s.%d: H5Fclose failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Fclose failed\n", __func__, __LINE__); goto error; } @@ -419,13 +419,13 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned /* Close the memory dataspace */ if (H5Sclose(mem_sid) < 0) { - fprintf(stderr, "%s.%d: H5Sclose failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Sclose failed\n", __func__, __LINE__); goto error; } /* Close the fapl */ if (H5Pclose(fapl) < 0) { - fprintf(stderr, "%s.%d: H5Pclose failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: H5Pclose failed\n", __func__, __LINE__); goto error; } @@ -474,19 +474,19 @@ error: static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: vfd_swmr_reader [-q] [-s <# of seconds to sleep between polling>]\n"); - printf(" [-h <# of common symbols to poll>] [-l <# of random symbols to poll>]\n"); - printf(" [-r <random seed>] <# of seconds to test>\n"); - printf("\n"); - printf("<# of seconds to test> must be specified.\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given), 1 second between polling ('-s 1'),\n"); - printf("5 common symbols to poll ('-h 5'), 10 random symbols to poll ('-l 10'),\n"); - printf("and will generate a random seed (no -r given).\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: vfd_swmr_reader [-q] [-s <# of seconds to sleep between polling>]\n"); + HDprintf(" [-h <# of common symbols to poll>] [-l <# of random symbols to poll>]\n"); + HDprintf(" [-r <random seed>] <# of seconds to test>\n"); + HDprintf("\n"); + HDprintf("<# of seconds to test> must be specified.\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given), 1 second between polling ('-s 1'),\n"); + HDprintf("5 common symbols to poll ('-h 5'), 10 random symbols to poll ('-l 10'),\n"); + HDprintf("and will generate a random seed (no -r given).\n"); + HDprintf("\n"); HDexit(1); } diff --git a/test/vfd_swmr_remove_reader.c b/test/vfd_swmr_remove_reader.c index 9f53612..a54404f 100644 --- a/test/vfd_swmr_remove_reader.c +++ b/test/vfd_swmr_remove_reader.c @@ -32,13 +32,11 @@ #ifndef H5_HAVE_WIN32_API -#include <err.h> - /*******************/ /* Local Variables */ /*******************/ -static hid_t symbol_tid = -1; +static hid_t symbol_tid = H5I_INVALID_HID; /********************/ /* Local Prototypes */ @@ -80,8 +78,8 @@ static void usage(void); static int check_dataset(hid_t fid, hid_t dapl, unsigned verbose, const char *sym_name, symbol_t *record, hid_t rec_sid) { - hid_t dsid; /* Dataset ID */ - hid_t file_sid; /* Dataset's space ID */ + hid_t dsid = H5I_INVALID_HID; /* Dataset ID */ + hid_t file_sid = H5I_INVALID_HID; /* Dataset's space ID */ hssize_t snpoints; /* Number of elements in dataset */ hsize_t start[2] = {0, 0}, count[2] = {1, 1}; /* Hyperslab selection values */ @@ -217,13 +215,13 @@ read_records(const char *filename, unsigned verbose, unsigned long nseconds, uns time_t curr_time; /* Current time */ symbol_info_t ** sym_com = NULL; /* Pointers to array of common dataset IDs */ symbol_info_t ** sym_rand = NULL; /* Pointers to array of random dataset IDs */ - hid_t dapl; - hid_t mem_sid; /* Memory dataspace ID */ - hid_t fid; /* SWMR test file ID */ - hid_t fapl; /* File access property list */ - symbol_t record; /* The record to add to the dataset */ - unsigned v; /* Local index variable */ - H5F_vfd_swmr_config_t *config = NULL; /* Configuration for VFD SWMR */ + hid_t dapl = H5I_INVALID_HID; + hid_t mem_sid = H5I_INVALID_HID; /* Memory dataspace ID */ + hid_t fid = H5I_INVALID_HID; /* SWMR test file ID */ + hid_t fapl = H5I_INVALID_HID; /* File access property list */ + symbol_t record; /* The record to add to the dataset */ + unsigned v; /* Local index variable */ + H5F_vfd_swmr_config_t *config = NULL; /* Configuration for VFD SWMR */ HDassert(filename); HDassert(nseconds != 0); @@ -233,11 +231,15 @@ read_records(const char *filename, unsigned verbose, unsigned long nseconds, uns /* (record's 'info' field might need to change for each record written, also) */ HDmemset(&record, 0, sizeof(record)); - if ((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0) - errx(EXIT_FAILURE, "%s.%d: H5Pcreate failed", __func__, __LINE__); + if ((dapl = H5Pcreate(H5P_DATASET_ACCESS)) < 0) { + HDfprintf(stderr, "%s.%d: H5Pcreate failed", __func__, __LINE__); + goto error; + } - if (H5Pset_chunk_cache(dapl, H5D_CHUNK_CACHE_NSLOTS_DEFAULT, 0, H5D_CHUNK_CACHE_W0_DEFAULT) < 0) - errx(EXIT_FAILURE, "H5Pset_chunk_cache failed"); + if (H5Pset_chunk_cache(dapl, H5D_CHUNK_CACHE_NSLOTS_DEFAULT, 0, H5D_CHUNK_CACHE_W0_DEFAULT) < 0) { + HDfprintf(stderr, "H5Pset_chunk_cache failed"); + goto error; + } /* Emit informational message */ if (verbose) @@ -275,7 +277,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nseconds, uns symbol_info_t *sym; /* Symbol to use */ /* Determine the symbol, within all symbols */ - if (NULL == (sym = choose_dataset(NULL, NULL))) + if (NULL == (sym = choose_dataset(NULL, NULL, verbose))) goto error; sym_rand[v] = sym; @@ -306,7 +308,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nseconds, uns /* use_latest_format, use_vfd_swmr, only_meta_page, config */ if ((fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, config)) < 0) { - fprintf(stderr, "%s.%d: vfd_swmr_create_fapl failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: vfd_swmr_create_fapl failed\n", __func__, __LINE__); goto error; } @@ -429,17 +431,17 @@ error: static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: vfd_swmr_remove_reader [-q] [-s <# of seconds to sleep between\n"); - printf(" polling>] [-h <# of common symbols to poll>] [-l <# of random symbols\n"); - printf(" to poll>] [-r <random seed>] <# of seconds to test>\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given), 1 second between polling ('-s 1'),\n"); - printf("5 common symbols to poll ('-h 5'), 10 random symbols to poll ('-l 10'),\n"); - printf("and will generate a random seed (no -r given).\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: vfd_swmr_remove_reader [-q] [-s <# of seconds to sleep between\n"); + HDprintf(" polling>] [-h <# of common symbols to poll>] [-l <# of random symbols\n"); + HDprintf(" to poll>] [-r <random seed>] <# of seconds to test>\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given), 1 second between polling ('-s 1'),\n"); + HDprintf("5 common symbols to poll ('-h 5'), 10 random symbols to poll ('-l 10'),\n"); + HDprintf("and will generate a random seed (no -r given).\n"); + HDprintf("\n"); HDexit(1); } diff --git a/test/vfd_swmr_remove_writer.c b/test/vfd_swmr_remove_writer.c index fdfcf3c..fb1fc69 100644 --- a/test/vfd_swmr_remove_writer.c +++ b/test/vfd_swmr_remove_writer.c @@ -185,7 +185,7 @@ remove_records(hid_t fid, unsigned verbose, unsigned long nshrinks, unsigned lon hsize_t remove_size; /* Size to reduce dataset dimension by */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Shrink the dataset's dataspace */ remove_size = (hsize_t)HDrandom() % MAX_REMOVE_SIZE + 1; @@ -237,18 +237,18 @@ error: static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: swmr_remove_writer [-q] [-o] [-f <# of shrinks between flushing\n"); - printf(" file contents>] [-r <random seed>] <# of shrinks>\n"); - printf("\n"); - printf("<# of shrinks between flushing file contents> should be 0 (for no\n"); - printf("flushing) or between 1 and (<# of shrinks> - 1)\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given), latest format when opening file (no '-o' given),\n"); - printf("flushing every 1000 shrinks ('-f 1000'), and will generate a random seed (no -r given).\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: swmr_remove_writer [-q] [-o] [-f <# of shrinks between flushing\n"); + HDprintf(" file contents>] [-r <random seed>] <# of shrinks>\n"); + HDprintf("\n"); + HDprintf("<# of shrinks between flushing file contents> should be 0 (for no\n"); + HDprintf("flushing) or between 1 and (<# of shrinks> - 1)\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given), latest format when opening file (no '-o' given),\n"); + HDprintf("flushing every 1000 shrinks ('-f 1000'), and will generate a random seed (no -r given).\n"); + HDprintf("\n"); HDexit(1); } /* usage() */ diff --git a/test/vfd_swmr_sparse_reader.c b/test/vfd_swmr_sparse_reader.c index 20df44a..56cf2df 100644 --- a/test/vfd_swmr_sparse_reader.c +++ b/test/vfd_swmr_sparse_reader.c @@ -45,7 +45,7 @@ /* Local Variables */ /*******************/ -static hid_t symbol_tid = (-1); +static hid_t symbol_tid = H5I_INVALID_HID; /********************/ /* Local Prototypes */ @@ -116,7 +116,9 @@ check_dataset(hid_t fid, unsigned verbose, const symbol_info_t *symbol, symbol_t /* Emit informational message */ if (verbose) - HDfprintf(stderr, "READER: Symbol = '%s', nrecords = %Hu, name = %s, location = %Hu, %Hu\n", + HDfprintf(stderr, + "READER: Symbol = '%s', nrecords = %" PRIuHSIZE ", name = %s, location = %" PRIuHSIZE + ", %" PRIuHSIZE "\n", symbol->name, symbol->nrecords, symbol->name, start[0], start[1]); /* Read record from dataset */ @@ -128,8 +130,9 @@ check_dataset(hid_t fid, unsigned verbose, const symbol_info_t *symbol, symbol_t if (record->rec_id != start[1]) { HDfprintf(stderr, "*** READER: ERROR ***\n"); HDfprintf(stderr, "Incorrect record value!\n"); - HDfprintf(stderr, "Symbol = '%s', location = %Hu, %Hu, record->rec_id = %" PRIu64 "\n", symbol->name, - start[0], start[1], record->rec_id); + HDfprintf(stderr, + "Symbol = '%s', location = %" PRIuHSIZE ", %" PRIuHSIZE ", record->rec_id = %" PRIu64 "\n", + symbol->name, start[0], start[1], record->rec_id); goto error; } /* end if */ @@ -209,7 +212,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nrecords, uns /* use_latest_format, use_vfd_swmr, only_meta_page, config */ if ((fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, config)) < 0) { - fprintf(stderr, "%s.%d: vfd_swmr_create_fapl failed\n", __func__, __LINE__); + HDfprintf(stderr, "%s.%d: vfd_swmr_create_fapl failed\n", __func__, __LINE__); goto error; } @@ -263,7 +266,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nrecords, uns unsigned long file_u; /* Attribute sequence number (writer's "u") */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(&level, &offset); + symbol = choose_dataset(&level, &offset, verbose); /* Fill in "nrecords" field. Note that this depends on the writer * using the same algorithm and "nrecords" */ @@ -271,7 +274,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nrecords, uns /* Get the starting time */ if ((start_time = HDtime(NULL)) == (time_t)-1) { - fprintf(stderr, "READER: could not read time.\n"); + HDfprintf(stderr, "READER: could not read time.\n"); goto error; } @@ -404,18 +407,18 @@ error: static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: vfd_swmr_sparse_reader [-q] [-s <# of seconds to wait for writer>]\n"); - printf(" [-n <# of reads between reopens>] <# of records>\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given), 1 second wait ('-s 1') and 1 read\n"); - printf("between reopens ('-r 1')\n"); - printf("\n"); - printf("Note that the # of records *must* be the same as that supplied to\n"); - printf("vfd_swmr_sparse_writer\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: vfd_swmr_sparse_reader [-q] [-s <# of seconds to wait for writer>]\n"); + HDprintf(" [-n <# of reads between reopens>] <# of records>\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given), 1 second wait ('-s 1') and 1 read\n"); + HDprintf("between reopens ('-r 1')\n"); + HDprintf("\n"); + HDprintf("Note that the # of records *must* be the same as that supplied to\n"); + HDprintf("vfd_swmr_sparse_writer\n"); + HDprintf("\n"); HDexit(1); } /* end usage() */ diff --git a/test/vfd_swmr_sparse_writer.c b/test/vfd_swmr_sparse_writer.c index a9c5f28..c1e15d8 100644 --- a/test/vfd_swmr_sparse_writer.c +++ b/test/vfd_swmr_sparse_writer.c @@ -106,7 +106,7 @@ open_skeleton(const char *filename, unsigned verbose) /* Emit informational message */ if (verbose) - fprintf(stderr, "WRITER: Opening datasets\n"); + HDfprintf(stderr, "WRITER: Opening datasets\n"); /* Seed the random number generator with the attribute in the file */ if ((aid = H5Aopen(fid, "seed", H5P_DEFAULT)) < 0) @@ -206,7 +206,7 @@ add_records(hid_t fid, unsigned verbose, unsigned long nrecords, unsigned long f symbol_info_t *symbol; /* Symbol to write record to */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* If this is the first time the dataset has been opened, extend it and * add the sequence attribute */ @@ -299,7 +299,7 @@ add_records(hid_t fid, unsigned verbose, unsigned long nrecords, unsigned long f /* Emit informational message */ if (verbose) - fprintf(stderr, "WRITER: Closing datasets\n"); + HDfprintf(stderr, "WRITER: Closing datasets\n"); /* Close the datasets */ for (u = 0; u < NLEVELS; u++) @@ -329,18 +329,18 @@ error: static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: vfd_swmr_sparse_writer [-q] [-f <# of records to write between\n"); - printf(" flushing file contents>] <# of records>\n"); - printf("\n"); - printf("<# of records to write between flushing file contents> should be 0\n"); - printf("(for no flushing) or between 1 and (<# of records> - 1)\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given) and flushing every 1000 records\n"); - printf("('-f 1000')\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: vfd_swmr_sparse_writer [-q] [-f <# of records to write between\n"); + HDprintf(" flushing file contents>] <# of records>\n"); + HDprintf("\n"); + HDprintf("<# of records to write between flushing file contents> should be 0\n"); + HDprintf("(for no flushing) or between 1 and (<# of records> - 1)\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given) and flushing every 1000 records\n"); + HDprintf("('-f 1000')\n"); + HDprintf("\n"); HDexit(1); } /* usage() */ diff --git a/test/vfd_swmr_vlstr_reader.c b/test/vfd_swmr_vlstr_reader.c index 226c0a8..e65b146 100644 --- a/test/vfd_swmr_vlstr_reader.c +++ b/test/vfd_swmr_vlstr_reader.c @@ -17,9 +17,6 @@ #include "H5Cpkg.h" #include "H5Fpkg.h" -// #include "H5Iprivate.h" -#include "H5HGprivate.h" -#include "H5VLprivate.h" #include "testhdf5.h" #include "vfd_swmr_common.h" @@ -54,22 +51,12 @@ read_vl_dset(hid_t dset, hid_t type, char **data) static void usage(const char *progname) { - fprintf(stderr, "usage: %s [-W] [-V] [-t (oob|null)] \n", progname); - fprintf(stderr, "\n -S: do not use VFD SWMR\n"); - fprintf(stderr, " -n: number of test steps to perform\n"); - fprintf(stderr, " -q: be quiet: few/no progress messages\n"); - fprintf(stderr, " -t (oob|null): select out-of-bounds or NULL test\n"); - exit(EXIT_FAILURE); -} - -bool -H5HG_trap(const char *reason) -{ - if (strcmp(reason, "out of bounds") == 0) { - caught_out_of_bounds = true; - return true; - } - return false; + HDfprintf(stderr, "usage: %s [-W] [-V] [-t (oob|null)] \n", progname); + HDfprintf(stderr, "\n -S: do not use VFD SWMR\n"); + HDfprintf(stderr, " -n: number of test steps to perform\n"); + HDfprintf(stderr, " -q: be quiet: few/no progress messages\n"); + HDfprintf(stderr, " -t (oob|null): select out-of-bounds or NULL test\n"); + HDexit(EXIT_FAILURE); } int @@ -88,7 +75,7 @@ main(int argc, char **argv) testsel_t sel = TEST_NONE; H5F_vfd_swmr_config_t config; - assert(H5T_C_S1 != badhid); + HDassert(H5T_C_S1 != badhid); while ((ch = getopt(argc, argv, "Sn:qt:")) != -1) { switch (ch) { @@ -97,7 +84,7 @@ main(int argc, char **argv) break; case 'n': errno = 0; - tmp = strtoul(optarg, &end, 0); + tmp = HDstrtoul(optarg, &end, 0); if (end == optarg || *end != '\0') errx(EXIT_FAILURE, "couldn't parse `-n` argument `%s`", optarg); else if (errno != 0) @@ -110,9 +97,9 @@ main(int argc, char **argv) verbosity = 1; break; case 't': - if (strcmp(optarg, "oob") == 0) + if (HDstrcmp(optarg, "oob") == 0) sel = TEST_OOB; - else if (strcmp(optarg, "null") == 0) + else if (HDstrcmp(optarg, "null") == 0) sel = TEST_NULL; else usage(argv[0]); @@ -169,7 +156,7 @@ main(int argc, char **argv) } scanned_content; dbgf(2, "iteration %d which %d", i, which); - (void)snprintf(name[which], sizeof(name[which]), "dset-%d", which); + (void)HDsnprintf(name[which], sizeof(name[which]), "dset-%d", which); es = disable_estack(); dset[which] = H5Dopen2(fid, name[which], H5P_DEFAULT); restore_estack(es); @@ -182,8 +169,8 @@ main(int argc, char **argv) dbgf(2, ": couldn't read\n"); continue; } - nconverted = sscanf(content[which], "content %d seq %d %96s", &scanned_content.which, - &scanned_content.seq, scanned_content.tail); + nconverted = HDsscanf(content[which], "content %d seq %d %96s", &scanned_content.which, + &scanned_content.seq, scanned_content.tail); if (nconverted != 3) { dbgf(2, ": couldn't scan\n"); continue; @@ -194,10 +181,10 @@ main(int argc, char **argv) } if (caught_out_of_bounds) - fprintf(stderr, "caught out of bounds\n"); + HDfprintf(stderr, "caught out of bounds\n"); if (read_null) - fprintf(stderr, "read NULL\n"); + HDfprintf(stderr, "read NULL\n"); if (H5Pclose(fapl) < 0) errx(EXIT_FAILURE, "H5Pclose(fapl)"); diff --git a/test/vfd_swmr_vlstr_writer.c b/test/vfd_swmr_vlstr_writer.c index 5da9c88..f0b1ea7 100644 --- a/test/vfd_swmr_vlstr_writer.c +++ b/test/vfd_swmr_vlstr_writer.c @@ -17,8 +17,6 @@ #include "H5Cpkg.h" #include "H5Fpkg.h" -// #include "H5Iprivate.h" -#include "H5HGprivate.h" #include "H5VLprivate.h" #include "testhdf5.h" @@ -108,25 +106,15 @@ print_cache_hits(H5C_t H5_ATTR_UNUSED *cache) static void usage(const char *progname) { - fprintf(stderr, "usage: %s [-W] [-V]\n", progname); - fprintf(stderr, "\n -W: do not wait for SIGINT or SIGUSR1\n"); - fprintf(stderr, "\n -S: do not use VFD SWMR\n"); - fprintf(stderr, " -f: use fixed-length string\n"); - fprintf(stderr, " (default: variable-length string)\n"); - fprintf(stderr, " -n: number of test steps to perform\n"); - fprintf(stderr, " -q: be quiet: few/no progress messages\n"); - fprintf(stderr, " -t (oob|null): select out-of-bounds or NULL test\n"); - exit(EXIT_FAILURE); -} - -bool -H5HG_trap(const char *reason) -{ - if (strcmp(reason, "out of bounds") == 0) { - caught_out_of_bounds = true; - return false; - } - return true; + HDfprintf(stderr, "usage: %s [-W] [-V]\n", progname); + HDfprintf(stderr, "\n -W: do not wait for SIGINT or SIGUSR1\n"); + HDfprintf(stderr, "\n -S: do not use VFD SWMR\n"); + HDfprintf(stderr, " -f: use fixed-length string\n"); + HDfprintf(stderr, " (default: variable-length string)\n"); + HDfprintf(stderr, " -n: number of test steps to perform\n"); + HDfprintf(stderr, " -q: be quiet: few/no progress messages\n"); + HDfprintf(stderr, " -t (oob|null): select out-of-bounds or NULL test\n"); + HDexit(EXIT_FAILURE); } int @@ -150,7 +138,7 @@ main(int argc, char **argv) testsel_t sel = TEST_NONE; H5F_vfd_swmr_config_t config; - assert(H5T_C_S1 != badhid); + HDassert(H5T_C_S1 != badhid); while ((ch = getopt(argc, argv, "SWfn:qt:")) != -1) { switch (ch) { @@ -165,7 +153,7 @@ main(int argc, char **argv) break; case 'n': errno = 0; - tmp = strtoul(optarg, &end, 0); + tmp = HDstrtoul(optarg, &end, 0); if (end == optarg || *end != '\0') errx(EXIT_FAILURE, "couldn't parse `-n` argument `%s`", optarg); else if (errno != 0) @@ -178,9 +166,9 @@ main(int argc, char **argv) verbosity = 1; break; case 't': - if (strcmp(optarg, "oob") == 0) + if (HDstrcmp(optarg, "oob") == 0) sel = TEST_OOB; - else if (strcmp(optarg, "null") == 0) + else if (HDstrcmp(optarg, "null") == 0) sel = TEST_NULL; else usage(argv[0]); @@ -258,19 +246,20 @@ main(int argc, char **argv) dbgf(2, "iteration %d which %d step %d seq %d\n", i, which, step, seq); switch (step) { case CREATE: - (void)snprintf(name[which], sizeof(name[which]), "dset-%d", which); - (void)snprintf(content[which], sizeof(content[which]), "content %d seq %d short", which, seq); + (void)HDsnprintf(name[which], sizeof(name[which]), "dset-%d", which); + (void)HDsnprintf(content[which], sizeof(content[which]), "content %d seq %d short", which, + seq); dset[which] = create_vl_dset(fid, type, space, name[which]); write_vl_dset(dset[which], type, space, content[which]); break; case LENGTHEN: - (void)snprintf(content[which], sizeof(content[which]), - "content %d seq %d long long long long long long long long", which, seq); + (void)HDsnprintf(content[which], sizeof(content[which]), + "content %d seq %d long long long long long long long long", which, seq); write_vl_dset(dset[which], type, space, content[which]); break; case SHORTEN: - (void)snprintf(content[which], sizeof(content[which]), - "content %d seq %d medium medium medium", which, seq); + (void)HDsnprintf(content[which], sizeof(content[which]), + "content %d seq %d medium medium medium", which, seq); write_vl_dset(dset[which], type, space, content[which]); break; case DELETE: @@ -284,7 +273,7 @@ main(int argc, char **argv) errx(EXIT_FAILURE, "%s: unknown step %d", __func__, step); } if (caught_out_of_bounds) { - fprintf(stderr, "caught out of bounds\n"); + HDfprintf(stderr, "caught out of bounds\n"); break; } nanosleep(&delay, NULL); diff --git a/test/vfd_swmr_writer.c b/test/vfd_swmr_writer.c index 4ebf092..0036bfc 100644 --- a/test/vfd_swmr_writer.c +++ b/test/vfd_swmr_writer.c @@ -187,7 +187,7 @@ add_records(hid_t fid, hbool_t verbose, FILE *verbose_file, unsigned long nrecor hid_t file_sid; /* Dataset's space ID */ /* Get a random dataset, according to the symbol distribution */ - symbol = choose_dataset(NULL, NULL); + symbol = choose_dataset(NULL, NULL, verbose); /* Set the record's ID (equal to its position) */ record.rec_id = symbol->nrecords; @@ -254,20 +254,20 @@ add_records(hid_t fid, hbool_t verbose, FILE *verbose_file, unsigned long nrecor static void usage(void) { - printf("\n"); - printf("Usage error!\n"); - printf("\n"); - printf("Usage: vfd_swmr_writer [-q] [-o] [-f <# of records to write between flushing\n"); - printf(" file contents>] [-r <random seed>] <# of records>\n"); - printf("\n"); - printf("<# of records to write between flushing file contents> should be 0\n"); - printf("(for no flushing) or between 1 and (<# of records> - 1).\n"); - printf("\n"); - printf("<# of records> must be specified.\n"); - printf("\n"); - printf("Defaults to verbose (no '-q' given), latest format when opening file (no '-o' given),\n"); - printf("flushing every 10000 records ('-f 10000'), and will generate a random seed (no -r given).\n"); - printf("\n"); + HDprintf("\n"); + HDprintf("Usage error!\n"); + HDprintf("\n"); + HDprintf("Usage: vfd_swmr_writer [-q] [-o] [-f <# of records to write between flushing\n"); + HDprintf(" file contents>] [-r <random seed>] <# of records>\n"); + HDprintf("\n"); + HDprintf("<# of records to write between flushing file contents> should be 0\n"); + HDprintf("(for no flushing) or between 1 and (<# of records> - 1).\n"); + HDprintf("\n"); + HDprintf("<# of records> must be specified.\n"); + HDprintf("\n"); + HDprintf("Defaults to verbose (no '-q' given), latest format when opening file (no '-o' given),\n"); + HDprintf("flushing every 10000 records ('-f 10000'), and will generate a random seed (no -r given).\n"); + HDprintf("\n"); HDexit(1); } diff --git a/test/vfd_swmr_zoo_writer.c b/test/vfd_swmr_zoo_writer.c index 0cdb669..1cfaec5 100644 --- a/test/vfd_swmr_zoo_writer.c +++ b/test/vfd_swmr_zoo_writer.c @@ -10,8 +10,6 @@ * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include <err.h> - #define H5C_FRIEND /* suppress error about including H5Cpkg */ #define H5F_FRIEND /* suppress error about including H5Fpkg */ @@ -81,18 +79,18 @@ zoo_create_hook(hid_t H5_ATTR_UNUSED fid) static void usage(const char *progname) { - fprintf(stderr, "usage: %s [-C] [-S] [-a] [-e] [-p] [-q] [-v]\n", progname); - fprintf(stderr, "\n -C: skip compact dataset tests\n"); - fprintf(stderr, " -S: do not use VFD SWMR\n"); - fprintf(stderr, " -a: run all tests, including variable-length data\n"); - fprintf(stderr, " -e: print error stacks\n"); - fprintf(stderr, " -l tick_num: expected maximal number of ticks from \n"); - fprintf(stderr, - " the writer's finishing zoo creation or deletion to the reader's finishing validation\n"); - fprintf(stderr, " -N: do not use named pipes\n"); - fprintf(stderr, " -q: be quiet: few/no progress messages\n"); - fprintf(stderr, " -v: be verbose: most progress messages\n"); - exit(EXIT_FAILURE); + HDfprintf(stderr, "usage: %s [-C] [-S] [-a] [-e] [-p] [-q] [-v]\n", progname); + HDfprintf(stderr, "\n -C: skip compact dataset tests\n"); + HDfprintf(stderr, " -S: do not use VFD SWMR\n"); + HDfprintf(stderr, " -a: run all tests, including variable-length data\n"); + HDfprintf(stderr, " -e: print error stacks\n"); + HDfprintf(stderr, " -l tick_num: expected maximal number of ticks from \n"); + HDfprintf(stderr, + " the writer's finishing zoo creation or deletion to the reader's finishing validation\n"); + HDfprintf(stderr, " -N: do not use named pipes\n"); + HDfprintf(stderr, " -q: be quiet: few/no progress messages\n"); + HDfprintf(stderr, " -v: be verbose: most progress messages\n"); + HDexit(EXIT_FAILURE); } /* Private function to help parsing command-line options */ @@ -124,15 +122,15 @@ parse_command_line_options(int argc, char **argv) tmpl = HDstrtoul(optarg, &end, 0); if (end == optarg || *end != '\0') { - printf("couldn't parse `-l` argument `%s`", optarg); + HDprintf("couldn't parse `-l` argument `%s`", optarg); goto error; } else if (errno != 0) { - printf("couldn't parse `-l` argument `%s`", optarg); + HDprintf("couldn't parse `-l` argument `%s`", optarg); goto error; } else if (tmpl > UINT_MAX) { - printf("`-l` argument `%lu` too large", tmpl); + HDprintf("`-l` argument `%lu` too large", tmpl); goto error; } @@ -167,7 +165,7 @@ parse_command_line_options(int argc, char **argv) if (argc > 0) { H5_FAILED(); AT(); - printf("unexpected command-line arguments"); + HDprintf("unexpected command-line arguments"); goto error; } @@ -187,14 +185,14 @@ create_open_named_pipes(void) if (HDmkfifo(fifo_writer_to_reader, 0600) < 0) { H5_FAILED(); AT(); - printf("HDmkfifo failed"); + HDprintf("HDmkfifo failed"); goto error; } if (HDmkfifo(fifo_reader_to_writer, 0600) < 0) { H5_FAILED(); AT(); - printf("HDmkfifo failed"); + HDprintf("HDmkfifo failed"); goto error; } } @@ -203,14 +201,14 @@ create_open_named_pipes(void) if ((fd_writer_to_reader = HDopen(fifo_writer_to_reader, O_RDWR)) < 0) { H5_FAILED(); AT(); - printf("fifo_writer_to_reader open failed"); + HDprintf("fifo_writer_to_reader open failed"); goto error; } if ((fd_reader_to_writer = HDopen(fifo_reader_to_writer, O_RDWR)) < 0) { H5_FAILED(); AT(); - printf("fifo_reader_to_writer open failed"); + HDprintf("fifo_reader_to_writer open failed"); goto error; } @@ -233,7 +231,7 @@ notify_and_wait_for_reader(hid_t fid, int verify) if (HDclock_gettime(CLOCK_MONOTONIC, &last) < 0) { H5_FAILED(); AT(); - printf("HDclock_gettime failed"); + HDprintf("HDclock_gettime failed"); goto error; } @@ -241,7 +239,7 @@ notify_and_wait_for_reader(hid_t fid, int verify) if (HDwrite(fd_writer_to_reader, &last, sizeof(last)) < 0) { H5_FAILED(); AT(); - printf("HDwrite failed"); + HDprintf("HDwrite failed"); goto error; } @@ -261,14 +259,14 @@ notify_and_wait_for_reader(hid_t fid, int verify) if (HDread(fd_reader_to_writer, ¬ify, sizeof(int)) < 0) { H5_FAILED(); AT(); - printf("HDread failed"); + HDprintf("HDread failed"); goto error; } if (notify != verify) { H5_FAILED(); AT(); - printf("expected %d but read %d", verify, notify); + HDprintf("expected %d but read %d", verify, notify); goto error; } @@ -288,7 +286,7 @@ notify_reader(void) if (HDclock_gettime(CLOCK_MONOTONIC, &last) < 0) { H5_FAILED(); AT(); - printf("HDclock_gettime failed"); + HDprintf("HDclock_gettime failed"); goto error; } @@ -296,7 +294,7 @@ notify_reader(void) if (HDwrite(fd_writer_to_reader, &last, sizeof(last)) < 0) { H5_FAILED(); AT(); - printf("HDwrite failed"); + HDprintf("HDwrite failed"); goto error; } @@ -315,14 +313,14 @@ reader_verify(int verify) if (HDread(fd_writer_to_reader, ¬ify, sizeof(int)) < 0) { H5_FAILED(); AT(); - printf("HDread failed"); + HDprintf("HDread failed"); goto error; } if (notify != verify) { H5_FAILED(); AT(); - printf("expected %d but read %d", verify, notify); + HDprintf("expected %d but read %d", verify, notify); goto error; } @@ -345,7 +343,7 @@ reader_check_time_and_notify_writer(int notify) if (HDread(fd_writer_to_reader, &last, sizeof(last)) < 0) { H5_FAILED(); AT(); - printf("HDread failed"); + HDprintf("HDread failed"); goto error; } @@ -354,14 +352,14 @@ reader_check_time_and_notify_writer(int notify) * the validation of zoo creation */ if (below_speed_limit(&last, &ival)) { AT(); - warnx("validate_zoo took too long to finish"); + HDfprintf(stderr, "validate_zoo took too long to finish"); } /* Notify the writer that zoo validation is finished */ if (HDwrite(fd_reader_to_writer, ¬ify, sizeof(int)) < 0) { H5_FAILED(); AT(); - printf("HDwrite failed"); + HDprintf("HDwrite failed"); goto error; } @@ -383,13 +381,13 @@ reader_check_time_after_verify_deletion(void) if (HDread(fd_writer_to_reader, &last, sizeof(last)) < 0) { H5_FAILED(); AT(); - printf("HDread failed"); + HDprintf("HDread failed"); goto error; } if (below_speed_limit(&last, &ival)) { AT(); - warnx("validate_deleted_zoo took too long to finish"); + HDfprintf(stderr, "validate_deleted_zoo took too long to finish"); } return 0; @@ -406,14 +404,14 @@ close_named_pipes(void) if (HDclose(fd_writer_to_reader) < 0) { H5_FAILED(); AT(); - printf("HDclose failed\n"); + HDprintf("HDclose failed\n"); goto error; } if (HDclose(fd_reader_to_writer) < 0) { H5_FAILED(); AT(); - printf("HDclose failed\n"); + HDprintf("HDclose failed\n"); goto error; } @@ -422,14 +420,14 @@ close_named_pipes(void) if (HDremove(fifo_writer_to_reader) != 0) { H5_FAILED(); AT(); - printf("HDremove failed\n"); + HDprintf("HDremove failed\n"); goto error; } if (HDremove(fifo_reader_to_writer) != 0) { H5_FAILED(); AT(); - printf("HDremove failed\n"); + HDprintf("HDremove failed\n"); goto error; } } @@ -456,20 +454,20 @@ main(int argc, char **argv) if (H5_basename(argv[0], &progname) < 0) { H5_FAILED(); AT(); - printf("H5_basename failed\n"); + HDprintf("H5_basename failed\n"); goto error; } personality = HDstrstr(progname, "vfd_swmr_zoo_"); - if (personality != NULL && strcmp(personality, "vfd_swmr_zoo_writer") == 0) + if (personality != NULL && HDstrcmp(personality, "vfd_swmr_zoo_writer") == 0) writer = true; - else if (personality != NULL && strcmp(personality, "vfd_swmr_zoo_reader") == 0) + else if (personality != NULL && HDstrcmp(personality, "vfd_swmr_zoo_reader") == 0) writer = false; else { H5_FAILED(); AT(); - printf("unknown personality, expected vfd_swmr_zoo_{reader,writer}"); + HDprintf("unknown personality, expected vfd_swmr_zoo_{reader,writer}"); goto error; } @@ -483,35 +481,35 @@ main(int argc, char **argv) if ((fapl = vfd_swmr_create_fapl(true, use_vfd_swmr, true, &vfd_swmr_config)) < 0) { H5_FAILED(); AT(); - printf("vfd_swmr_create_fapl"); + HDprintf("vfd_swmr_create_fapl"); goto error; } if (use_vfd_swmr && H5Pget_vfd_swmr_config(fapl, &swmr_config) < 0) { H5_FAILED(); AT(); - printf("H5Pget_vfd_swmr_config failed"); + HDprintf("H5Pget_vfd_swmr_config failed"); goto error; } if (H5Pset_libver_bounds(fapl, H5F_LIBVER_EARLIEST, H5F_LIBVER_LATEST) < 0) { H5_FAILED(); AT(); - printf("H5Pset_libver_bounds failed"); + HDprintf("H5Pset_libver_bounds failed"); goto error; } if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) { H5_FAILED(); AT(); - printf("H5Pcreate failed"); + HDprintf("H5Pcreate failed"); goto error; } if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, false, 1) < 0) { H5_FAILED(); AT(); - printf("H5Pset_file_space_strategy failed"); + HDprintf("H5Pset_file_space_strategy failed"); goto error; } @@ -523,14 +521,14 @@ main(int argc, char **argv) if (fid < 0) { H5_FAILED(); AT(); - printf(writer ? "H5Fcreate failed" : "H5Fopen failed"); + HDprintf(writer ? "H5Fcreate failed" : "H5Fopen failed"); goto error; } if ((f = H5VL_object_verify(fid, H5I_FILE)) == NULL) { H5_FAILED(); AT(); - printf("H5VL_object_verify failed"); + HDprintf("H5VL_object_verify failed"); goto error; } @@ -541,7 +539,7 @@ main(int argc, char **argv) if (use_named_pipe && create_open_named_pipes() < 0) { H5_FAILED(); AT(); - printf("create_open_named_pipes failed"); + HDprintf("create_open_named_pipes failed"); goto error; } @@ -556,7 +554,7 @@ main(int argc, char **argv) if (use_named_pipe && HDwrite(fd_writer_to_reader, ¬ify, sizeof(int)) < 0) { H5_FAILED(); AT(); - printf("HDwrite failed"); + HDprintf("HDwrite failed"); goto error; } @@ -564,7 +562,7 @@ main(int argc, char **argv) if (!create_zoo(fid, ".", &lastmsgtime, config)) { H5_FAILED(); AT(); - printf("create_zoo failed"); + HDprintf("create_zoo failed"); goto error; } @@ -574,7 +572,7 @@ main(int argc, char **argv) if (use_named_pipe && notify_and_wait_for_reader(fid, verify) < 0) { H5_FAILED(); AT(); - printf("notify_and_wait_for_reader failed"); + HDprintf("notify_and_wait_for_reader failed"); goto error; } @@ -582,7 +580,7 @@ main(int argc, char **argv) if (!delete_zoo(fid, ".", &lastmsgtime, config)) { H5_FAILED(); AT(); - printf("delete_zoo failed"); + HDprintf("delete_zoo failed"); goto error; } @@ -590,7 +588,7 @@ main(int argc, char **argv) if (use_named_pipe && notify_reader() < 0) { H5_FAILED(); AT(); - printf("notify_reader failed"); + HDprintf("notify_reader failed"); goto error; } } @@ -602,7 +600,7 @@ main(int argc, char **argv) if (use_named_pipe && reader_verify(verify) < 0) { H5_FAILED(); AT(); - printf("reader_verify failed"); + HDprintf("reader_verify failed"); goto error; } @@ -618,7 +616,7 @@ main(int argc, char **argv) if (use_named_pipe && reader_check_time_and_notify_writer(notify) < 0) { H5_FAILED(); AT(); - printf("reader_check_time_and_notify_writer failed"); + HDprintf("reader_check_time_and_notify_writer failed"); goto error; } @@ -633,7 +631,7 @@ main(int argc, char **argv) if (use_named_pipe && reader_check_time_after_verify_deletion() < 0) { H5_FAILED(); AT(); - printf("reader_check_time_and_notify_writer failed"); + HDprintf("reader_check_time_and_notify_writer failed"); goto error; } } @@ -642,21 +640,21 @@ main(int argc, char **argv) if (H5Pclose(fapl) < 0) { H5_FAILED(); AT(); - printf("H5Pclose failed"); + HDprintf("H5Pclose failed"); goto error; } if (H5Pclose(fcpl) < 0) { H5_FAILED(); AT(); - printf("H5Pclose failed"); + HDprintf("H5Pclose failed"); goto error; } if (H5Fclose(fid) < 0) { H5_FAILED(); AT(); - printf("H5Fclose failed"); + HDprintf("H5Fclose failed"); goto error; } @@ -666,7 +664,7 @@ main(int argc, char **argv) if (use_named_pipe && close_named_pipes() < 0) { H5_FAILED(); AT(); - printf("close_named_pipes failed"); + HDprintf("close_named_pipes failed"); goto error; } |