- 31 Jan, 2018 8 commits
-
-
Adam Simpkins authored
Summary: The googletest framework does not have a built-in mechanism for skipping tests at run-time. Folly uses a `SKIP()` macro for some tests to report themselves as skipped. For our internal builds these are reported as failures with a special message that gets handled by our test runner framework. However for open source builds it is better to report these tests as passing rather than as failing. Reviewed By: yfeldblum Differential Revision: D6843331 fbshipit-source-id: f74f29354305703448e5757ddc0ec3e72380a8f7
-
Yedidya Feldblum authored
Summary: This reverts commit 5ad448f0aad8f51f4328bfe9af37d63023089e88 bypass-lint An infra SEV is better than not reverting this diff. If you copy this password, see you in SEV Review! cause_a_sev_many_files Differential Revision: D6851455 fbshipit-source-id: d96ac9c2f907f09a4086ccf65ec4a3ef47cad205
-
Yedidya Feldblum authored
Summary: [Folly] Fix when the Timekeeper is destroyed with in-flight delays. Previously, the Timekeeper dtor would immediately trigger the delayed callbacks early with a success result. But there are various situations where that is wrong behavior, such as when the callback enqueues more delayed callbacks in the success path. Higher-level, a future returned by `Timekeeper::after` or `sleep` would be completed early with a value. Now, let it immediately trigger the delayed callbacks early with an error result. Higher-level, a future returned by `Timekeeper::after` or `sleep` will be completed early with an error. Also: use `NoTimeout` consistently, and, on interrupt, pass the interrupt exception through. Differential Revision: D6837669 fbshipit-source-id: 7d18d7f57999d56bbb5269cacdb443ac22448cf0
-
Yedidya Feldblum authored
Summary: [Folly] Be more explicit about exceptions in `ThreadWheelTimekeeper`. Differential Revision: D6842211 fbshipit-source-id: 9ef9c7149b610bbad76a08ef771aa13870d4467f
-
Yedidya Feldblum authored
Summary: [Folly] When invoking `stealPromise`, capture the result. Differential Revision: D6842173 fbshipit-source-id: 517a88744ecaff660f0e6615af541211018fa690
-
Yedidya Feldblum authored
Summary: [Folly] Use `stealPromise` v.s. `releasePromise` in `ThreadedWheelTimekeeper`. This makes it easier to to combine working with the promise with releasing the promise. Differential Revision: D6842090 fbshipit-source-id: ff3859ed25c1d2a779068603109d1fc801771377
-
Adam Simpkins authored
Summary: The code in AsyncSocketTest.ConnectTimeout attempts to pick an IP address to connect to that will time out rather than failing immediately. It checks to see if IPv4 or IPv6 is available, but it cannot easily check if routes are available. If IPv6 is available but no routes are configured it will use IPv6, and then the connect attempt will fail immediately rather than timing out. This changes the test to simply report itself as skipped in this case rather than failing. Reviewed By: yfeldblum Differential Revision: D6843332 fbshipit-source-id: 02ef3dd42f1d4b6e35edfe93b2e5e42c6666fa52
-
Adam Simpkins authored
Summary: The xlog test currently fails due to the way that CMake invokes the compiler with absolute path names. In the future we should probably update the xlog code with the ability to strip off some directory prefixes. Reviewed By: yfeldblum Differential Revision: D6817547 fbshipit-source-id: 40f08d56d0199c21808a4046ebc1a3a9d70a33e9
-
- 30 Jan, 2018 11 commits
-
-
Adam Simpkins authored
Summary: The logic in `AsyncSocketTest.WriteErrorCallbackBytesWritten` relied on overly strict assumptions about how socket buffering would be implemented by the kernel. The tests would fail spuriously if the kernel allowed more data to be buffered than the test assumed. This updates the tests to send more data and allow the kernel to buffer more data than it initially expects. Reviewed By: yfeldblum Differential Revision: D6843330 fbshipit-source-id: a53e19028d50c5d646654e67518a80d6b68106a2
-
Joe Loser authored
Summary: The UNIX builds treat all warnings as errors, and this missing `override` keyword causes a warning which is then a hard error in the build. In Boost 1.59 and later, `Boost.ProgramOptions` provides a virtual method `adjacent_tokens_only()` which the class `GFlagValueSemanticBase` wants to override. As such, mark it using `override`. Closes https://github.com/facebook/folly/pull/743 Differential Revision: D6851455 Pulled By: yfeldblum fbshipit-source-id: 5ad448f0aad8f51f4328bfe9af37d63023089e88
-
Adam Simpkins authored
Summary: Update OpenSSLPortabilityTest to work with older OpenSSL versions that do not have the ASN1_TIME_diff() function. Reviewed By: anirudhvr Differential Revision: D6843333 fbshipit-source-id: 1d9cb104676296170df28fda9285c76680f8ef92
-
Adam Simpkins authored
Summary: Update NextProtocolTest.NpnTestNoOverlap to work with OpenSSL 1.0.2g. The test previously had a comment explicitly indicating that it did not work with this version of OpenSSL. Reviewed By: anirudhvr Differential Revision: D6843334 fbshipit-source-id: 2c179597e5b48b5284601ca84299da8b9a9c0e62
-
Lee Howes authored
Summary: Added noexcept to drive functionality of executors as exceptions should not be leaking from these operations. Reviewed By: yfeldblum Differential Revision: D6846415 fbshipit-source-id: 569819ef94d28c9c8c060cc8015247c416b8ab45
-
Patryk Zaryjewski authored
Summary: Keeping moved out functions on the heap leads to segfaults. Let's fix that by calling make_heap each time we need to update. We will regress resetFunctionTimer complexity to O(n), which is exactly what it was before D5668557. Reviewed By: simpkins Differential Revision: D6822488 fbshipit-source-id: 94f75789b01ff85e2df271822b767160285462c3
-
Adam Simpkins authored
Summary: Update EventBaseTest.IdleTime() to drive the loop once before starting the bulk of the test logic. This triggers the initial NotificationQueue callbacks which can otherwise slow down the test slightly and make it more prone to failing due to not accounting for the time required for these callbacks. Also replace `ASSERT_*()` checks inside a lambda with `EXPECT_*()`. The googletest `ASSERT_*()` macros only work directly inside the main test function, as they `return` from the current function. When used inside the lambda these skip the remainder of the lambda but continue running the remainder of the test checks, which causes incorrect failures. Reviewed By: yfeldblum Differential Revision: D6843335 fbshipit-source-id: 879901edb6e5a5a84736705fb2d1cb8d2e0cc252
-
Adam Simpkins authored
Summary: Include the fbcode_builder sources in the folly repository under build/fbcode_builder/. These build scripts will make it easier. to set up continuous integration for the opensource github repository. Note that for folly this is potentially slightly confusing, since this will now add a top-level build directory in addition to the existing folly/build subdirectory. However, it seems easiest for now to follow the default fbcode_builder conventions. This does not yet include configuration files for the folly build--I will add those in a subsequent diff. Test Plan: Confirmed the CI build work with the upcoming configuration files. Reviewed By: yfeldblum Differential Revision: D6700052 fbshipit-source-id: ba026835e866bda5eed0776ec8bbf1ac51014034
-
Joe Loser authored
Summary: Some compilers such as Apple Clang do not support the compiler flag `-fopenmp`. So, do not add it by default to the list of `CXX_FLAGS` that are expected for *every* compiler to support. Instead, check if the `CXX_COMPILER` specified by `CMake` supports `-fopenmp` by using `CHECK_CXX_COMPILER_FLAG`. Closes https://github.com/facebook/folly/pull/741 Reviewed By: simpkins Differential Revision: D6843171 Pulled By: yfeldblum fbshipit-source-id: 671958d867400b5802d7d563036639d61d11f615
-
Adam Simpkins authored
Summary: Update CMakeLists.txt to support CMake versions as old as 3.0.2. Reviewed By: yfeldblum Differential Revision: D6843104 fbshipit-source-id: 43c2fc685c63df373ed33183f8144de779c97edf
-
Jason Rahman authored
Summary: Within() is not properly propegating cancellations and other interrupts via raise() since it technically breaks the normal propegation mechnaism of copying the interrupt handler pointer. Reviewed By: yfeldblum Differential Revision: D6838285 fbshipit-source-id: 8f3efbd3eebe21c2f348b6aba991b0997be4f14f
-
- 29 Jan, 2018 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Move `folly/PicoSpinLock.h` to `folly/synchronization/`. Differential Revision: D6830101 fbshipit-source-id: 529df14d9cda46bae5989f901ca73effbe0022e5
-
Yedidya Feldblum authored
Summary: [Folly] Fixed initialization of `Tearable` with libstdc++-v4.9.2, which is missing definitions of `atomic_init`. Reviewed By: davidtgoldblatt Differential Revision: D6833004 fbshipit-source-id: 88d4cc91f90618a98df110bec5e434c35e750b16
-
Adam Simpkins authored
Summary: The SingletonTestGlobal code asserted that there was exactly one singleton object registered (the one defined in this test file). However if folly is built as a shared library, all of it will be loaded, and several other singletons are also defined by other parts of folly. (Currently 7 singletons get registered.) Reviewed By: yfeldblum Differential Revision: D6817544 fbshipit-source-id: de3947770690ffb68d097040bbbfbe42bce3bf94
-
Neel Goyal authored
Summary: Add more types and a macro to make defining them easier. Reviewed By: mingtaoy Differential Revision: D6823450 fbshipit-source-id: eb13a8b48efb1625fc3f8035356812f918703c6d
-
- 28 Jan, 2018 1 commit
-
-
Lee Howes authored
Summary: Foolishly #defined __has_feature when it wasn't and let it leak, but something later must have been relying on something similar. This replaces the uses with FOLLY_HAS_FEATURE. Reviewed By: yfeldblum, magedm Differential Revision: D6829724 fbshipit-source-id: 40635dd67135316f27be2aa2a6b2d579dbf843e1
-
- 27 Jan, 2018 3 commits
-
-
Lee Howes authored
Summary: thread_local does not work on certain mobile builds. This will disable it if FOLLY_MOBILE is set. Reviewed By: yfeldblum, magedm Differential Revision: D6785773 fbshipit-source-id: 6a74edec739f42562045aadb4e1ee39d121ce90d
-
Teng Qin authored
Summary: This Diff adds new `FOLLY_SDT_WITH_SEMAPHORE` Macro that allows the (potentially expensive) Static Tracepoints be gated with Semaphore and be enabled on-demand. The Semaphores are compatible with SystemTap's Tracepoint Semaphores, with the following difference: - Instead of having build Process generate a header file containing the Semaphore variable and check function, and to be included, this Diff uses the approach that users need to explicitly define the semaphore using `FOLLY_SDT_SEMAPHORE_DEFINE` before using `FOLLY_SDT_WITH_SEMAPHORE`. Then the check function could be used in the same file, or in any other linked module with doing `FOLLY_SDT_SEMAPHORE_DECLARE` first. This is inspired from GFlag's defining and declaring. - We keep allowing original `FOLLY_SDT` with no Semaphore for flexibility. Differential Revision: D6814268 fbshipit-source-id: e1e4463c71539b4d2071b21880d4ee7689fedce8
-
Xiao Shi authored
Summary: Since C++14, constexpr non-static member function will not be implicitly marked const. See the blog post below for more details. https://akrzemi1.wordpress.com/2013/06/20/constexpr-function-is-not-const/ Reviewed By: mzlee Differential Revision: D6819658 fbshipit-source-id: 4a756191fca3e744bda3c63c2669e24d6b16861e
-
- 26 Jan, 2018 7 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Move `folly/SmallLocks.h` to `folly/synchronization/`. Differential Revision: D6806563 fbshipit-source-id: 26c7be6b6a01673a4f58a0952b5c531528f8ca7f
-
Martin Martin authored
Summary: Create a "fast" stack trace printer that caches symbol lookups. Reviewed By: yfeldblum Differential Revision: D6000178 fbshipit-source-id: e81be1db21cfcd2cd26524c9ef6262337153ae36
-
Adam Simpkins authored
Summary: D6806326 reduced the minimum version of CMake required to 3.2.0. This had the unintended effect of also disabling some newer CMake policies by default, which caused builds to fail in newer CMake versions. In particular, we make use of the GoogleTest module when it is available (CMake 3.9+). However it requires policy `CMP0057` to be enabled. This explicitly enables `CMP0057` when it is available. Reviewed By: yfeldblum Differential Revision: D6816891 fbshipit-source-id: 60ca46654d46207a96f0fad9c3467426a25b4afd
-
Adam Simpkins authored
Summary: Several of the tests in LoggerTest.cpp check error messages that include demangled type names. The type names are returned slightly differently on other platforms (e.g., `i` instead of `int`, or `A13_c` instead of `char [13]`) This changes the tests to perform regular expression matches rather than exact string matches. This now allows any strings to appear where a type name is expected. Reviewed By: yfeldblum Differential Revision: D6805680 fbshipit-source-id: 56d501944dacb505c3c09d84c555a1f686065077
-
Adam Simpkins authored
Summary: The `ThreadLocal.SharedLibrary` test depends on building a separate `thread_local_test_lib.so`. This can only be built when folly was compiled with PIC. This also fixes the test to fail normally rather than segfaulting if it cannot load `thread_local_test_lib.so`. Reviewed By: yfeldblum Differential Revision: D6805683 fbshipit-source-id: b451b94c2a4b3184a8f61de3b7f83e69169205f0
-
Adam Simpkins authored
Summary: In general, building folly as a shared library is not recommended since the library ABI changes frequently. Nonetheless, this updates the CMake files to support building with `BUILD_SHARED_LIBS=ON`. Previously the build would fail when using this option. The main reason to support this for now is because some of the tests can only be run when compiled with `-fPIC`. Defining `FOLLY_SHARED_LIBRARY_SUPPORT` in `folly-config.h` makes it possible to skip these tests when being compiled without shared library support. Reviewed By: yfeldblum Differential Revision: D6805682 fbshipit-source-id: 098290c7405837350577f48ed224947fb62415db
-
Adam Simpkins authored
Summary: Update the CMake build scripts to work with CMake 3.2.2, as well as older boost libraries. Several other open source Facebook projects have CI that checks that the code builds with modified Ubuntu 14.04 systems (Ubuntu 14.04 + gcc 4.9 + CMake 3.2.2). By default Ubuntu 14.04 ships with gcc 4.8.2 and CMake 2.8; we do not support vanilla Ubuntu 14.04. Reviewed By: yfeldblum Differential Revision: D6806326 fbshipit-source-id: 243f2f9cea20c7a9430dc386c921e3cafeee77f7
-
- 25 Jan, 2018 6 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Dedup spinning in `Baton` and `SaturatingSemaphore`. And add spin-yield to spin-only `SaturatingSemaphore`, as is done in `Baton`. Reviewed By: djwatson Differential Revision: D6726786 fbshipit-source-id: 428efb950577ab1d500caffe56bf2a8cacf66c34
-
Yedidya Feldblum authored
Summary: [Folly] Split `SaturatingSemaphore` test cases into spin-only and may-block variants. Reviewed By: djwatson Differential Revision: D6726718 fbshipit-source-id: d22a76de6077d9c8b4eb2ef7f6d118f48c8c5104
-
Yedidya Feldblum authored
Summary: [Folly] Use relaxed CAS in `Baton` wait path. As is done in `SaturatingSemaphore`. There are surrounding operations on `state_` with stronger memory orders. Reviewed By: nbronson Differential Revision: D6726704 fbshipit-source-id: 8032db4b98a09455c84c730e2e99515d1a9442da
-
Yedidya Feldblum authored
Summary: [Folly] Merge wait and timed-wait implementations in `Baton`. Now `MemoryIdler` is also used in the timed-wait case, not just in the wait case. Reviewed By: spalamarchuk Differential Revision: D6720048 fbshipit-source-id: 7612eb60d1908d08d41897fa163b0693b59abab1
-
Xiao Shi authored
Summary: `std::make_from_tuple` constructs an object of type T, using the elements of the tuple t as the arguments to the constructor. Backport. For the unit test, I referred to https://github.com/phalpern/uses-allocator/blob/711f6071a1230272de28c022400d678e7e9f0228/make_from_tuple.t.cpp Reviewed By: yfeldblum Differential Revision: D6808665 fbshipit-source-id: 257f27110c01da39b5415b02415d74f0b6062051
-
Yedidya Feldblum authored
Summary: [Folly] Cut extraneous dep on `glog` from `Expected`. Reviewed By: mzlee Differential Revision: D6768016 fbshipit-source-id: 7b242797ccfe18ea7ccb3ef7a045ff55147dd2eb
-