| OLD | NEW |
| 1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); | 73 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
| 74 | 74 |
| 75 const MinidumpCrashpadInfo* crashpad_info = nullptr; | 75 const MinidumpCrashpadInfo* crashpad_info = nullptr; |
| 76 const MinidumpSimpleStringDictionary* simple_annotations = nullptr; | 76 const MinidumpSimpleStringDictionary* simple_annotations = nullptr; |
| 77 const MinidumpModuleCrashpadInfoList* module_list = nullptr; | 77 const MinidumpModuleCrashpadInfoList* module_list = nullptr; |
| 78 | 78 |
| 79 ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream( | 79 ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream( |
| 80 string_file.string(), &crashpad_info, &simple_annotations, &module_list)); | 80 string_file.string(), &crashpad_info, &simple_annotations, &module_list)); |
| 81 | 81 |
| 82 EXPECT_EQ(MinidumpCrashpadInfo::kVersion, crashpad_info->version); | 82 EXPECT_EQ(MinidumpCrashpadInfo::kVersion, crashpad_info->version); |
| 83 EXPECT_EQ(UUID(), crashpad_info->report_id); |
| 83 EXPECT_EQ(UUID(), crashpad_info->client_id); | 84 EXPECT_EQ(UUID(), crashpad_info->client_id); |
| 84 EXPECT_FALSE(simple_annotations); | 85 EXPECT_FALSE(simple_annotations); |
| 85 EXPECT_FALSE(module_list); | 86 EXPECT_FALSE(module_list); |
| 86 } | 87 } |
| 87 | 88 |
| 88 TEST(MinidumpCrashpadInfoWriter, ClientID) { | 89 TEST(MinidumpCrashpadInfoWriter, ReportAndClientID) { |
| 89 MinidumpFileWriter minidump_file_writer; | 90 MinidumpFileWriter minidump_file_writer; |
| 90 auto crashpad_info_writer = make_scoped_ptr(new MinidumpCrashpadInfoWriter()); | 91 auto crashpad_info_writer = make_scoped_ptr(new MinidumpCrashpadInfoWriter()); |
| 91 | 92 |
| 93 UUID report_id; |
| 94 ASSERT_TRUE( |
| 95 report_id.InitializeFromString("01234567-89ab-cdef-0123-456789abcdef")); |
| 96 crashpad_info_writer->SetReportID(report_id); |
| 97 |
| 92 UUID client_id; | 98 UUID client_id; |
| 93 ASSERT_TRUE( | 99 ASSERT_TRUE( |
| 94 client_id.InitializeFromString("00112233-4455-6677-8899-aabbccddeeff")); | 100 client_id.InitializeFromString("00112233-4455-6677-8899-aabbccddeeff")); |
| 95 crashpad_info_writer->SetClientID(client_id); | 101 crashpad_info_writer->SetClientID(client_id); |
| 96 | 102 |
| 97 EXPECT_TRUE(crashpad_info_writer->IsUseful()); | 103 EXPECT_TRUE(crashpad_info_writer->IsUseful()); |
| 98 | 104 |
| 99 minidump_file_writer.AddStream(crashpad_info_writer.Pass()); | 105 minidump_file_writer.AddStream(crashpad_info_writer.Pass()); |
| 100 | 106 |
| 101 StringFile string_file; | 107 StringFile string_file; |
| 102 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); | 108 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
| 103 | 109 |
| 104 const MinidumpCrashpadInfo* crashpad_info = nullptr; | 110 const MinidumpCrashpadInfo* crashpad_info = nullptr; |
| 105 const MinidumpSimpleStringDictionary* simple_annotations = nullptr; | 111 const MinidumpSimpleStringDictionary* simple_annotations = nullptr; |
| 106 const MinidumpModuleCrashpadInfoList* module_list = nullptr; | 112 const MinidumpModuleCrashpadInfoList* module_list = nullptr; |
| 107 | 113 |
| 108 ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream( | 114 ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream( |
| 109 string_file.string(), &crashpad_info, &simple_annotations, &module_list)); | 115 string_file.string(), &crashpad_info, &simple_annotations, &module_list)); |
| 110 | 116 |
| 111 EXPECT_EQ(MinidumpCrashpadInfo::kVersion, crashpad_info->version); | 117 EXPECT_EQ(MinidumpCrashpadInfo::kVersion, crashpad_info->version); |
| 118 EXPECT_EQ(report_id, crashpad_info->report_id); |
| 112 EXPECT_EQ(client_id, crashpad_info->client_id); | 119 EXPECT_EQ(client_id, crashpad_info->client_id); |
| 113 EXPECT_FALSE(simple_annotations); | 120 EXPECT_FALSE(simple_annotations); |
| 114 EXPECT_FALSE(module_list); | 121 EXPECT_FALSE(module_list); |
| 115 } | 122 } |
| 116 | 123 |
| 117 TEST(MinidumpCrashpadInfoWriter, SimpleAnnotations) { | 124 TEST(MinidumpCrashpadInfoWriter, SimpleAnnotations) { |
| 118 MinidumpFileWriter minidump_file_writer; | 125 MinidumpFileWriter minidump_file_writer; |
| 119 auto crashpad_info_writer = make_scoped_ptr(new MinidumpCrashpadInfoWriter()); | 126 auto crashpad_info_writer = make_scoped_ptr(new MinidumpCrashpadInfoWriter()); |
| 120 | 127 |
| 121 const char kKey[] = | 128 const char kKey[] = |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 ASSERT_TRUE(module); | 208 ASSERT_TRUE(module); |
| 202 | 209 |
| 203 EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module->version); | 210 EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module->version); |
| 204 EXPECT_EQ(0u, module->list_annotations.DataSize); | 211 EXPECT_EQ(0u, module->list_annotations.DataSize); |
| 205 EXPECT_EQ(0u, module->list_annotations.Rva); | 212 EXPECT_EQ(0u, module->list_annotations.Rva); |
| 206 EXPECT_EQ(0u, module->simple_annotations.DataSize); | 213 EXPECT_EQ(0u, module->simple_annotations.DataSize); |
| 207 EXPECT_EQ(0u, module->simple_annotations.Rva); | 214 EXPECT_EQ(0u, module->simple_annotations.Rva); |
| 208 } | 215 } |
| 209 | 216 |
| 210 TEST(MinidumpCrashpadInfoWriter, InitializeFromSnapshot) { | 217 TEST(MinidumpCrashpadInfoWriter, InitializeFromSnapshot) { |
| 218 UUID report_id; |
| 219 ASSERT_TRUE( |
| 220 report_id.InitializeFromString("fedcba98-7654-3210-fedc-ba9876543210")); |
| 221 |
| 211 UUID client_id; | 222 UUID client_id; |
| 212 ASSERT_TRUE( | 223 ASSERT_TRUE( |
| 213 client_id.InitializeFromString("fedcba98-7654-3210-0123-456789abcdef")); | 224 client_id.InitializeFromString("fedcba98-7654-3210-0123-456789abcdef")); |
| 214 | 225 |
| 215 const char kKey[] = "version"; | 226 const char kKey[] = "version"; |
| 216 const char kValue[] = "40.0.2214.111"; | 227 const char kValue[] = "40.0.2214.111"; |
| 217 const char kEntry[] = "This is a simple annotation in a list."; | 228 const char kEntry[] = "This is a simple annotation in a list."; |
| 218 | 229 |
| 219 // Test with a useless module, one that doesn’t carry anything that would | 230 // Test with a useless module, one that doesn’t carry anything that would |
| 220 // require MinidumpCrashpadInfo or any child object. | 231 // require MinidumpCrashpadInfo or any child object. |
| 221 auto process_snapshot = make_scoped_ptr(new TestProcessSnapshot()); | 232 auto process_snapshot = make_scoped_ptr(new TestProcessSnapshot()); |
| 222 | 233 |
| 223 auto module_snapshot = make_scoped_ptr(new TestModuleSnapshot()); | 234 auto module_snapshot = make_scoped_ptr(new TestModuleSnapshot()); |
| 224 process_snapshot->AddModule(module_snapshot.Pass()); | 235 process_snapshot->AddModule(module_snapshot.Pass()); |
| 225 | 236 |
| 226 auto info_writer = make_scoped_ptr(new MinidumpCrashpadInfoWriter()); | 237 auto info_writer = make_scoped_ptr(new MinidumpCrashpadInfoWriter()); |
| 227 info_writer->InitializeFromSnapshot(process_snapshot.get()); | 238 info_writer->InitializeFromSnapshot(process_snapshot.get()); |
| 228 EXPECT_FALSE(info_writer->IsUseful()); | 239 EXPECT_FALSE(info_writer->IsUseful()); |
| 229 | 240 |
| 230 // Try again with a useful module. | 241 // Try again with a useful module. |
| 231 process_snapshot.reset(new TestProcessSnapshot()); | 242 process_snapshot.reset(new TestProcessSnapshot()); |
| 232 | 243 |
| 244 process_snapshot->SetReportID(report_id); |
| 233 process_snapshot->SetClientID(client_id); | 245 process_snapshot->SetClientID(client_id); |
| 234 | 246 |
| 235 std::map<std::string, std::string> annotations_simple_map; | 247 std::map<std::string, std::string> annotations_simple_map; |
| 236 annotations_simple_map[kKey] = kValue; | 248 annotations_simple_map[kKey] = kValue; |
| 237 process_snapshot->SetAnnotationsSimpleMap(annotations_simple_map); | 249 process_snapshot->SetAnnotationsSimpleMap(annotations_simple_map); |
| 238 | 250 |
| 239 module_snapshot.reset(new TestModuleSnapshot()); | 251 module_snapshot.reset(new TestModuleSnapshot()); |
| 240 std::vector<std::string> annotations_list(1, std::string(kEntry)); | 252 std::vector<std::string> annotations_list(1, std::string(kEntry)); |
| 241 module_snapshot->SetAnnotationsVector(annotations_list); | 253 module_snapshot->SetAnnotationsVector(annotations_list); |
| 242 process_snapshot->AddModule(module_snapshot.Pass()); | 254 process_snapshot->AddModule(module_snapshot.Pass()); |
| 243 | 255 |
| 244 info_writer.reset(new MinidumpCrashpadInfoWriter()); | 256 info_writer.reset(new MinidumpCrashpadInfoWriter()); |
| 245 info_writer->InitializeFromSnapshot(process_snapshot.get()); | 257 info_writer->InitializeFromSnapshot(process_snapshot.get()); |
| 246 EXPECT_TRUE(info_writer->IsUseful()); | 258 EXPECT_TRUE(info_writer->IsUseful()); |
| 247 | 259 |
| 248 MinidumpFileWriter minidump_file_writer; | 260 MinidumpFileWriter minidump_file_writer; |
| 249 minidump_file_writer.AddStream(info_writer.Pass()); | 261 minidump_file_writer.AddStream(info_writer.Pass()); |
| 250 | 262 |
| 251 StringFile string_file; | 263 StringFile string_file; |
| 252 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); | 264 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
| 253 | 265 |
| 254 const MinidumpCrashpadInfo* info = nullptr; | 266 const MinidumpCrashpadInfo* info = nullptr; |
| 255 const MinidumpSimpleStringDictionary* simple_annotations; | 267 const MinidumpSimpleStringDictionary* simple_annotations; |
| 256 const MinidumpModuleCrashpadInfoList* module_list; | 268 const MinidumpModuleCrashpadInfoList* module_list; |
| 257 ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream( | 269 ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream( |
| 258 string_file.string(), &info, &simple_annotations, &module_list)); | 270 string_file.string(), &info, &simple_annotations, &module_list)); |
| 259 | 271 |
| 260 EXPECT_EQ(MinidumpCrashpadInfo::kVersion, info->version); | 272 EXPECT_EQ(MinidumpCrashpadInfo::kVersion, info->version); |
| 261 | 273 |
| 274 EXPECT_EQ(report_id, info->report_id); |
| 262 EXPECT_EQ(client_id, info->client_id); | 275 EXPECT_EQ(client_id, info->client_id); |
| 263 | 276 |
| 264 ASSERT_TRUE(simple_annotations); | 277 ASSERT_TRUE(simple_annotations); |
| 265 ASSERT_EQ(1u, simple_annotations->count); | 278 ASSERT_EQ(1u, simple_annotations->count); |
| 266 EXPECT_EQ(kKey, | 279 EXPECT_EQ(kKey, |
| 267 MinidumpUTF8StringAtRVAAsString( | 280 MinidumpUTF8StringAtRVAAsString( |
| 268 string_file.string(), simple_annotations->entries[0].key)); | 281 string_file.string(), simple_annotations->entries[0].key)); |
| 269 EXPECT_EQ(kValue, | 282 EXPECT_EQ(kValue, |
| 270 MinidumpUTF8StringAtRVAAsString( | 283 MinidumpUTF8StringAtRVAAsString( |
| 271 string_file.string(), simple_annotations->entries[0].value)); | 284 string_file.string(), simple_annotations->entries[0].value)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 293 | 306 |
| 294 const MinidumpSimpleStringDictionary* module_simple_annotations = | 307 const MinidumpSimpleStringDictionary* module_simple_annotations = |
| 295 MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>( | 308 MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>( |
| 296 string_file.string(), module->simple_annotations); | 309 string_file.string(), module->simple_annotations); |
| 297 EXPECT_FALSE(module_simple_annotations); | 310 EXPECT_FALSE(module_simple_annotations); |
| 298 } | 311 } |
| 299 | 312 |
| 300 } // namespace | 313 } // namespace |
| 301 } // namespace test | 314 } // namespace test |
| 302 } // namespace crashpad | 315 } // namespace crashpad |
| OLD | NEW |