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

Unified Diff: chromecast/crash/linux/dump_info_unittest.cc

Issue 1154383006: Adding crash utilities to chromecast/crash. (Closed) Base URL: https://eureka-internal.googlesource.com/chromium/src@master
Patch Set: cast_shell_unittests not built for android Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromecast/crash/linux/dump_info.cc ('k') | chromecast/crash/linux/minidump_generator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromecast/crash/linux/dump_info_unittest.cc
diff --git a/chromecast/crash/linux/dump_info_unittest.cc b/chromecast/crash/linux/dump_info_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..32c8d612e9393c99cc6763ba62b8cfe6cbc91282
--- /dev/null
+++ b/chromecast/crash/linux/dump_info_unittest.cc
@@ -0,0 +1,134 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <time.h>
+
+#include "chromecast/crash/linux/dump_info.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace chromecast {
+
+TEST(DumpInfoTest, EmptyStringIsNotValid) {
+ DumpInfo dump_info("");
+ ASSERT_FALSE(dump_info.valid());
+}
+
+TEST(DumpInfoTest, TooFewFieldsIsNotValid) {
+ DumpInfo dump_info("name|2001-11-12 18:31:01|dump_string");
+ ASSERT_FALSE(dump_info.valid());
+}
+
+TEST(DumpInfoTest, BadTimeStringIsNotValid) {
+ DumpInfo info("name|Mar 23 2014 01:23:45|dump_string|123456789|logfile.log");
+ ASSERT_FALSE(info.valid());
+}
+
+TEST(DumpInfoTest, AllRequiredFieldsIsValid) {
+ DumpInfo info("name|2001-11-12 18:31:01|dump_string|123456789|logfile.log");
+ struct tm tm = {};
+ tm.tm_isdst = 0;
+ tm.tm_sec = 1;
+ tm.tm_min = 31;
+ tm.tm_hour = 18;
+ tm.tm_mday = 12;
+ tm.tm_mon = 10;
+ tm.tm_year = 101;
+ time_t dump_time = mktime(&tm);
+
+ ASSERT_TRUE(info.valid());
+ ASSERT_EQ("name", info.params().process_name);
+ ASSERT_EQ(dump_time, info.dump_time());
+ ASSERT_EQ("dump_string", info.crashed_process_dump());
+ ASSERT_EQ(123456789u, info.params().process_uptime);
+ ASSERT_EQ("logfile.log", info.logfile());
+}
+
+TEST(DumpInfoTest, EmptyProcessNameIsValid) {
+ DumpInfo dump_info("|2001-11-12 18:31:01|dump_string|123456789|logfile.log");
+ ASSERT_TRUE(dump_info.valid());
+}
+
+TEST(DumpInfoTest, SomeRequiredFieldsEmptyIsValid) {
+ // TODO(slan): This test is failing non-deterministically (time result is
+ // occasionally off by an hour - has something to do with DST). It is a
+ // concurrency issue with mktime. Investigate.
+ DumpInfo info("name|2001-11-12 18:31:01|||");
+ struct tm tm = {};
+ tm.tm_isdst = 0;
+ tm.tm_sec = 1;
+ tm.tm_min = 31;
+ tm.tm_hour = 18;
+ tm.tm_mday = 12;
+ tm.tm_mon = 10;
+ tm.tm_year = 101;
+ time_t dump_time = mktime(&tm);
+
+ ASSERT_TRUE(info.valid());
+ ASSERT_EQ("name", info.params().process_name);
+ ASSERT_EQ(dump_time, info.dump_time());
+ ASSERT_EQ("", info.crashed_process_dump());
+ ASSERT_EQ(0u, info.params().process_uptime);
+ ASSERT_EQ("", info.logfile());
+}
+
+TEST(DumpInfoTest, AllOptionalFieldsIsValid) {
+ DumpInfo info(
+ "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|"
+ "suffix|previous_app|current_app|last_app|RELEASE|BUILD_NUMBER");
+ struct tm tm = {};
+ tm.tm_isdst = 0;
+ tm.tm_sec = 1;
+ tm.tm_min = 31;
+ tm.tm_hour = 18;
+ tm.tm_mday = 12;
+ tm.tm_mon = 10;
+ tm.tm_year = 101;
+ time_t dump_time = mktime(&tm);
+
+ ASSERT_TRUE(info.valid());
+ ASSERT_EQ("name", info.params().process_name);
+ ASSERT_EQ(dump_time, info.dump_time());
+ ASSERT_EQ("dump_string", info.crashed_process_dump());
+ ASSERT_EQ(123456789u, info.params().process_uptime);
+ ASSERT_EQ("logfile.log", info.logfile());
+
+ ASSERT_EQ("suffix", info.params().suffix);
+ ASSERT_EQ("previous_app", info.params().previous_app_name);
+ ASSERT_EQ("current_app", info.params().current_app_name);
+ ASSERT_EQ("last_app", info.params().last_app_name);
+}
+
+TEST(DumpInfoTest, SomeOptionalFieldsIsValid) {
+ DumpInfo info(
+ "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|"
+ "suffix|previous_app");
+ struct tm tm = {};
+ tm.tm_isdst = 0;
+ tm.tm_sec = 1;
+ tm.tm_min = 31;
+ tm.tm_hour = 18;
+ tm.tm_mday = 12;
+ tm.tm_mon = 10;
+ tm.tm_year = 101;
+ time_t dump_time = mktime(&tm);
+
+ ASSERT_TRUE(info.valid());
+ ASSERT_EQ("name", info.params().process_name);
+ ASSERT_EQ(dump_time, info.dump_time());
+ ASSERT_EQ("dump_string", info.crashed_process_dump());
+ ASSERT_EQ(123456789u, info.params().process_uptime);
+ ASSERT_EQ("logfile.log", info.logfile());
+
+ ASSERT_EQ("suffix", info.params().suffix);
+ ASSERT_EQ("previous_app", info.params().previous_app_name);
+}
+
+TEST(DumpInfoTest, TooManyFieldsIsNotValid) {
+ DumpInfo info(
+ "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|"
+ "suffix|previous_app|current_app|last_app|VERSION|BUILD_NUM|extra_field");
+ ASSERT_FALSE(info.valid());
+}
+
+} // chromecast
« no previous file with comments | « chromecast/crash/linux/dump_info.cc ('k') | chromecast/crash/linux/minidump_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698