small_vector improvements
[folly.git] / folly / test / ThreadNameTest.cpp
index d85ef2c431d2112062b909798c1158d3a3bfe545..57eae214578a7ecf960a770269b9ade4a2221114 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 
 #include <thread>
+
 #include <folly/Baton.h>
+#include <folly/ScopeGuard.h>
 #include <folly/ThreadName.h>
-#include <gtest/gtest.h>
+#include <folly/portability/GTest.h>
 
 using namespace std;
 using namespace folly;
 
+static bool expectedSetOtherThreadNameResult = folly::canSetOtherThreadName();
+static bool expectedSetSelfThreadNameResult = folly::canSetCurrentThreadName();
+
 TEST(ThreadName, setThreadName_self) {
   thread th([] {
-      EXPECT_TRUE(setThreadName("rockin-thread"));
+    EXPECT_EQ(expectedSetSelfThreadNameResult, setThreadName("rockin-thread"));
   });
   SCOPE_EXIT { th.join(); };
 }
@@ -41,7 +46,8 @@ TEST(ThreadName, setThreadName_other_pthread) {
   SCOPE_EXIT { th.join(); };
   handle_set.wait();
   SCOPE_EXIT { let_thread_end.post(); };
-  EXPECT_TRUE(setThreadName(handle, "rockin-thread"));
+  EXPECT_EQ(
+      expectedSetOtherThreadNameResult, setThreadName(handle, "rockin-thread"));
 }
 
 TEST(ThreadName, setThreadName_other_native) {
@@ -51,5 +57,19 @@ TEST(ThreadName, setThreadName_other_native) {
   });
   SCOPE_EXIT { th.join(); };
   SCOPE_EXIT { let_thread_end.post(); };
-  EXPECT_TRUE(setThreadName(th.native_handle(), "rockin-thread"));
+  EXPECT_EQ(
+      expectedSetOtherThreadNameResult,
+      setThreadName(th.native_handle(), "rockin-thread"));
+}
+
+TEST(ThreadName, setThreadName_other_id) {
+  Baton<> let_thread_end;
+  thread th([&] {
+      let_thread_end.wait();
+  });
+  SCOPE_EXIT { th.join(); };
+  SCOPE_EXIT { let_thread_end.post(); };
+  EXPECT_EQ(
+      expectedSetOtherThreadNameResult,
+      setThreadName(th.get_id(), "rockin-thread"));
 }