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, |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
13 // limitations under the License. | 13 // limitations under the License. |
14 | 14 |
15 #include "minidump/minidump_file_writer.h" | 15 #include "minidump/minidump_file_writer.h" |
16 | 16 |
17 #include <windows.h> | 17 #include <windows.h> |
18 #include <dbghelp.h> | 18 #include <dbghelp.h> |
19 | 19 |
20 #include <string> | 20 #include <string> |
| 21 #include <utility> |
21 | 22 |
22 #include "base/basictypes.h" | 23 #include "base/basictypes.h" |
23 #include "base/compiler_specific.h" | 24 #include "base/compiler_specific.h" |
24 #include "gtest/gtest.h" | 25 #include "gtest/gtest.h" |
25 #include "minidump/minidump_stream_writer.h" | 26 #include "minidump/minidump_stream_writer.h" |
26 #include "minidump/minidump_writable.h" | 27 #include "minidump/minidump_writable.h" |
27 #include "minidump/test/minidump_file_writer_test_util.h" | 28 #include "minidump/test/minidump_file_writer_test_util.h" |
28 #include "minidump/test/minidump_writable_test_util.h" | 29 #include "minidump/test/minidump_writable_test_util.h" |
29 #include "snapshot/test/test_cpu_context.h" | 30 #include "snapshot/test/test_cpu_context.h" |
30 #include "snapshot/test/test_exception_snapshot.h" | 31 #include "snapshot/test/test_exception_snapshot.h" |
31 #include "snapshot/test/test_memory_snapshot.h" | 32 #include "snapshot/test/test_memory_snapshot.h" |
32 #include "snapshot/test/test_module_snapshot.h" | 33 #include "snapshot/test/test_module_snapshot.h" |
33 #include "snapshot/test/test_process_snapshot.h" | 34 #include "snapshot/test/test_process_snapshot.h" |
34 #include "snapshot/test/test_system_snapshot.h" | 35 #include "snapshot/test/test_system_snapshot.h" |
35 #include "snapshot/test/test_thread_snapshot.h" | 36 #include "snapshot/test/test_thread_snapshot.h" |
36 #include "test/gtest_death_check.h" | 37 #include "test/gtest_death_check.h" |
37 #include "util/file/string_file.h" | 38 #include "util/file/string_file.h" |
38 #include "util/stdlib/move.h" | |
39 | 39 |
40 namespace crashpad { | 40 namespace crashpad { |
41 namespace test { | 41 namespace test { |
42 namespace { | 42 namespace { |
43 | 43 |
44 TEST(MinidumpFileWriter, Empty) { | 44 TEST(MinidumpFileWriter, Empty) { |
45 MinidumpFileWriter minidump_file; | 45 MinidumpFileWriter minidump_file; |
46 StringFile string_file; | 46 StringFile string_file; |
47 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); | 47 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); |
48 ASSERT_EQ(sizeof(MINIDUMP_HEADER), string_file.string().size()); | 48 ASSERT_EQ(sizeof(MINIDUMP_HEADER), string_file.string().size()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 TEST(MinidumpFileWriter, OneStream) { | 90 TEST(MinidumpFileWriter, OneStream) { |
91 MinidumpFileWriter minidump_file; | 91 MinidumpFileWriter minidump_file; |
92 const time_t kTimestamp = 0x155d2fb8; | 92 const time_t kTimestamp = 0x155d2fb8; |
93 minidump_file.SetTimestamp(kTimestamp); | 93 minidump_file.SetTimestamp(kTimestamp); |
94 | 94 |
95 const size_t kStreamSize = 5; | 95 const size_t kStreamSize = 5; |
96 const MinidumpStreamType kStreamType = static_cast<MinidumpStreamType>(0x4d); | 96 const MinidumpStreamType kStreamType = static_cast<MinidumpStreamType>(0x4d); |
97 const uint8_t kStreamValue = 0x5a; | 97 const uint8_t kStreamValue = 0x5a; |
98 auto stream = | 98 auto stream = |
99 make_scoped_ptr(new TestStream(kStreamType, kStreamSize, kStreamValue)); | 99 make_scoped_ptr(new TestStream(kStreamType, kStreamSize, kStreamValue)); |
100 minidump_file.AddStream(crashpad::move(stream)); | 100 minidump_file.AddStream(std::move(stream)); |
101 | 101 |
102 StringFile string_file; | 102 StringFile string_file; |
103 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); | 103 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); |
104 | 104 |
105 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); | 105 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); |
106 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); | 106 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); |
107 const size_t kFileSize = kStreamOffset + kStreamSize; | 107 const size_t kFileSize = kStreamOffset + kStreamSize; |
108 | 108 |
109 ASSERT_EQ(kFileSize, string_file.string().size()); | 109 ASSERT_EQ(kFileSize, string_file.string().size()); |
110 | 110 |
(...skipping 18 matching lines...) Expand all Loading... |
129 TEST(MinidumpFileWriter, ThreeStreams) { | 129 TEST(MinidumpFileWriter, ThreeStreams) { |
130 MinidumpFileWriter minidump_file; | 130 MinidumpFileWriter minidump_file; |
131 const time_t kTimestamp = 0x155d2fb8; | 131 const time_t kTimestamp = 0x155d2fb8; |
132 minidump_file.SetTimestamp(kTimestamp); | 132 minidump_file.SetTimestamp(kTimestamp); |
133 | 133 |
134 const size_t kStream0Size = 5; | 134 const size_t kStream0Size = 5; |
135 const MinidumpStreamType kStream0Type = static_cast<MinidumpStreamType>(0x6d); | 135 const MinidumpStreamType kStream0Type = static_cast<MinidumpStreamType>(0x6d); |
136 const uint8_t kStream0Value = 0x5a; | 136 const uint8_t kStream0Value = 0x5a; |
137 auto stream0 = make_scoped_ptr( | 137 auto stream0 = make_scoped_ptr( |
138 new TestStream(kStream0Type, kStream0Size, kStream0Value)); | 138 new TestStream(kStream0Type, kStream0Size, kStream0Value)); |
139 minidump_file.AddStream(crashpad::move(stream0)); | 139 minidump_file.AddStream(std::move(stream0)); |
140 | 140 |
141 // Make the second stream’s type be a smaller quantity than the first stream’s | 141 // Make the second stream’s type be a smaller quantity than the first stream’s |
142 // to test that the streams show up in the order that they were added, not in | 142 // to test that the streams show up in the order that they were added, not in |
143 // numeric order. | 143 // numeric order. |
144 const size_t kStream1Size = 3; | 144 const size_t kStream1Size = 3; |
145 const MinidumpStreamType kStream1Type = static_cast<MinidumpStreamType>(0x4d); | 145 const MinidumpStreamType kStream1Type = static_cast<MinidumpStreamType>(0x4d); |
146 const uint8_t kStream1Value = 0xa5; | 146 const uint8_t kStream1Value = 0xa5; |
147 auto stream1 = make_scoped_ptr( | 147 auto stream1 = make_scoped_ptr( |
148 new TestStream(kStream1Type, kStream1Size, kStream1Value)); | 148 new TestStream(kStream1Type, kStream1Size, kStream1Value)); |
149 minidump_file.AddStream(crashpad::move(stream1)); | 149 minidump_file.AddStream(std::move(stream1)); |
150 | 150 |
151 const size_t kStream2Size = 1; | 151 const size_t kStream2Size = 1; |
152 const MinidumpStreamType kStream2Type = static_cast<MinidumpStreamType>(0x7e); | 152 const MinidumpStreamType kStream2Type = static_cast<MinidumpStreamType>(0x7e); |
153 const uint8_t kStream2Value = 0x36; | 153 const uint8_t kStream2Value = 0x36; |
154 auto stream2 = make_scoped_ptr( | 154 auto stream2 = make_scoped_ptr( |
155 new TestStream(kStream2Type, kStream2Size, kStream2Value)); | 155 new TestStream(kStream2Type, kStream2Size, kStream2Value)); |
156 minidump_file.AddStream(crashpad::move(stream2)); | 156 minidump_file.AddStream(std::move(stream2)); |
157 | 157 |
158 StringFile string_file; | 158 StringFile string_file; |
159 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); | 159 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); |
160 | 160 |
161 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); | 161 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); |
162 const size_t kStream0Offset = | 162 const size_t kStream0Offset = |
163 kDirectoryOffset + 3 * sizeof(MINIDUMP_DIRECTORY); | 163 kDirectoryOffset + 3 * sizeof(MINIDUMP_DIRECTORY); |
164 const size_t kStream1Padding = 3; | 164 const size_t kStream1Padding = 3; |
165 const size_t kStream1Offset = kStream0Offset + kStream0Size + kStream1Padding; | 165 const size_t kStream1Offset = kStream0Offset + kStream0Size + kStream1Padding; |
166 const size_t kStream2Padding = 1; | 166 const size_t kStream2Padding = 1; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 std::string expected_stream2(kStream2Size, kStream2Value); | 213 std::string expected_stream2(kStream2Size, kStream2Value); |
214 EXPECT_EQ(0, memcmp(stream2_data, expected_stream2.c_str(), kStream2Size)); | 214 EXPECT_EQ(0, memcmp(stream2_data, expected_stream2.c_str(), kStream2Size)); |
215 } | 215 } |
216 | 216 |
217 TEST(MinidumpFileWriter, ZeroLengthStream) { | 217 TEST(MinidumpFileWriter, ZeroLengthStream) { |
218 MinidumpFileWriter minidump_file; | 218 MinidumpFileWriter minidump_file; |
219 | 219 |
220 const size_t kStreamSize = 0; | 220 const size_t kStreamSize = 0; |
221 const MinidumpStreamType kStreamType = static_cast<MinidumpStreamType>(0x4d); | 221 const MinidumpStreamType kStreamType = static_cast<MinidumpStreamType>(0x4d); |
222 auto stream = make_scoped_ptr(new TestStream(kStreamType, kStreamSize, 0)); | 222 auto stream = make_scoped_ptr(new TestStream(kStreamType, kStreamSize, 0)); |
223 minidump_file.AddStream(crashpad::move(stream)); | 223 minidump_file.AddStream(std::move(stream)); |
224 | 224 |
225 StringFile string_file; | 225 StringFile string_file; |
226 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); | 226 ASSERT_TRUE(minidump_file.WriteEverything(&string_file)); |
227 | 227 |
228 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); | 228 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); |
229 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); | 229 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); |
230 const size_t kFileSize = kStreamOffset + kStreamSize; | 230 const size_t kFileSize = kStreamOffset + kStreamSize; |
231 | 231 |
232 ASSERT_EQ(kFileSize, string_file.string().size()); | 232 ASSERT_EQ(kFileSize, string_file.string().size()); |
233 | 233 |
(...skipping 11 matching lines...) Expand all Loading... |
245 TEST(MinidumpFileWriter, InitializeFromSnapshot_Basic) { | 245 TEST(MinidumpFileWriter, InitializeFromSnapshot_Basic) { |
246 const uint32_t kSnapshotTime = 0x4976043c; | 246 const uint32_t kSnapshotTime = 0x4976043c; |
247 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; | 247 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; |
248 | 248 |
249 TestProcessSnapshot process_snapshot; | 249 TestProcessSnapshot process_snapshot; |
250 process_snapshot.SetSnapshotTime(kSnapshotTimeval); | 250 process_snapshot.SetSnapshotTime(kSnapshotTimeval); |
251 | 251 |
252 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); | 252 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); |
253 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); | 253 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); |
254 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); | 254 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); |
255 process_snapshot.SetSystem(crashpad::move(system_snapshot)); | 255 process_snapshot.SetSystem(std::move(system_snapshot)); |
256 | 256 |
257 auto peb_snapshot = make_scoped_ptr(new TestMemorySnapshot()); | 257 auto peb_snapshot = make_scoped_ptr(new TestMemorySnapshot()); |
258 const uint64_t kPebAddress = 0x07f90000; | 258 const uint64_t kPebAddress = 0x07f90000; |
259 peb_snapshot->SetAddress(kPebAddress); | 259 peb_snapshot->SetAddress(kPebAddress); |
260 const size_t kPebSize = 0x280; | 260 const size_t kPebSize = 0x280; |
261 peb_snapshot->SetSize(kPebSize); | 261 peb_snapshot->SetSize(kPebSize); |
262 peb_snapshot->SetValue('p'); | 262 peb_snapshot->SetValue('p'); |
263 process_snapshot.AddExtraMemory(crashpad::move(peb_snapshot)); | 263 process_snapshot.AddExtraMemory(std::move(peb_snapshot)); |
264 | 264 |
265 MinidumpFileWriter minidump_file_writer; | 265 MinidumpFileWriter minidump_file_writer; |
266 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); | 266 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); |
267 | 267 |
268 StringFile string_file; | 268 StringFile string_file; |
269 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); | 269 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
270 | 270 |
271 const MINIDUMP_DIRECTORY* directory; | 271 const MINIDUMP_DIRECTORY* directory; |
272 const MINIDUMP_HEADER* header = | 272 const MINIDUMP_HEADER* header = |
273 MinidumpHeaderAtStart(string_file.string(), &directory); | 273 MinidumpHeaderAtStart(string_file.string(), &directory); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 MSVC_SUPPRESS_WARNING(4309); // Truncation of constant value. | 309 MSVC_SUPPRESS_WARNING(4309); // Truncation of constant value. |
310 MSVC_SUPPRESS_WARNING(4838); // Narrowing conversion. | 310 MSVC_SUPPRESS_WARNING(4838); // Narrowing conversion. |
311 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; | 311 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; |
312 | 312 |
313 TestProcessSnapshot process_snapshot; | 313 TestProcessSnapshot process_snapshot; |
314 process_snapshot.SetSnapshotTime(kSnapshotTimeval); | 314 process_snapshot.SetSnapshotTime(kSnapshotTimeval); |
315 | 315 |
316 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); | 316 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); |
317 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); | 317 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); |
318 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); | 318 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); |
319 process_snapshot.SetSystem(crashpad::move(system_snapshot)); | 319 process_snapshot.SetSystem(std::move(system_snapshot)); |
320 | 320 |
321 auto thread_snapshot = make_scoped_ptr(new TestThreadSnapshot()); | 321 auto thread_snapshot = make_scoped_ptr(new TestThreadSnapshot()); |
322 InitializeCPUContextX86_64(thread_snapshot->MutableContext(), 5); | 322 InitializeCPUContextX86_64(thread_snapshot->MutableContext(), 5); |
323 process_snapshot.AddThread(crashpad::move(thread_snapshot)); | 323 process_snapshot.AddThread(std::move(thread_snapshot)); |
324 | 324 |
325 auto exception_snapshot = make_scoped_ptr(new TestExceptionSnapshot()); | 325 auto exception_snapshot = make_scoped_ptr(new TestExceptionSnapshot()); |
326 InitializeCPUContextX86_64(exception_snapshot->MutableContext(), 11); | 326 InitializeCPUContextX86_64(exception_snapshot->MutableContext(), 11); |
327 process_snapshot.SetException(crashpad::move(exception_snapshot)); | 327 process_snapshot.SetException(std::move(exception_snapshot)); |
328 | 328 |
329 // The module does not have anything that needs to be represented in a | 329 // The module does not have anything that needs to be represented in a |
330 // MinidumpModuleCrashpadInfo structure, so no such structure is expected to | 330 // MinidumpModuleCrashpadInfo structure, so no such structure is expected to |
331 // be present, which will in turn suppress the addition of a | 331 // be present, which will in turn suppress the addition of a |
332 // MinidumpCrashpadInfo stream. | 332 // MinidumpCrashpadInfo stream. |
333 auto module_snapshot = make_scoped_ptr(new TestModuleSnapshot()); | 333 auto module_snapshot = make_scoped_ptr(new TestModuleSnapshot()); |
334 process_snapshot.AddModule(crashpad::move(module_snapshot)); | 334 process_snapshot.AddModule(std::move(module_snapshot)); |
335 | 335 |
336 MinidumpFileWriter minidump_file_writer; | 336 MinidumpFileWriter minidump_file_writer; |
337 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); | 337 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); |
338 | 338 |
339 StringFile string_file; | 339 StringFile string_file; |
340 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); | 340 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
341 | 341 |
342 const MINIDUMP_DIRECTORY* directory; | 342 const MINIDUMP_DIRECTORY* directory; |
343 const MINIDUMP_HEADER* header = | 343 const MINIDUMP_HEADER* header = |
344 MinidumpHeaderAtStart(string_file.string(), &directory); | 344 MinidumpHeaderAtStart(string_file.string(), &directory); |
(...skipping 28 matching lines...) Expand all Loading... |
373 TEST(MinidumpFileWriter, InitializeFromSnapshot_CrashpadInfo) { | 373 TEST(MinidumpFileWriter, InitializeFromSnapshot_CrashpadInfo) { |
374 const uint32_t kSnapshotTime = 0x15393bd3; | 374 const uint32_t kSnapshotTime = 0x15393bd3; |
375 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; | 375 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; |
376 | 376 |
377 TestProcessSnapshot process_snapshot; | 377 TestProcessSnapshot process_snapshot; |
378 process_snapshot.SetSnapshotTime(kSnapshotTimeval); | 378 process_snapshot.SetSnapshotTime(kSnapshotTimeval); |
379 | 379 |
380 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); | 380 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); |
381 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); | 381 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); |
382 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); | 382 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); |
383 process_snapshot.SetSystem(crashpad::move(system_snapshot)); | 383 process_snapshot.SetSystem(std::move(system_snapshot)); |
384 | 384 |
385 auto thread_snapshot = make_scoped_ptr(new TestThreadSnapshot()); | 385 auto thread_snapshot = make_scoped_ptr(new TestThreadSnapshot()); |
386 InitializeCPUContextX86_64(thread_snapshot->MutableContext(), 5); | 386 InitializeCPUContextX86_64(thread_snapshot->MutableContext(), 5); |
387 process_snapshot.AddThread(crashpad::move(thread_snapshot)); | 387 process_snapshot.AddThread(std::move(thread_snapshot)); |
388 | 388 |
389 auto exception_snapshot = make_scoped_ptr(new TestExceptionSnapshot()); | 389 auto exception_snapshot = make_scoped_ptr(new TestExceptionSnapshot()); |
390 InitializeCPUContextX86_64(exception_snapshot->MutableContext(), 11); | 390 InitializeCPUContextX86_64(exception_snapshot->MutableContext(), 11); |
391 process_snapshot.SetException(crashpad::move(exception_snapshot)); | 391 process_snapshot.SetException(std::move(exception_snapshot)); |
392 | 392 |
393 // The module needs an annotation for the MinidumpCrashpadInfo stream to be | 393 // The module needs an annotation for the MinidumpCrashpadInfo stream to be |
394 // considered useful and be included. | 394 // considered useful and be included. |
395 auto module_snapshot = make_scoped_ptr(new TestModuleSnapshot()); | 395 auto module_snapshot = make_scoped_ptr(new TestModuleSnapshot()); |
396 std::vector<std::string> annotations_list(1, std::string("annotation")); | 396 std::vector<std::string> annotations_list(1, std::string("annotation")); |
397 module_snapshot->SetAnnotationsVector(annotations_list); | 397 module_snapshot->SetAnnotationsVector(annotations_list); |
398 process_snapshot.AddModule(crashpad::move(module_snapshot)); | 398 process_snapshot.AddModule(std::move(module_snapshot)); |
399 | 399 |
400 MinidumpFileWriter minidump_file_writer; | 400 MinidumpFileWriter minidump_file_writer; |
401 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); | 401 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); |
402 | 402 |
403 StringFile string_file; | 403 StringFile string_file; |
404 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); | 404 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
405 | 405 |
406 const MINIDUMP_DIRECTORY* directory; | 406 const MINIDUMP_DIRECTORY* directory; |
407 const MINIDUMP_HEADER* header = | 407 const MINIDUMP_HEADER* header = |
408 MinidumpHeaderAtStart(string_file.string(), &directory); | 408 MinidumpHeaderAtStart(string_file.string(), &directory); |
(...skipping 30 matching lines...) Expand all Loading... |
439 } | 439 } |
440 | 440 |
441 TEST(MinidumpFileWriterDeathTest, SameStreamType) { | 441 TEST(MinidumpFileWriterDeathTest, SameStreamType) { |
442 MinidumpFileWriter minidump_file; | 442 MinidumpFileWriter minidump_file; |
443 | 443 |
444 const size_t kStream0Size = 5; | 444 const size_t kStream0Size = 5; |
445 const MinidumpStreamType kStream0Type = static_cast<MinidumpStreamType>(0x4d); | 445 const MinidumpStreamType kStream0Type = static_cast<MinidumpStreamType>(0x4d); |
446 const uint8_t kStream0Value = 0x5a; | 446 const uint8_t kStream0Value = 0x5a; |
447 auto stream0 = make_scoped_ptr( | 447 auto stream0 = make_scoped_ptr( |
448 new TestStream(kStream0Type, kStream0Size, kStream0Value)); | 448 new TestStream(kStream0Type, kStream0Size, kStream0Value)); |
449 minidump_file.AddStream(crashpad::move(stream0)); | 449 minidump_file.AddStream(std::move(stream0)); |
450 | 450 |
451 // It is an error to add a second stream of the same type. | 451 // It is an error to add a second stream of the same type. |
452 const size_t kStream1Size = 3; | 452 const size_t kStream1Size = 3; |
453 const MinidumpStreamType kStream1Type = static_cast<MinidumpStreamType>(0x4d); | 453 const MinidumpStreamType kStream1Type = static_cast<MinidumpStreamType>(0x4d); |
454 const uint8_t kStream1Value = 0xa5; | 454 const uint8_t kStream1Value = 0xa5; |
455 auto stream1 = make_scoped_ptr( | 455 auto stream1 = make_scoped_ptr( |
456 new TestStream(kStream1Type, kStream1Size, kStream1Value)); | 456 new TestStream(kStream1Type, kStream1Size, kStream1Value)); |
457 ASSERT_DEATH_CHECK(minidump_file.AddStream(crashpad::move(stream1)), | 457 ASSERT_DEATH_CHECK(minidump_file.AddStream(std::move(stream1)), |
458 "already present"); | 458 "already present"); |
459 } | 459 } |
460 | 460 |
461 } // namespace | 461 } // namespace |
462 } // namespace test | 462 } // namespace test |
463 } // namespace crashpad | 463 } // namespace crashpad |
OLD | NEW |