OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include <time.h> |
| 6 |
| 7 #include "chromecast/crash/linux/dump_info.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 |
| 10 namespace chromecast { |
| 11 |
| 12 TEST(DumpInfoTest, EmptyStringIsNotValid) { |
| 13 DumpInfo dump_info(""); |
| 14 ASSERT_FALSE(dump_info.valid()); |
| 15 } |
| 16 |
| 17 TEST(DumpInfoTest, TooFewFieldsIsNotValid) { |
| 18 DumpInfo dump_info("name|2001-11-12 18:31:01|dump_string"); |
| 19 ASSERT_FALSE(dump_info.valid()); |
| 20 } |
| 21 |
| 22 TEST(DumpInfoTest, BadTimeStringIsNotValid) { |
| 23 DumpInfo info("name|Mar 23 2014 01:23:45|dump_string|123456789|logfile.log"); |
| 24 ASSERT_FALSE(info.valid()); |
| 25 } |
| 26 |
| 27 TEST(DumpInfoTest, AllRequiredFieldsIsValid) { |
| 28 DumpInfo info("name|2001-11-12 18:31:01|dump_string|123456789|logfile.log"); |
| 29 struct tm tm = {}; |
| 30 tm.tm_isdst = 0; |
| 31 tm.tm_sec = 1; |
| 32 tm.tm_min = 31; |
| 33 tm.tm_hour = 18; |
| 34 tm.tm_mday = 12; |
| 35 tm.tm_mon = 10; |
| 36 tm.tm_year = 101; |
| 37 time_t dump_time = mktime(&tm); |
| 38 |
| 39 ASSERT_TRUE(info.valid()); |
| 40 ASSERT_EQ("name", info.params().process_name); |
| 41 ASSERT_EQ(dump_time, info.dump_time()); |
| 42 ASSERT_EQ("dump_string", info.crashed_process_dump()); |
| 43 ASSERT_EQ(123456789u, info.params().process_uptime); |
| 44 ASSERT_EQ("logfile.log", info.logfile()); |
| 45 } |
| 46 |
| 47 TEST(DumpInfoTest, EmptyProcessNameIsValid) { |
| 48 DumpInfo dump_info("|2001-11-12 18:31:01|dump_string|123456789|logfile.log"); |
| 49 ASSERT_TRUE(dump_info.valid()); |
| 50 } |
| 51 |
| 52 TEST(DumpInfoTest, SomeRequiredFieldsEmptyIsValid) { |
| 53 // TODO(slan): This test is failing non-deterministically (time result is |
| 54 // occasionally off by an hour - has something to do with DST). It is a |
| 55 // concurrency issue with mktime. Investigate. |
| 56 DumpInfo info("name|2001-11-12 18:31:01|||"); |
| 57 struct tm tm = {}; |
| 58 tm.tm_isdst = 0; |
| 59 tm.tm_sec = 1; |
| 60 tm.tm_min = 31; |
| 61 tm.tm_hour = 18; |
| 62 tm.tm_mday = 12; |
| 63 tm.tm_mon = 10; |
| 64 tm.tm_year = 101; |
| 65 time_t dump_time = mktime(&tm); |
| 66 |
| 67 ASSERT_TRUE(info.valid()); |
| 68 ASSERT_EQ("name", info.params().process_name); |
| 69 ASSERT_EQ(dump_time, info.dump_time()); |
| 70 ASSERT_EQ("", info.crashed_process_dump()); |
| 71 ASSERT_EQ(0u, info.params().process_uptime); |
| 72 ASSERT_EQ("", info.logfile()); |
| 73 } |
| 74 |
| 75 TEST(DumpInfoTest, AllOptionalFieldsIsValid) { |
| 76 DumpInfo info( |
| 77 "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|" |
| 78 "suffix|previous_app|current_app|last_app|RELEASE|BUILD_NUMBER"); |
| 79 struct tm tm = {}; |
| 80 tm.tm_isdst = 0; |
| 81 tm.tm_sec = 1; |
| 82 tm.tm_min = 31; |
| 83 tm.tm_hour = 18; |
| 84 tm.tm_mday = 12; |
| 85 tm.tm_mon = 10; |
| 86 tm.tm_year = 101; |
| 87 time_t dump_time = mktime(&tm); |
| 88 |
| 89 ASSERT_TRUE(info.valid()); |
| 90 ASSERT_EQ("name", info.params().process_name); |
| 91 ASSERT_EQ(dump_time, info.dump_time()); |
| 92 ASSERT_EQ("dump_string", info.crashed_process_dump()); |
| 93 ASSERT_EQ(123456789u, info.params().process_uptime); |
| 94 ASSERT_EQ("logfile.log", info.logfile()); |
| 95 |
| 96 ASSERT_EQ("suffix", info.params().suffix); |
| 97 ASSERT_EQ("previous_app", info.params().previous_app_name); |
| 98 ASSERT_EQ("current_app", info.params().current_app_name); |
| 99 ASSERT_EQ("last_app", info.params().last_app_name); |
| 100 } |
| 101 |
| 102 TEST(DumpInfoTest, SomeOptionalFieldsIsValid) { |
| 103 DumpInfo info( |
| 104 "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|" |
| 105 "suffix|previous_app"); |
| 106 struct tm tm = {}; |
| 107 tm.tm_isdst = 0; |
| 108 tm.tm_sec = 1; |
| 109 tm.tm_min = 31; |
| 110 tm.tm_hour = 18; |
| 111 tm.tm_mday = 12; |
| 112 tm.tm_mon = 10; |
| 113 tm.tm_year = 101; |
| 114 time_t dump_time = mktime(&tm); |
| 115 |
| 116 ASSERT_TRUE(info.valid()); |
| 117 ASSERT_EQ("name", info.params().process_name); |
| 118 ASSERT_EQ(dump_time, info.dump_time()); |
| 119 ASSERT_EQ("dump_string", info.crashed_process_dump()); |
| 120 ASSERT_EQ(123456789u, info.params().process_uptime); |
| 121 ASSERT_EQ("logfile.log", info.logfile()); |
| 122 |
| 123 ASSERT_EQ("suffix", info.params().suffix); |
| 124 ASSERT_EQ("previous_app", info.params().previous_app_name); |
| 125 } |
| 126 |
| 127 TEST(DumpInfoTest, TooManyFieldsIsNotValid) { |
| 128 DumpInfo info( |
| 129 "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|" |
| 130 "suffix|previous_app|current_app|last_app|VERSION|BUILD_NUM|extra_field"); |
| 131 ASSERT_FALSE(info.valid()); |
| 132 } |
| 133 |
| 134 } // chromecast |
OLD | NEW |