From 140c62d25d930cdbdacaa337d254a2471875a4be Mon Sep 17 00:00:00 2001 From: Mark Isaacson Date: Wed, 25 Nov 2015 11:38:54 -0800 Subject: [PATCH] Make folly's T_CHECK_TIMEOUT/T_CHECK_TIME_LT use SKIP() on failure Summary: Make these more spurious failure-aware/tolerant. Reviewed By: yfeldblum Differential Revision: D2689775 fb-gh-sync-id: 1a9b247b97cc3529b12f6f7b76a4af2e32822d45 --- folly/io/async/test/Util.h | 21 +++++++++++++-------- folly/test/TestUtils.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 folly/test/TestUtils.h diff --git a/folly/io/async/test/Util.h b/folly/io/async/test/Util.h index e0b7360e..8f54274d 100644 --- a/folly/io/async/test/Util.h +++ b/folly/io/async/test/Util.h @@ -19,6 +19,7 @@ #pragma once #include +#include #include /** @@ -36,10 +37,12 @@ * @param expectedMS The timeout duration, in milliseconds * @param tolerance The tolerance, in milliseconds. */ -#define T_CHECK_TIMEOUT(start, end, expectedMS, ...) \ - EXPECT_TRUE(::folly::checkTimeout((start), (end), \ - (expectedMS), false, \ - ##__VA_ARGS__)) +#define T_CHECK_TIMEOUT(start, end, expectedMS, ...) \ + if (!::folly::checkTimeout((start), (end), \ + (expectedMS), false, \ + ##__VA_ARGS__)) { \ + SKIP() << "T_CHECK_TIMEOUT lapsed"; \ + } /** * Verify that an event took less than a specified amount of time. @@ -47,7 +50,9 @@ * This is similar to T_CHECK_TIMEOUT, but does not fail if the event took less * than the allowed time. */ -#define T_CHECK_TIME_LT(start, end, expectedMS, ...) \ - EXPECT_TRUE(::folly::checkTimeout((start), (end), \ - (expectedMS), true, \ - ##__VA_ARGS__)) +#define T_CHECK_TIME_LT(start, end, expectedMS, ...) \ + if (!::folly::checkTimeout((start), (end), \ + (expectedMS), true, \ + ##__VA_ARGS__)) { \ + SKIP() << "T_CHECK_TIMEOUT_LT lapsed"; \ + } diff --git a/folly/test/TestUtils.h b/folly/test/TestUtils.h new file mode 100644 index 00000000..bbb16b82 --- /dev/null +++ b/folly/test/TestUtils.h @@ -0,0 +1,29 @@ +/* + * Copyright 2015 Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FOLLY_TESTUTILS_H +#define FOLLY_TESTUTILS_H + +#include + +// We use this to indicate that tests have failed because of timing +// or dependencies that may be flakey. Internally this is used by +// our test runner to retry the test. To gtest this will look like +// a normal test failure; there is only an effect if the test framework +// interprets the message. +#define SKIP() GTEST_FATAL_FAILURE_("Test skipped by client") + +#endif // FOLLY_TESTUTILS_H -- 2.34.1