Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(694)

Unified Diff: minidump/minidump_crashpad_info_writer_test.cc

Issue 675803002: Add MinidumpCrashpadModule, its list form, their writers, and their tests (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Update for https://codereview.chromium.org/679443002/ Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « minidump/minidump_crashpad_info_writer.cc ('k') | minidump/minidump_crashpad_module_writer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: minidump/minidump_crashpad_info_writer_test.cc
diff --git a/minidump/minidump_crashpad_info_writer_test.cc b/minidump/minidump_crashpad_info_writer_test.cc
index b59301be728eac967ee57fc5ef4db6eaaaafc61f..e61f3bb2c8721826dd32cf3faff8ebca50e1c5a5 100644
--- a/minidump/minidump_crashpad_info_writer_test.cc
+++ b/minidump/minidump_crashpad_info_writer_test.cc
@@ -17,11 +17,10 @@
#include <dbghelp.h>
#include "gtest/gtest.h"
+#include "minidump/minidump_crashpad_module_writer.h"
#include "minidump/minidump_extensions.h"
#include "minidump/minidump_file_writer.h"
-#include "minidump/minidump_simple_string_dictionary_writer.h"
#include "minidump/test/minidump_file_writer_test_util.h"
-#include "minidump/test/minidump_string_writer_test_util.h"
#include "minidump/test/minidump_writable_test_util.h"
#include "util/file/string_file_writer.h"
@@ -29,26 +28,9 @@ namespace crashpad {
namespace test {
namespace {
-void GetCrashpadInfoStream(
- const std::string& file_contents,
- const MinidumpCrashpadInfo** crashpad_info,
- const MinidumpSimpleStringDictionary** simple_annotations) {
- const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER);
- const size_t kCrashpadInfoStreamOffset =
- kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY);
- size_t end = kCrashpadInfoStreamOffset + sizeof(MinidumpCrashpadInfo);
- const size_t kSimpleAnnotationsOffset = simple_annotations ? end : 0;
- if (simple_annotations) {
- end += sizeof(MinidumpSimpleStringDictionary);
- }
- const size_t kFileSize = end;
-
- if (!simple_annotations) {
- ASSERT_EQ(kFileSize, file_contents.size());
- } else {
- EXPECT_GE(file_contents.size(), kFileSize);
- }
-
+void GetCrashpadInfoStream(const std::string& file_contents,
+ const MinidumpCrashpadInfo** crashpad_info,
+ const MinidumpModuleCrashpadInfoList** module_list) {
const MINIDUMP_DIRECTORY* directory;
const MINIDUMP_HEADER* header =
MinidumpHeaderAtStart(file_contents, &directory);
@@ -56,23 +38,14 @@ void GetCrashpadInfoStream(
ASSERT_TRUE(directory);
ASSERT_EQ(kMinidumpStreamTypeCrashpadInfo, directory[0].StreamType);
- EXPECT_EQ(kCrashpadInfoStreamOffset, directory[0].Location.Rva);
*crashpad_info = MinidumpWritableAtLocationDescriptor<MinidumpCrashpadInfo>(
file_contents, directory[0].Location);
ASSERT_TRUE(*crashpad_info);
- if (simple_annotations) {
- EXPECT_EQ(kSimpleAnnotationsOffset,
- (*crashpad_info)->simple_annotations.Rva);
- *simple_annotations =
- MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
- file_contents, (*crashpad_info)->simple_annotations);
- ASSERT_TRUE(*simple_annotations);
- } else {
- ASSERT_EQ(0u, (*crashpad_info)->simple_annotations.DataSize);
- ASSERT_EQ(0u, (*crashpad_info)->simple_annotations.Rva);
- }
+ *module_list =
+ MinidumpWritableAtLocationDescriptor<MinidumpModuleCrashpadInfoList>(
+ file_contents, (*crashpad_info)->module_list);
}
TEST(MinidumpCrashpadInfoWriter, Empty) {
@@ -85,66 +58,51 @@ TEST(MinidumpCrashpadInfoWriter, Empty) {
ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
const MinidumpCrashpadInfo* crashpad_info;
+ const MinidumpModuleCrashpadInfoList* module_list;
- ASSERT_NO_FATAL_FAILURE(
- GetCrashpadInfoStream(file_writer.string(), &crashpad_info, nullptr));
+ ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream(
+ file_writer.string(), &crashpad_info, &module_list));
- EXPECT_EQ(sizeof(*crashpad_info), crashpad_info->size);
- EXPECT_EQ(1u, crashpad_info->version);
- EXPECT_EQ(0u, crashpad_info->simple_annotations.DataSize);
- EXPECT_EQ(0u, crashpad_info->simple_annotations.Rva);
+ EXPECT_EQ(MinidumpCrashpadInfo::kVersion, crashpad_info->version);
+ EXPECT_FALSE(module_list);
}
-TEST(MinidumpCrashpadInfoWriter, SimpleAnnotations) {
+TEST(MinidumpCrashpadInfoWriter, CrashpadModuleList) {
+ const uint32_t kMinidumpModuleListIndex = 3;
+
MinidumpFileWriter minidump_file_writer;
MinidumpCrashpadInfoWriter crashpad_info_writer;
minidump_file_writer.AddStream(&crashpad_info_writer);
- MinidumpSimpleStringDictionaryWriter simple_annotations_writer;
-
- // Set a key and value before adding the simple_annotations_writer to
- // crashpad_info_writer, and another one after.
- const char kKey0[] = "k0";
- const char kValue0[] = "v";
- const char kKey1[] = "KEY1";
- const char kValue1[] = "";
- MinidumpSimpleStringDictionaryEntryWriter entry_0;
- entry_0.SetKeyValue(kKey0, kValue0);
- simple_annotations_writer.AddEntry(&entry_0);
-
- crashpad_info_writer.SetSimpleAnnotations(&simple_annotations_writer);
-
- MinidumpSimpleStringDictionaryEntryWriter entry_1;
- entry_1.SetKeyValue(kKey1, kValue1);
- simple_annotations_writer.AddEntry(&entry_1);
+ MinidumpModuleCrashpadInfoListWriter module_list_writer;
+ MinidumpModuleCrashpadInfoWriter module_writer;
+ module_writer.SetMinidumpModuleListIndex(kMinidumpModuleListIndex);
+ module_list_writer.AddModule(&module_writer);
+ crashpad_info_writer.SetModuleList(&module_list_writer);
StringFileWriter file_writer;
ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
const MinidumpCrashpadInfo* crashpad_info;
- const MinidumpSimpleStringDictionary* simple_annotations;
+ const MinidumpModuleCrashpadInfoList* module_list;
ASSERT_NO_FATAL_FAILURE(GetCrashpadInfoStream(
- file_writer.string(), &crashpad_info, &simple_annotations));
-
- EXPECT_EQ(sizeof(*crashpad_info), crashpad_info->size);
- EXPECT_EQ(1u, crashpad_info->version);
-
- ASSERT_EQ(2u, simple_annotations->count);
-
- EXPECT_EQ(kKey1,
- MinidumpUTF8StringAtRVAAsString(
- file_writer.string(), simple_annotations->entries[0].key));
- EXPECT_EQ(kValue1,
- MinidumpUTF8StringAtRVAAsString(
- file_writer.string(), simple_annotations->entries[0].value));
- EXPECT_EQ(kKey0,
- MinidumpUTF8StringAtRVAAsString(
- file_writer.string(), simple_annotations->entries[1].key));
- EXPECT_EQ(kValue0,
- MinidumpUTF8StringAtRVAAsString(
- file_writer.string(), simple_annotations->entries[1].value));
+ file_writer.string(), &crashpad_info, &module_list));
+
+ EXPECT_EQ(MinidumpCrashpadInfo::kVersion, crashpad_info->version);
+ ASSERT_TRUE(module_list);
+ ASSERT_EQ(1u, module_list->count);
+
+ const MinidumpModuleCrashpadInfo* module =
+ MinidumpWritableAtLocationDescriptor<MinidumpModuleCrashpadInfo>(
+ file_writer.string(), module_list->modules[0]);
+ ASSERT_TRUE(module);
+
+ EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module->version);
+ EXPECT_EQ(kMinidumpModuleListIndex, module->minidump_module_list_index);
+ EXPECT_EQ(0u, module->simple_annotations.DataSize);
+ EXPECT_EQ(0u, module->simple_annotations.Rva);
}
} // namespace
« no previous file with comments | « minidump/minidump_crashpad_info_writer.cc ('k') | minidump/minidump_crashpad_module_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698