summaryrefslogtreecommitdiffstats
path: root/testpar/testphdf5.c
diff options
context:
space:
mode:
Diffstat (limited to 'testpar/testphdf5.c')
-rw-r--r--testpar/testphdf5.c72
1 files changed, 62 insertions, 10 deletions
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c
index a24e0df..cdadb7b 100644
--- a/testpar/testphdf5.c
+++ b/testpar/testphdf5.c
@@ -9,6 +9,15 @@
/* global variables */
int nerrors = 0; /* errors count */
int verbose = 0; /* verbose, default as no. */
+
+#ifdef POOMA_ARCH
+char *fileprefix = "pfs:/pfs/multi/tmp_1/your_own";
+int fileprefixlen = 29;
+#else
+char *fileprefix = NULL; /* file prefix, default as NULL */
+int fileprefixlen = 0; /* file prefix length, default as 0 */
+#endif
+
herr_t (*old_func)(void*); /* previous error handler */
void *old_client_data; /* previous error handler arg.*/
@@ -69,10 +78,11 @@ void pause_proc(MPI_Comm comm, int argc, char **argv)
void
usage()
{
- printf("Usage: testphdf5 [-r] [-w] [-v]\n");
- printf("\t-r\tno read\n");
- printf("\t-w\tno write\n");
- printf("\t-v\tverbose on\n");
+ printf("Usage: testphdf5 [-r] [-w] [-v] [-f <prefix>]\n");
+ printf("\t-f <prefix>\tfilename prefix\n");
+ printf("\t-r\t\tno read\n");
+ printf("\t-w\t\tno write\n");
+ printf("\t-v\t\tverbose on\n");
printf("\tdefault do write then read\n");
printf("\n");
}
@@ -94,6 +104,36 @@ parse_options(int argc, char **argv){
break;
case 'v': verbose = 1;
break;
+ case 'f': if (--argc <= 0) {
+ nerrors++;
+ return(1);
+ } else if (**(++argv) == '-') {
+ nerrors++;
+ return(1);
+ } else if (**(argv) == '"') {
+ fileprefixlen = strlen(*(argv)+1)-1;
+ fileprefix = (char *)HDmalloc(fileprefixlen+1);
+ if (!fileprefix) {
+ printf("%s\n","memory allocation failed");
+ nerrors++;
+ return(1);
+ }
+ fileprefix = strncpy(fileprefix,*(argv)+1,fileprefixlen);
+ } else {
+ fileprefixlen = strlen(*(argv));
+ fileprefix = (char *)HDmalloc(fileprefixlen+1);
+ if (!fileprefix) {
+ printf("%s\n","memory allocation failed");
+ nerrors++;
+ return(1);
+ }
+ fileprefix = strncpy(fileprefix,*(argv),fileprefixlen);
+ }
+ if (fileprefixlen < 5) {
+ nerrors++;
+ return(1);
+ }
+ break;
default: usage();
nerrors++;
return(1);
@@ -106,17 +146,13 @@ parse_options(int argc, char **argv){
main(int argc, char **argv)
{
-#ifdef POOMA_ARCH
- char *filenames[]={ "pfs:/pfs/multi/tmp_1/your_own/ParaEg1.h5f",
- "pfs:/pfs/multi/tmp_1/your_own/ParaEg2.h5f",
- "pfs:/pfs/multi/tmp_1/your_own/ParaEg3.h5f" };
-#else
char *filenames[]={ "ParaEg1.h5f",
"ParaEg2.h5f",
"ParaEg3.h5f" };
-#endif
int mpi_size, mpi_rank; /* mpi variables */
+ int i;
+ char *tmpptr;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
@@ -144,6 +180,22 @@ main(int argc, char **argv)
if (parse_options(argc, argv) != 0)
goto finish;
+ if (fileprefix != NULL) {
+ for (i=0;i<3;i++) {
+ tmpptr = filenames[i];
+ filenames[i] = (char *)HDmalloc ( fileprefixlen + strlen(tmpptr) + 2);
+ if (!filenames[i]) {
+ printf("%s\n","memory allocation failed");
+ nerrors++;
+ goto finish;
+ }
+ filenames[i] = strcpy(filenames[i],fileprefix);
+ if (fileprefix[fileprefixlen-1] != '/') filenames[i] = strcat(filenames[i],"/");
+ filenames[i] = strcat(filenames[i],tmpptr);
+ H5MM_xfree(tmpptr);
+ }
+ }
+
if (dowrite){
MPI_BANNER("testing dataset using split communicators...");
test_split_comm_access(filenames);