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/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, EmptyProcessNameIsNotValid) { |
| 23 DumpInfo dump_info("|2001-11-12 18:31:01|dump_string|123456789|logfile.log"); |
| 24 ASSERT_FALSE(dump_info.valid()); |
| 25 } |
| 26 |
| 27 TEST(DumpInfoTest, BadTimeStringIsNotValid) { |
| 28 DumpInfo info("name|Mar 23 2014 01:23:45|dump_string|123456789|logfile.log"); |
| 29 ASSERT_FALSE(info.valid()); |
| 30 } |
| 31 |
| 32 TEST(DumpInfoTest, AllRequiredFieldsIsValid) { |
| 33 DumpInfo info("name|2001-11-12 18:31:01|dump_string|123456789|logfile.log"); |
| 34 struct tm tm; |
| 35 tm.tm_sec = 1; |
| 36 tm.tm_min = 31; |
| 37 tm.tm_hour = 18; |
| 38 tm.tm_mday = 12; |
| 39 tm.tm_mon = 10; |
| 40 tm.tm_year = 101; |
| 41 time_t dump_time = mktime(&tm); |
| 42 |
| 43 ASSERT_TRUE(info.valid()); |
| 44 ASSERT_EQ("name", info.params().process_name); |
| 45 ASSERT_EQ(dump_time, info.dump_time()); |
| 46 ASSERT_EQ("dump_string", info.crashed_process_dump()); |
| 47 ASSERT_EQ(123456789u, info.params().process_uptime); |
| 48 ASSERT_EQ("logfile.log", info.logfile()); |
| 49 } |
| 50 |
| 51 TEST(DumpInfoTest, SomeRequiredFieldsEmptyIsValid) { |
| 52 // TODO(slan): This test is failing non-deterministically (time result is |
| 53 // occasionally off by an hour - has something to do with DST). It is a |
| 54 // concurrency issue with mktime. Investigate. |
| 55 DumpInfo info("name|2001-11-12 18:31:01|||"); |
| 56 struct tm tm; |
| 57 tm.tm_sec = 1; |
| 58 tm.tm_min = 31; |
| 59 tm.tm_hour = 18; |
| 60 tm.tm_mday = 12; |
| 61 tm.tm_mon = 10; |
| 62 tm.tm_year = 101; |
| 63 time_t dump_time = mktime(&tm); |
| 64 |
| 65 ASSERT_TRUE(info.valid()); |
| 66 ASSERT_EQ("name", info.params().process_name); |
| 67 ASSERT_EQ(dump_time, info.dump_time()); |
| 68 ASSERT_EQ("", info.crashed_process_dump()); |
| 69 ASSERT_EQ(0u, info.params().process_uptime); |
| 70 ASSERT_EQ("", info.logfile()); |
| 71 } |
| 72 |
| 73 TEST(DumpInfoTest, AllOptionalFieldsIsValid) { |
| 74 DumpInfo info( |
| 75 "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|" |
| 76 "suffix|previous_app|current_app|last_app|RELEASE|BUILD_NUMBER"); |
| 77 struct tm tm; |
| 78 tm.tm_sec = 1; |
| 79 tm.tm_min = 31; |
| 80 tm.tm_hour = 18; |
| 81 tm.tm_mday = 12; |
| 82 tm.tm_mon = 10; |
| 83 tm.tm_year = 101; |
| 84 time_t dump_time = mktime(&tm); |
| 85 |
| 86 ASSERT_TRUE(info.valid()); |
| 87 ASSERT_EQ("name", info.params().process_name); |
| 88 ASSERT_EQ(dump_time, info.dump_time()); |
| 89 ASSERT_EQ("dump_string", info.crashed_process_dump()); |
| 90 ASSERT_EQ(123456789u, info.params().process_uptime); |
| 91 ASSERT_EQ("logfile.log", info.logfile()); |
| 92 |
| 93 ASSERT_EQ("suffix", info.params().suffix); |
| 94 ASSERT_EQ("previous_app", info.params().previous_app_name); |
| 95 ASSERT_EQ("current_app", info.params().current_app_name); |
| 96 ASSERT_EQ("last_app", info.params().last_app_name); |
| 97 } |
| 98 |
| 99 TEST(DumpInfoTest, SomeOptionalFieldsIsValid) { |
| 100 DumpInfo info( |
| 101 "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|" |
| 102 "suffix|previous_app"); |
| 103 struct tm tm; |
| 104 tm.tm_sec = 1; |
| 105 tm.tm_min = 31; |
| 106 tm.tm_hour = 18; |
| 107 tm.tm_mday = 12; |
| 108 tm.tm_mon = 10; |
| 109 tm.tm_year = 101; |
| 110 time_t dump_time = mktime(&tm); |
| 111 |
| 112 ASSERT_TRUE(info.valid()); |
| 113 ASSERT_EQ("name", info.params().process_name); |
| 114 ASSERT_EQ(dump_time, info.dump_time()); |
| 115 ASSERT_EQ("dump_string", info.crashed_process_dump()); |
| 116 ASSERT_EQ(123456789u, info.params().process_uptime); |
| 117 ASSERT_EQ("logfile.log", info.logfile()); |
| 118 |
| 119 ASSERT_EQ("suffix", info.params().suffix); |
| 120 ASSERT_EQ("previous_app", info.params().previous_app_name); |
| 121 } |
| 122 |
| 123 TEST(DumpInfoTest, TooManyFieldsIsNotValid) { |
| 124 DumpInfo info( |
| 125 "name|2001-11-12 18:31:01|dump_string|123456789|logfile.log|" |
| 126 "suffix|previous_app|current_app|last_app|VERSION|BUILD_NUM|extra_field"); |
| 127 ASSERT_FALSE(info.valid()); |
| 128 } |
| 129 |
| 130 } // chromecast |
OLD | NEW |