OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <time.h> | 5 #include <time.h> |
6 | 6 |
7 #include "base/values.h" | 7 #include "base/values.h" |
8 #include "chromecast/crash/linux/crash_testing_utils.h" | 8 #include "chromecast/crash/linux/crash_testing_utils.h" |
9 #include "chromecast/crash/linux/dump_info.h" | 9 #include "chromecast/crash/linux/dump_info.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 | 11 |
12 namespace chromecast { | 12 namespace chromecast { |
13 | 13 |
14 TEST(DumpInfoTest, EmptyStringIsNotValid) { | 14 TEST(DumpInfoTest, EmptyStringIsNotValid) { |
15 scoped_ptr<DumpInfo> dump_info(CreateDumpInfo("")); | 15 std::unique_ptr<DumpInfo> dump_info(CreateDumpInfo("")); |
16 ASSERT_FALSE(dump_info->valid()); | 16 ASSERT_FALSE(dump_info->valid()); |
17 } | 17 } |
18 | 18 |
19 TEST(DumpInfoTest, TooFewFieldsIsNotValid) { | 19 TEST(DumpInfoTest, TooFewFieldsIsNotValid) { |
20 scoped_ptr<DumpInfo> dump_info(CreateDumpInfo( | 20 std::unique_ptr<DumpInfo> dump_info( |
21 "{" | 21 CreateDumpInfo("{" |
22 "\"name\": \"name\"," | 22 "\"name\": \"name\"," |
23 "\"dump_time\" : \"2001-11-12 18:31:01\"," | 23 "\"dump_time\" : \"2001-11-12 18:31:01\"," |
24 "\"dump\": \"dump_string\"" | 24 "\"dump\": \"dump_string\"" |
25 "}")); | 25 "}")); |
26 ASSERT_FALSE(dump_info->valid()); | 26 ASSERT_FALSE(dump_info->valid()); |
27 } | 27 } |
28 | 28 |
29 TEST(DumpInfoTest, BadTimeStringIsNotValid) { | 29 TEST(DumpInfoTest, BadTimeStringIsNotValid) { |
30 scoped_ptr<DumpInfo> info(CreateDumpInfo( | 30 std::unique_ptr<DumpInfo> info( |
31 "{" | 31 CreateDumpInfo("{" |
32 "\"name\": \"name\"," | 32 "\"name\": \"name\"," |
33 "\"dump_time\" : \"Mar 23 2014 01:23:45\"," | 33 "\"dump_time\" : \"Mar 23 2014 01:23:45\"," |
34 "\"dump\": \"dump_string\"," | 34 "\"dump\": \"dump_string\"," |
35 "\"uptime\": \"123456789\"," | 35 "\"uptime\": \"123456789\"," |
36 "\"logfile\": \"logfile.log\"" | 36 "\"logfile\": \"logfile.log\"" |
37 "}")); | 37 "}")); |
38 ASSERT_FALSE(info->valid()); | 38 ASSERT_FALSE(info->valid()); |
39 } | 39 } |
40 | 40 |
41 TEST(DumpInfoTest, AllRequiredFieldsIsValid) { | 41 TEST(DumpInfoTest, AllRequiredFieldsIsValid) { |
42 scoped_ptr<DumpInfo> info(CreateDumpInfo( | 42 std::unique_ptr<DumpInfo> info( |
43 "{" | 43 CreateDumpInfo("{" |
44 "\"name\": \"name\"," | 44 "\"name\": \"name\"," |
45 "\"dump_time\" : \"2001-11-12 18:31:01\"," | 45 "\"dump_time\" : \"2001-11-12 18:31:01\"," |
46 "\"dump\": \"dump_string\"," | 46 "\"dump\": \"dump_string\"," |
47 "\"uptime\": \"123456789\"," | 47 "\"uptime\": \"123456789\"," |
48 "\"logfile\": \"logfile.log\"" | 48 "\"logfile\": \"logfile.log\"" |
49 "}")); | 49 "}")); |
50 struct tm tm = {0}; | 50 struct tm tm = {0}; |
51 tm.tm_isdst = 0; | 51 tm.tm_isdst = 0; |
52 tm.tm_sec = 1; | 52 tm.tm_sec = 1; |
53 tm.tm_min = 31; | 53 tm.tm_min = 31; |
54 tm.tm_hour = 18; | 54 tm.tm_hour = 18; |
55 tm.tm_mday = 12; | 55 tm.tm_mday = 12; |
56 tm.tm_mon = 10; | 56 tm.tm_mon = 10; |
57 tm.tm_year = 101; | 57 tm.tm_year = 101; |
58 time_t dump_time = mktime(&tm); | 58 time_t dump_time = mktime(&tm); |
59 | 59 |
60 ASSERT_TRUE(info->valid()); | 60 ASSERT_TRUE(info->valid()); |
61 ASSERT_EQ("name", info->params().process_name); | 61 ASSERT_EQ("name", info->params().process_name); |
62 ASSERT_EQ(dump_time, info->dump_time()); | 62 ASSERT_EQ(dump_time, info->dump_time()); |
63 ASSERT_EQ("dump_string", info->crashed_process_dump()); | 63 ASSERT_EQ("dump_string", info->crashed_process_dump()); |
64 ASSERT_EQ(123456789u, info->params().process_uptime); | 64 ASSERT_EQ(123456789u, info->params().process_uptime); |
65 ASSERT_EQ("logfile.log", info->logfile()); | 65 ASSERT_EQ("logfile.log", info->logfile()); |
66 } | 66 } |
67 | 67 |
68 TEST(DumpInfoTest, EmptyProcessNameIsValid) { | 68 TEST(DumpInfoTest, EmptyProcessNameIsValid) { |
69 scoped_ptr<DumpInfo> dump_info(CreateDumpInfo( | 69 std::unique_ptr<DumpInfo> dump_info( |
70 "{" | 70 CreateDumpInfo("{" |
71 "\"name\": \"\"," | 71 "\"name\": \"\"," |
72 "\"dump_time\" : \"2001-11-12 18:31:01\"," | 72 "\"dump_time\" : \"2001-11-12 18:31:01\"," |
73 "\"dump\": \"dump_string\"," | 73 "\"dump\": \"dump_string\"," |
74 "\"uptime\": \"123456789\"," | 74 "\"uptime\": \"123456789\"," |
75 "\"logfile\": \"logfile.log\"" | 75 "\"logfile\": \"logfile.log\"" |
76 "}")); | 76 "}")); |
77 ASSERT_TRUE(dump_info->valid()); | 77 ASSERT_TRUE(dump_info->valid()); |
78 } | 78 } |
79 | 79 |
80 TEST(DumpInfoTest, SomeRequiredFieldsEmptyIsValid) { | 80 TEST(DumpInfoTest, SomeRequiredFieldsEmptyIsValid) { |
81 scoped_ptr<DumpInfo> info(CreateDumpInfo( | 81 std::unique_ptr<DumpInfo> info( |
82 "{" | 82 CreateDumpInfo("{" |
83 "\"name\": \"name\"," | 83 "\"name\": \"name\"," |
84 "\"dump_time\" : \"2001-11-12 18:31:01\"," | 84 "\"dump_time\" : \"2001-11-12 18:31:01\"," |
85 "\"dump\": \"\"," | 85 "\"dump\": \"\"," |
86 "\"uptime\": \"\"," | 86 "\"uptime\": \"\"," |
87 "\"logfile\": \"\"" | 87 "\"logfile\": \"\"" |
88 "}")); | 88 "}")); |
89 struct tm tm = {0}; | 89 struct tm tm = {0}; |
90 tm.tm_isdst = 0; | 90 tm.tm_isdst = 0; |
91 tm.tm_sec = 1; | 91 tm.tm_sec = 1; |
92 tm.tm_min = 31; | 92 tm.tm_min = 31; |
93 tm.tm_hour = 18; | 93 tm.tm_hour = 18; |
94 tm.tm_mday = 12; | 94 tm.tm_mday = 12; |
95 tm.tm_mon = 10; | 95 tm.tm_mon = 10; |
96 tm.tm_year = 101; | 96 tm.tm_year = 101; |
97 time_t dump_time = mktime(&tm); | 97 time_t dump_time = mktime(&tm); |
98 | 98 |
99 ASSERT_TRUE(info->valid()); | 99 ASSERT_TRUE(info->valid()); |
100 ASSERT_EQ("name", info->params().process_name); | 100 ASSERT_EQ("name", info->params().process_name); |
101 ASSERT_EQ(dump_time, info->dump_time()); | 101 ASSERT_EQ(dump_time, info->dump_time()); |
102 ASSERT_EQ("", info->crashed_process_dump()); | 102 ASSERT_EQ("", info->crashed_process_dump()); |
103 ASSERT_EQ(0u, info->params().process_uptime); | 103 ASSERT_EQ(0u, info->params().process_uptime); |
104 ASSERT_EQ("", info->logfile()); | 104 ASSERT_EQ("", info->logfile()); |
105 } | 105 } |
106 | 106 |
107 TEST(DumpInfoTest, AllOptionalFieldsIsValid) { | 107 TEST(DumpInfoTest, AllOptionalFieldsIsValid) { |
108 scoped_ptr<DumpInfo> info(CreateDumpInfo( | 108 std::unique_ptr<DumpInfo> info( |
109 "{" | 109 CreateDumpInfo("{" |
110 "\"name\": \"name\"," | 110 "\"name\": \"name\"," |
111 "\"dump_time\" : \"2001-11-12 18:31:01\"," | 111 "\"dump_time\" : \"2001-11-12 18:31:01\"," |
112 "\"dump\": \"dump_string\"," | 112 "\"dump\": \"dump_string\"," |
113 "\"uptime\": \"123456789\"," | 113 "\"uptime\": \"123456789\"," |
114 "\"logfile\": \"logfile.log\"," | 114 "\"logfile\": \"logfile.log\"," |
115 "\"suffix\": \"suffix\"," | 115 "\"suffix\": \"suffix\"," |
116 "\"prev_app_name\": \"previous_app\"," | 116 "\"prev_app_name\": \"previous_app\"," |
117 "\"cur_app_name\": \"current_app\"," | 117 "\"cur_app_name\": \"current_app\"," |
118 "\"last_app_name\": \"last_app\"," | 118 "\"last_app_name\": \"last_app\"," |
119 "\"release_version\": \"RELEASE\"," | 119 "\"release_version\": \"RELEASE\"," |
120 "\"build_number\": \"BUILD_NUMBER\"," | 120 "\"build_number\": \"BUILD_NUMBER\"," |
121 "\"reason\": \"foo\"" | 121 "\"reason\": \"foo\"" |
122 "}")); | 122 "}")); |
123 struct tm tm = {0}; | 123 struct tm tm = {0}; |
124 tm.tm_isdst = 0; | 124 tm.tm_isdst = 0; |
125 tm.tm_sec = 1; | 125 tm.tm_sec = 1; |
126 tm.tm_min = 31; | 126 tm.tm_min = 31; |
127 tm.tm_hour = 18; | 127 tm.tm_hour = 18; |
128 tm.tm_mday = 12; | 128 tm.tm_mday = 12; |
129 tm.tm_mon = 10; | 129 tm.tm_mon = 10; |
130 tm.tm_year = 101; | 130 tm.tm_year = 101; |
131 time_t dump_time = mktime(&tm); | 131 time_t dump_time = mktime(&tm); |
132 | 132 |
133 ASSERT_TRUE(info->valid()); | 133 ASSERT_TRUE(info->valid()); |
134 ASSERT_EQ("name", info->params().process_name); | 134 ASSERT_EQ("name", info->params().process_name); |
135 ASSERT_EQ(dump_time, info->dump_time()); | 135 ASSERT_EQ(dump_time, info->dump_time()); |
136 ASSERT_EQ("dump_string", info->crashed_process_dump()); | 136 ASSERT_EQ("dump_string", info->crashed_process_dump()); |
137 ASSERT_EQ(123456789u, info->params().process_uptime); | 137 ASSERT_EQ(123456789u, info->params().process_uptime); |
138 ASSERT_EQ("logfile.log", info->logfile()); | 138 ASSERT_EQ("logfile.log", info->logfile()); |
139 | 139 |
140 ASSERT_EQ("suffix", info->params().suffix); | 140 ASSERT_EQ("suffix", info->params().suffix); |
141 ASSERT_EQ("previous_app", info->params().previous_app_name); | 141 ASSERT_EQ("previous_app", info->params().previous_app_name); |
142 ASSERT_EQ("current_app", info->params().current_app_name); | 142 ASSERT_EQ("current_app", info->params().current_app_name); |
143 ASSERT_EQ("last_app", info->params().last_app_name); | 143 ASSERT_EQ("last_app", info->params().last_app_name); |
144 ASSERT_EQ("foo", info->params().reason); | 144 ASSERT_EQ("foo", info->params().reason); |
145 } | 145 } |
146 | 146 |
147 TEST(DumpInfoTest, SomeOptionalFieldsIsValid) { | 147 TEST(DumpInfoTest, SomeOptionalFieldsIsValid) { |
148 scoped_ptr<DumpInfo> info(CreateDumpInfo( | 148 std::unique_ptr<DumpInfo> info( |
149 "{" | 149 CreateDumpInfo("{" |
150 "\"name\": \"name\"," | 150 "\"name\": \"name\"," |
151 "\"dump_time\" : \"2001-11-12 18:31:01\"," | 151 "\"dump_time\" : \"2001-11-12 18:31:01\"," |
152 "\"dump\": \"dump_string\"," | 152 "\"dump\": \"dump_string\"," |
153 "\"uptime\": \"123456789\"," | 153 "\"uptime\": \"123456789\"," |
154 "\"logfile\": \"logfile.log\"," | 154 "\"logfile\": \"logfile.log\"," |
155 "\"suffix\": \"suffix\"," | 155 "\"suffix\": \"suffix\"," |
156 "\"prev_app_name\": \"previous_app\"" | 156 "\"prev_app_name\": \"previous_app\"" |
157 "}")); | 157 "}")); |
158 struct tm tm = {0}; | 158 struct tm tm = {0}; |
159 tm.tm_isdst = 0; | 159 tm.tm_isdst = 0; |
160 tm.tm_sec = 1; | 160 tm.tm_sec = 1; |
161 tm.tm_min = 31; | 161 tm.tm_min = 31; |
162 tm.tm_hour = 18; | 162 tm.tm_hour = 18; |
163 tm.tm_mday = 12; | 163 tm.tm_mday = 12; |
164 tm.tm_mon = 10; | 164 tm.tm_mon = 10; |
165 tm.tm_year = 101; | 165 tm.tm_year = 101; |
166 time_t dump_time = mktime(&tm); | 166 time_t dump_time = mktime(&tm); |
167 | 167 |
168 ASSERT_TRUE(info->valid()); | 168 ASSERT_TRUE(info->valid()); |
169 ASSERT_EQ("name", info->params().process_name); | 169 ASSERT_EQ("name", info->params().process_name); |
170 ASSERT_EQ(dump_time, info->dump_time()); | 170 ASSERT_EQ(dump_time, info->dump_time()); |
171 ASSERT_EQ("dump_string", info->crashed_process_dump()); | 171 ASSERT_EQ("dump_string", info->crashed_process_dump()); |
172 ASSERT_EQ(123456789u, info->params().process_uptime); | 172 ASSERT_EQ(123456789u, info->params().process_uptime); |
173 ASSERT_EQ("logfile.log", info->logfile()); | 173 ASSERT_EQ("logfile.log", info->logfile()); |
174 | 174 |
175 ASSERT_EQ("suffix", info->params().suffix); | 175 ASSERT_EQ("suffix", info->params().suffix); |
176 ASSERT_EQ("previous_app", info->params().previous_app_name); | 176 ASSERT_EQ("previous_app", info->params().previous_app_name); |
177 } | 177 } |
178 | 178 |
179 TEST(DumpInfoTest, ExtraFieldsIsNotValid) { | 179 TEST(DumpInfoTest, ExtraFieldsIsNotValid) { |
180 scoped_ptr<DumpInfo> info(CreateDumpInfo( | 180 std::unique_ptr<DumpInfo> info( |
181 "{" | 181 CreateDumpInfo("{" |
182 "\"name\": \"name\"," | 182 "\"name\": \"name\"," |
183 "\"dump_time\" : \"2001-11-12 18:31:01\"," | 183 "\"dump_time\" : \"2001-11-12 18:31:01\"," |
184 "\"dump\": \"dump_string\"," | 184 "\"dump\": \"dump_string\"," |
185 "\"uptime\": \"123456789\"," | 185 "\"uptime\": \"123456789\"," |
186 "\"logfile\": \"logfile.log\"," | 186 "\"logfile\": \"logfile.log\"," |
187 "\"suffix\": \"suffix\"," | 187 "\"suffix\": \"suffix\"," |
188 "\"prev_app_name\": \"previous_app\"," | 188 "\"prev_app_name\": \"previous_app\"," |
189 "\"cur_app_name\": \"current_app\"," | 189 "\"cur_app_name\": \"current_app\"," |
190 "\"last_app_name\": \"last_app\"," | 190 "\"last_app_name\": \"last_app\"," |
191 "\"release_version\": \"RELEASE\"," | 191 "\"release_version\": \"RELEASE\"," |
192 "\"build_number\": \"BUILD_NUMBER\"," | 192 "\"build_number\": \"BUILD_NUMBER\"," |
193 "\"hello\": \"extra_field\"" | 193 "\"hello\": \"extra_field\"" |
194 "}")); | 194 "}")); |
195 ASSERT_FALSE(info->valid()); | 195 ASSERT_FALSE(info->valid()); |
196 } | 196 } |
197 | 197 |
198 } // namespace chromecast | 198 } // namespace chromecast |
OLD | NEW |