diff --git a/src/kudu/util/env-test.cc b/src/kudu/util/env-test.cc index 7724d93..f3ef1ac 100644 --- a/src/kudu/util/env-test.cc +++ b/src/kudu/util/env-test.cc @@ -745,4 +745,28 @@ TEST_F(TestEnv, TestCopyFile) { NO_FATALS(ReadAndVerifyTestData(copy.get(), 0, kFileSize)); } +// Test Memenv PreAllocate(). +TEST_F(TestEnv, TestMemEnvPreAllocate) { + SeedRandom(); + gscoped_ptr mem(NewMemEnv(Env::Default())); + string test_string = "hello, world!\n"; + + string test_path = "test"; + gscoped_ptr test_file; + WritableFileOptions opts; + opts.mmap_file = false; + ASSERT_OK(mem->NewWritableFile(opts, test_path, &test_file)); + ASSERT_OK(test_file->PreAllocate(test_string.size())); + ASSERT_OK(test_file->Append(Slice(test_string.data(), test_string.size()))); + ASSERT_OK(test_file->Close()); + + Slice data; + gscoped_ptr scratch(new uint8_t[1024]); + gscoped_ptr random_file; + ASSERT_OK(mem->NewRandomAccessFile(test_path, &random_file)); + ASSERT_OK(env_util::ReadFully(random_file.get(), 0, test_string.size(), + &data, scratch.get())); + ASSERT_EQ(test_string, data.ToString()); +} + } // namespace kudu