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; | |
wzhong
2015/06/22 23:02:32
You have flakiness for DST, right?
tm_isdst not
slan
2015/06/22 23:28:13
Good catch. The flakiness persists though. I think
| |
30 tm.tm_sec = 1; | |
31 tm.tm_min = 31; | |
32 tm.tm_hour = 18; | |
33 tm.tm_mday = 12; | |
34 tm.tm_mon = 10; | |
35 tm.tm_year = 101; | |
36 time_t dump_time = mktime(&tm); | |
37 | |
38 ASSERT_TRUE(info.valid()); | |
39 ASSERT_EQ("name", info.params().process_name); | |
40 ASSERT_EQ(dump_time, info.dump_time()); | |
41 ASSERT_EQ("dump_string", info.crashed_process_dump()); | |
42 ASSERT_EQ(123456789u, info.params().process_uptime); | |
43 ASSERT_EQ("logfile.log", info.logfile()); | |
44 } | |
45 | |
46 TEST(DumpInfoTest, EmptyProcessNameIsValid) { | |
47 DumpInfo dump_info("|2001-11-12 18:31:01|dump_string|123456789|logfile.log"); | |
48 ASSERT_TRUE(dump_info.valid()); | |
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 |