| 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
|
|
|