diff options
Diffstat (limited to 'src/lib/util/unittests/check_valgrind.h')
-rw-r--r-- | src/lib/util/unittests/check_valgrind.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/lib/util/unittests/check_valgrind.h b/src/lib/util/unittests/check_valgrind.h new file mode 100644 index 0000000..0abe39f --- /dev/null +++ b/src/lib/util/unittests/check_valgrind.h @@ -0,0 +1,45 @@ +// Copyright (C) 2012-2015 Internet Systems Consortium, Inc. ("ISC") +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +// +// If we have the valgrind headers available, we can detect whether +// valgrind is running. This should normally never be done, as you +// want the to test the actual code in operation with valgrind. +// +// However, there is a limited set of operations where we want to +// skip some tests if run under valgrind, most notably the +// EXPECT_DEATH tests, as these would report memory leaks by +// definition. +// +// If the valgrind headers are NOT available, the method checkValgrind() +// always returns false; i.e. it always pretends the program is run +// natively +// + +#ifndef UTIL_UNITTESTS_CHECK_VALGRIND_H +#define UTIL_UNITTESTS_CHECK_VALGRIND_H 1 + +namespace isc { +namespace util { +namespace unittests { + +/// \brief Check if the program is run in valgrind +/// +/// This is used to check for valgrind and skip (parts of) tests that fork, +/// such as death tests, and general forking tests, and some threading tests; +/// These tend to cause valgrind to report errors, which would hide other +/// potential valgrind reports. +/// +/// \return true if valgrind headers are available, and valgrind is running, +/// false if the headers are not available, or if valgrind is not +/// running +bool runningOnValgrind(); + +} // end namespace unittests +} // end namespace util +} // end namespace isc + +#endif // UTIL_UNITTESTS_CHECK_VALGRIND_H |