| 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 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 #include "base/basictypes.h" | 22 #include "base/basictypes.h" |
| 23 #include "base/compiler_specific.h" | 23 #include "base/compiler_specific.h" |
| 24 #include "gtest/gtest.h" | 24 #include "gtest/gtest.h" |
| 25 #include "minidump/minidump_stream_writer.h" | 25 #include "minidump/minidump_stream_writer.h" |
| 26 #include "minidump/minidump_writable.h" | 26 #include "minidump/minidump_writable.h" |
| 27 #include "minidump/test/minidump_file_writer_test_util.h" | 27 #include "minidump/test/minidump_file_writer_test_util.h" |
| 28 #include "minidump/test/minidump_writable_test_util.h" | 28 #include "minidump/test/minidump_writable_test_util.h" |
| 29 #include "snapshot/test/test_cpu_context.h" | 29 #include "snapshot/test/test_cpu_context.h" |
| 30 #include "snapshot/test/test_exception_snapshot.h" | 30 #include "snapshot/test/test_exception_snapshot.h" |
| 31 #include "snapshot/test/test_memory_snapshot.h" |
| 31 #include "snapshot/test/test_module_snapshot.h" | 32 #include "snapshot/test/test_module_snapshot.h" |
| 32 #include "snapshot/test/test_process_snapshot.h" | 33 #include "snapshot/test/test_process_snapshot.h" |
| 33 #include "snapshot/test/test_system_snapshot.h" | 34 #include "snapshot/test/test_system_snapshot.h" |
| 34 #include "snapshot/test/test_thread_snapshot.h" | 35 #include "snapshot/test/test_thread_snapshot.h" |
| 35 #include "test/gtest_death_check.h" | 36 #include "test/gtest_death_check.h" |
| 36 #include "util/file/string_file.h" | 37 #include "util/file/string_file.h" |
| 37 | 38 |
| 38 namespace crashpad { | 39 namespace crashpad { |
| 39 namespace test { | 40 namespace test { |
| 40 namespace { | 41 namespace { |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; | 246 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; |
| 246 | 247 |
| 247 TestProcessSnapshot process_snapshot; | 248 TestProcessSnapshot process_snapshot; |
| 248 process_snapshot.SetSnapshotTime(kSnapshotTimeval); | 249 process_snapshot.SetSnapshotTime(kSnapshotTimeval); |
| 249 | 250 |
| 250 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); | 251 auto system_snapshot = make_scoped_ptr(new TestSystemSnapshot()); |
| 251 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); | 252 system_snapshot->SetCPUArchitecture(kCPUArchitectureX86_64); |
| 252 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); | 253 system_snapshot->SetOperatingSystem(SystemSnapshot::kOperatingSystemMacOSX); |
| 253 process_snapshot.SetSystem(system_snapshot.Pass()); | 254 process_snapshot.SetSystem(system_snapshot.Pass()); |
| 254 | 255 |
| 256 auto peb_snapshot = make_scoped_ptr(new TestMemorySnapshot()); |
| 257 const uint64_t kPebAddress = 0x07f90000; |
| 258 peb_snapshot->SetAddress(kPebAddress); |
| 259 const size_t kPebSize = 0x280; |
| 260 peb_snapshot->SetSize(kPebSize); |
| 261 peb_snapshot->SetValue('p'); |
| 262 process_snapshot.AddExtraMemory(peb_snapshot.Pass()); |
| 263 |
| 255 MinidumpFileWriter minidump_file_writer; | 264 MinidumpFileWriter minidump_file_writer; |
| 256 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); | 265 minidump_file_writer.InitializeFromSnapshot(&process_snapshot); |
| 257 | 266 |
| 258 StringFile string_file; | 267 StringFile string_file; |
| 259 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); | 268 ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
| 260 | 269 |
| 261 const MINIDUMP_DIRECTORY* directory; | 270 const MINIDUMP_DIRECTORY* directory; |
| 262 const MINIDUMP_HEADER* header = | 271 const MINIDUMP_HEADER* header = |
| 263 MinidumpHeaderAtStart(string_file.string(), &directory); | 272 MinidumpHeaderAtStart(string_file.string(), &directory); |
| 264 ASSERT_NO_FATAL_FAILURE(VerifyMinidumpHeader(header, 5, kSnapshotTime)); | 273 ASSERT_NO_FATAL_FAILURE(VerifyMinidumpHeader(header, 5, kSnapshotTime)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 276 EXPECT_TRUE(MinidumpWritableAtLocationDescriptor<MINIDUMP_THREAD_LIST>( | 285 EXPECT_TRUE(MinidumpWritableAtLocationDescriptor<MINIDUMP_THREAD_LIST>( |
| 277 string_file.string(), directory[2].Location)); | 286 string_file.string(), directory[2].Location)); |
| 278 | 287 |
| 279 EXPECT_EQ(kMinidumpStreamTypeModuleList, directory[3].StreamType); | 288 EXPECT_EQ(kMinidumpStreamTypeModuleList, directory[3].StreamType); |
| 280 EXPECT_TRUE(MinidumpWritableAtLocationDescriptor<MINIDUMP_MODULE_LIST>( | 289 EXPECT_TRUE(MinidumpWritableAtLocationDescriptor<MINIDUMP_MODULE_LIST>( |
| 281 string_file.string(), directory[3].Location)); | 290 string_file.string(), directory[3].Location)); |
| 282 | 291 |
| 283 EXPECT_EQ(kMinidumpStreamTypeMemoryList, directory[4].StreamType); | 292 EXPECT_EQ(kMinidumpStreamTypeMemoryList, directory[4].StreamType); |
| 284 EXPECT_TRUE(MinidumpWritableAtLocationDescriptor<MINIDUMP_MEMORY_LIST>( | 293 EXPECT_TRUE(MinidumpWritableAtLocationDescriptor<MINIDUMP_MEMORY_LIST>( |
| 285 string_file.string(), directory[4].Location)); | 294 string_file.string(), directory[4].Location)); |
| 295 |
| 296 const MINIDUMP_MEMORY_LIST* memory_list = |
| 297 MinidumpWritableAtLocationDescriptor<MINIDUMP_MEMORY_LIST>( |
| 298 string_file.string(), directory[4].Location); |
| 299 EXPECT_EQ(1u, memory_list->NumberOfMemoryRanges); |
| 300 EXPECT_EQ(kPebAddress, memory_list->MemoryRanges[0].StartOfMemoryRange); |
| 301 EXPECT_EQ(kPebSize, memory_list->MemoryRanges[0].Memory.DataSize); |
| 286 } | 302 } |
| 287 | 303 |
| 288 TEST(MinidumpFileWriter, InitializeFromSnapshot_Exception) { | 304 TEST(MinidumpFileWriter, InitializeFromSnapshot_Exception) { |
| 289 // In a 32-bit environment, this will give a “timestamp out of range” warning, | 305 // In a 32-bit environment, this will give a “timestamp out of range” warning, |
| 290 // but the test should complete without failure. | 306 // but the test should complete without failure. |
| 291 const uint32_t kSnapshotTime = 0xfd469ab8; | 307 const uint32_t kSnapshotTime = 0xfd469ab8; |
| 292 MSVC_SUPPRESS_WARNING(4309); // Truncation of constant value. | 308 MSVC_SUPPRESS_WARNING(4309); // Truncation of constant value. |
| 293 MSVC_SUPPRESS_WARNING(4838); // Narrowing conversion. | 309 MSVC_SUPPRESS_WARNING(4838); // Narrowing conversion. |
| 294 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; | 310 const timeval kSnapshotTimeval = { static_cast<time_t>(kSnapshotTime), 0 }; |
| 295 | 311 |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 const uint8_t kStream1Value = 0xa5; | 453 const uint8_t kStream1Value = 0xa5; |
| 438 auto stream1 = make_scoped_ptr( | 454 auto stream1 = make_scoped_ptr( |
| 439 new TestStream(kStream1Type, kStream1Size, kStream1Value)); | 455 new TestStream(kStream1Type, kStream1Size, kStream1Value)); |
| 440 ASSERT_DEATH_CHECK(minidump_file.AddStream(stream1.Pass()), | 456 ASSERT_DEATH_CHECK(minidump_file.AddStream(stream1.Pass()), |
| 441 "already present"); | 457 "already present"); |
| 442 } | 458 } |
| 443 | 459 |
| 444 } // namespace | 460 } // namespace |
| 445 } // namespace test | 461 } // namespace test |
| 446 } // namespace crashpad | 462 } // namespace crashpad |
| OLD | NEW |