summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJohn Mainzer <mainzer@hdfgroup.org>2009-06-11 02:39:27 (GMT)
committerJohn Mainzer <mainzer@hdfgroup.org>2009-06-11 02:39:27 (GMT)
commit077aed74b57de2d7b0f8647b87061277ea051c52 (patch)
treeb0d6281ef2ddbae45f85eb792c9a3191bbb3ff99 /test
parent08715d1b2e83f2fdf55942ecdc22806ae8857156 (diff)
downloadhdf5-077aed74b57de2d7b0f8647b87061277ea051c52.zip
hdf5-077aed74b57de2d7b0f8647b87061277ea051c52.tar.gz
hdf5-077aed74b57de2d7b0f8647b87061277ea051c52.tar.bz2
[svn-r17028] Added binary journal file support and related tests.
Removed a bunch of debug code. Other minor changes. Did only limited testing -- just build and test on Phoenix (AMD64 linux with debug).
Diffstat (limited to 'test')
-rw-r--r--test/cache2.c6
-rw-r--r--test/cache2_api.c65
-rw-r--r--test/cache2_common.c45
-rw-r--r--test/cache2_jnl_file_marking.c2
-rw-r--r--test/cache2_journal.c1625
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_000.jnl.gzbin0 -> 217 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_001.jnl.gzbin0 -> 237 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_002.jnl.gzbin0 -> 252 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_003.jnl.gzbin0 -> 309 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_004.jnl.gzbin0 -> 370 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_005.jnl.gzbin0 -> 466 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_006.jnl.gzbin0 -> 492 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_007.jnl.gzbin0 -> 672 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_008.jnl.gzbin0 -> 933 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_009.jnl.gzbin0 -> 1163 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_010.jnl.gzbin0 -> 1389 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_011.jnl.gzbin0 -> 289 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_012.jnl.gzbin0 -> 339 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_013.jnl.gzbin0 -> 442 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_014.jnl.gzbin0 -> 614 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_015.jnl.gzbin0 -> 202 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_016.jnl.gzbin0 -> 227 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_017.jnl.gzbin0 -> 206 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc00_018.jnl.gzbin0 -> 225 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc01_000.jnl.gzbin0 -> 4818 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc01_001.jnl.gzbin0 -> 4699 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc01_002.jnl.gzbin0 -> 4172 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc01_003.jnl.gzbin0 -> 12769 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc01_004.jnl.gzbin0 -> 11939 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc02_000.jnl.gzbin0 -> 6932 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc02_001.jnl.gzbin0 -> 12318 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc02_002.jnl.gzbin0 -> 12468 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc02_003.jnl.gzbin0 -> 49627 bytes
-rwxr-xr-xtest/testfiles/cache2_journal_bsc02_004.jnl.gzbin0 -> 48362 bytes
34 files changed, 1471 insertions, 272 deletions
diff --git a/test/cache2.c b/test/cache2.c
index 6f817f6..840865e 100644
--- a/test/cache2.c
+++ b/test/cache2.c
@@ -9674,11 +9674,7 @@ check_flush_cache__flush_op_test(H5F_t * file_ptr,
}
else if ( ( cache_ptr->index_len != 0 ) ||
( cache_ptr->index_size != 0 ) ) {
-#if 0 /* JRM */
- HDfprintf(stdout, "%s:(1) index_len = %ld, index_size = %ld.\n",
- fcn_name, (long)(cache_ptr->index_len),
- (long)(cache_ptr->index_size));
-#endif /* JRM */
+
pass2 = FALSE;
HDsnprintf(msg, (size_t)128,
diff --git a/test/cache2_api.c b/test/cache2_api.c
index dcb1ae2..dc31619 100644
--- a/test/cache2_api.c
+++ b/test/cache2_api.c
@@ -276,24 +276,6 @@ check_fapl_mdc_api_calls(void)
if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++);
-#if 0 /* JRM */
- /* since this is the test cache, must build the cache explicitly */
- /* remove this when we start using the new cache */
- if ( pass2 )
- {
- if ( H5AC2_create(file_ptr, &default_config) != SUCCEED ) {
-
- pass2 = FALSE;
- failure_mssg2 = "Can't construct test cache.\n";
-
- } else {
-
- cache_ptr = file_ptr->shared->cache2;
- }
- }
-
- if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++);
-#endif /* JRM */
/* verify that we can access the internal version of the cache config */
if ( pass2 ) {
@@ -463,24 +445,6 @@ check_fapl_mdc_api_calls(void)
if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++);
-#if 0 /* JRM */
- /* since this is the test cache, must build the cache explicitly */
- /* remove this when we start using the new cache */
- if ( pass2 )
- {
- if ( H5AC2_create(file_ptr, &default_config) != SUCCEED ) {
-
- pass2 = FALSE;
- failure_mssg2 = "Can't construct test cache.\n";
-
- } else {
-
- cache_ptr = file_ptr->shared->cache2;
- }
- }
-
- if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++);
-#endif /* JRM */
/* verify that we can access the internal version of the cache config */
if ( pass2 ) {
@@ -3309,9 +3273,7 @@ check_file_mdc_api_errs(void)
size_t cur_size;
int cur_num_entries;
double hit_rate;
-#if 0 /* JRM */
- H5F_t * file_ptr = NULL;
-#endif /* JRM */
+
H5AC2_cache_config_t default_config = H5AC2__DEFAULT_CACHE_CONFIG;
H5AC2_cache_config_t scratch;
@@ -3354,32 +3316,7 @@ check_file_mdc_api_errs(void)
failure_mssg2 = "H5Fcreate() failed.\n";
}
}
-#if 0 /* JRM */
- /* get a pointer to the files internal data structure */
- if ( pass2 ) {
-
- file_ptr = (H5F_t *)H5I_object_verify(file_id, H5I_FILE);
-
- if ( file_ptr == NULL ) {
-
- pass2 = FALSE;
- failure_mssg2 = "Can't get file_ptr.\n";
-
- }
- }
-
- /* since this is the test cache, must build the cache explicitly */
- /* remove this when we start using the new cache */
- if ( pass2 )
- {
- if ( H5AC2_create(file_ptr, &default_config) != SUCCEED ) {
-
- pass2 = FALSE;
- failure_mssg2 = "Can't construct test cache.\n";
- }
- }
-#endif /* JRM */
validate_mdc_config(file_id, &default_config, TRUE, 1);
diff --git a/test/cache2_common.c b/test/cache2_common.c
index 691792d..c9c49f9 100644
--- a/test/cache2_common.c
+++ b/test/cache2_common.c
@@ -3212,8 +3212,8 @@ flush_cache2(H5F_t * file_ptr,
verify_unprotected2();
if ( show_progress ) {
- HDfprintf(stdout, "%s: mile_post = %d.\n",
- fcn_name, mile_post++); /* 1 */
+ HDfprintf(stdout, "%s: mile_post = %d - %d.\n",
+ fcn_name, mile_post++, (int)pass2); /* 1 */
}
if ( pass2 ) {
@@ -3235,8 +3235,8 @@ flush_cache2(H5F_t * file_ptr,
}
if ( show_progress ) {
- HDfprintf(stdout, "%s: mile_post = %d.\n",
- fcn_name, mile_post++); /* 2 */
+ HDfprintf(stdout, "%s: mile_post = %d - %d.\n",
+ fcn_name, mile_post++, (int)pass2); /* 2 */
}
if ( dump_stats ) {
@@ -3245,8 +3245,8 @@ flush_cache2(H5F_t * file_ptr,
}
if ( show_progress ) {
- HDfprintf(stdout, "%s: mile_post = %d.\n",
- fcn_name, mile_post++); /* 3 */
+ HDfprintf(stdout, "%s: *mile_post = %d - %d.\n",
+ fcn_name, mile_post++, (int)pass2); /* 3 */
}
if ( result < 0 ) {
@@ -3256,8 +3256,8 @@ flush_cache2(H5F_t * file_ptr,
}
if ( show_progress ) {
- HDfprintf(stdout, "%s: mile_post = %d.\n",
- fcn_name, mile_post++); /* 4 */
+ HDfprintf(stdout, "%s: mile_post = %d - %d.\n",
+ fcn_name, mile_post++, (int)pass2); /* 4 */
}
return;
@@ -3678,18 +3678,6 @@ rename_entry2(H5C2_t * cache_ptr,
( ( ! ( entry_ptr->header.destroy_in_progress ) ) &&
( entry_ptr->header.addr != new_addr ) ) ) {
-#if 0 /* JRM */
- if ( result < 0 ) {
- HDfprintf(stdout, "%s: H5C2_rename_entry() failed.\n",
- fcn_name);
- }
- if ( ( ! ( entry_ptr->header.destroy_in_progress ) ) &&
- ( entry_ptr->header.addr != new_addr ) ) {
- HDfprintf(stdout, "%s: ( ( ! ( entry_ptr->header.destroy_in_progress ) ) && ( entry_ptr->header.addr != new_addr ) ).\n",
- fcn_name);
- }
- HDassert(FALSE);
-#endif /* JRM */
pass2 = FALSE;
failure_mssg2 = "error in H5C2_rename_entry().";
@@ -4272,17 +4260,6 @@ unprotect_entry2(H5F_t * file_ptr,
HDassert( entry_ptr->is_dirty );
}
-#if 0 /* JRM */
- if ( entry_ptr->header.is_protected != entry_ptr->is_protected ) {
-
- HDfprintf(stdout,
- "(%d, %d, %d): header.is_protected = %d != is_protected = %d.\n",
- type, idx, entry_ptr->ro_ref_count,
- (int)(entry_ptr->header.is_protected),
- (int)(entry_ptr->is_protected));
- }
-#endif /* JRM */
-
HDassert( entry_ptr->header.is_protected == entry_ptr->is_protected );
HDassert( entry_ptr->header.is_read_only == entry_ptr->is_read_only );
HDassert( entry_ptr->header.ro_ref_count == entry_ptr->ro_ref_count );
@@ -5985,11 +5962,7 @@ check_and_validate_cache_hit_rate(hid_t file_id,
pass2 = FALSE;
failure_mssg2 = "unexpected hit rate (1).";
-#if 1 /* JRM */
- HDfprintf(stdout, "actual/expected hit rate = %f/%f.\n",
- hit_rate, expected_hit_rate);
- HDassert(0);
-#endif /* JRM */
+
}
}
diff --git a/test/cache2_jnl_file_marking.c b/test/cache2_jnl_file_marking.c
index 89f1e92..3c1b86b 100644
--- a/test/cache2_jnl_file_marking.c
+++ b/test/cache2_jnl_file_marking.c
@@ -1791,9 +1791,7 @@ setup_mdj_file_marking_on_open_test(hbool_t verbose)
/* close the data set, the data space, and the file */
if ( ( H5Dclose(dataset_id) < 0 ) ||
( H5Sclose(dataspace_id) < 0 ) ||
-#if 1 /* JRM */
( H5Pclose(fapl_id) < 0 ) ||
-#endif /* JRM */
( H5Fclose(file_id) < 0 ) ) {
pass2 = FALSE;
diff --git a/test/cache2_journal.c b/test/cache2_journal.c
index 0819cf3..bd1f862 100644
--- a/test/cache2_journal.c
+++ b/test/cache2_journal.c
@@ -128,7 +128,8 @@ static void open_existing_file_for_journaling(const char * hdf_file_name,
const char * journal_file_name,
hid_t * file_id_ptr,
H5F_t ** file_ptr_ptr,
- H5C2_t ** cache_ptr_ptr);
+ H5C2_t ** cache_ptr_ptr,
+ hbool_t human_readable);
static void open_existing_file_without_journaling(const char * hdf_file_name,
hid_t * file_id_ptr,
@@ -140,6 +141,7 @@ static void setup_cache_for_journaling(const char * hdf_file_name,
hid_t * file_id_ptr,
H5F_t ** file_ptr_ptr,
H5C2_t ** cache_ptr_ptr,
+ hbool_t human_readable,
hbool_t use_core_driver_if_avail);
static void takedown_cache_after_journaling(hid_t file_id,
@@ -148,7 +150,8 @@ static void takedown_cache_after_journaling(hid_t file_id,
hbool_t use_core_driver_if_avail);
static void verify_journal_contents(const char * journal_file_path_ptr,
- const char * expected_file_path_ptr);
+ const char * expected_file_path_ptr,
+ hbool_t human_readable);
static void verify_journal_deleted(const char * journal_file_path_ptr);
@@ -207,19 +210,30 @@ static void verify_mdjsc_callback_execution(void);
static void verify_mdjsc_callback_registration_deregistration(void);
+static void check_binary_message_format(void);
+
+static void verify_journal_msg(int fd,
+ uint8_t expected_msg[],
+ int expected_msg_len,
+ hbool_t last_msg,
+ const char * mismatch_failure_msg,
+ const char * read_failure_msg,
+ const char * eof_failure_msg,
+ const char * not_last_msg_msg);
+
static void check_message_format(void);
static void check_legal_calls(void);
static void check_transaction_tracking(void);
-static void mdj_api_example_test(void);
+static void mdj_api_example_test(hbool_t human_readable);
-static void mdj_smoke_check_00(void);
+static void mdj_smoke_check_00(hbool_t human_readable);
-static void mdj_smoke_check_01(void);
+static void mdj_smoke_check_01(hbool_t human_readable);
-static void mdj_smoke_check_02(void);
+static void mdj_smoke_check_02(hbool_t human_readable);
static void write_verify_trans_num(H5C2_jbrb_t * struct_ptr,
uint64_t trans_num,
@@ -1921,6 +1935,9 @@ jrnl_row_major_scan_forward2(H5F_t * file_ptr,
*
* Modifications:
*
+ * JRM -- 6/10/09
+ * Added human readable parameter.
+ *
*-------------------------------------------------------------------------
*/
@@ -1929,7 +1946,8 @@ open_existing_file_for_journaling(const char * hdf_file_name,
const char * journal_file_name,
hid_t * file_id_ptr,
H5F_t ** file_ptr_ptr,
- H5C2_t ** cache_ptr_ptr)
+ H5C2_t ** cache_ptr_ptr,
+ hbool_t human_readable)
{
const char * fcn_name = "open_existing_file_for_journaling()";
hbool_t show_progress = FALSE;
@@ -2018,7 +2036,7 @@ open_existing_file_for_journaling(const char * hdf_file_name,
jnl_config.jbrb_buf_size = (8 * 1024);
jnl_config.jbrb_num_bufs = 2;
jnl_config.jbrb_use_aio = FALSE;
- jnl_config.jbrb_human_readable = TRUE;
+ jnl_config.jbrb_human_readable = human_readable;
}
if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++);
@@ -2291,6 +2309,11 @@ open_existing_file_without_journaling(const char * hdf_file_name,
*
* Modifications:
*
+ * Added the human_readable parameter and associated
+ * code to allow selection of either binary or human
+ * readable journal file.
+ * JRM -- 5/8/09
+ *
*-------------------------------------------------------------------------
*/
@@ -2300,6 +2323,7 @@ setup_cache_for_journaling(const char * hdf_file_name,
hid_t * file_id_ptr,
H5F_t ** file_ptr_ptr,
H5C2_t ** cache_ptr_ptr,
+ hbool_t human_readable,
#if USE_CORE_DRIVER
hbool_t use_core_driver_if_avail)
#else /* USE_CORE_DRIVER */
@@ -2436,6 +2460,8 @@ setup_cache_for_journaling(const char * hdf_file_name,
if ( pass2 ) {
+ jnl_config.jbrb_human_readable = human_readable;
+
result = H5Pset_jnl_config(fapl_id, &jnl_config);
if ( result < 0 ) {
@@ -2651,12 +2677,17 @@ takedown_cache_after_journaling(hid_t file_id,
*
* Modifications:
*
+ * JRM -- 6/10/09
+ * Updated function to deal with binary as well as human
+ * readable journal files.
+ *
*-------------------------------------------------------------------------
*/
static void
verify_journal_contents(const char * journal_file_path_ptr,
- const char * expected_file_path_ptr)
+ const char * expected_file_path_ptr,
+ hbool_t human_readable)
{
const char * fcn_name = "verify_journal_contents()";
char ch;
@@ -2690,6 +2721,14 @@ verify_journal_contents(const char * journal_file_path_ptr,
}
}
+ if ( ( pass2 ) && ( verbose ) ) {
+
+ HDfprintf(stdout, "%s: *journal_file_path_ptr = \"%s\"\n",
+ fcn_name, journal_file_path_ptr);
+ HDfprintf(stdout, "%s: *expected_file_path_ptr = \"%s\"\n",
+ fcn_name, expected_file_path_ptr);
+ }
+
/* get the actual length of the journal file */
if ( pass2 ) {
@@ -2923,16 +2962,29 @@ verify_journal_contents(const char * journal_file_path_ptr,
if ( pass2 ) {
- if ( HDstrcmp(journal_buf, expected_buf) != 0 ) {
+ if ( human_readable ) {
- if ( verbose ) {
+ if ( HDstrcmp(journal_buf, expected_buf) != 0 ) {
+
+ if ( verbose ) {
- HDfprintf(stdout, "expected_buf = \"%s\"\n", expected_buf);
- HDfprintf(stdout, "journal_buf = \"%s\"\n", journal_buf);
+ HDfprintf(stdout,
+ "expected_buf = \"%s\"\n", expected_buf);
+ HDfprintf(stdout,
+ "journal_buf = \"%s\"\n", journal_buf);
+ }
+
+ failure_mssg2 = "Unexpected journal file contents(2).";
+ pass2 = FALSE;
}
+ } else { /* binary journal file -- can't use strcmp() */
- failure_mssg2 = "Unexpected journal file contents(2).";
- pass2 = FALSE;
+ if ( HDmemcmp(journal_buf, expected_buf, (size_t)cur_buf_len)
+ != 0 ) {
+
+ failure_mssg2 = "Unexpected journal file contents(2b).";
+ pass2 = FALSE;
+ }
}
}
}
@@ -3154,16 +3206,18 @@ verify_journal_empty(const char * journal_file_path_ptr)
* Programmer: John Mainzer
* 3/11/08
*
- * Changes: None.
+ * Changes: Modified function to run using either a human readable
+ * or binary journal file.
+ * JRM -- 5/8/9
*
*-------------------------------------------------------------------------
*/
static void
-mdj_smoke_check_00(void)
+mdj_smoke_check_00(hbool_t human_readable)
{
const char * fcn_name = "mdj_smoke_check_00()";
- const char * testfiles[] =
+ const char * human_readable_testfiles[] =
{
"testfiles/cache2_journal_sc00_000.jnl",
"testfiles/cache2_journal_sc00_001.jnl",
@@ -3186,12 +3240,36 @@ mdj_smoke_check_00(void)
"testfiles/cache2_journal_sc00_018.jnl",
NULL
};
+ const char * binary_testfiles[] =
+ {
+ "testfiles/cache2_journal_bsc00_000.jnl",
+ "testfiles/cache2_journal_bsc00_001.jnl",
+ "testfiles/cache2_journal_bsc00_002.jnl",
+ "testfiles/cache2_journal_bsc00_003.jnl",
+ "testfiles/cache2_journal_bsc00_004.jnl",
+ "testfiles/cache2_journal_bsc00_005.jnl",
+ "testfiles/cache2_journal_bsc00_006.jnl",
+ "testfiles/cache2_journal_bsc00_007.jnl",
+ "testfiles/cache2_journal_bsc00_008.jnl",
+ "testfiles/cache2_journal_bsc00_009.jnl",
+ "testfiles/cache2_journal_bsc00_010.jnl",
+ "testfiles/cache2_journal_bsc00_011.jnl",
+ "testfiles/cache2_journal_bsc00_012.jnl",
+ "testfiles/cache2_journal_bsc00_013.jnl",
+ "testfiles/cache2_journal_bsc00_014.jnl",
+ "testfiles/cache2_journal_bsc00_015.jnl",
+ "testfiles/cache2_journal_bsc00_016.jnl",
+ "testfiles/cache2_journal_bsc00_017.jnl",
+ "testfiles/cache2_journal_bsc00_018.jnl",
+ NULL
+ };
+ char * ((* testfiles)[]);
char filename[512];
char journal_filename[H5AC2__MAX_JOURNAL_FILE_NAME_LEN + 1];
hbool_t testfile_missing = FALSE;
hbool_t show_progress = FALSE;
hbool_t verbose = FALSE;
- hbool_t update_architypes = FALSE;
+ hbool_t update_architypes;
herr_t result;
int cp = 0;
hid_t file_id = -1;
@@ -3199,7 +3277,20 @@ mdj_smoke_check_00(void)
H5C2_t * cache_ptr = NULL;
H5AC2_jnl_config_t jnl_config;
- TESTING("mdj smoke check 00 -- general coverage");
+ if ( human_readable ) {
+
+ testfiles = &human_readable_testfiles;
+ /* set update_architypes to TRUE to generate new architype files */
+ update_architypes = FALSE;
+ TESTING("human readable mdj smoke check 00 -- general coverage");
+
+ } else {
+
+ testfiles = &binary_testfiles;
+ /* set update_architypes to TRUE to generate new architype files */
+ update_architypes = TRUE;
+ TESTING("binary mdj smoke check 00 -- general coverage");
+ }
pass2 = TRUE;
@@ -3253,10 +3344,10 @@ mdj_smoke_check_00(void)
/* clean out any existing journal file */
HDremove(journal_filename);
setup_cache_for_journaling(filename, journal_filename, &file_id,
- &file_ptr, &cache_ptr, FALSE);
+ &file_ptr, &cache_ptr, human_readable, FALSE);
if ( show_progress )
- HDfprintf(stdout, "%s:%d cp = %d.\n", fcn_name, pass2, cp++);
+ HDfprintf(stdout, "%s:%d *cp = %d.\n", fcn_name, pass2, cp++);
/********************************************************************/
@@ -3271,7 +3362,9 @@ mdj_smoke_check_00(void)
begin_trans(cache_ptr, verbose, (uint64_t)1, "transaction 1.0");
insert_entry2(file_ptr, 0, 1, FALSE, H5C2__NO_FLAGS_SET);
+
protect_entry2(file_ptr, 0, 0);
+
unprotect_entry2(file_ptr, 0, 0, TRUE, H5C2__NO_FLAGS_SET);
end_trans(file_ptr, cache_ptr, verbose, (uint64_t)1, "transaction 1.0");
@@ -3280,12 +3373,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[0]);
+ copy_file(journal_filename, (*testfiles)[0]);
}
-
- if ( file_exists(testfiles[0]) ) {
- verify_journal_contents(journal_filename, testfiles[0]);
+ if ( file_exists((*testfiles)[0]) ) {
+
+ verify_journal_contents(journal_filename, (*testfiles)[0],
+ human_readable);
} else {
@@ -3360,12 +3454,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[1]);
+ copy_file(journal_filename, (*testfiles)[1]);
}
- if ( file_exists(testfiles[1]) ) {
+ if ( file_exists((*testfiles)[1]) ) {
- verify_journal_contents(journal_filename, testfiles[1]);
+ verify_journal_contents(journal_filename, (*testfiles)[1],
+ human_readable);
} else {
@@ -3408,12 +3503,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[2]);
+ copy_file(journal_filename, (*testfiles)[2]);
}
- if ( file_exists(testfiles[2]) ) {
+ if ( file_exists((*testfiles)[2]) ) {
- verify_journal_contents(journal_filename, testfiles[2]);
+ verify_journal_contents(journal_filename, (*testfiles)[2],
+ human_readable);
} else {
@@ -3446,12 +3542,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[3]);
+ copy_file(journal_filename, (*testfiles)[3]);
}
- if ( file_exists(testfiles[3]) ) {
+ if ( file_exists((*testfiles)[3]) ) {
- verify_journal_contents(journal_filename, testfiles[3]);
+ verify_journal_contents(journal_filename, (*testfiles)[3],
+ human_readable);
} else {
@@ -3494,12 +3591,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[4]);
+ copy_file(journal_filename, (*testfiles)[4]);
}
- if ( file_exists(testfiles[4]) ) {
+ if ( file_exists((*testfiles)[4]) ) {
- verify_journal_contents(journal_filename, testfiles[4]);
+ verify_journal_contents(journal_filename, (*testfiles)[4],
+ human_readable);
} else {
@@ -3547,12 +3645,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[5]);
+ copy_file(journal_filename, (*testfiles)[5]);
}
- if ( file_exists(testfiles[5]) ) {
+ if ( file_exists((*testfiles)[5]) ) {
- verify_journal_contents(journal_filename, testfiles[5]);
+ verify_journal_contents(journal_filename, (*testfiles)[5],
+ human_readable);
} else {
@@ -3586,12 +3685,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[6]);
+ copy_file(journal_filename, (*testfiles)[6]);
}
- if ( file_exists(testfiles[6]) ) {
+ if ( file_exists((*testfiles)[6]) ) {
- verify_journal_contents(journal_filename, testfiles[6]);
+ verify_journal_contents(journal_filename, (*testfiles)[6],
+ human_readable);
} else {
@@ -3637,12 +3737,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[7]);
+ copy_file(journal_filename, (*testfiles)[7]);
}
- if ( file_exists(testfiles[7]) ) {
+ if ( file_exists((*testfiles)[7]) ) {
- verify_journal_contents(journal_filename, testfiles[7]);
+ verify_journal_contents(journal_filename, (*testfiles)[7],
+ human_readable);
} else {
@@ -3700,12 +3801,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[8]);
+ copy_file(journal_filename, (*testfiles)[8]);
}
- if ( file_exists(testfiles[8]) ) {
+ if ( file_exists((*testfiles)[8]) ) {
- verify_journal_contents(journal_filename, testfiles[8]);
+ verify_journal_contents(journal_filename, (*testfiles)[8],
+ human_readable);
} else {
@@ -3766,12 +3868,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[9]);
+ copy_file(journal_filename, (*testfiles)[9]);
}
- if ( file_exists(testfiles[9]) ) {
+ if ( file_exists((*testfiles)[9]) ) {
- verify_journal_contents(journal_filename, testfiles[9]);
+ verify_journal_contents(journal_filename, (*testfiles)[9],
+ human_readable);
} else {
@@ -3836,12 +3939,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[10]);
+ copy_file(journal_filename, (*testfiles)[10]);
}
- if ( file_exists(testfiles[10]) ) {
+ if ( file_exists((*testfiles)[10]) ) {
- verify_journal_contents(journal_filename, testfiles[10]);
+ verify_journal_contents(journal_filename, (*testfiles)[10],
+ human_readable);
} else {
@@ -3891,12 +3995,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[11]);
+ copy_file(journal_filename, (*testfiles)[11]);
}
- if ( file_exists(testfiles[11]) ) {
+ if ( file_exists((*testfiles)[11]) ) {
- verify_journal_contents(journal_filename, testfiles[11]);
+ verify_journal_contents(journal_filename, (*testfiles)[11],
+ human_readable);
} else {
@@ -3992,12 +4097,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[12]);
+ copy_file(journal_filename, (*testfiles)[12]);
}
- if ( file_exists(testfiles[12]) ) {
+ if ( file_exists((*testfiles)[12]) ) {
- verify_journal_contents(journal_filename, testfiles[12]);
+ verify_journal_contents(journal_filename, (*testfiles)[12],
+ human_readable);
} else {
@@ -4021,12 +4127,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[13]);
+ copy_file(journal_filename, (*testfiles)[13]);
}
- if ( file_exists(testfiles[13]) ) {
+ if ( file_exists((*testfiles)[13]) ) {
- verify_journal_contents(journal_filename, testfiles[13]);
+ verify_journal_contents(journal_filename, (*testfiles)[13],
+ human_readable);
} else {
@@ -4052,12 +4159,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[14]);
+ copy_file(journal_filename, (*testfiles)[14]);
}
- if ( file_exists(testfiles[14]) ) {
+ if ( file_exists((*testfiles)[14]) ) {
- verify_journal_contents(journal_filename, testfiles[14]);
+ verify_journal_contents(journal_filename, (*testfiles)[14],
+ human_readable);
} else {
@@ -4106,12 +4214,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[15]);
+ copy_file(journal_filename, (*testfiles)[15]);
}
- if ( file_exists(testfiles[15]) ) {
+ if ( file_exists((*testfiles)[15]) ) {
- verify_journal_contents(journal_filename, testfiles[15]);
+ verify_journal_contents(journal_filename, (*testfiles)[15],
+ human_readable);
} else {
@@ -4137,12 +4246,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[16]);
+ copy_file(journal_filename, (*testfiles)[16]);
}
- if ( file_exists(testfiles[16]) ) {
+ if ( file_exists((*testfiles)[16]) ) {
- verify_journal_contents(journal_filename, testfiles[16]);
+ verify_journal_contents(journal_filename, (*testfiles)[16],
+ human_readable);
} else {
@@ -4188,7 +4298,7 @@ mdj_smoke_check_00(void)
/* c) Re-open the hdf5 file. */
open_existing_file_for_journaling(filename, journal_filename, &file_id,
- &file_ptr, &cache_ptr);
+ &file_ptr, &cache_ptr, human_readable);
if ( show_progress )
HDfprintf(stdout, "%s:%d cp = %d.\n", fcn_name, pass2, cp++);
@@ -4208,12 +4318,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[17]);
+ copy_file(journal_filename, (*testfiles)[17]);
}
- if ( file_exists(testfiles[17]) ) {
+ if ( file_exists((*testfiles)[17]) ) {
- verify_journal_contents(journal_filename, testfiles[17]);
+ verify_journal_contents(journal_filename, (*testfiles)[17],
+ human_readable);
} else {
@@ -4369,12 +4480,13 @@ mdj_smoke_check_00(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[18]);
+ copy_file(journal_filename, (*testfiles)[18]);
}
- if ( file_exists(testfiles[18]) ) {
+ if ( file_exists((*testfiles)[18]) ) {
- verify_journal_contents(journal_filename, testfiles[18]);
+ verify_journal_contents(journal_filename, (*testfiles)[18],
+ human_readable);
} else {
@@ -4474,16 +4586,18 @@ mdj_smoke_check_00(void)
* Programmer: John Mainzer
* 5/19/08
*
- * Changes: None.
+ * Changes: Modified function to run using either a human readable
+ * or binary journal file.
+ * JRM -- 5/13/09
*
*-------------------------------------------------------------------------
*/
static void
-mdj_smoke_check_01(void)
+mdj_smoke_check_01(hbool_t human_readable)
{
const char * fcn_name = "mdj_smoke_check_01()";
- const char * testfiles[] =
+ const char * human_readable_testfiles[] =
{
"testfiles/cache2_journal_sc01_000.jnl",
"testfiles/cache2_journal_sc01_001.jnl",
@@ -4492,13 +4606,23 @@ mdj_smoke_check_01(void)
"testfiles/cache2_journal_sc01_004.jnl",
NULL
};
+ const char * binary_testfiles[] =
+ {
+ "testfiles/cache2_journal_bsc01_000.jnl",
+ "testfiles/cache2_journal_bsc01_001.jnl",
+ "testfiles/cache2_journal_bsc01_002.jnl",
+ "testfiles/cache2_journal_bsc01_003.jnl",
+ "testfiles/cache2_journal_bsc01_004.jnl",
+ NULL
+ };
+ char * ((* testfiles)[]);
char filename[512];
char journal_filename[H5AC2__MAX_JOURNAL_FILE_NAME_LEN + 1];
hbool_t testfile_missing = FALSE;
hbool_t show_progress = FALSE;
hbool_t dirty_inserts = FALSE;
hbool_t verbose = FALSE;
- hbool_t update_architypes = FALSE;
+ hbool_t update_architypes;
int dirty_unprotects = FALSE;
int dirty_destroys = FALSE;
hbool_t display_stats = FALSE;
@@ -4509,8 +4633,21 @@ mdj_smoke_check_01(void)
hid_t file_id = -1;
H5F_t * file_ptr = NULL;
H5C2_t * cache_ptr = NULL;
-
- TESTING("mdj smoke check 01 -- jrnl clean ins, prot, unprot, del, ren");
+
+ if ( human_readable ) {
+
+ testfiles = &human_readable_testfiles;
+ /* set update_architypes to TRUE to generate new architype files */
+ update_architypes = FALSE;
+ TESTING("hr mdj smoke check 01 -- jnl clean ins, prot, unprot, del, ren");
+
+ } else {
+
+ testfiles = &binary_testfiles;
+ /* set update_architypes to TRUE to generate new architype files */
+ update_architypes = FALSE;
+ TESTING("b mdj smoke check 01 -- jnl clean ins, prot, unprot, del, ren");
+ }
pass2 = TRUE;
@@ -4571,12 +4708,12 @@ mdj_smoke_check_01(void)
*
* Thus, if we want to use the core file driver when available, we
* will either have to remove the end of address space from the
- * journal entries, get the different file drivers to aggree on
+ * journal entries, get the different file drivers to agree on
* end of address space, or maintain different sets of architype
* files for the different file drivers.
*/
setup_cache_for_journaling(filename, journal_filename, &file_id,
- &file_ptr, &cache_ptr, FALSE);
+ &file_ptr, &cache_ptr, human_readable, FALSE);
if ( show_progress )
HDfprintf(stdout, "%s:%d cp = %d.\n", fcn_name, pass2, cp++);
@@ -4612,12 +4749,13 @@ mdj_smoke_check_01(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[0]);
+ copy_file(journal_filename, (*testfiles)[0]);
}
- if ( file_exists(testfiles[0]) ) {
+ if ( file_exists((*testfiles)[0]) ) {
- verify_journal_contents(journal_filename, testfiles[0]);
+ verify_journal_contents(journal_filename, (*testfiles)[0],
+ human_readable);
} else {
@@ -4657,12 +4795,13 @@ mdj_smoke_check_01(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[1]);
+ copy_file(journal_filename, (*testfiles)[1]);
}
- if ( file_exists(testfiles[1]) ) {
+ if ( file_exists((*testfiles)[1]) ) {
- verify_journal_contents(journal_filename, testfiles[1]);
+ verify_journal_contents(journal_filename, (*testfiles)[1],
+ human_readable);
} else {
@@ -4702,12 +4841,13 @@ mdj_smoke_check_01(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[2]);
+ copy_file(journal_filename, (*testfiles)[2]);
}
- if ( file_exists(testfiles[2]) ) {
+ if ( file_exists((*testfiles)[2]) ) {
- verify_journal_contents(journal_filename, testfiles[2]);
+ verify_journal_contents(journal_filename, (*testfiles)[2],
+ human_readable);
} else {
@@ -4742,12 +4882,13 @@ mdj_smoke_check_01(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[3]);
+ copy_file(journal_filename, (*testfiles)[3]);
}
- if ( file_exists(testfiles[3]) ) {
+ if ( file_exists((*testfiles)[3]) ) {
- verify_journal_contents(journal_filename, testfiles[3]);
+ verify_journal_contents(journal_filename, (*testfiles)[3],
+ human_readable);
} else {
@@ -4782,12 +4923,13 @@ mdj_smoke_check_01(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[4]);
+ copy_file(journal_filename, (*testfiles)[4]);
}
- if ( file_exists(testfiles[4]) ) {
+ if ( file_exists((*testfiles)[4]) ) {
- verify_journal_contents(journal_filename, testfiles[4]);
+ verify_journal_contents(journal_filename, (*testfiles)[4],
+ human_readable);
} else {
@@ -4852,16 +4994,18 @@ mdj_smoke_check_01(void)
* Programmer: John Mainzer
* 5/19/08
*
- * Changes: None.
+ * Changes: Modified function to run using either a human readable
+ * or binary journal file.
+ * JRM -- 5/13/09
*
*-------------------------------------------------------------------------
*/
static void
-mdj_smoke_check_02(void)
+mdj_smoke_check_02(hbool_t human_readable)
{
const char * fcn_name = "mdj_smoke_check_02()";
- const char * testfiles[] =
+ const char * human_readable_testfiles[] =
{
"testfiles/cache2_journal_sc02_000.jnl",
"testfiles/cache2_journal_sc02_001.jnl",
@@ -4870,6 +5014,16 @@ mdj_smoke_check_02(void)
"testfiles/cache2_journal_sc02_004.jnl",
NULL
};
+ const char * binary_testfiles[] =
+ {
+ "testfiles/cache2_journal_bsc02_000.jnl",
+ "testfiles/cache2_journal_bsc02_001.jnl",
+ "testfiles/cache2_journal_bsc02_002.jnl",
+ "testfiles/cache2_journal_bsc02_003.jnl",
+ "testfiles/cache2_journal_bsc02_004.jnl",
+ NULL
+ };
+ char * ((* testfiles)[]);
char filename[512];
char journal_filename[H5AC2__MAX_JOURNAL_FILE_NAME_LEN + 1];
hbool_t testfile_missing = FALSE;
@@ -4887,8 +5041,21 @@ mdj_smoke_check_02(void)
hid_t file_id = -1;
H5F_t * file_ptr = NULL;
H5C2_t * cache_ptr = NULL;
-
- TESTING("mdj smoke check 02 -- jrnl dirty ins, prot, unprot, del, ren");
+
+ if ( human_readable ) {
+
+ testfiles = &human_readable_testfiles;
+ /* set update_architypes to TRUE to generate new architype files */
+ update_architypes = FALSE;
+ TESTING("hr mdj smoke check 02 -- jnl dirty ins, prot, unprot, del, ren");
+
+ } else {
+
+ testfiles = &binary_testfiles;
+ /* set update_architypes to TRUE to generate new architype files */
+ update_architypes = FALSE;
+ TESTING("b mdj smoke check 02 -- jnl dirty ins, prot, unprot, del, ren");
+ }
pass2 = TRUE;
@@ -4954,7 +5121,7 @@ mdj_smoke_check_02(void)
* files for the different file drivers.
*/
setup_cache_for_journaling(filename, journal_filename, &file_id,
- &file_ptr, &cache_ptr, FALSE);
+ &file_ptr, &cache_ptr, human_readable, FALSE);
if ( show_progress )
HDfprintf(stdout, "%s:%d cp = %d.\n", fcn_name, pass2, cp++);
@@ -4990,12 +5157,13 @@ mdj_smoke_check_02(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[0]);
+ copy_file(journal_filename, (*testfiles)[0]);
}
- if ( file_exists(testfiles[0]) ) {
+ if ( file_exists((*testfiles)[0]) ) {
- verify_journal_contents(journal_filename, testfiles[0]);
+ verify_journal_contents(journal_filename, (*testfiles)[0],
+ human_readable);
} else {
@@ -5035,12 +5203,13 @@ mdj_smoke_check_02(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[1]);
+ copy_file(journal_filename, (*testfiles)[1]);
}
- if ( file_exists(testfiles[1]) ) {
+ if ( file_exists((*testfiles)[1]) ) {
- verify_journal_contents(journal_filename, testfiles[1]);
+ verify_journal_contents(journal_filename, (*testfiles)[1],
+ human_readable);
} else {
@@ -5080,12 +5249,13 @@ mdj_smoke_check_02(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[2]);
+ copy_file(journal_filename, (*testfiles)[2]);
}
- if ( file_exists(testfiles[2]) ) {
+ if ( file_exists((*testfiles)[2]) ) {
- verify_journal_contents(journal_filename, testfiles[2]);
+ verify_journal_contents(journal_filename, (*testfiles)[2],
+ human_readable);
} else {
@@ -5120,12 +5290,13 @@ mdj_smoke_check_02(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[3]);
+ copy_file(journal_filename, (*testfiles)[3]);
}
- if ( file_exists(testfiles[3]) ) {
+ if ( file_exists((*testfiles)[3]) ) {
- verify_journal_contents(journal_filename, testfiles[3]);
+ verify_journal_contents(journal_filename, (*testfiles)[3],
+ human_readable);
} else {
@@ -5160,12 +5331,13 @@ mdj_smoke_check_02(void)
if ( update_architypes ) {
- copy_file(journal_filename, testfiles[4]);
+ copy_file(journal_filename, (*testfiles)[4]);
}
- if ( file_exists(testfiles[4]) ) {
+ if ( file_exists((*testfiles)[4]) ) {
- verify_journal_contents(journal_filename, testfiles[4]);
+ verify_journal_contents(journal_filename, (*testfiles)[4],
+ human_readable);
} else {
@@ -5312,7 +5484,10 @@ mdj_smoke_check_02(void)
*
* Modifications:
*
- * None.
+ * Modified the function to used either the human readable
+ * or the binary journal file format as directed via the
+ * new human_readable parameter.
+ * JRM -- 5/13/09
*
*-------------------------------------------------------------------------
*/
@@ -5323,7 +5498,7 @@ mdj_smoke_check_02(void)
#define NUM_RANDOM_ACCESSES 200000
static void
-mdj_api_example_test(void)
+mdj_api_example_test(hbool_t human_readable)
{
const char * fcn_name = "mdj_api_example_test()";
char filename[512];
@@ -5350,7 +5525,15 @@ mdj_api_example_test(void)
H5AC2_jnl_config_t jnl_config_1;
- TESTING("mdj example code");
+ if ( human_readable ) {
+
+ TESTING("mdj example code -- human readable journal file");
+
+ } else {
+
+ TESTING("mdj example code -- binary journal file");
+
+ }
if ( skip_long_tests2 > 0 ) {
@@ -5510,7 +5693,7 @@ mdj_api_example_test(void)
/* the journal buffer size should be some multiple of the block
* size of the underlying file system.
*/
- jnl_config_0.jbrb_buf_size = (8 * 1024);
+ jnl_config_0.jbrb_buf_size = (16 * 1024);
/* the number of journal buffers should be either 1 or 2 when
* synchronous I/O is used for journal writes. If AIO is used,
@@ -5525,11 +5708,14 @@ mdj_api_example_test(void)
*/
jnl_config_0.jbrb_use_aio = FALSE;
- /* At present only human readable journal file are supported
- * so this field will be TRUE for now. Once it becomes available,
- * machine readable journal files should be smaller and faster.
- */
- jnl_config_0.jbrb_human_readable = TRUE;
+ /* set human readable as specified in the human_readable parameter
+ * to this function. If human_readable is FALSE, we will use
+ * the binary journal file format which should reduce the size
+ * of the journal file by about two thirds, and also reduce the
+ * overhead involved in formating journal entries for writing
+ * to the journal file.
+ */
+ jnl_config_0.jbrb_human_readable = human_readable;
status = H5Pset_jnl_config(fapl_id, &jnl_config_0);
@@ -5832,7 +6018,7 @@ mdj_api_example_test(void)
* On the other hand, it will impose a significant file I/O
* overhead, and slow us down. (try it both ways).
*/
-#if 1 /* JRM */
+#if 1
status = H5Fflush(file_id, H5F_SCOPE_GLOBAL);
if ( status < 0 ) {
@@ -5840,7 +6026,7 @@ mdj_api_example_test(void)
pass2 = FALSE;
failure_mssg2 = "H5Fflush() failed.";
}
-#endif /* JRM */
+#endif
}
if ( ( pass2 ) && ( report_progress ) ) {
@@ -7139,10 +7325,6 @@ verify_mdjsc_table_config(H5C2_t * cache_ptr,
{
pass2 = FALSE;
failure_mssg2 = "mdjsc callback table len mismatch";
-#if 1 /* JRM */
- HDfprintf(stdout, "cache_ptr->mdjsc_cb_tbl_len = %d(%d).\n",
- cache_ptr->mdjsc_cb_tbl_len, table_len);
-#endif /* JRM */
}
else if ( cache_ptr->num_mdjsc_cbs != num_entries )
{
@@ -7151,11 +7333,6 @@ verify_mdjsc_table_config(H5C2_t * cache_ptr,
}
else if ( cache_ptr->mdjsc_cb_tbl_max_idx_in_use != max_idx_in_use )
{
-#if 1 /* JRM */
- HDfprintf(stdout,
- "cache_ptr->mdjsc_cb_tbl_max_idx_in_use = %d(%d)\n",
- cache_ptr->mdjsc_cb_tbl_max_idx_in_use, max_idx_in_use);
-#endif /* JRM */
pass2 = FALSE;
failure_mssg2 = "mdjsc callback table max idx in use mismatch";
}
@@ -7234,12 +7411,6 @@ verify_mdjsc_table_config(H5C2_t * cache_ptr,
pass2 = FALSE;
failure_mssg2 =
"mdjsc callback table free list shorter than expected.";
-#if 1 /* JRM */
- HDfprintf(stdout, "i = %d (%d - %d = %d)\n", i,
- table_len, num_entries, (table_len - num_entries));
- HDfprintf(stdout, "cache_ptr->mdjsc_cb_tbl_fl_head = %d.\n",
- cache_ptr->mdjsc_cb_tbl_fl_head);
-#endif /* JRM */
} else if ( ( record_ptr != NULL ) &&
( record_ptr->fl_next != -1 ) ) {
@@ -7540,7 +7711,7 @@ verify_mdjsc_callback_error_rejection(void)
/* clean out any existing journal file */
HDremove(journal_filename);
setup_cache_for_journaling(filename, journal_filename, &file_id,
- &file_ptr, &cache_ptr, FALSE);
+ &file_ptr, &cache_ptr, TRUE, FALSE);
if ( show_progress ) {
@@ -7934,7 +8105,7 @@ verify_mdjsc_callback_execution(void)
/* clean out any existing journal file */
HDremove(journal_filename);
setup_cache_for_journaling(filename, journal_filename, &file_id,
- &file_ptr, &cache_ptr, FALSE);
+ &file_ptr, &cache_ptr, TRUE, FALSE);
if ( show_progress ) {
@@ -9252,7 +9423,7 @@ verify_mdjsc_callback_registration_deregistration(void)
/* clean out any existing journal file */
HDremove(journal_filename);
setup_cache_for_journaling(filename, journal_filename, &file_id,
- &file_ptr, &cache_ptr, FALSE);
+ &file_ptr, &cache_ptr, TRUE, FALSE);
/* 2) Register a callback. Verify that is is added correctly to
@@ -10290,6 +10461,10 @@ verify_mdjsc_callback_registration_deregistration(void)
*
* Programmer: Mike McGreevy <mcgreevy@hdfgroup.org>
* Thursday, February 21, 2008
+ *
+ * Changes: John Mainzer -- 4/16/09
+ * Updated for the addition of new parameters to
+ * H5C2_jb__init().
*
**************************************************************************/
@@ -10369,6 +10544,10 @@ check_buffer_writes(void)
/* Initialize H5C2_jbrb_t structure. */
if ( pass2 ) {
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
/* journal_magic */ 123,
/* HDF5 file name */ HDF5_FILE_NAME,
@@ -10376,7 +10555,9 @@ check_buffer_writes(void)
/* Buffer size */ 16,
/* Number of Buffers */ 3,
/* Use Synchronois I/O */ FALSE,
- /* human readable journal */ TRUE);
+ /* human readable journal */ TRUE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
if ( result != 0) {
@@ -10685,6 +10866,10 @@ write_noflush_verify(H5C2_jbrb_t * struct_ptr,
* Changes: JRM -- 3/21/09
* Updated test to handle the new journal creation time strings
* in which all white space is replaced with underscores.
+ *
+ * JRM -- 4/16/09
+ * Updated for the addition of new parameters to
+ * H5C2_jb__init().
*
**************************************************************************/
static void
@@ -10727,6 +10912,10 @@ check_message_format(void)
/* Initialize H5C2_jbrb_t structure. */
if ( pass2 ) {
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
/* journal_magic */ 123,
/* HDF5 file name */ HDF5_FILE_NAME,
@@ -10734,7 +10923,9 @@ check_message_format(void)
/* Buffer size */ 16,
/* Number of Buffers */ 3,
/* Use Synchronois I/O */ FALSE,
- /* human readable journal */ TRUE);
+ /* human readable journal */ TRUE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
if ( result != 0) {
@@ -11254,6 +11445,1052 @@ check_message_format(void)
} /* end check_message_format */
+
+/***************************************************************************
+ * Function: check_binary_message_format
+ *
+ * Purpose: Verify that the functions that write binary messages into
+ * the journal buffers actually write the correct messages.
+ *
+ * Note that this test was hacked from Mike's similar test
+ * for the human readable journal messages. Unlike Mike's
+ * code, it also tests the eoa message.
+ *
+ * Return: void
+ *
+ * Programmer: John Mainzer
+ * 5/2/09
+ *
+ * Changes: None.
+ *
+ **************************************************************************/
+
+static void
+check_binary_message_format(void)
+{
+ const char * fcn_name = "check_binary_message_format()";
+ char filename[512];
+ char time_buf[32];
+ char verify[9][500];
+ char from_journal[9][500];
+ char * p;
+ hbool_t show_progress = FALSE;
+ int32_t checkpoint = 1;
+ int i;
+ int fd;
+ herr_t result;
+ FILE * readback;
+ H5C2_jbrb_t jbrb_struct;
+ time_t current_date;
+
+ TESTING("binary journal file message format");
+
+ pass2 = TRUE;
+
+ /* setup the file name */
+ if ( pass2 ) {
+
+ if ( h5_fixname(FILENAMES[1], H5P_DEFAULT, filename, sizeof(filename))
+ == NULL ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "h5_fixname() failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ /* Give structure its magic number */
+ jbrb_struct.magic = H5C2__H5C2_JBRB_T_MAGIC;
+
+ /* Initialize H5C2_jbrb_t structure. */
+ if ( pass2 ) {
+
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
+ result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* journal_magic */ 123,
+ /* HDF5 file name */ HDF5_FILE_NAME,
+ /* journal file name */ filename,
+ /* Buffer size */ 16,
+ /* Number of Buffers */ 3,
+ /* Use Synchronois I/O */ FALSE,
+ /* human readable journal */ FALSE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
+
+ if ( result != 0) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb_init failed, check 2";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 1 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Start a transaction */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__start_transaction(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)1)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__start_transaction failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 2 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write a journal entry */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__journal_entry(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)1,
+ /* base address */ (haddr_t)0,
+ /* data length */ 1,
+ /* data */ (const uint8_t *)"A")
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__journal_entry failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 3 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write an eoa message */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__eoa(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* eoa */ (haddr_t)0x01020304)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__eoa failed(1)";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 4 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write a journal entry */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__journal_entry(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)1,
+ /* base address */ (haddr_t)1,
+ /* data length */ 2,
+ /* data */ (const uint8_t *)"AB")
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__journal_entry failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 5 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write a journal entry */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__journal_entry(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)1,
+ /* base address */ (haddr_t)3,
+ /* data length */ 4,
+ /* data */ (const uint8_t *)"CDEF")
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__journal_entry failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 6 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* End transaction */
+ if ( pass2 ) {
+ if ( H5C2_jb__end_transaction(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)1)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__end_transaction failed (1)";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 7 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write an eoa message */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__eoa(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* eoa */ (haddr_t)0x0102030405)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__eoa failed(2)";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 8 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Start a transaction */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__start_transaction(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)2)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__start_transaction failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 9 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write a journal entry */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__journal_entry(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)2,
+ /* base address */ (haddr_t)285,
+ /* data length */ 11,
+ /* data */ (const uint8_t *)"Test Data?!")
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__journal_entry failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 10 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* End transaction */
+ if ( pass2 ) {
+ if ( H5C2_jb__end_transaction(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)2)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__end_transaction failed (2)";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 11 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Flush the journal buffers. */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__flush(/* H5C2_jbrb_t */ &jbrb_struct)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__flush failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( pass2 ) {
+
+ current_date = time(NULL);
+
+ /* load ascii representation of current_date into time_buf[],
+ * replacing white space with underscores.
+ */
+ time_buf[31] = '\0'; /* just to be safe */
+
+ if ( (p = HDctime(&current_date)) == NULL ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "HDctime() failed";
+
+ } else {
+
+ /* copy the string into time_buf, replacing white space with
+ * underscores.
+ *
+ * Do this to make parsing the header easier.
+ */
+ i = 0;
+
+ while ( ( i < 31 ) && ( *p != '\0' ) ) {
+
+ if ( isspace(*p) ) {
+
+ time_buf[i] = '_';
+
+ } else {
+
+ time_buf[i] = *p;
+ }
+
+ i++;
+ p++;
+ }
+
+ time_buf[i] = '\0';
+ }
+ }
+
+ if ( show_progress ) /* 12 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ if ( pass2 ) {
+
+ char expected_header[256];
+ int expected_header_len;
+
+ uint8_t expected_msg_1[] =
+ {
+ /* mssg 1: begin transaction 1 */
+ /* header: */ 'b', 't', 'r', 'n',
+ /* version: */ 0x00,
+ /* trans num: */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ int expected_msg_1_len = 13;
+
+ uint8_t expected_msg_2[] =
+ {
+ /* mssg 2: journal entry */
+ /* header: */ 'j', 'e', 'n', 't',
+ /* version: */ 0x00,
+ /* trans num: */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* base addr: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* length: */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* body: */ 'A',
+ /* chksum: */ 0x7c, 0x5f, 0xad, 0xda
+ };
+ int expected_msg_2_len = 34;
+
+ uint8_t expected_msg_3[] =
+ {
+ /* mssg 3: eoas */
+ /* header: */ 'e', 'o', 'a', 's',
+ /* version: */ 0x00,
+ /* trans num: */ 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
+ };
+ int expected_msg_3_len = 13;
+
+ uint8_t expected_msg_4[] =
+ {
+ /* mssg 4: journal entry */
+ /* header: */ 'j', 'e', 'n', 't',
+ /* version: */ 0x00,
+ /* trans num: */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* base addr: */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* length: */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* body: */ 'A', 'B',
+ /* chksum: */ 0x33, 0x93, 0x98, 0x21
+ };
+ int expected_msg_4_len = 35;
+
+ uint8_t expected_msg_5[] =
+ {
+ /* mssg 5: journal entry */
+ /* header: */ 'j', 'e', 'n', 't',
+ /* version: */ 0x00,
+ /* trans num: */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* base addr: */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* length: */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* body: */ 'C', 'D', 'E', 'F',
+ /* chksum: */ 0x6e, 0x7d, 0xaf, 0x57
+ };
+ int expected_msg_5_len = 37;
+
+ uint8_t expected_msg_6[] =
+ {
+ /* mssg 6: end transaction 1 */
+ /* header: */ 'e', 't', 'r', 'n',
+ /* version: */ 0x00,
+ /* trans num: */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ int expected_msg_6_len = 13;
+
+ uint8_t expected_msg_7[] =
+ {
+ /* mssg 7: eoas */
+ /* header: */ 'e', 'o', 'a', 's',
+ /* version: */ 0x00,
+ /* trans num: */ 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00
+ };
+ int expected_msg_7_len = 13;
+
+ uint8_t expected_msg_8[] =
+ {
+ /* mssg 8: begin transaction 2 */
+ /* header: */ 'b', 't', 'r', 'n',
+ /* version: */ 0x00,
+ /* trans num: */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ int expected_msg_8_len = 13;
+
+ uint8_t expected_msg_9[] =
+ {
+ /* mssg 9: journal entry */
+ /* h9ader: */ 'j', 'e', 'n', 't',
+ /* version: */ 0x00,
+ /* trans num: */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* base addr: */ 0x1d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* length: */ 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* body: */ 'T', 'e', 's', 't', ' ', 'D', 'a', 't',
+ 'a', '?', '!',
+ /* chksum: */ 0x01, 0x7f, 0xf3, 0x43
+ };
+ int expected_msg_9_len = 44;
+
+ uint8_t expected_msg_10[] =
+ {
+ /* mssg 10: end transaction 2 */
+ /* header: */ 'e', 't', 'r', 'n',
+ /* version: */ 0x00,
+ /* trans num: */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ int expected_msg_10_len = 13;
+
+
+ sprintf(expected_header, "0 ver_num 1 target_file_name HDF5.file journal_magic 123 creation_date %10.10s human_readable 0 offset_width 8 length_width 8\n", time_buf);
+ expected_header_len = HDstrlen(expected_header);
+
+ if ( (fd = HDopen(filename, O_RDONLY, 0777)) == -1 ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "Can't open journal file for test (1).";
+
+ }
+
+ if ( pass2 ) {
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_header,
+ /* expected msg len */ expected_header_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual headers differ.",
+ /* read failure msg */ "error reading header.",
+ /* eof failure msg */ "encountered eof in header msg.",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_1,
+ /* expected msg len */ expected_msg_1_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 1 differ.",
+ /* read failure msg */ "error reading msg 1.",
+ /* eof failure msg */ "encountered eof in msg 1.",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_2,
+ /* expected msg len */ expected_msg_2_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 2 differ.",
+ /* read failure msg */ "error reading msg 2.",
+ /* eof failure msg */ "encountered eof in msg 2",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_3,
+ /* expected msg len */ expected_msg_3_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 3 differ.",
+ /* read failure msg */ "error reading msg 3.",
+ /* eof failure msg */ "encountered eof in msg 3",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_4,
+ /* expected msg len */ expected_msg_4_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 4 differ.",
+ /* read failure msg */ "error reading msg 4.",
+ /* eof failure msg */ "encountered eof in msg 4",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_5,
+ /* expected msg len */ expected_msg_5_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 5 differ.",
+ /* read failure msg */ "error reading msg 5.",
+ /* eof failure msg */ "encountered eof in msg 5",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_6,
+ /* expected msg len */ expected_msg_6_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 6 differ.",
+ /* read failure msg */ "error reading msg 6.",
+ /* eof failure msg */ "encountered eof in msg 6",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_7,
+ /* expected msg len */ expected_msg_7_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg7 differ.",
+ /* read failure msg */ "error reading msg 7.",
+ /* eof failure msg */ "encountered eof in msg 7",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_8,
+ /* expected msg len */ expected_msg_8_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 8 differ.",
+ /* read failure msg */ "error reading msg 8.",
+ /* eof failure msg */ "encountered eof in msg 8",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_9,
+ /* expected msg len */ expected_msg_9_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 9 differ.",
+ /* read failure msg */ "error reading msg 9.",
+ /* eof failure msg */ "encountered eof in msg 9",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_10,
+ /* expected msg len */ expected_msg_10_len,
+ /* last_msg */ TRUE,
+ /* mismatch failuer msg */ "expected and actual msg 10 differ.",
+ /* read failure msg */ "error reading msg 10.",
+ /* eof failure msg */ "encountered eof in msg 10",
+ /* not last msg failure */ "msg 10 does not end file");
+
+ if ( HDclose(fd) != 0 ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "Unable to close journal file (1).";
+ }
+ }
+ }
+
+ /* Truncate the journal file */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__trunc(&jbrb_struct) != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__trunc failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 13 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write an eoa message */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__eoa(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* eoa */ (haddr_t)0x010203040506)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__eoa failed(3)";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 14 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Start a transaction */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__start_transaction(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)3)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__start_transaction failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 15 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Write a journal entry */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__journal_entry(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)3,
+ /* base address */ (haddr_t)28591,
+ /* data length */ 6,
+ /* data */ (const uint8_t *)"#1nN`}" )
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__journal_entry failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 16 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* End transaction */
+ if ( pass2 ) {
+ if ( H5C2_jb__end_transaction(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* trans number */ (uint64_t)3)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__end_transaction failed (3)";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 17 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Add a comment */
+ if ( pass2 ) {
+ if ( H5C2_jb__comment(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* comment message */ "This is a comment!")
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__comment failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 18 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Add a comment */
+ if ( pass2 ) {
+ if ( H5C2_jb__comment(/* H5C2_jbrb_t */ &jbrb_struct,
+ /* comment message */ "This is another comment!")
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__comment failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 19 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* Flush the journal buffers. */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__flush(/* H5C2_jbrb_t */ &jbrb_struct)
+ != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__flush failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( pass2 ) {
+
+ current_date = time(NULL);
+
+ /* load ascii representation of current_date into time_buf[],
+ * replacing white space with underscores.
+ */
+
+ time_buf[31] = '\0'; /* just to be safe */
+
+ if ( (p = HDctime(&current_date)) == NULL ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "HDctime() failed";
+
+ } else {
+
+ /* copy the string into time_buf, replacing white space with
+ * underscores.
+ *
+ * Do this to make parsing the header easier.
+ */
+ i = 0;
+
+ while ( ( i < 31 ) && ( *p != '\0' ) ) {
+
+ if ( isspace(*p) ) {
+
+ time_buf[i] = '_';
+
+ } else {
+
+ time_buf[i] = *p;
+ }
+
+ i++;
+ p++;
+ }
+
+ time_buf[i] = '\0';
+ }
+ }
+
+ if ( show_progress ) /* 20 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ if ( pass2 ) {
+
+ char expected_header[256];
+ int expected_header_len;
+
+ uint8_t expected_msg_11[] =
+ {
+ /* mssg 11: eoas */
+ /* header: */ 'e', 'o', 'a', 's',
+ /* version: */ 0x00,
+ /* trans num: */ 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00
+ };
+ int expected_msg_11_len = 13;
+
+
+ uint8_t expected_msg_12[] =
+ {
+ /* mssg 12: begin transaction 3 */
+ /* header: */ 'b', 't', 'r', 'n',
+ /* version: */ 0x00,
+ /* trans num: */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ int expected_msg_12_len = 13;
+
+ uint8_t expected_msg_13[] =
+ {
+ /* mssg 13: journal entry */
+ /* header: */ 'j', 'e', 'n', 't',
+ /* version: */ 0x00,
+ /* trans num: */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* base addr: */ 0xaf, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* length: */ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ /* body: */ '#', '1', 'n', 'N', '`', '}',
+ /* chksum: */ 0x6b, 0x60, 0x0d, 0x6d
+ };
+ int expected_msg_13_len = 39;
+
+ uint8_t expected_msg_14[] =
+ {
+ /* mssg 14: end transaction 1 */
+ /* header: */ 'e', 't', 'r', 'n',
+ /* version: */ 0x00,
+ /* trans num: */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ int expected_msg_14_len = 13;
+
+ sprintf(expected_header, "0 ver_num 1 target_file_name HDF5.file journal_magic 123 creation_date %10.10s human_readable 0 offset_width 8 length_width 8\n", time_buf);
+ expected_header_len = HDstrlen(expected_header);
+
+ if ( (fd = HDopen(filename, O_RDONLY, 0777)) == -1 ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "Can't open journal file for test (2).";
+
+ }
+
+ if ( pass2 ) {
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_header,
+ /* expected msg len */ expected_header_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual headers differ.",
+ /* read failure msg */ "error reading header.",
+ /* eof failure msg */ "encountered eof in header msg.",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_11,
+ /* expected msg len */ expected_msg_11_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 11 differ.",
+ /* read failure msg */ "error reading msg 11.",
+ /* eof failure msg */ "encountered eof in msg 11.",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_12,
+ /* expected msg len */ expected_msg_12_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 12 differ.",
+ /* read failure msg */ "error reading msg 12.",
+ /* eof failure msg */ "encountered eof in msg 12",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_13,
+ /* expected msg len */ expected_msg_13_len,
+ /* last_msg */ FALSE,
+ /* mismatch failuer msg */ "expected and actual msg 13 differ.",
+ /* read failure msg */ "error reading msg 13.",
+ /* eof failure msg */ "encountered eof in msg 13",
+ /* not last msg failure */ NULL);
+
+ verify_journal_msg(
+ /* fd */ fd,
+ /* expected_msg */ expected_msg_14,
+ /* expected msg len */ expected_msg_14_len,
+ /* last_msg */ TRUE,
+ /* mismatch failuer msg */ "expected and actual msg 14 differ.",
+ /* read failure msg */ "error reading msg 14.",
+ /* eof failure msg */ "encountered eof in msg 14",
+ /* not last msg failure */ "msg 14 does not end file");
+
+
+ if ( HDclose(fd) != 0 ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "Unable to close journal file (1).";
+ }
+ }
+ }
+
+ /* Truncate the journal file */
+ if ( pass2 ) {
+
+ if ( H5C2_jb__trunc(&jbrb_struct) != SUCCEED ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__trunc failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ /* take down the journal file */
+ if ( pass2 ) {
+
+ if (H5C2_jb__takedown(&jbrb_struct) != SUCCEED) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "H5C2_jb__takedown failed";
+
+ } /* end if */
+
+ } /* end if */
+
+ if ( show_progress ) /* 20 */
+ HDfprintf(stdout, "%s%0d -- pass = %d\n", fcn_name,
+ checkpoint++, (int)pass2);
+
+ /* report pass / failure information */
+ if ( pass2 ) { PASSED(); } else { H5_FAILED(); }
+
+ if ( ! pass2 ) {
+
+ failures2++;
+ HDfprintf(stdout, "%s: failure_mssg2 = \"%s\".\n",
+ fcn_name, failure_mssg2);
+
+ }
+
+ return;
+
+} /* check_binary_message_format() */
+
+
+/***************************************************************************
+ * Function: verify_journal_msg
+ *
+ * Purpose: Verify that the supplied expected journal message is
+ * the next in the message in the indicated journal file.
+ *
+ * Do nothing it the expected message matches the file
+ * contents. If there is a mismatch, set pass2 to false
+ * and set the failure message as specified.
+ *
+ * Exit without any action if pass2 is false on entry.
+ *
+ * Return: void
+ *
+ * Programmer: J Mainzer
+ *
+ * Changes: None.
+ *
+ **************************************************************************/
+
+static void
+verify_journal_msg(int fd,
+ uint8_t expected_msg[],
+ int expected_msg_len,
+ hbool_t last_msg,
+ const char * mismatch_failure_msg,
+ const char * read_failure_msg,
+ const char * eof_failure_msg,
+ const char * not_last_msg_msg)
+{
+ const char * fcn_name = "verify_journal_msg()";
+ hbool_t verbose = TRUE;
+ uint8_t ch;
+ int i = 0;
+ ssize_t ret_val;
+
+ if ( pass2 ) {
+
+ if ( ( fd < 0 ) ||
+ ( expected_msg == NULL ) ||
+ ( expected_msg_len <= 0 ) ||
+ ( mismatch_failure_msg == NULL ) ||
+ ( read_failure_msg == NULL ) ||
+ ( eof_failure_msg == NULL ) ||
+ ( ( last_msg) && ( not_last_msg_msg == NULL ) ) ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = "verify_journal_msg(): Bad params on entry.";
+ }
+ }
+
+ while ( ( pass2 ) && ( i < expected_msg_len ) )
+ {
+ ret_val = read(fd, (void *)(&ch), (size_t)1);
+
+ if ( ret_val == 1 ) {
+
+ if ( ch != expected_msg[i] ) {
+
+ pass2 = FALSE;
+ failure_mssg2 = mismatch_failure_msg;
+ }
+
+ } else if ( ret_val == -1 ) {
+
+ if ( verbose ) {
+
+ HDfprintf(stdout, "%s: read failed with errno = %d (%s).\n",
+ fcn_name, errno, strerror(errno));
+ }
+
+ pass2 = FALSE;
+ failure_mssg2 = mismatch_failure_msg;
+
+ } else if ( ret_val == 0 ) {
+
+ if ( verbose ) {
+
+ HDfprintf(stdout, "%s: unexpected EOF.\n", fcn_name);
+ }
+
+ pass2 = FALSE;
+ failure_mssg2 = eof_failure_msg;
+
+ } else {
+
+ if ( verbose ) {
+
+ HDfprintf(stdout, "%s: read returned unexpected value (%d).\n",
+ fcn_name, (int)ret_val);
+ }
+
+ pass2 = FALSE;
+ failure_mssg2 = "read returned unexpected value.";
+
+ }
+
+ i++;
+
+ }
+
+ if ( ( pass2 ) && ( last_msg ) ) {
+
+ ret_val = read(fd, (void *)(&ch), (size_t)1);
+
+ if ( ret_val != 0 ) {
+
+ if ( verbose ) {
+
+ HDfprintf(stdout, "%s: msg not at eof as expected.\n", fcn_name);
+ }
+
+ pass2 = FALSE;
+ failure_mssg2 = not_last_msg_msg;
+ }
+ }
+
+ return;
+
+} /* verify_journal_msg() */
/***************************************************************************
@@ -11265,8 +12502,13 @@ check_message_format(void)
*
* Programmer: Mike McGreevy <mcgreevy@hdfgroup.org>
* Tuesday, February 26, 2008
+ *
+ * Changes: JRM -- 4/16/09
+ * Updated for the addition of new parameters to
+ * H5C2_jb__init().
*
**************************************************************************/
+
static void
check_legal_calls(void)
{
@@ -11304,6 +12546,10 @@ check_legal_calls(void)
/* Initialize H5C2_jbrb_t structure. This call should SUCCEED. */
if ( pass2 ) {
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
/* journal magic */ 123,
/* HDF5 file name */ HDF5_FILE_NAME,
@@ -11311,7 +12557,9 @@ check_legal_calls(void)
/* Buffer size */ 4000,
/* Number of Buffers */ 3,
/* Use Synchronois I/O */ FALSE,
- /* human readable journal */ TRUE);
+ /* human readable journal */ TRUE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
if ( result != SUCCEED) {
@@ -11764,6 +13012,10 @@ check_legal_calls(void)
*
* Programmer: Mike McGreevy <mcgreevy@hdfgroup.org>
* Tuesday, February 26, 2008
+ *
+ * Changes: JRM -- 4/16/09
+ * Updated for the addition of new parameters to
+ * H5C2_jb__init().
*
**************************************************************************/
static void
@@ -11816,6 +13068,10 @@ check_transaction_tracking(void)
/* Initialize H5C2_jbrb_t structure. */
if ( pass2 ) {
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
/* journal magic */ 123,
/* HDF5 file name */ HDF5_FILE_NAME,
@@ -11823,7 +13079,9 @@ check_transaction_tracking(void)
/* Buffer size */ 250,
/* Number of Buffers */ 4,
/* Use Synchronois I/O */ FALSE,
- /* human readable journal */ TRUE);
+ /* human readable journal */ TRUE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
if ( result != SUCCEED) {
@@ -11958,6 +13216,10 @@ check_transaction_tracking(void)
/* Initialize H5C2_jbrb_t structure. */
if ( pass2 ) {
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
/* journal magic */ 123,
/* HDF5 file name */ HDF5_FILE_NAME,
@@ -11965,7 +13227,9 @@ check_transaction_tracking(void)
/* Buffer size */ 100,
/* Number of Buffers */ 4,
/* Use Synchronois I/O */ FALSE,
- /* human readable journal */ TRUE);
+ /* human readable journal */ TRUE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
if ( result != SUCCEED) {
@@ -12074,6 +13338,10 @@ check_transaction_tracking(void)
/* Initialize H5C2_jbrb_t structure. */
if ( pass2 ) {
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
/* journal_magic */ 123,
/* HDF5 file name */ HDF5_FILE_NAME,
@@ -12081,7 +13349,9 @@ check_transaction_tracking(void)
/* Buffer size */ 30,
/* Number of Buffers */ 10,
/* Use Synchronois I/O */ FALSE,
- /* human readable journal */ TRUE);
+ /* human readable journal */ TRUE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
if ( result != SUCCEED) {
@@ -12227,6 +13497,10 @@ check_transaction_tracking(void)
/* Initialize H5C2_jbrb_t structure. */
if ( pass2 ) {
+ /* Note that the sizeof_addr & sizeof_size parameters are
+ * ignored when human_readable is TRUE.
+ */
+
result = H5C2_jb__init(/* H5C2_jbrb_t */ &jbrb_struct,
/* journal_magic */ 123,
/* HDF5 file name */ HDF5_FILE_NAME,
@@ -12234,7 +13508,9 @@ check_transaction_tracking(void)
/* Buffer size */ 1,
/* Number of Buffers */ 35,
/* Use Synchronois I/O */ FALSE,
- /* human readable journal */ TRUE);
+ /* human readable journal */ TRUE,
+ /* sizeof_addr */ 8,
+ /* sizeof_size */ 8);
if ( result != SUCCEED) {
@@ -12516,23 +13792,42 @@ main(void)
}
+ /* Human readable smoke checks */
#if 1
- mdj_smoke_check_00();
+ mdj_smoke_check_00(TRUE);
#endif
#if 1
- mdj_smoke_check_01();
+ mdj_smoke_check_01(TRUE);
#endif
#if 1
- mdj_smoke_check_02();
+ mdj_smoke_check_02(TRUE);
#endif
#if 1
- mdj_api_example_test();
+ mdj_api_example_test(TRUE);
#endif
+
+
+ /* Binary readable smoke checks */
+#if 1
+ mdj_smoke_check_00(FALSE);
+#endif
+#if 1
+ mdj_smoke_check_01(FALSE);
+#endif
+#if 1
+ mdj_smoke_check_02(FALSE);
+#endif
+#if 1
+ mdj_api_example_test(FALSE);
+#endif
+
+ /* targeted tests */
#if 1
check_buffer_writes();
check_legal_calls();
check_message_format();
check_transaction_tracking();
+ check_binary_message_format();
#endif
#if 1
check_superblock_extensions();
diff --git a/test/testfiles/cache2_journal_bsc00_000.jnl.gz b/test/testfiles/cache2_journal_bsc00_000.jnl.gz
new file mode 100755
index 0000000..f6e9612
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_000.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_001.jnl.gz b/test/testfiles/cache2_journal_bsc00_001.jnl.gz
new file mode 100755
index 0000000..36f79e0
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_001.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_002.jnl.gz b/test/testfiles/cache2_journal_bsc00_002.jnl.gz
new file mode 100755
index 0000000..f044a69
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_002.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_003.jnl.gz b/test/testfiles/cache2_journal_bsc00_003.jnl.gz
new file mode 100755
index 0000000..4305745
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_003.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_004.jnl.gz b/test/testfiles/cache2_journal_bsc00_004.jnl.gz
new file mode 100755
index 0000000..fc99d59
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_004.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_005.jnl.gz b/test/testfiles/cache2_journal_bsc00_005.jnl.gz
new file mode 100755
index 0000000..16e7eb1
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_005.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_006.jnl.gz b/test/testfiles/cache2_journal_bsc00_006.jnl.gz
new file mode 100755
index 0000000..7744ea0
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_006.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_007.jnl.gz b/test/testfiles/cache2_journal_bsc00_007.jnl.gz
new file mode 100755
index 0000000..e1be66b
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_007.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_008.jnl.gz b/test/testfiles/cache2_journal_bsc00_008.jnl.gz
new file mode 100755
index 0000000..d852aad
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_008.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_009.jnl.gz b/test/testfiles/cache2_journal_bsc00_009.jnl.gz
new file mode 100755
index 0000000..2429b98
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_009.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_010.jnl.gz b/test/testfiles/cache2_journal_bsc00_010.jnl.gz
new file mode 100755
index 0000000..b36ba56
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_010.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_011.jnl.gz b/test/testfiles/cache2_journal_bsc00_011.jnl.gz
new file mode 100755
index 0000000..3727caa
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_011.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_012.jnl.gz b/test/testfiles/cache2_journal_bsc00_012.jnl.gz
new file mode 100755
index 0000000..801d55b
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_012.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_013.jnl.gz b/test/testfiles/cache2_journal_bsc00_013.jnl.gz
new file mode 100755
index 0000000..e9212bd
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_013.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_014.jnl.gz b/test/testfiles/cache2_journal_bsc00_014.jnl.gz
new file mode 100755
index 0000000..e19f714
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_014.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_015.jnl.gz b/test/testfiles/cache2_journal_bsc00_015.jnl.gz
new file mode 100755
index 0000000..3a06706
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_015.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_016.jnl.gz b/test/testfiles/cache2_journal_bsc00_016.jnl.gz
new file mode 100755
index 0000000..67ed629
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_016.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_017.jnl.gz b/test/testfiles/cache2_journal_bsc00_017.jnl.gz
new file mode 100755
index 0000000..2cbe6d6
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_017.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc00_018.jnl.gz b/test/testfiles/cache2_journal_bsc00_018.jnl.gz
new file mode 100755
index 0000000..b5aec5c
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc00_018.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc01_000.jnl.gz b/test/testfiles/cache2_journal_bsc01_000.jnl.gz
new file mode 100755
index 0000000..956e8d9
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc01_000.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc01_001.jnl.gz b/test/testfiles/cache2_journal_bsc01_001.jnl.gz
new file mode 100755
index 0000000..0ed6e7f
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc01_001.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc01_002.jnl.gz b/test/testfiles/cache2_journal_bsc01_002.jnl.gz
new file mode 100755
index 0000000..0491c9a
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc01_002.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc01_003.jnl.gz b/test/testfiles/cache2_journal_bsc01_003.jnl.gz
new file mode 100755
index 0000000..74fe661
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc01_003.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc01_004.jnl.gz b/test/testfiles/cache2_journal_bsc01_004.jnl.gz
new file mode 100755
index 0000000..8a70e66
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc01_004.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc02_000.jnl.gz b/test/testfiles/cache2_journal_bsc02_000.jnl.gz
new file mode 100755
index 0000000..3cb36c0
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc02_000.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc02_001.jnl.gz b/test/testfiles/cache2_journal_bsc02_001.jnl.gz
new file mode 100755
index 0000000..63e166f
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc02_001.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc02_002.jnl.gz b/test/testfiles/cache2_journal_bsc02_002.jnl.gz
new file mode 100755
index 0000000..6d993f5
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc02_002.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc02_003.jnl.gz b/test/testfiles/cache2_journal_bsc02_003.jnl.gz
new file mode 100755
index 0000000..6b13820
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc02_003.jnl.gz
Binary files differ
diff --git a/test/testfiles/cache2_journal_bsc02_004.jnl.gz b/test/testfiles/cache2_journal_bsc02_004.jnl.gz
new file mode 100755
index 0000000..cece9d6
--- /dev/null
+++ b/test/testfiles/cache2_journal_bsc02_004.jnl.gz
Binary files differ