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