Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7301)

Unified Diff: chromecast/crash/linux/dummy_minidump_generator_unittest.cc

Issue 1239083005: Revert of Replace system IO calls in chromecast/crash with Chrome utilities. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromecast/crash/linux/dummy_minidump_generator.cc ('k') | chromecast/crash/linux/minidump_generator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromecast/crash/linux/dummy_minidump_generator_unittest.cc
diff --git a/chromecast/crash/linux/dummy_minidump_generator_unittest.cc b/chromecast/crash/linux/dummy_minidump_generator_unittest.cc
index d70ea76135225e4b0df6a62c2ee3a8b0524dfb9b..c38304f270b6c32c3fa510993d7446af37740897 100644
--- a/chromecast/crash/linux/dummy_minidump_generator_unittest.cc
+++ b/chromecast/crash/linux/dummy_minidump_generator_unittest.cc
@@ -11,6 +11,12 @@
namespace chromecast {
+namespace {
+// This value should stay in sync with the internal buffer size used in
+// CopyAndDelete().
+const int kInternalBufferSize = 32768;
+} // namespace
+
TEST(DummyMinidumpGeneratorTest, GenerateFailsWithInvalidPath) {
// Create directory in which to put minidump.
base::FilePath minidump_dir;
@@ -21,7 +27,7 @@
ASSERT_FALSE(generator.Generate(minidump_dir.Append("minidump.dmp").value()));
}
-TEST(DummyMinidumpGeneratorTest, GenerateSucceedsWithSmallSource) {
+TEST(DummyMinidumpGeneratorTest, GenerateSucceedsWithValidPath) {
// Create directory in which to put minidump.
base::FilePath minidump_dir;
ASSERT_TRUE(base::CreateNewTempDirectory("", &minidump_dir));
@@ -46,24 +52,98 @@
EXPECT_EQ(data, copied_data);
}
-TEST(DummyMinidumpGeneratorTest, GenerateSucceedsWithLargeSource) {
+TEST(DummyMinidumpGeneratorTest, CopyAndDeleteFailsWithInvalidSource) {
+ // Create directory in which to put minidump.
+ base::FilePath minidump_dir;
+ ASSERT_TRUE(base::CreateNewTempDirectory("", &minidump_dir));
+
+ // Attempt to copy from an invalid path.
+ DummyMinidumpGenerator generator("/path/does/not/exist/minidump.dmp");
+ ASSERT_FALSE(generator.CopyAndDeleteForTest(
+ minidump_dir.Append("minidump.dmp").value()));
+}
+
+TEST(DummyMinidumpGeneratorTest, CopyAndDeleteSucceedsWithSmallSource) {
+ // Create directory in which to put minidump.
+ base::FilePath minidump_dir;
+ ASSERT_TRUE(base::CreateNewTempDirectory("", &minidump_dir));
+
+ // Create a fake minidump file.
+ base::FilePath fake_minidump;
+ ASSERT_TRUE(base::CreateTemporaryFile(&fake_minidump));
+ const std::string data("Test contents of the minidump file.\n");
+ ASSERT_EQ(static_cast<int>(data.size()),
+ base::WriteFile(fake_minidump, data.c_str(), data.size()));
+
+ base::FilePath new_minidump = minidump_dir.Append("minidump.dmp");
+ DummyMinidumpGenerator generator(fake_minidump.value());
+ ASSERT_TRUE(generator.CopyAndDeleteForTest(new_minidump.value()));
+
+ // Original file should not exist, and new file should contain original
+ // contents.
+ std::string copied_data;
+ EXPECT_FALSE(base::PathExists(fake_minidump));
+ ASSERT_TRUE(base::PathExists(new_minidump));
+ EXPECT_TRUE(base::ReadFileToString(new_minidump, &copied_data));
+ EXPECT_EQ(data, copied_data);
+}
+
+TEST(DummyMinidumpGeneratorTest, CopyAndDeleteSucceedsWithLargeSource) {
// Create directory in which to put minidump.
base::FilePath minidump_dir;
ASSERT_TRUE(base::CreateNewTempDirectory("", &minidump_dir));
// Create a large fake minidump file.
+ // Note: The file must be greater than the size of the buffer used to copy the
+ // file in CopyAndDelete(). Create a big string in memory.
base::FilePath fake_minidump;
ASSERT_TRUE(base::CreateTemporaryFile(&fake_minidump));
- size_t str_len = 32768 * 10 + 1;
+ size_t str_len = kInternalBufferSize * 10 + 1;
const std::string data = base::RandBytesAsString(str_len);
- // Write the string to the file.
+ // Write the string to the file and verify that the file is big enough.
ASSERT_EQ(static_cast<int>(data.size()),
base::WriteFile(fake_minidump, data.c_str(), data.size()));
+ int64_t filesize = 0;
+ ASSERT_TRUE(base::GetFileSize(fake_minidump, &filesize));
+ ASSERT_GT(filesize, kInternalBufferSize);
base::FilePath new_minidump = minidump_dir.Append("minidump.dmp");
DummyMinidumpGenerator generator(fake_minidump.value());
- ASSERT_TRUE(generator.Generate(new_minidump.value()));
+ ASSERT_TRUE(generator.CopyAndDeleteForTest(new_minidump.value()));
+
+ // Original file should not exist, and new file should contain original
+ // contents.
+ std::string copied_data;
+ EXPECT_FALSE(base::PathExists(fake_minidump));
+ ASSERT_TRUE(base::PathExists(new_minidump));
+ EXPECT_TRUE(base::ReadFileToString(new_minidump, &copied_data));
+ EXPECT_EQ(data, copied_data);
+}
+
+TEST(DummyMinidumpGeneratorTest, CopyAndDeleteSucceedsWhenEOFAlignsWithBuffer) {
+ // Create directory in which to put minidump.
+ base::FilePath minidump_dir;
+ ASSERT_TRUE(base::CreateNewTempDirectory("", &minidump_dir));
+
+ // Create a large fake minidump file.
+ // Note: The file must be greater than the size of the buffer used to copy the
+ // file in CopyAndDelete(). Create a big string in memory.
+ base::FilePath fake_minidump;
+ ASSERT_TRUE(base::CreateTemporaryFile(&fake_minidump));
+ size_t str_len = kInternalBufferSize;
+ const std::string data = base::RandBytesAsString(str_len);
+
+ // Write the string to the file and verify that the file is big enough.
+ ASSERT_EQ(static_cast<int>(data.size()),
+ base::WriteFile(fake_minidump, data.c_str(), data.size()));
+ int64_t filesize = 0;
+ ASSERT_TRUE(base::GetFileSize(fake_minidump, &filesize));
+ ASSERT_EQ(kInternalBufferSize, filesize);
+
+ base::FilePath new_minidump = minidump_dir.Append("minidump.dmp");
+ DummyMinidumpGenerator generator(fake_minidump.value());
+ ASSERT_TRUE(generator.CopyAndDeleteForTest(new_minidump.value()));
// Original file should not exist, and new file should contain original
// contents.
« no previous file with comments | « chromecast/crash/linux/dummy_minidump_generator.cc ('k') | chromecast/crash/linux/minidump_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698