| Index: minidump/minidump_memory_writer_test.cc
|
| diff --git a/minidump/minidump_memory_writer_test.cc b/minidump/minidump_memory_writer_test.cc
|
| index af7018b21c9074e60ecc3a89583db0c570483ec4..f29a185266ec19c0b0d5ffc389c9c86969ed31e6 100644
|
| --- a/minidump/minidump_memory_writer_test.cc
|
| +++ b/minidump/minidump_memory_writer_test.cc
|
| @@ -18,6 +18,7 @@
|
| #include <stdint.h>
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/strings/stringprintf.h"
|
| #include "gtest/gtest.h"
|
| #include "minidump/minidump_extensions.h"
|
| #include "minidump/minidump_file_writer.h"
|
| @@ -25,7 +26,9 @@
|
| #include "minidump/test/minidump_file_writer_test_util.h"
|
| #include "minidump/test/minidump_memory_writer_test_util.h"
|
| #include "minidump/test/minidump_writable_test_util.h"
|
| +#include "snapshot/test/test_memory_snapshot.h"
|
| #include "util/file/string_file_writer.h"
|
| +#include "util/stdlib/pointer_container.h"
|
|
|
| namespace crashpad {
|
| namespace test {
|
| @@ -235,7 +238,7 @@ TEST(MinidumpMemoryWriter, ExtraMemory) {
|
| MinidumpFileWriter minidump_file_writer;
|
|
|
| const uint64_t kBaseAddress0 = 0x1000;
|
| - const uint64_t kSize0 = 0x0400;
|
| + const size_t kSize0 = 0x0400;
|
| const uint8_t kValue0 = '1';
|
| auto test_memory_stream =
|
| make_scoped_ptr(new TestMemoryStream(kBaseAddress0, kSize0, kValue0));
|
| @@ -246,7 +249,7 @@ TEST(MinidumpMemoryWriter, ExtraMemory) {
|
| minidump_file_writer.AddStream(test_memory_stream.Pass());
|
|
|
| const uint64_t kBaseAddress1 = 0x2000;
|
| - const uint64_t kSize1 = 0x0400;
|
| + const size_t kSize1 = 0x0400;
|
| const uint8_t kValue1 = 'm';
|
|
|
| auto memory_writer = make_scoped_ptr(
|
| @@ -297,6 +300,62 @@ TEST(MinidumpMemoryWriter, ExtraMemory) {
|
| }
|
| }
|
|
|
| +TEST(MinidumpMemoryWriter, AddFromSnapshot) {
|
| + MINIDUMP_MEMORY_DESCRIPTOR expect_memory_descriptors[3] = {};
|
| + uint8_t values[arraysize(expect_memory_descriptors)] = {};
|
| +
|
| + expect_memory_descriptors[0].StartOfMemoryRange = 0;
|
| + expect_memory_descriptors[0].Memory.DataSize = 0x1000;
|
| + values[0] = 0x01;
|
| +
|
| + expect_memory_descriptors[1].StartOfMemoryRange = 0x1000;
|
| + expect_memory_descriptors[1].Memory.DataSize = 0x2000;
|
| + values[1] = 0xf4;
|
| +
|
| + expect_memory_descriptors[2].StartOfMemoryRange = 0x7654321000000000;
|
| + expect_memory_descriptors[2].Memory.DataSize = 0x800;
|
| + values[2] = 0xa9;
|
| +
|
| + PointerVector<TestMemorySnapshot> memory_snapshots_owner;
|
| + std::vector<const MemorySnapshot*> memory_snapshots;
|
| + for (size_t index = 0;
|
| + index < arraysize(expect_memory_descriptors);
|
| + ++index) {
|
| + TestMemorySnapshot* memory_snapshot = new TestMemorySnapshot();
|
| + memory_snapshots_owner.push_back(memory_snapshot);
|
| + memory_snapshot->SetAddress(
|
| + expect_memory_descriptors[index].StartOfMemoryRange);
|
| + memory_snapshot->SetSize(expect_memory_descriptors[index].Memory.DataSize);
|
| + memory_snapshot->SetValue(values[index]);
|
| + memory_snapshots.push_back(memory_snapshot);
|
| + }
|
| +
|
| + auto memory_list_writer = make_scoped_ptr(new MinidumpMemoryListWriter());
|
| + memory_list_writer->AddFromSnapshot(memory_snapshots);
|
| +
|
| + MinidumpFileWriter minidump_file_writer;
|
| + minidump_file_writer.AddStream(memory_list_writer.Pass());
|
| +
|
| + StringFileWriter file_writer;
|
| + ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
|
| +
|
| + const MINIDUMP_MEMORY_LIST* memory_list;
|
| + ASSERT_NO_FATAL_FAILURE(
|
| + GetMemoryListStream(file_writer.string(), &memory_list, 1));
|
| +
|
| + ASSERT_EQ(3u, memory_list->NumberOfMemoryRanges);
|
| +
|
| + for (size_t index = 0; index < memory_list->NumberOfMemoryRanges; ++index) {
|
| + SCOPED_TRACE(base::StringPrintf("index %zu", index));
|
| + ExpectMinidumpMemoryDescriptorAndContents(
|
| + &expect_memory_descriptors[index],
|
| + &memory_list->MemoryRanges[index],
|
| + file_writer.string(),
|
| + values[index],
|
| + index == memory_list->NumberOfMemoryRanges - 1);
|
| + }
|
| +}
|
| +
|
| } // namespace
|
| } // namespace test
|
| } // namespace crashpad
|
|
|