summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/dsets.c31
-rw-r--r--test/h5test.c55
-rw-r--r--test/h5test.h1
-rw-r--r--test/stab.c78
-rw-r--r--test/tmisc.c33
-rw-r--r--test/vfd.c33
6 files changed, 91 insertions, 140 deletions
diff --git a/test/dsets.c b/test/dsets.c
index cf6322c..cea9325 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -34,6 +34,7 @@
#define H5Z_PACKAGE
#include "H5Zpkg.h"
+
const char *FILENAME[] = {
"dataset",
"compact_dataset",
@@ -140,6 +141,7 @@ const char *FILENAME[] = {
/* Names for noencoder test */
#ifdef H5_HAVE_FILTER_SZIP
#define NOENCODER_FILENAME "noencoder.h5"
+#define NOENCODER_COPY_FILENAME "noencoder.h5.copy"
#define NOENCODER_TEST_DATASET "noencoder_tdset.h5"
#define NOENCODER_SZIP_DATASET "noencoder_szip_dset.h5"
#define NOENCODER_SZIP_SHUFF_FLETCH_DATASET "noencoder_szip_shuffle_fletcher_dset.h5"
@@ -1696,6 +1698,8 @@ error:
* Monday, June 7, 2004
*
* Modifications:
+ * Make copy of data file since the test writes to the file.
+ * Larry Knox, October 14, 2009
*
*-------------------------------------------------------------------------
*/
@@ -1713,20 +1717,14 @@ test_filter_noencoder(const char *dset_name)
int test_ints[10] = { 12 };
int read_buf[10];
int i;
- char * srcdir = HDgetenv("srcdir"); /* The source directory */
- char testfile[512]=""; /* Buffer to hold name of test file */
-
- /*
- * Create the name of the file to open (in case we are using the --srcdir
- * option and the file is in a different directory from this test).
- */
- if(srcdir && ((HDstrlen(srcdir) + HDstrlen(NOENCODER_FILENAME) + 1) < sizeof(testfile))) {
- HDstrcpy(testfile, srcdir);
- HDstrcat(testfile, "/");
- }
- HDstrcat(testfile, NOENCODER_FILENAME);
-
- file_id = H5Fopen(testfile, H5F_ACC_RDWR, H5P_DEFAULT);
+
+ /* Make a local copy of the file since this test writes to the data file
+ from svn. */
+ if (h5_make_local_copy(NOENCODER_FILENAME, NOENCODER_COPY_FILENAME) < 0)
+ goto error;
+
+ /* Open file */
+ file_id = H5Fopen(NOENCODER_COPY_FILENAME, H5F_ACC_RDWR, H5P_DEFAULT);
if(file_id < 0) goto error;
dset_id = H5Dopen2(file_id, dset_name, H5P_DEFAULT);
@@ -1808,6 +1806,7 @@ error:
H5Pclose(dcpl_id);
if(file_id != -1)
H5Fclose(file_id);
+
return -1;
}
#endif /* H5_HAVE_FILTER_SZIP */
@@ -7439,6 +7438,10 @@ main(void)
if(nerrors)
goto error;
printf("All dataset tests passed.\n");
+#ifdef H5_HAVE_FILTER_SZIP
+ if (GetTestCleanup())
+ HDremove(NOENCODER_COPY_FILENAME);
+#endif /* H5_HAVE_FILTER_SZIP */
h5_cleanup(FILENAME, fapl);
return 0;
diff --git a/test/h5test.c b/test/h5test.c
index 03e857f..a5b50d3 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -71,6 +71,9 @@ char *paraprefix = NULL; /* for command line option para-prefix */
MPI_Info h5_io_info_g=MPI_INFO_NULL;/* MPI INFO object for IO */
#endif
+#define FILENAME_BUF_SIZE 1024
+#define READ_BUF_SIZE 4096
+
/*
* These are the letters that are appended to the file name when generating
* names for the split and multi drivers. They are:
@@ -1088,3 +1091,55 @@ getenv_all(MPI_Comm comm, int root, const char* name)
#endif
+/*-------------------------------------------------------------------------
+ * Function: h5_make_local_copy
+ *
+ * Purpose: Make copy of file. Some tests write to data files under that
+ * are under version control. Those tests should make a copy of
+ * the versioned file and write to the copy. This function
+ * prepends srcdir to the name of the file to be copied and uses
+ * the name of the copy as is.
+ *
+ * Return: Success: 0
+ *
+ * Failure: -1
+ *
+ * Programmer: Larry Knox
+ * Monday, October 13, 2009
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+hid_t
+h5_make_local_copy(char *origfilename, char *local_copy_name)
+{
+ char filename[FILENAME_BUF_SIZE] = "";
+ int fd_old = (-1), fd_new = (-1); /* File descriptors for copying data */
+ ssize_t nread; /* Number of bytes read in */
+ char buf[READ_BUF_SIZE]; /* Buffer for copying data */
+ char * srcdir = HDgetenv("srcdir"); /* The source directory */
+
+ if(srcdir && ((HDstrlen(srcdir) +
+ HDstrlen(origfilename) + 6) < FILENAME_BUF_SIZE)) {
+ HDstrcpy(filename, srcdir);
+ HDstrcat(filename, "/");
+ }
+ HDstrcat(filename, origfilename);
+
+ /* Copy old file into temporary file */
+ if((fd_old = HDopen(filename, O_RDONLY, 0666)) < 0) return -1;
+ if((fd_new = HDopen(local_copy_name, O_RDWR|O_CREAT|O_TRUNC, 0666))
+ < 0) return -1;
+
+ /* Copy data */
+ while((nread = HDread(fd_old, buf, (size_t)READ_BUF_SIZE)) > 0)
+ HDwrite(fd_new, buf, (size_t)nread);
+
+ /* Close files */
+ if(HDclose(fd_old) < 0) return -1;
+ if(HDclose(fd_new) < 0) return -1;
+
+ return 0;
+}
+
diff --git a/test/h5test.h b/test/h5test.h
index e3b3596..315b504 100644
--- a/test/h5test.h
+++ b/test/h5test.h
@@ -152,6 +152,7 @@ H5TEST_DLL void h5_reset(void);
H5TEST_DLL void h5_show_hostname(void);
H5TEST_DLL h5_stat_size_t h5_get_file_size(const char *filename, hid_t fapl);
H5TEST_DLL int print_func(const char *format, ...);
+H5TEST_DLL int h5_make_local_copy(char *origfilename, char *local_copy_name);
/* Routines for operating on the list of tests (for the "all in one" tests) */
H5TEST_DLL void TestUsage(void);
diff --git a/test/stab.c b/test/stab.c
index 319046e..c2655a8 100644
--- a/test/stab.c
+++ b/test/stab.c
@@ -59,6 +59,7 @@ const char *FILENAME[] = {
* for version 1.6. To get this data file, simply compile gen_old_group.c with
* the HDF5 library in that branch and run it. */
#define FILE_OLD_GROUPS "group_old.h5"
+#define FILE_OLD_GROUPS_COPY "group_old.h5.copy"
/* Definitions for 'no_compact' test */
#define NO_COMPACT_TOP_GROUP "top"
@@ -665,45 +666,22 @@ error:
static int
read_old(void)
{
- int fd_old = (-1), fd_new = (-1); /* File descriptors for copying data */
hid_t fid = (-1); /* File ID */
hid_t gid = (-1); /* Group ID */
hid_t gid2 = (-1); /* Group ID */
- char buf[READ_OLD_BUFSIZE]; /* Buffer for copying data */
- ssize_t nread; /* Number of bytes read in */
char objname[NAME_BUF_SIZE]; /* Object name */
unsigned u; /* Local index variable */
- char *srcdir = HDgetenv("srcdir"); /* where the src code is located */
- char filename[512] = ""; /* old test file name */
- char filename2[NAME_BUF_SIZE]; /* copy of old test file */
TESTING("reading old groups");
- /* Generate correct name for test file by prepending the source path */
- if(srcdir && ((HDstrlen(srcdir) + HDstrlen(FILE_OLD_GROUPS) + 1) < sizeof(filename))) {
- HDstrcpy(filename, srcdir);
- HDstrcat(filename, "/");
- }
- HDstrcat(filename, FILE_OLD_GROUPS);
-
- /* Create filename */
- h5_fixname(FILENAME[0], H5P_DEFAULT, filename2, sizeof(filename2));
-
- /* Copy old file into temporary file */
- if((fd_old = HDopen(filename, O_RDONLY, 0666)) < 0) TEST_ERROR
- if((fd_new = HDopen(filename2, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0) TEST_ERROR
-
- /* Copy data */
- while((nread = HDread(fd_old, buf, (size_t)READ_OLD_BUFSIZE)) > 0)
- HDwrite(fd_new, buf, (size_t)nread);
-
- /* Close files */
- if(HDclose(fd_old) < 0) TEST_ERROR
- if(HDclose(fd_new) < 0) TEST_ERROR
+ /* Make a copy of the data file from svn. */
+ if(h5_make_local_copy(FILE_OLD_GROUPS, FILE_OLD_GROUPS_COPY) < 0) TEST_ERROR
+ /* Open copied file */
+ if((fid = H5Fopen(FILE_OLD_GROUPS_COPY, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) TEST_ERROR
/* Open copied file */
- if((fid = H5Fopen(filename2, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((fid = H5Fopen(FILE_OLD_GROUPS_COPY, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) TEST_ERROR
/* Attempt to open "old" group */
if((gid = H5Gopen2(fid, "old", H5P_DEFAULT)) < 0) TEST_ERROR
@@ -1106,46 +1084,13 @@ error:
static int
corrupt_stab_msg(void)
{
- char testfile[512]=""; /* Character buffer for corrected test file name */
- char *srcdir = HDgetenv("srcdir"); /* Pointer to the directory the source code is located within */
- FILE *tmp_fp, *old_fp; /* Pointers to temp & old files */
- void *copy_buf; /* Pointer to buffer for copying data */
- size_t written; /* Amount of data written to new file */
- size_t read_in; /* Amount of data read in from old file */
hid_t fid = (-1); /* File ID */
hid_t did = (-1); /* Dataset ID */
TESTING("corrupt symbol table message");
- /* Generate the correct name for the test file, by prepending the source path */
- if(srcdir && ((HDstrlen(srcdir) + HDstrlen(CORRUPT_STAB_FILE) + 1) < sizeof(testfile))) {
- HDstrcpy(testfile, srcdir);
- HDstrcat(testfile, "/");
- }
- HDstrcat(testfile, CORRUPT_STAB_FILE);
-
- /* Open the temporary file */
- if(NULL == (tmp_fp = HDfopen(CORRUPT_STAB_TMP_FILE,"wb"))) TEST_ERROR
-
- /* Open the old file */
- if(NULL == (old_fp = fopen(testfile,"rb"))) TEST_ERROR
-
- /* Allocate space for the copy buffer */
- if(NULL == (copy_buf = HDmalloc((size_t)CORRUPT_STAB_COPY_BUF_SIZE))) TEST_ERROR
-
- /* Copy data from the old file to the new file */
- while((read_in = HDfread(copy_buf, (size_t)1, (size_t)CORRUPT_STAB_COPY_BUF_SIZE, old_fp)) > 0)
- /* Write the data to the new file */
- if(read_in != (written = HDfwrite(copy_buf, (size_t)1, read_in, tmp_fp))) TEST_ERROR
-
- /* Close the old file */
- if(HDfclose(old_fp)) TEST_ERROR
-
- /* Close the new file */
- if(HDfclose(tmp_fp)) TEST_ERROR
-
- /* Free the copy buffer */
- free(copy_buf);
+ /* Make a copy of the data file from svn. */
+ if(h5_make_local_copy(CORRUPT_STAB_FILE, CORRUPT_STAB_TMP_FILE) < 0) TEST_ERROR
#ifndef H5_STRICT_FORMAT_CHECKS
/* Open temp file through HDF5 library */
@@ -1186,8 +1131,6 @@ corrupt_stab_msg(void)
if(H5Fclose(fid) < 0) TEST_ERROR
#endif /* H5_STRICT_FORMAT_CHECKS */
- /* Remove temporary file */
- if(HDremove(CORRUPT_STAB_TMP_FILE)) TEST_ERROR
PASSED();
@@ -1198,7 +1141,6 @@ error:
H5Dclose(did);
H5Fclose(fid);
} H5E_END_TRY;
- HDremove(CORRUPT_STAB_TMP_FILE);
return 1;
} /* end old_api() */
@@ -1266,6 +1208,10 @@ main(void)
puts("All symbol table tests passed.");
/* Cleanup */
+ if (GetTestCleanup()) {
+ HDremove(FILE_OLD_GROUPS_COPY);
+ HDremove(CORRUPT_STAB_TMP_FILE);
+ }
h5_cleanup(FILENAME, fapl);
return 0;
diff --git a/test/tmisc.c b/test/tmisc.c
index 005e77a..d6c10b0 100644
--- a/test/tmisc.c
+++ b/test/tmisc.c
@@ -32,9 +32,6 @@
#include "testhdf5.h"
#include "H5Dpkg.h" /* Datasets */
-#define NAME_BUF_SIZE 1024
-#define READ_OLD_BUFSIZE 1024
-
/* Definitions for misc. test #1 */
#define MISC1_FILE "tmisc1.h5"
#define MISC1_VAL (13417386) /* 0xccbbaa */
@@ -5136,39 +5133,15 @@ test_misc28(void)
static void
test_misc29(void)
{
- int fd_old = (-1), fd_new = (-1); /* File descriptors for copying data */
- char buf[READ_OLD_BUFSIZE]; /* Buffer for copying data */
- ssize_t nread; /* Number of bytes read in */
- char *srcdir = HDgetenv("srcdir"); /* where the src code is located */
- char filename[NAME_BUF_SIZE] = ""; /* old test file name */
hid_t fid; /* File ID */
herr_t ret; /* Generic return value */
/* Output message about test being performed */
MESSAGE(5, ("Speculative metadata reads\n"));
- /* Generate correct name for test file by prepending the source path */
- if(srcdir && ((HDstrlen(srcdir) + HDstrlen(MISC29_ORIG_FILE) + 1) < sizeof(filename))) {
- HDstrcpy(filename, srcdir);
- HDstrcat(filename, "/");
- } /* end if */
- HDstrcat(filename, MISC29_ORIG_FILE);
-
- /* Copy old file into temporary file */
- fd_old = HDopen(filename, O_RDONLY, 0666);
- CHECK(fd_old, -1, "HDopen");
- fd_new = HDopen(MISC29_COPY_FILE, O_RDWR|O_CREAT|O_TRUNC, 0666);
- CHECK(fd_new, -1, "HDopen");
-
- /* Copy data */
- while((nread = HDread(fd_old, buf, (size_t)READ_OLD_BUFSIZE)) > 0)
- HDwrite(fd_new, buf, (size_t)nread);
-
- /* Close files */
- ret = HDclose(fd_old);
- CHECK(ret, -1, "HDclose");
- ret = HDclose(fd_new);
- CHECK(ret, -1, "HDclose");
+ /* Make a copy of the data file from svn. */
+ ret = h5_make_local_copy(MISC29_ORIG_FILE, MISC29_COPY_FILE);
+ CHECK(ret, -1, "h5_make_local_copy");
/* Open the copied file */
fid = H5Fopen(MISC29_COPY_FILE, H5F_ACC_RDWR, H5P_DEFAULT);
diff --git a/test/vfd.c b/test/vfd.c
index c1de28d..597d18b 100644
--- a/test/vfd.c
+++ b/test/vfd.c
@@ -28,7 +28,6 @@
#define FAMILY_SIZE2 (5*KB)
#define MULTI_SIZE 128
#define CORE_INCREMENT (4*KB)
-#define FILE_COPY_BUF_SIZE 4096
/*Macros for Direct VFD*/
#define MBOUNDARY 512
@@ -809,11 +808,7 @@ test_family_compat(void)
char filename[1024];
char pathname[1024], pathname_individual[1024];
char newname[1024], newname_individual[1024];
- char *srcdir = getenv("srcdir"); /*where the src code is located*/
FILE *tmp_fp, *old_fp; /* Pointers to temp & old files */
- void *copy_buf; /* Pointer to buffer for copying data */
- size_t written; /* Amount of data written to new file */
- size_t read_in; /* Amount of data read in from old file */
int counter = 0;
TESTING("FAMILY file driver backward compatibility");
@@ -828,45 +823,23 @@ test_family_compat(void)
h5_fixname(FILENAME[3], fapl, newname, sizeof newname);
pathname[0] = '\0';
- /* Generate correct name for test file by prepending the source path */
- if(srcdir && ((HDstrlen(srcdir) + HDstrlen(filename) + 1) < sizeof(pathname))) {
- HDstrcpy(pathname, srcdir);
- HDstrcat(pathname, "/");
- }
HDstrcat(pathname, filename);
/* The following code makes the copies of the family files in the source directory.
* Since we're going to open the files with write mode, this protects the original
* files.
*/
- if(NULL == (copy_buf = HDmalloc((size_t)FILE_COPY_BUF_SIZE))) TEST_ERROR
-
sprintf(newname_individual, newname, counter);
sprintf(pathname_individual, pathname, counter);
- /* Open the original files until no more left. Copy the content into the new files. */
- while((old_fp = HDfopen(pathname_individual,"rb"))) {
- /* Open the new file */
- if(NULL == (tmp_fp = fopen(newname_individual,"wb"))) TEST_ERROR
-
- /* Copy data from the old file to the new file */
- while((read_in = HDfread(copy_buf, (size_t)1, (size_t)FILE_COPY_BUF_SIZE, old_fp)) > 0)
- /* Write the data to the new file */
- if(read_in != (written = HDfwrite(copy_buf, (size_t)1, read_in, tmp_fp))) TEST_ERROR
-
- /* Close the old file */
- if(HDfclose(old_fp)) TEST_ERROR
-
- /* Close the new file */
- if(HDfclose(tmp_fp)) TEST_ERROR
-
+ while (h5_make_local_copy(pathname_individual, newname_individual) >= 0) {
counter++;
sprintf(newname_individual, newname, counter);
sprintf(pathname_individual, pathname, counter);
}
- /* Free the copy buffer */
- free(copy_buf);
+ if (old_fp = HDfopen(pathname_individual,"rb")
+ && (tmp_fp = fopen(newname_individual,"wb"))) TEST_ERROR
/* Make sure we can open the file. Use the read and write mode to flush the
* superblock. */