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