MCPcopy Create free account
hub / github.com/ElementsProject/elements / TEST

Function TEST

src/leveldb/util/env_test.cc:26–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24};
25
26TEST(EnvTest, ReadWrite) {
27 Random rnd(test::RandomSeed());
28
29 // Get file to use for testing.
30 std::string test_dir;
31 ASSERT_OK(env_->GetTestDirectory(&test_dir));
32 std::string test_file_name = test_dir + "/open_on_read.txt";
33 WritableFile* writable_file;
34 ASSERT_OK(env_->NewWritableFile(test_file_name, &writable_file));
35
36 // Fill a file with data generated via a sequence of randomly sized writes.
37 static const size_t kDataSize = 10 * 1048576;
38 std::string data;
39 while (data.size() < kDataSize) {
40 int len = rnd.Skewed(18); // Up to 2^18 - 1, but typically much smaller
41 std::string r;
42 test::RandomString(&rnd, len, &r);
43 ASSERT_OK(writable_file->Append(r));
44 data += r;
45 if (rnd.OneIn(10)) {
46 ASSERT_OK(writable_file->Flush());
47 }
48 }
49 ASSERT_OK(writable_file->Sync());
50 ASSERT_OK(writable_file->Close());
51 delete writable_file;
52
53 // Read all data using a sequence of randomly sized reads.
54 SequentialFile* sequential_file;
55 ASSERT_OK(env_->NewSequentialFile(test_file_name, &sequential_file));
56 std::string read_result;
57 std::string scratch;
58 while (read_result.size() < data.size()) {
59 int len = std::min<int>(rnd.Skewed(18), data.size() - read_result.size());
60 scratch.resize(std::max(len, 1)); // at least 1 so &scratch[0] is legal
61 Slice read;
62 ASSERT_OK(sequential_file->Read(len, &read, &scratch[0]));
63 if (len > 0) {
64 ASSERT_GT(read.size(), 0);
65 }
66 ASSERT_LE(read.size(), len);
67 read_result.append(read.data(), read.size());
68 }
69 ASSERT_EQ(read_result, data);
70 delete sequential_file;
71}
72
73TEST(EnvTest, RunImmediately) {
74 struct RunState {

Callers 1

testharness.hFile · 0.70

Calls 15

RandomSeedFunction · 0.85
ReadFileToStringFunction · 0.85
SkewedMethod · 0.80
OneInMethod · 0.80
RandomStringFunction · 0.70
GetTestDirectoryMethod · 0.45
NewWritableFileMethod · 0.45
sizeMethod · 0.45
AppendMethod · 0.45
FlushMethod · 0.45
SyncMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected