1 //  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
2 //  This source code is licensed under both the GPLv2 (found in the
3 //  COPYING file in the root directory) and Apache 2.0 License
4 //  (found in the LICENSE.Apache file in the root directory).
5 //
6 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file. See the AUTHORS file for names of contributors.
9 
10 #include "test_util/testharness.h"
11 #include <string>
12 #include <thread>
13 
14 namespace ROCKSDB_NAMESPACE {
15 namespace test {
16 
AssertStatus(const char * s_expr,const Status & s)17 ::testing::AssertionResult AssertStatus(const char* s_expr, const Status& s) {
18   if (s.ok()) {
19     return ::testing::AssertionSuccess();
20   } else {
21     return ::testing::AssertionFailure() << s_expr << std::endl
22                                          << s.ToString();
23   }
24 }
25 
TmpDir(Env * env)26 std::string TmpDir(Env* env) {
27   std::string dir;
28   Status s = env->GetTestDirectory(&dir);
29   EXPECT_TRUE(s.ok()) << s.ToString();
30   return dir;
31 }
32 
PerThreadDBPath(std::string dir,std::string name)33 std::string PerThreadDBPath(std::string dir, std::string name) {
34   size_t tid = std::hash<std::thread::id>()(std::this_thread::get_id());
35   return dir + "/" + name + "_" + std::to_string(tid);
36 }
37 
PerThreadDBPath(std::string name)38 std::string PerThreadDBPath(std::string name) {
39   return PerThreadDBPath(test::TmpDir(), name);
40 }
41 
PerThreadDBPath(Env * env,std::string name)42 std::string PerThreadDBPath(Env* env, std::string name) {
43   return PerThreadDBPath(test::TmpDir(env), name);
44 }
45 
RandomSeed()46 int RandomSeed() {
47   const char* env = getenv("TEST_RANDOM_SEED");
48   int result = (env != nullptr ? atoi(env) : 301);
49   if (result <= 0) {
50     result = 301;
51   }
52   return result;
53 }
54 
55 }  // namespace test
56 }  // namespace ROCKSDB_NAMESPACE
57