Index: crash_collector_test.cc |
diff --git a/crash_collector_test.cc b/crash_collector_test.cc |
index 48b7fa03c677526d2ba0613b8c3e8629ab234f72..ed8fff7565fae308047c60904e923abce1b88899 100644 |
--- a/crash_collector_test.cc |
+++ b/crash_collector_test.cc |
@@ -5,6 +5,7 @@ |
#include <unistd.h> |
#include "base/file_util.h" |
+#include "base/string_util.h" |
#include "crash-reporter/crash_collector.h" |
#include "crash-reporter/system_logging_mock.h" |
#include "gflags/gflags.h" |
@@ -20,15 +21,25 @@ bool IsMetrics() { |
} |
class CrashCollectorTest : public ::testing::Test { |
+ public: |
void SetUp() { |
collector_.Initialize(CountCrash, |
IsMetrics, |
&logging_); |
+ test_dir_ = FilePath("test"); |
+ file_util::CreateDirectory(test_dir_); |
} |
+ |
+ void TearDown() { |
+ file_util::Delete(test_dir_, true); |
+ } |
+ |
+ bool CheckHasCapacity(); |
+ |
protected: |
SystemLoggingMock logging_; |
CrashCollector collector_; |
- pid_t pid_; |
+ FilePath test_dir_; |
}; |
TEST_F(CrashCollectorTest, Initialize) { |
@@ -99,6 +110,49 @@ TEST_F(CrashCollectorTest, FormatDumpBasename) { |
ASSERT_EQ("foo.20100523.135015.100", basename); |
} |
+bool CrashCollectorTest::CheckHasCapacity() { |
+ static const char kFullMessage[] = "Crash directory test already full"; |
+ bool has_capacity = collector_.CheckHasCapacity(test_dir_); |
+ bool has_message = (logging_.log().find(kFullMessage) != std::string::npos); |
+ EXPECT_EQ(has_message, !has_capacity); |
+ return has_capacity; |
+} |
+ |
+TEST_F(CrashCollectorTest, CheckHasCapacityOverNonCore) { |
+ // Test up to kMaxCrashDirectorySize-1 non-core files can be added. |
+ for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize - 1; ++i) { |
+ EXPECT_TRUE(CheckHasCapacity()); |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("file%d", i)), "", 0); |
+ } |
+ |
+ // Test an additional kMaxCrashDirectorySize - 1 core files fit. |
+ for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize - 1; ++i) { |
+ EXPECT_TRUE(CheckHasCapacity()); |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("file%d.core", i)), |
+ "", 0); |
+ } |
+ |
+ // Test an additional kMaxCrashDirectorySize non-core files don't fit. |
+ for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize; ++i) { |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("overage%d", i)), "", 0); |
+ EXPECT_FALSE(CheckHasCapacity()); |
+ } |
+} |
+ |
+TEST_F(CrashCollectorTest, CheckHasCapacityOverCore) { |
+ // Set up kMaxCrashDirectorySize - 1 core files. |
+ for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize - 1; ++i) { |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("file%d.core", i)), |
+ "", 0); |
+ } |
+ |
+ EXPECT_TRUE(CheckHasCapacity()); |
+ |
+ // Test an additional core file does not fit. |
+ file_util::WriteFile(test_dir_.Append("overage.core"), "", 0); |
+ EXPECT_FALSE(CheckHasCapacity()); |
+} |
+ |
int main(int argc, char **argv) { |
::testing::InitGoogleTest(&argc, argv); |
return RUN_ALL_TESTS(); |