Index: chromecast/crash/minidump_writer_unittest.cc |
diff --git a/chromecast/crash/minidump_writer_unittest.cc b/chromecast/crash/minidump_writer_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fd80504262542509320d839e4d0890121689595a |
--- /dev/null |
+++ b/chromecast/crash/minidump_writer_unittest.cc |
@@ -0,0 +1,84 @@ |
+ |
+#include "base/files/file_path.h" |
+#include "base/files/file_util.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "chromecast/crash/minidump_generator.h" |
+#include "chromecast/crash/minidump_writer.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace chromecast { |
+namespace { |
+ |
+const char kMinidumpPath[] = "/this/is/a/fake/path"; |
+ |
+class FakeMinidumpGenerator : public MinidumpGenerator { |
+ public: |
+ FakeMinidumpGenerator() {} |
+ ~FakeMinidumpGenerator() override {} |
+ |
+ // MinidumpGenerator implementation: |
+ bool Generate(const std::string& minidump_path) override { return true; } |
+}; |
+ |
+} // namespace |
+ |
+class MinidumpWriterTest : public testing::Test { |
gunsch
2015/06/09 18:46:19
note: prefer not using test fixtures when possible
slan
2015/06/10 01:49:13
Done.
|
+ public: |
+ MinidumpWriterTest() |
+ : writer_( |
+ new MinidumpWriter(&generator_, kMinidumpPath, MinidumpParams())) {} |
+ ~MinidumpWriterTest() override {} |
+ |
+ // testing::Test implementation: |
+ void SetUp() override {} |
+ |
+ void TearDown() override {} |
+ |
+ // Accessors and mutators for for testing. |
+ void SetLockfile(const std::string& lockfile) { |
+ writer_->lockfile_path_ = lockfile; |
+ } |
+ void SetMaxDumps(int max_dumps) { writer_->max_dumps_ = max_dumps; } |
+ void SetMaxRecentDumps(int max_recent_dumps) { |
+ writer_->max_recent_dumps_ = max_recent_dumps; |
+ } |
+ |
+ bool CanWriteDump() { return writer_->CanWriteDump(); } |
+ |
+ private: |
+ FakeMinidumpGenerator generator_; |
+ scoped_ptr<MinidumpWriter> writer_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MinidumpWriterTest); |
+}; |
+ |
+TEST_F(MinidumpWriterTest, CanWriteDump_WithEmptyLogFile) { |
+ base::FilePath path; |
+ ASSERT_TRUE(base::CreateTemporaryFile(&path)); |
+ SetLockfile(path.value()); |
+ SetMaxDumps(2); |
+ SetMaxRecentDumps(10); |
+ |
+ // Should be able to write dump with empty file. |
+ ASSERT_TRUE(CanWriteDump()); |
+ |
+ // Add an entry to the lockfile. Should still be able to write dump. |
+ DumpInfo info("p|2015-01-01 01:02:03|/dump/path||"); |
+ ASSERT_TRUE(info.valid()); |
+ base::AppendToFile(path, info.entry().c_str(), info.entry().size()); |
+ ASSERT_TRUE(CanWriteDump()); |
+ |
+ // Cannot write dump if next dump would exceed maximum. |
+ DumpInfo info2("p|2015-01-01 01:02:04|/dump/path||"); |
+ ASSERT_TRUE(info2.valid()); |
+ base::AppendToFile(path, info2.entry().c_str(), info2.entry().size()); |
+ ASSERT_FALSE(CanWriteDump()); |
+ |
+ // Cannot write dump if next dump would exceed maximum. |
+ DumpInfo info3("p|2015-01-01 01:02:05|/dump/path||"); |
+ ASSERT_TRUE(info3.valid()); |
+ base::AppendToFile(path, info3.entry().c_str(), info3.entry().size()); |
+ ASSERT_FALSE(CanWriteDump()); |
+} |
+ |
+} // namespace chromecast |