Index: crash_collector_test.cc |
diff --git a/crash_collector_test.cc b/crash_collector_test.cc |
index ed8fff7565fae308047c60904e923abce1b88899..2dbf2bb2d433578cbec9affd5bd4c97478258747 100644 |
--- a/crash_collector_test.cc |
+++ b/crash_collector_test.cc |
@@ -48,6 +48,16 @@ TEST_F(CrashCollectorTest, Initialize) { |
ASSERT_TRUE(&logging_ == collector_.logger_); |
} |
+TEST_F(CrashCollectorTest, Sanitize) { |
+ EXPECT_EQ("chrome", collector_.Sanitize("chrome")); |
+ EXPECT_EQ("CHROME", collector_.Sanitize("CHROME")); |
+ EXPECT_EQ("1chrome2", collector_.Sanitize("1chrome2")); |
+ EXPECT_EQ("chrome__deleted_", collector_.Sanitize("chrome (deleted)")); |
+ EXPECT_EQ("foo_bar", collector_.Sanitize("foo.bar")); |
+ EXPECT_EQ("", collector_.Sanitize("")); |
+ EXPECT_EQ("_", collector_.Sanitize(" ")); |
+} |
+ |
TEST_F(CrashCollectorTest, GetCrashDirectoryInfo) { |
FilePath path; |
const int kRootUid = 0; |
@@ -118,41 +128,96 @@ bool CrashCollectorTest::CheckHasCapacity() { |
return has_capacity; |
} |
-TEST_F(CrashCollectorTest, CheckHasCapacityOverNonCore) { |
- // Test up to kMaxCrashDirectorySize-1 non-core files can be added. |
+TEST_F(CrashCollectorTest, CheckHasCapacityUsual) { |
+ // Test kMaxCrashDirectorySize - 1 non-meta files can be added. |
for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize - 1; ++i) { |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("file%d.core", i)), |
+ "", 0); |
EXPECT_TRUE(CheckHasCapacity()); |
- file_util::WriteFile(test_dir_.Append(StringPrintf("file%d", i)), "", 0); |
} |
- // Test an additional kMaxCrashDirectorySize - 1 core files fit. |
+ // Test an additional kMaxCrashDirectorySize - 1 meta 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)), |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("file%d.meta", i)), |
"", 0); |
+ EXPECT_TRUE(CheckHasCapacity()); |
} |
- // Test an additional kMaxCrashDirectorySize non-core files don't fit. |
+ // Test an additional kMaxCrashDirectorySize meta files don't fit. |
for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize; ++i) { |
- file_util::WriteFile(test_dir_.Append(StringPrintf("overage%d", i)), "", 0); |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("overage%d.meta", i)), |
+ "", 0); |
EXPECT_FALSE(CheckHasCapacity()); |
} |
} |
-TEST_F(CrashCollectorTest, CheckHasCapacityOverCore) { |
- // Set up kMaxCrashDirectorySize - 1 core files. |
+TEST_F(CrashCollectorTest, CheckHasCapacityCorrectBasename) { |
+ // Test kMaxCrashDirectorySize - 1 files can be added. |
for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize - 1; ++i) { |
- file_util::WriteFile(test_dir_.Append(StringPrintf("file%d.core", i)), |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("file.%d.core", i)), |
"", 0); |
+ EXPECT_TRUE(CheckHasCapacity()); |
} |
+ file_util::WriteFile(test_dir_.Append("file.last.core"), "", 0); |
+ EXPECT_FALSE(CheckHasCapacity()); |
+} |
- EXPECT_TRUE(CheckHasCapacity()); |
- |
- // Test an additional core file does not fit. |
- file_util::WriteFile(test_dir_.Append("overage.core"), "", 0); |
+TEST_F(CrashCollectorTest, CheckHasCapacityStrangeNames) { |
+ // Test many files with different extensions and same base fit. |
+ for (int i = 0; i < 5 * CrashCollector::kMaxCrashDirectorySize; ++i) { |
+ file_util::WriteFile(test_dir_.Append(StringPrintf("a.%d", i)), "", 0); |
+ EXPECT_TRUE(CheckHasCapacity()); |
+ } |
+ // Test dot files are treated as individual files. |
+ for (int i = 0; i < CrashCollector::kMaxCrashDirectorySize - 2; ++i) { |
+ file_util::WriteFile(test_dir_.Append(StringPrintf(".file%d", i)), "", 0); |
+ EXPECT_TRUE(CheckHasCapacity()); |
+ } |
+ file_util::WriteFile(test_dir_.Append("normal.meta"), "", 0); |
EXPECT_FALSE(CheckHasCapacity()); |
} |
+TEST_F(CrashCollectorTest, ReadKeyValueFile) { |
+ const char *contents = ("a=b\n" |
+ "\n" |
+ " c=d \n"); |
+ FilePath path(test_dir_.Append("keyval")); |
+ std::map<std::string, std::string> dictionary; |
+ std::map<std::string, std::string>::iterator i; |
+ |
+ file_util::WriteFile(path, contents, strlen(contents)); |
+ |
+ EXPECT_TRUE(collector_.ReadKeyValueFile(path, '=', &dictionary)); |
+ i = dictionary.find("a"); |
+ EXPECT_TRUE(i != dictionary.end() && i->second == "b"); |
+ i = dictionary.find("c"); |
+ EXPECT_TRUE(i != dictionary.end() && i->second == "d"); |
+ |
+ dictionary.clear(); |
+ |
+ contents = ("a=b c d\n" |
+ "e\n" |
+ " f g = h\n" |
+ "i=j\n" |
+ "=k\n" |
+ "l=\n"); |
+ file_util::WriteFile(path, contents, strlen(contents)); |
+ |
+ EXPECT_FALSE(collector_.ReadKeyValueFile(path, '=', &dictionary)); |
+ i = dictionary.find("a"); |
+ EXPECT_TRUE(i != dictionary.end() && i->second == "b c d"); |
+ i = dictionary.find("e"); |
+ EXPECT_TRUE(i == dictionary.end()); |
+ i = dictionary.find("f g"); |
+ EXPECT_TRUE(i != dictionary.end() && i->second == "h"); |
+ i = dictionary.find("i"); |
+ EXPECT_TRUE(i != dictionary.end() && i->second == "j"); |
+ i = dictionary.find(""); |
+ EXPECT_TRUE(i != dictionary.end() && i->second == "k"); |
+ i = dictionary.find("l"); |
+ EXPECT_TRUE(i != dictionary.end() && i->second == ""); |
+} |
+ |
int main(int argc, char **argv) { |
::testing::InitGoogleTest(&argc, argv); |
return RUN_ALL_TESTS(); |