hdf5/testpar/testpar.h
Quincey Koziol 602c716f76 [svn-r22758] Description:
Bring generic improvements from encode/decode property list branch to
the trunk.  This includes a better version of the property list comparison
routine, cleaned up compiler warnings, and some cleaned up property list
callbacks.  Also, started on changes to clean up parallel test output, so that
it doesn't report successful tests from each process.

Tested on:
    Mac OSX/64 10.7.4 (amazon) w/debug, GCC 4.7.x, FORTRAN, C++, threadsafe and parallel
    Linux 2.6/32 (jam) w/debug
    Solaris 2.7/64 (linew) w/debug
2012-09-13 12:08:01 -05:00

103 lines
5.1 KiB
C

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* common definitions used by all parallel test programs. */
#ifndef TESTPAR_H
#define TESTPAR_H
/* Indicate that these are parallel tests, for the testing framework */
#define H5_PARALLEL_TEST
#include "h5test.h"
/* Constants definitions */
#define MAX_ERR_REPORT 10 /* Maximum number of errors reported */
/* Define some handy debugging shorthands, routines, ... */
/* debugging tools */
/* Print message mesg if verbose level is at least medium and
* mesg is not an empty string.
*/
#define MESG(mesg) \
if (VERBOSE_MED && *mesg != '\0') \
printf("%s\n", mesg)
/*
* VRFY: Verify if the condition val is true.
* If it is true, then call MESG to print mesg, depending on the verbose
* level.
* If val is not true, it prints error messages and if the verbose
* level is lower than medium, it calls MPI_Abort to abort the program.
* If verbose level is at least medium, it will not abort.
* This will allow program to continue and can be used for debugging.
* (The "do {...} while(0)" is to group all the statements as one unit.)
*/
#define VRFY(val, mesg) do { \
if (val) { \
MESG(mesg); \
} else { \
printf("Proc %d: ", mpi_rank); \
printf("*** Parallel ERROR ***\n"); \
printf(" VRFY (%s) failed at line %4d in %s\n", \
mesg, (int)__LINE__, __FILE__); \
++nerrors; \
fflush(stdout); \
if (!VERBOSE_MED) { \
printf("aborting MPI processes\n"); \
MPI_Abort(MPI_COMM_WORLD, 1); \
} \
} \
} while(0)
/*
* Checking for information purpose.
* If val is false, print mesg; else nothing.
* Either case, no error setting.
*/
#define INFO(val, mesg) do { \
if (val) { \
MESG(mesg); \
} else { \
printf("Proc %d: ", mpi_rank); \
printf("*** PHDF5 REMARK (not an error) ***\n"); \
printf(" Condition (%s) failed at line %4d in %s\n", \
mesg, (int)__LINE__, __FILE__); \
fflush(stdout); \
} \
} while(0)
#define MPI_BANNER(mesg) do { \
if (VERBOSE_MED || MAINPROCESS){ \
printf("--------------------------------\n"); \
printf("Proc %d: ", mpi_rank); \
printf("*** %s\n", mesg); \
printf("--------------------------------\n"); \
} \
} while(0)
#define MAINPROCESS (!mpi_rank) /* define process 0 as main process */
#define SYNC(comm) do { \
MPI_BANNER("doing a SYNC"); \
MPI_Barrier(comm); \
MPI_BANNER("SYNC DONE"); \
} while(0)
/* End of Define some handy debugging shorthands, routines, ... */
#endif /* TESTPAR_H */