From 465f9be6e3f818d20c650976a14d7698063cad00 Mon Sep 17 00:00:00 2001 From: Albert Cheng Date: Mon, 19 Sep 2005 15:32:18 -0500 Subject: [svn-r11441] Purpose: Feature. Description: Added ALARM_ON, ALARM_OFF feature to terminate tests that run more than the default time limit. So far, the feature is applied in the standard test frame. Platforms tested: heping PP. --- test/h5test.c | 14 +++++++------- test/h5test.h | 9 +++++++++ test/testframe.c | 4 +++- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/test/h5test.c b/test/h5test.c index c582442..e2caea9 100644 --- a/test/h5test.c +++ b/test/h5test.c @@ -89,7 +89,7 @@ MPI_Info h5_io_info_g=MPI_INFO_NULL;/* MPI INFO object for IO */ */ static const char *multi_letters = "msbrglo"; -static herr_t h5_errors(hid_t err_stack, void *client_data); +static herr_t h5_errors(void *client_data); /*------------------------------------------------------------------------- @@ -109,11 +109,10 @@ static herr_t h5_errors(hid_t err_stack, void *client_data); *------------------------------------------------------------------------- */ static herr_t -h5_errors(hid_t err_stack, void UNUSED *client_data) +h5_errors(void UNUSED *client_data) { H5_FAILED(); - H5Eprint_stack(err_stack, stdout); - + H5Eprint(stdout); return 0; } @@ -215,8 +214,7 @@ h5_reset(void) HDfflush(stdout); HDfflush(stderr); H5close(); - - H5Eset_auto_stack(H5E_DEFAULT, h5_errors, NULL); + H5Eset_auto(h5_errors, NULL); /* * Cause the library to emit some diagnostics early so they don't @@ -625,10 +623,12 @@ h5_show_hostname(void) } else printf(" hostname=%s\n", hostname); +#else + printf(" gethostname not supported\n"); +#endif #ifdef WIN32 WSACleanup(); #endif -#endif } diff --git a/test/h5test.h b/test/h5test.h index 7aa585e..be5e769 100644 --- a/test/h5test.h +++ b/test/h5test.h @@ -107,6 +107,15 @@ extern MPI_Info h5_io_info_g; /* MPI INFO object for IO */ #define FAIL_STACK_ERROR {H5_FAILED(); AT(); \ H5Eprint_stack(H5E_DEFAULT, stdout); goto error;} +/* + * Alarm definitions to wait up (terminate) a test that runs too long. + */ +#define alarm_seconds 1200 /* default is 20 minutes */ +#define ALARM_ON HDalarm(alarm_seconds) +#define ALARM_OFF HDalarm(0) +/* set alarms to N seconds if N > 0, else use default alarm_seconds. */ +#define ALARM_SET(N) HDalarm((N)>0 ? N : alarm_seconds) + #ifdef __cplusplus extern "C" { #endif diff --git a/test/testframe.c b/test/testframe.c index 45992a0..4478cb4 100644 --- a/test/testframe.c +++ b/test/testframe.c @@ -133,7 +133,7 @@ void TestInit(const char *ProgName, void (*private_usage)(void), int (*private_p * half the functions this test calls are private, so automatic error * reporting wouldn't do much good since it's triggered at the API layer. */ - H5Eset_auto_stack(H5E_DEFAULT, NULL, NULL); + H5Eset_auto(NULL, NULL); /* * Record the program name and private routines if provided. @@ -298,7 +298,9 @@ void PerformTests(void) MESSAGE(5, ("===============================================\n")); Test[Loop].NumErrors = num_errs; Test_parameters = Test[Loop].Parameters; + ALARM_ON; Test[Loop].Call(); + ALARM_OFF; Test[Loop].NumErrors = num_errs - Test[Loop].NumErrors; MESSAGE(5, ("===============================================\n")); MESSAGE(5, ("There were %d errors detected.\n\n", (int)Test[Loop].NumErrors)); -- cgit v0.12