Index: third_party/crashpad/crashpad/minidump/minidump_user_stream_writer_test.cc |
diff --git a/third_party/crashpad/crashpad/minidump/minidump_user_stream_writer_test.cc b/third_party/crashpad/crashpad/minidump/minidump_user_stream_writer_test.cc |
index 97d41eecf6f2ca749f9cf8dd1ff1cd45c38d9e06..3942e0e61ebfe3359f5bcffe2e470db854d7edb1 100644 |
--- a/third_party/crashpad/crashpad/minidump/minidump_user_stream_writer_test.cc |
+++ b/third_party/crashpad/crashpad/minidump/minidump_user_stream_writer_test.cc |
@@ -32,7 +32,8 @@ namespace { |
// The user stream is expected to be the only stream. |
void GetUserStream(const std::string& file_contents, |
MINIDUMP_LOCATION_DESCRIPTOR* user_stream_location, |
- uint32_t stream_type) { |
+ uint32_t stream_type, |
+ size_t stream_size) { |
const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); |
const size_t kUserStreamOffset = |
kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); |
@@ -47,16 +48,36 @@ void GetUserStream(const std::string& file_contents, |
ASSERT_EQ(stream_type, directory[kDirectoryIndex].StreamType); |
EXPECT_EQ(kUserStreamOffset, directory[kDirectoryIndex].Location.Rva); |
+ EXPECT_EQ(stream_size, directory[kDirectoryIndex].Location.DataSize); |
*user_stream_location = directory[kDirectoryIndex].Location; |
} |
-TEST(MinidumpUserStreamWriter, NoData) { |
+constexpr MinidumpStreamType kTestStreamId = |
+ static_cast<MinidumpStreamType>(0x123456); |
+ |
+TEST(MinidumpUserStreamWriter, InitializeFromSnapshotNoData) { |
MinidumpFileWriter minidump_file_writer; |
auto user_stream_writer = base::WrapUnique(new MinidumpUserStreamWriter()); |
- const uint32_t kTestStreamId = 0x123456; |
auto stream = |
base::WrapUnique(new UserMinidumpStream(kTestStreamId, nullptr)); |
user_stream_writer->InitializeFromSnapshot(stream.get()); |
+ ASSERT_TRUE(minidump_file_writer.AddStream(std::move(user_stream_writer))); |
+ |
+ StringFile string_file; |
+ ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
+ |
+ ASSERT_EQ(sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY), |
+ string_file.string().size()); |
+ |
+ MINIDUMP_LOCATION_DESCRIPTOR user_stream_location; |
+ ASSERT_NO_FATAL_FAILURE(GetUserStream( |
+ string_file.string(), &user_stream_location, kTestStreamId, 0u)); |
+} |
+ |
+TEST(MinidumpUserStreamWriter, InitializeFromBufferNoData) { |
+ MinidumpFileWriter minidump_file_writer; |
+ auto user_stream_writer = base::WrapUnique(new MinidumpUserStreamWriter()); |
+ user_stream_writer->InitializeFromBuffer(kTestStreamId, nullptr, 0); |
minidump_file_writer.AddStream(std::move(user_stream_writer)); |
StringFile string_file; |
@@ -67,14 +88,12 @@ TEST(MinidumpUserStreamWriter, NoData) { |
MINIDUMP_LOCATION_DESCRIPTOR user_stream_location; |
ASSERT_NO_FATAL_FAILURE(GetUserStream( |
- string_file.string(), &user_stream_location, kTestStreamId)); |
- EXPECT_EQ(0u, user_stream_location.DataSize); |
+ string_file.string(), &user_stream_location, kTestStreamId, 0u)); |
} |
-TEST(MinidumpUserStreamWriter, OneStream) { |
+TEST(MinidumpUserStreamWriter, InitializeFromSnapshotOneStream) { |
MinidumpFileWriter minidump_file_writer; |
auto user_stream_writer = base::WrapUnique(new MinidumpUserStreamWriter()); |
- const uint32_t kTestStreamId = 0x123456; |
TestMemorySnapshot* test_data = new TestMemorySnapshot(); |
test_data->SetAddress(97865); |
@@ -84,6 +103,30 @@ TEST(MinidumpUserStreamWriter, OneStream) { |
auto stream = |
base::WrapUnique(new UserMinidumpStream(kTestStreamId, test_data)); |
user_stream_writer->InitializeFromSnapshot(stream.get()); |
+ ASSERT_TRUE(minidump_file_writer.AddStream(std::move(user_stream_writer))); |
+ |
+ StringFile string_file; |
+ ASSERT_TRUE(minidump_file_writer.WriteEverything(&string_file)); |
+ |
+ ASSERT_EQ(sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) + kStreamSize, |
+ string_file.string().size()); |
+ |
+ MINIDUMP_LOCATION_DESCRIPTOR user_stream_location = {}; |
+ ASSERT_NO_FATAL_FAILURE(GetUserStream( |
+ string_file.string(), &user_stream_location, kTestStreamId, kStreamSize)); |
+ const std::string stream_data = string_file.string().substr( |
+ user_stream_location.Rva, user_stream_location.DataSize); |
+ EXPECT_EQ(std::string(kStreamSize, 'c'), stream_data); |
+} |
+ |
+TEST(MinidumpUserStreamWriter, InitializeFromBufferOneStream) { |
+ MinidumpFileWriter minidump_file_writer; |
+ auto user_stream_writer = base::WrapUnique(new MinidumpUserStreamWriter()); |
+ |
+ const size_t kStreamSize = 128; |
+ std::vector<uint8_t> data(kStreamSize, 'c'); |
+ user_stream_writer->InitializeFromBuffer( |
+ kTestStreamId, &data[0], data.size()); |
minidump_file_writer.AddStream(std::move(user_stream_writer)); |
StringFile string_file; |
@@ -92,10 +135,9 @@ TEST(MinidumpUserStreamWriter, OneStream) { |
ASSERT_EQ(sizeof(MINIDUMP_HEADER) + sizeof(MINIDUMP_DIRECTORY) + kStreamSize, |
string_file.string().size()); |
- MINIDUMP_LOCATION_DESCRIPTOR user_stream_location; |
+ MINIDUMP_LOCATION_DESCRIPTOR user_stream_location = {}; |
ASSERT_NO_FATAL_FAILURE(GetUserStream( |
- string_file.string(), &user_stream_location, kTestStreamId)); |
- EXPECT_EQ(kStreamSize, user_stream_location.DataSize); |
+ string_file.string(), &user_stream_location, kTestStreamId, kStreamSize)); |
const std::string stream_data = string_file.string().substr( |
user_stream_location.Rva, user_stream_location.DataSize); |
EXPECT_EQ(std::string(kStreamSize, 'c'), stream_data); |