Have internal tests use folly::Random instead of rand_r
authorMichael Lee <mzlee@fb.com>
Thu, 3 Mar 2016 23:51:18 +0000 (15:51 -0800)
committerFacebook Github Bot 3 <facebook-github-bot-3-bot@fb.com>
Fri, 4 Mar 2016 00:05:26 +0000 (16:05 -0800)
Summary: rand_r is not provided on all platforms, so use `folly::Random` instead.

Reviewed By: yfeldblum

Differential Revision: D3000351

fb-gh-sync-id: 45df3e1957c4b529ab2d2cb4db13b71d13dcef5d
shipit-source-id: 45df3e1957c4b529ab2d2cb4db13b71d13dcef5d

folly/test/SmallLocksTest.cpp
folly/test/SpinLockTest.cpp

index 61cea46718929c6b0f8f23ae4d7050dc697826b0..509641263a453443240ee22023bbd5b081f9dd9f 100644 (file)
@@ -15,6 +15,9 @@
  */
 
 #include <folly/SmallLocks.h>
+
+#include <folly/Random.h>
+
 #include <cassert>
 #include <cstdio>
 #include <mutex>
@@ -58,7 +61,7 @@ LockedVal v;
 void splock_test() {
 
   const int max = 1000;
-  unsigned int seed = (uintptr_t)pthread_self();
+  auto rng = folly::ThreadLocalPRNG();
   for (int i = 0; i < max; i++) {
     folly::asm_pause();
     MSLGuard g(v.lock);
@@ -68,7 +71,7 @@ void splock_test() {
       EXPECT_EQ(first, v.ar[i]);
     }
 
-    int byte = rand_r(&seed);
+    int byte = folly::Random::rand32(rng);
     memset(v.ar, char(byte), sizeof v.ar);
   }
 }
index 2477bfc1f673e825011313cc32748463d3fe36a3..ee12ab1613f7c0a807ff6466b211ba2042300b2d 100644 (file)
@@ -15,6 +15,8 @@
  */
 #include <folly/SpinLock.h>
 
+#include <folly/Random.h>
+
 #include <gtest/gtest.h>
 #include <thread>
 
@@ -35,7 +37,7 @@ struct LockedVal {
 template <typename LOCK>
 void spinlockTestThread(LockedVal<LOCK>* v) {
   const int max = 1000;
-  unsigned int seed = (uintptr_t)pthread_self();
+  auto rng = folly::ThreadLocalPRNG();
   for (int i = 0; i < max; i++) {
     folly::asm_pause();
     SpinLockGuardImpl<LOCK> g(v->lock);
@@ -45,7 +47,7 @@ void spinlockTestThread(LockedVal<LOCK>* v) {
       EXPECT_EQ(first, v->ar[i]);
     }
 
-    int byte = rand_r(&seed);
+    int byte = folly::Random::rand32(rng);
     memset(v->ar, char(byte), sizeof v->ar);
   }
 }