move MemoryMapping, Shell, ThreadId, ThreadName, and VersionCheck to system/
[folly.git] / folly / io / async / test / ScopedEventBaseThreadTest.cpp
index 02fd24dfb3ed1b9dbaeaa0ef512c0bcd020528eb..6f1d226672cb037169fd122cf5e033ee8fcc929e 100644 (file)
 #include <folly/io/async/ScopedEventBaseThread.h>
 
 #include <chrono>
+#include <string>
 
 #include <folly/Baton.h>
 #include <folly/Optional.h>
 #include <folly/io/async/EventBaseManager.h>
 #include <folly/portability/GTest.h>
+#include <folly/system/ThreadName.h>
 
 using namespace std;
 using namespace std::chrono;
@@ -37,6 +39,24 @@ TEST_F(ScopedEventBaseThreadTest, example) {
   ASSERT_TRUE(done.timed_wait(seconds(1)));
 }
 
+TEST_F(ScopedEventBaseThreadTest, named_example) {
+  static constexpr StringPiece kThreadName{"named_example"};
+
+  Optional<std::string> createdThreadName;
+  Baton<> done;
+
+  ScopedEventBaseThread sebt{kThreadName};
+  sebt.getEventBase()->runInEventBaseThread([&] {
+    createdThreadName = folly::getCurrentThreadName();
+    done.post();
+  });
+
+  ASSERT_TRUE(done.timed_wait(seconds(1)));
+  if (createdThreadName) {
+    ASSERT_EQ(kThreadName.toString(), createdThreadName.value());
+  }
+}
+
 TEST_F(ScopedEventBaseThreadTest, default_manager) {
   auto ebm = EventBaseManager::get();
   ScopedEventBaseThread sebt;