AU: Function to trigger crash reporter.
This CL introduces a new utility function that fork()s and has the
child call abort(), thus triggering the crash reporter. The actual
work is done in a main loop callback to ensure that the stack trace is
the same for all calls to this function.
TEST=unittest (minimal), tested on device - saw crash reporter pick up the crash.
BUG=10739
Review URL: http://codereview.chromium.org/6114002
Change-Id: If3c3c43644173f2307b8498d40881c3b38b938e5
diff --git a/utils_unittest.cc b/utils_unittest.cc
index d8bc866..185ab9a 100644
--- a/utils_unittest.cc
+++ b/utils_unittest.cc
@@ -255,4 +255,22 @@
EXPECT_EQ(10 * 1024 * 1024 / 4096, block_count);
}
+namespace {
+gboolean TerminateScheduleCrashReporterUploadTest(void* arg) {
+ GMainLoop* loop = reinterpret_cast<GMainLoop*>(arg);
+ g_main_loop_quit(loop);
+ return FALSE; // Don't call this callback again
+}
+} // namespace {}
+
+TEST(UtilsTest, ScheduleCrashReporterUploadTest) {
+ // Not much to test. At least this tests for memory leaks, crashes,
+ // log errors.
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
+ utils::ScheduleCrashReporterUpload();
+ g_timeout_add_seconds(1, &TerminateScheduleCrashReporterUploadTest, loop);
+ g_main_loop_run(loop);
+ g_main_loop_unref(loop);
+}
+
} // namespace chromeos_update_engine