source: tags/ms_r16q2/UNIT_TESTER/UnitTester.hxx

Last change on this file was 12220, checked in by westram, 10 years ago

running unit tests of multiple WCs in parallel need an unreasonable amount of time to complete,
resulting in getting killed by 'deadlockguard'. Increase time for 'slow' tests from 30 to 45 min.

Reason for runtime is unknown; i guess it is somehow caused by tcp/pipe communication.

File size: 2.8 KB
Line 
1// ================================================================ //
2//                                                                  //
3//   File      : UnitTester.hxx                                     //
4//   Purpose   : unit testing - test one unit                       //
5//                                                                  //
6//   Coded by Ralf Westram (coder@reallysoft.de) in February 2010   //
7//   Institute of Microbiology (Technical University Munich)        //
8//   http://www.arb-home.de/                                        //
9//                                                                  //
10// ================================================================ //
11
12#ifndef UNITTESTER_HXX
13#define UNITTESTER_HXX
14
15#ifndef _GLIBCXX_CSTDLIB
16#include <cstdlib>
17#endif
18#ifndef _GLIBCXX_CSTDIO
19#include <cstdio>
20#endif
21
22typedef void (*UnitTest_function)();
23
24enum UnitTestResult {
25    TEST_OK,
26    TEST_TRAPPED,
27    TEST_FAILED_POSTCONDITION,
28    TEST_INTERRUPTED, 
29    TEST_THREW,
30    TEST_INVALID,
31    TEST_UNKNOWN_RESULT,
32};
33
34struct UnitTest_simple {
35    UnitTest_function  fun;
36    const char        *name;
37    const char        *location;
38
39    void print_error(FILE *out, UnitTestResult result) const;
40};
41
42struct UnitTester {
43    UnitTester(const char *libname, const UnitTest_simple *simple_tests, int warn_level, size_t skippedTests, const UnitTest_simple *postcond) __attribute__((noreturn));
44};
45
46UnitTestResult execute_guarded(UnitTest_function fun, long *duration_usec, long max_allowed_duration_ms, bool detect_environment_calls);
47void sleepms(long ms);
48
49// ------------------------------
50//      execution time limits
51
52const long SECONDS = 1000;
53const long MINUTES = 60*SECONDS;
54
55#if defined(DEVEL_RALF)
56
57const long MAX_EXEC_MS_NORMAL = 12 * SECONDS;       // kill with segfault after time passed
58const long MAX_EXEC_MS_SLOW   = 60 * SECONDS;       // same for slow tests
59const long MAX_EXEC_MS_ENV    = 80 * SECONDS;       // same for environment setup/cleanup
60const long MAX_EXEC_MS_VGSYS  = 140 * SECONDS;      // same for valgrinded system calls (especially pt_server)
61
62const long WARN_SLOW_ABOVE_MS = 1 * SECONDS;        // when too warn about slow test
63
64#else // !defined(DEVEL_RALF)
65
66// these are temporary test-timings to avoid test timeouts on jenkins build server
67
68const long MAX_EXEC_MS_NORMAL = 30 * MINUTES;       // kill with segfault after time passed
69const long MAX_EXEC_MS_SLOW   = 45 * MINUTES;       // same for slow tests
70const long MAX_EXEC_MS_ENV    = 45 * MINUTES;       // same for environment setup/cleanup
71const long MAX_EXEC_MS_VGSYS  = 45 * MINUTES;       // same for valgrinded system calls (especially pt_server)
72const long WARN_SLOW_ABOVE_MS = 30 * MINUTES;       // when too warn about slow test
73
74#endif
75
76#define FLAGS_DIR "flags"
77#define FLAGS_EXT "flag"
78
79#else
80#error UnitTester.hxx included twice
81#endif // UNITTESTER_HXX
Note: See TracBrowser for help on using the repository browser.