Make folly's T_CHECK_TIMEOUT/T_CHECK_TIME_LT use SKIP() on failure
authorMark Isaacson <markisaa@fb.com>
Wed, 25 Nov 2015 19:38:54 +0000 (11:38 -0800)
committerfacebook-github-bot-0 <folly-bot@fb.com>
Wed, 25 Nov 2015 20:20:22 +0000 (12:20 -0800)
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
folly/test/TestUtils.h [new file with mode: 0644]

index e0b7360e64681a0da1d15bc613e0275af98d0d88..8f54274de4e4007ae7e9602211bf4f227b661519 100644 (file)
@@ -19,6 +19,7 @@
 #pragma once
 
 #include <folly/io/async/test/TimeUtil.h>
+#include <folly/test/TestUtils.h>
 #include <gtest/gtest.h>
 
 /**
  * @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 (file)
index 0000000..bbb16b8
--- /dev/null
@@ -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 <gtest/gtest.h>
+
+// 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