2 * Copyright 2017 Facebook, Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <folly/Range.h>
22 #include <folly/portability/GTest.h>
24 // We use this to indicate that tests have failed because of timing
25 // or dependencies that may be flakey. Internally this is used by
26 // our test runner to retry the test. To gtest this will look like
27 // a normal test failure; there is only an effect if the test framework
28 // interprets the message.
29 #define SKIP() GTEST_FATAL_FAILURE_("Test skipped by client")
34 template <typename T1, typename T2>
35 ::testing::AssertionResult
36 AreWithinSecs(T1 val1, T2 val2, std::chrono::seconds acceptableDeltaSecs) {
38 std::chrono::duration_cast<std::chrono::seconds>(val1 - val2);
39 if (deltaSecs <= acceptableDeltaSecs &&
40 deltaSecs >= -1 * acceptableDeltaSecs) {
41 return ::testing::AssertionSuccess();
43 return ::testing::AssertionFailure()
44 << val1.count() << " and " << val2.count() << " are not within "
45 << acceptableDeltaSecs.count() << " secs of each other";
50 // Define a PrintTo() function for StringPiece, so that gtest checks
51 // will print it as a string. Without this gtest identifies StringPiece as a
52 // container type, and therefore tries printing its elements individually,
53 // despite the fact that there is an ostream operator<<() defined for
55 inline void PrintTo(StringPiece sp, ::std::ostream* os) {
56 // gtest's PrintToString() function will quote the string and escape internal
57 // quotes and non-printable characters, the same way gtest does for the
58 // standard string types.
59 *os << ::testing::PrintToString(sp.str());