Handle nullptr from getTimekeeperSingleton
[folly.git] / folly / futures / test / TimekeeperTest.cpp
index bc3a8aed219b94779c6fd64dd69d9b9b9dd5d2cd..4567b93c3f1b70558e29d4e477f1af7e252634ec 100644 (file)
@@ -15,6 +15,8 @@
  */
 
 #include <folly/futures/Timekeeper.h>
+#include <folly/Singleton.h>
+#include <folly/futures/ThreadWheelTimekeeper.h>
 #include <folly/portability/GTest.h>
 
 using namespace folly;
@@ -78,6 +80,14 @@ TEST(Timekeeper, futureSleep) {
   EXPECT_GE(now() - t1, one_ms);
 }
 
+TEST(Timekeeper, futureSleepHandlesNullTimekeeperSingleton) {
+  Singleton<ThreadWheelTimekeeper>::make_mock([] { return nullptr; });
+  SCOPE_EXIT {
+    Singleton<ThreadWheelTimekeeper>::make_mock();
+  };
+  EXPECT_THROW(futures::sleep(one_ms).get(), NoTimekeeper);
+}
+
 TEST(Timekeeper, futureDelayed) {
   auto t1 = now();
   auto dur = makeFuture()