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

Side by Side Diff: user_collector_test.cc

Issue 6297004: crash-reporter: Add diagnostics to help diagnose failures in the wild (Closed) Base URL: http://git.chromium.org/git/crash-reporter.git@master
Patch Set: respond to review Created 9 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « user_collector.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <unistd.h> 5 #include <unistd.h>
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "crash-reporter/system_logging_mock.h" 8 #include "crash-reporter/system_logging_mock.h"
9 #include "crash-reporter/user_collector.h" 9 #include "crash-reporter/user_collector.h"
10 #include "crash-reporter/test_helpers.h" 10 #include "crash-reporter/test_helpers.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 EXPECT_EQ(golden, contents); 47 EXPECT_EQ(golden, contents);
48 } 48 }
49 49
50 SystemLoggingMock logging_; 50 SystemLoggingMock logging_;
51 UserCollector collector_; 51 UserCollector collector_;
52 pid_t pid_; 52 pid_t pid_;
53 }; 53 };
54 54
55 TEST_F(UserCollectorTest, EnableOK) { 55 TEST_F(UserCollectorTest, EnableOK) {
56 ASSERT_TRUE(collector_.Enable()); 56 ASSERT_TRUE(collector_.Enable());
57 ExpectFileEquals("|/my/path --signal=%s --pid=%p", "test/core_pattern"); 57 ExpectFileEquals("|/my/path --user=%p:%s:%e", "test/core_pattern");
58 ExpectFileEquals("4", "test/core_pipe_limit"); 58 ExpectFileEquals("4", "test/core_pipe_limit");
59 ASSERT_EQ(s_crashes, 0); 59 ASSERT_EQ(s_crashes, 0);
60 ASSERT_NE(logging_.log().find("Enabling user crash handling"), 60 ASSERT_NE(logging_.log().find("Enabling user crash handling"),
61 std::string::npos); 61 std::string::npos);
62 } 62 }
63 63
64 TEST_F(UserCollectorTest, EnableNoPatternFileAccess) { 64 TEST_F(UserCollectorTest, EnableNoPatternFileAccess) {
65 collector_.set_core_pattern_file("/does_not_exist"); 65 collector_.set_core_pattern_file("/does_not_exist");
66 ASSERT_FALSE(collector_.Enable()); 66 ASSERT_FALSE(collector_.Enable());
67 ASSERT_EQ(s_crashes, 0); 67 ASSERT_EQ(s_crashes, 0);
(...skipping 27 matching lines...) Expand all
95 TEST_F(UserCollectorTest, DisableNoFileAccess) { 95 TEST_F(UserCollectorTest, DisableNoFileAccess) {
96 collector_.set_core_pattern_file("/does_not_exist"); 96 collector_.set_core_pattern_file("/does_not_exist");
97 ASSERT_FALSE(collector_.Disable()); 97 ASSERT_FALSE(collector_.Disable());
98 ASSERT_EQ(s_crashes, 0); 98 ASSERT_EQ(s_crashes, 0);
99 ASSERT_NE(logging_.log().find("Disabling user crash handling"), 99 ASSERT_NE(logging_.log().find("Disabling user crash handling"),
100 std::string::npos); 100 std::string::npos);
101 ASSERT_NE(logging_.log().find("Unable to write /does_not_exist"), 101 ASSERT_NE(logging_.log().find("Unable to write /does_not_exist"),
102 std::string::npos); 102 std::string::npos);
103 } 103 }
104 104
105 TEST_F(UserCollectorTest, ParseCrashAttributes) {
106 pid_t pid;
107 int signal;
108 std::string exec_name;
109 EXPECT_TRUE(collector_.ParseCrashAttributes("123456:11:foobar",
110 &pid, &signal, &exec_name));
111 EXPECT_EQ(123456, pid);
112 EXPECT_EQ(11, signal);
113 EXPECT_EQ("foobar", exec_name);
114
115 EXPECT_FALSE(collector_.ParseCrashAttributes("123456:11",
116 &pid, &signal, &exec_name));
117
118 EXPECT_TRUE(collector_.ParseCrashAttributes("123456:11:exec:extra",
119 &pid, &signal, &exec_name));
120 EXPECT_EQ("exec:extra", exec_name);
121
122 EXPECT_FALSE(collector_.ParseCrashAttributes("12345p:11:foobar",
123 &pid, &signal, &exec_name));
124
125 EXPECT_FALSE(collector_.ParseCrashAttributes("123456:1 :foobar",
126 &pid, &signal, &exec_name));
127
128 EXPECT_FALSE(collector_.ParseCrashAttributes("123456::foobar",
129 &pid, &signal, &exec_name));
130 }
131
105 TEST_F(UserCollectorTest, HandleCrashWithoutMetrics) { 132 TEST_F(UserCollectorTest, HandleCrashWithoutMetrics) {
106 s_metrics = false; 133 s_metrics = false;
107 collector_.HandleCrash(10, 20, "foobar"); 134 collector_.HandleCrash("20:10:ignored", "foobar");
108 ASSERT_NE(std::string::npos, 135 ASSERT_NE(std::string::npos,
109 logging_.log().find( 136 logging_.log().find(
110 "Received crash notification for foobar[20] sig 10")); 137 "Received crash notification for foobar[20] sig 10"));
111 ASSERT_EQ(s_crashes, 0); 138 ASSERT_EQ(s_crashes, 0);
112 } 139 }
113 140
114 TEST_F(UserCollectorTest, HandleNonChromeCrashWithMetrics) { 141 TEST_F(UserCollectorTest, HandleNonChromeCrashWithMetrics) {
115 s_metrics = true; 142 s_metrics = true;
116 collector_.HandleCrash(2, 5, "chromeos-wm"); 143 collector_.HandleCrash("5:2:ignored", "chromeos-wm");
117 ASSERT_NE(std::string::npos, 144 ASSERT_NE(std::string::npos,
118 logging_.log().find( 145 logging_.log().find(
119 "Received crash notification for chromeos-wm[5] sig 2")); 146 "Received crash notification for chromeos-wm[5] sig 2"));
120 ASSERT_EQ(s_crashes, 1); 147 ASSERT_EQ(s_crashes, 1);
121 } 148 }
122 149
123 TEST_F(UserCollectorTest, HandleChromeCrashWithMetrics) { 150 TEST_F(UserCollectorTest, HandleChromeCrashWithMetrics) {
124 s_metrics = true; 151 s_metrics = true;
125 collector_.HandleCrash(2, 5, "chrome"); 152 collector_.HandleCrash("5:2:ignored", "chrome");
126 ASSERT_NE(std::string::npos, 153 ASSERT_NE(std::string::npos,
127 logging_.log().find( 154 logging_.log().find(
128 "Received crash notification for chrome[5] sig 2")); 155 "Received crash notification for chrome[5] sig 2"));
129 ASSERT_NE(std::string::npos, 156 ASSERT_NE(std::string::npos,
130 logging_.log().find("(ignoring - chrome crash)")); 157 logging_.log().find("(ignoring - chrome crash)"));
131 ASSERT_EQ(s_crashes, 0); 158 ASSERT_EQ(s_crashes, 0);
132 } 159 }
133 160
134 TEST_F(UserCollectorTest, GetProcessPath) { 161 TEST_F(UserCollectorTest, GetProcessPath) {
135 FilePath path = collector_.GetProcessPath(100); 162 FilePath path = collector_.GetProcessPath(100);
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 EXPECT_EQ(expectations[i].exists, 302 EXPECT_EQ(expectations[i].exists,
276 file_util::PathExists( 303 file_util::PathExists(
277 container_path.Append(expectations[i].name))); 304 container_path.Append(expectations[i].name)));
278 } 305 }
279 } 306 }
280 307
281 int main(int argc, char **argv) { 308 int main(int argc, char **argv) {
282 ::testing::InitGoogleTest(&argc, argv); 309 ::testing::InitGoogleTest(&argc, argv);
283 return RUN_ALL_TESTS(); 310 return RUN_ALL_TESTS();
284 } 311 }
OLDNEW
« no previous file with comments | « user_collector.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698