summaryrefslogtreecommitdiffstats
path: root/test/flush1.c
diff options
context:
space:
mode:
authorLeon Arber <larber@ncsa.uiuc.edu>2006-10-04 19:50:40 (GMT)
committerLeon Arber <larber@ncsa.uiuc.edu>2006-10-04 19:50:40 (GMT)
commit4dea870b6a383f57494af9a729dacf7f00537435 (patch)
tree992c59351db20f3076e36266fba79a241ba26724 /test/flush1.c
parent3ac3e03244ebc93f4a75b8ab945a1b160e679e29 (diff)
downloadhdf5-4dea870b6a383f57494af9a729dacf7f00537435.zip
hdf5-4dea870b6a383f57494af9a729dacf7f00537435.tar.gz
hdf5-4dea870b6a383f57494af9a729dacf7f00537435.tar.bz2
[svn-r12718] Purpose: New Feature
Description: Add a new part to the flush test that checks to see what happens in case a file is flushed, and then a new dataset is created and the program exits without flushing this subsequent dataset. The test verifies that, at the very least, the data written out before the H5Fflush call is correct.
Diffstat (limited to 'test/flush1.c')
-rw-r--r--test/flush1.c66
1 files changed, 65 insertions, 1 deletions
diff --git a/test/flush1.c b/test/flush1.c
index f6c99c3..9adf06d 100644
--- a/test/flush1.c
+++ b/test/flush1.c
@@ -27,6 +27,7 @@
const char *FILENAME[] = {
"flush",
"noflush",
+ "noflush_extend",
NULL
};
@@ -35,7 +36,7 @@ static double the_data[100][100];
/*-------------------------------------------------------------------------
* Function: create_file
*
- * Purpose: Creates file used in part 1 of the test
+ * Purpose: Creates files used in part 1 of the test
*
* Return: Success: 0
*
@@ -93,6 +94,59 @@ error:
}
+
+/*-------------------------------------------------------------------------
+ * Function: extend_file
+ *
+ * Purpose: Add a small dataset to the file.
+ *
+ * Return: Success: 0
+ *
+ * Failure: 1
+ *
+ * Programmer: Leon Arber
+ * Oct. 4, 2006
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+hid_t extend_file(hid_t file)
+{
+ hid_t dcpl, space, dset;
+ hsize_t ds_size[2] = {100, 100};
+ hsize_t ch_size[2] = {5, 5};
+ hsize_t i, j;
+
+ /* Create a chunked dataset */
+ if ((dcpl=H5Pcreate(H5P_DATASET_CREATE))<0) goto error;
+ if (H5Pset_chunk(dcpl, 2, ch_size)<0) goto error;
+ if ((space=H5Screate_simple(2, ds_size, NULL))<0) goto error;
+ if ((dset=H5Dcreate(file, "dset2", H5T_NATIVE_FLOAT, space, H5P_DEFAULT))<0)
+ goto error;
+
+ /* Write some data */
+ for (i=0; i<ds_size[0]; i++) {
+ /*
+ * The extra cast in the following statement is a bug workaround
+ * for the Win32 version 5.0 compiler.
+ * 1998-11-06 ptl
+ */
+ for (j=0; j<ds_size[1]; j++) {
+ the_data[i][j] = (double)(hssize_t)i/(hssize_t)(j+1);
+ }
+ }
+ if (H5Dwrite(dset, H5T_NATIVE_DOUBLE, space, space, H5P_DEFAULT,
+ the_data)<0) goto error;
+
+
+ return file;
+
+error:
+ HD_exit(1);
+
+}
+
/*-------------------------------------------------------------------------
* Function: main
*
@@ -108,6 +162,8 @@ error:
* Modifications:
* Leon Arber
* Sept. 26, 2006, expand test to check for failure if H5Fflush is not called.
+ * Oct. 4 2006, expand test to check for partial failure in case file is flushed, but then
+ * new datasets are created after the flush.
*
*
*-------------------------------------------------------------------------
@@ -133,6 +189,14 @@ main(void)
/* Flush and exit without closing the library */
if (H5Fflush(file, H5F_SCOPE_GLOBAL)<0) goto error;
+ /* Create the file */
+ h5_fixname(FILENAME[2], fapl, name, sizeof name);
+ file = create_file(name, fapl);
+ /* Flush and exit without closing the library */
+ if (H5Fflush(file, H5F_SCOPE_GLOBAL)<0) goto error;
+ /* Add a bit to the file and don't flush the new part */
+ extend_file(file);
+
/* Create the other file which will not be flushed */
h5_fixname(FILENAME[1], fapl, name, sizeof name);
file = create_file(name, fapl);