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

Side by Side Diff: minidump/minidump_system_info_writer_test.cc

Issue 674153002: minidump: Change the ownership model (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Address review feedback Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « minidump/minidump_system_info_writer.h ('k') | minidump/minidump_thread_writer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 EXPECT_EQ(kCSDVersionOffset, (*system_info)->CSDVersionRva); 67 EXPECT_EQ(kCSDVersionOffset, (*system_info)->CSDVersionRva);
68 68
69 *csd_version = 69 *csd_version =
70 MinidumpStringAtRVA(file_contents, (*system_info)->CSDVersionRva); 70 MinidumpStringAtRVA(file_contents, (*system_info)->CSDVersionRva);
71 EXPECT_EQ(kCSDVersionBytes, (*csd_version)->Length); 71 EXPECT_EQ(kCSDVersionBytes, (*csd_version)->Length);
72 } 72 }
73 73
74 TEST(MinidumpSystemInfoWriter, Empty) { 74 TEST(MinidumpSystemInfoWriter, Empty) {
75 MinidumpFileWriter minidump_file_writer; 75 MinidumpFileWriter minidump_file_writer;
76 MinidumpSystemInfoWriter system_info_writer; 76 auto system_info_writer = make_scoped_ptr(new MinidumpSystemInfoWriter());
77 77
78 system_info_writer.SetCSDVersion(std::string()); 78 system_info_writer->SetCSDVersion(std::string());
79 79
80 minidump_file_writer.AddStream(&system_info_writer); 80 minidump_file_writer.AddStream(system_info_writer.Pass());
81 81
82 StringFileWriter file_writer; 82 StringFileWriter file_writer;
83 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 83 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
84 84
85 const MINIDUMP_SYSTEM_INFO* system_info; 85 const MINIDUMP_SYSTEM_INFO* system_info;
86 const MINIDUMP_STRING* csd_version; 86 const MINIDUMP_STRING* csd_version;
87 87
88 ASSERT_NO_FATAL_FAILURE( 88 ASSERT_NO_FATAL_FAILURE(
89 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version)); 89 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version));
90 90
(...skipping 15 matching lines...) Expand all
106 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.FeatureInformation); 106 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.FeatureInformation);
107 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.AMDExtendedCpuFeatures); 107 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.AMDExtendedCpuFeatures);
108 EXPECT_EQ(0u, system_info->Cpu.OtherCpuInfo.ProcessorFeatures[0]); 108 EXPECT_EQ(0u, system_info->Cpu.OtherCpuInfo.ProcessorFeatures[0]);
109 EXPECT_EQ(0u, system_info->Cpu.OtherCpuInfo.ProcessorFeatures[1]); 109 EXPECT_EQ(0u, system_info->Cpu.OtherCpuInfo.ProcessorFeatures[1]);
110 110
111 EXPECT_EQ('\0', csd_version->Buffer[0]); 111 EXPECT_EQ('\0', csd_version->Buffer[0]);
112 } 112 }
113 113
114 TEST(MinidumpSystemInfoWriter, X86_Win) { 114 TEST(MinidumpSystemInfoWriter, X86_Win) {
115 MinidumpFileWriter minidump_file_writer; 115 MinidumpFileWriter minidump_file_writer;
116 MinidumpSystemInfoWriter system_info_writer; 116 auto system_info_writer = make_scoped_ptr(new MinidumpSystemInfoWriter());
117 117
118 const MinidumpCPUArchitecture kCPUArchitecture = kMinidumpCPUArchitectureX86; 118 const MinidumpCPUArchitecture kCPUArchitecture = kMinidumpCPUArchitectureX86;
119 const uint16_t kCPULevel = 0x0010; 119 const uint16_t kCPULevel = 0x0010;
120 const uint16_t kCPURevision = 0x0602; 120 const uint16_t kCPURevision = 0x0602;
121 const uint8_t kCPUCount = 1; 121 const uint8_t kCPUCount = 1;
122 const MinidumpOS kOS = kMinidumpOSWin32NT; 122 const MinidumpOS kOS = kMinidumpOSWin32NT;
123 const MinidumpOSType kOSType = kMinidumpOSTypeWorkstation; 123 const MinidumpOSType kOSType = kMinidumpOSTypeWorkstation;
124 const uint32_t kOSVersionMajor = 6; 124 const uint32_t kOSVersionMajor = 6;
125 const uint32_t kOSVersionMinor = 1; 125 const uint32_t kOSVersionMinor = 1;
126 const uint32_t kOSVersionBuild = 7601; 126 const uint32_t kOSVersionBuild = 7601;
127 const char kCSDVersion[] = "Service Pack 1"; 127 const char kCSDVersion[] = "Service Pack 1";
128 const uint16_t kSuiteMask = VER_SUITE_SINGLEUSERTS; 128 const uint16_t kSuiteMask = VER_SUITE_SINGLEUSERTS;
129 const char kCPUVendor[] = "AuthenticAMD"; 129 const char kCPUVendor[] = "AuthenticAMD";
130 const uint32_t kCPUVersion = 0x00100f62; 130 const uint32_t kCPUVersion = 0x00100f62;
131 const uint32_t kCPUFeatures = 0x078bfbff; 131 const uint32_t kCPUFeatures = 0x078bfbff;
132 const uint32_t kAMDFeatures = 0xefd3fbff; 132 const uint32_t kAMDFeatures = 0xefd3fbff;
133 133
134 uint32_t cpu_vendor_registers[3]; 134 uint32_t cpu_vendor_registers[3];
135 ASSERT_EQ(sizeof(cpu_vendor_registers), strlen(kCPUVendor)); 135 ASSERT_EQ(sizeof(cpu_vendor_registers), strlen(kCPUVendor));
136 memcpy(cpu_vendor_registers, kCPUVendor, sizeof(cpu_vendor_registers)); 136 memcpy(cpu_vendor_registers, kCPUVendor, sizeof(cpu_vendor_registers));
137 137
138 system_info_writer.SetCPUArchitecture(kCPUArchitecture); 138 system_info_writer->SetCPUArchitecture(kCPUArchitecture);
139 system_info_writer.SetCPULevelAndRevision(kCPULevel, kCPURevision); 139 system_info_writer->SetCPULevelAndRevision(kCPULevel, kCPURevision);
140 system_info_writer.SetCPUCount(kCPUCount); 140 system_info_writer->SetCPUCount(kCPUCount);
141 system_info_writer.SetOS(kOS); 141 system_info_writer->SetOS(kOS);
142 system_info_writer.SetOSType(kMinidumpOSTypeWorkstation); 142 system_info_writer->SetOSType(kMinidumpOSTypeWorkstation);
143 system_info_writer.SetOSVersion( 143 system_info_writer->SetOSVersion(
144 kOSVersionMajor, kOSVersionMinor, kOSVersionBuild); 144 kOSVersionMajor, kOSVersionMinor, kOSVersionBuild);
145 system_info_writer.SetCSDVersion(kCSDVersion); 145 system_info_writer->SetCSDVersion(kCSDVersion);
146 system_info_writer.SetSuiteMask(kSuiteMask); 146 system_info_writer->SetSuiteMask(kSuiteMask);
147 system_info_writer.SetCPUX86VendorString(kCPUVendor); 147 system_info_writer->SetCPUX86VendorString(kCPUVendor);
148 system_info_writer.SetCPUX86VersionAndFeatures(kCPUVersion, kCPUFeatures); 148 system_info_writer->SetCPUX86VersionAndFeatures(kCPUVersion, kCPUFeatures);
149 system_info_writer.SetCPUX86AMDExtendedFeatures(kAMDFeatures); 149 system_info_writer->SetCPUX86AMDExtendedFeatures(kAMDFeatures);
150 150
151 minidump_file_writer.AddStream(&system_info_writer); 151 minidump_file_writer.AddStream(system_info_writer.Pass());
152 152
153 StringFileWriter file_writer; 153 StringFileWriter file_writer;
154 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 154 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
155 155
156 const MINIDUMP_SYSTEM_INFO* system_info; 156 const MINIDUMP_SYSTEM_INFO* system_info;
157 const MINIDUMP_STRING* csd_version; 157 const MINIDUMP_STRING* csd_version;
158 158
159 ASSERT_NO_FATAL_FAILURE(GetSystemInfoStream( 159 ASSERT_NO_FATAL_FAILURE(GetSystemInfoStream(
160 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version)); 160 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version));
161 161
(...skipping 14 matching lines...) Expand all
176 EXPECT_EQ(kCPUFeatures, system_info->Cpu.X86CpuInfo.FeatureInformation); 176 EXPECT_EQ(kCPUFeatures, system_info->Cpu.X86CpuInfo.FeatureInformation);
177 EXPECT_EQ(kAMDFeatures, system_info->Cpu.X86CpuInfo.AMDExtendedCpuFeatures); 177 EXPECT_EQ(kAMDFeatures, system_info->Cpu.X86CpuInfo.AMDExtendedCpuFeatures);
178 178
179 for (size_t index = 0; index < strlen(kCSDVersion); ++index) { 179 for (size_t index = 0; index < strlen(kCSDVersion); ++index) {
180 EXPECT_EQ(kCSDVersion[index], csd_version->Buffer[index]) << index; 180 EXPECT_EQ(kCSDVersion[index], csd_version->Buffer[index]) << index;
181 } 181 }
182 } 182 }
183 183
184 TEST(MinidumpSystemInfoWriter, X86_64_Mac) { 184 TEST(MinidumpSystemInfoWriter, X86_64_Mac) {
185 MinidumpFileWriter minidump_file_writer; 185 MinidumpFileWriter minidump_file_writer;
186 MinidumpSystemInfoWriter system_info_writer; 186 auto system_info_writer = make_scoped_ptr(new MinidumpSystemInfoWriter());
187 187
188 const MinidumpCPUArchitecture kCPUArchitecture = 188 const MinidumpCPUArchitecture kCPUArchitecture =
189 kMinidumpCPUArchitectureAMD64; 189 kMinidumpCPUArchitectureAMD64;
190 const uint16_t kCPULevel = 0x0006; 190 const uint16_t kCPULevel = 0x0006;
191 const uint16_t kCPURevision = 0x3a09; 191 const uint16_t kCPURevision = 0x3a09;
192 const uint8_t kCPUCount = 8; 192 const uint8_t kCPUCount = 8;
193 const MinidumpOS kOS = kMinidumpOSMacOSX; 193 const MinidumpOS kOS = kMinidumpOSMacOSX;
194 const MinidumpOSType kOSType = kMinidumpOSTypeWorkstation; 194 const MinidumpOSType kOSType = kMinidumpOSTypeWorkstation;
195 const uint32_t kOSVersionMajor = 10; 195 const uint32_t kOSVersionMajor = 10;
196 const uint32_t kOSVersionMinor = 9; 196 const uint32_t kOSVersionMinor = 9;
197 const uint32_t kOSVersionBuild = 4; 197 const uint32_t kOSVersionBuild = 4;
198 const char kCSDVersion[] = "13E28"; 198 const char kCSDVersion[] = "13E28";
199 const uint64_t kCPUFeatures[2] = {0x10427f4c, 0x00000000}; 199 const uint64_t kCPUFeatures[2] = {0x10427f4c, 0x00000000};
200 200
201 system_info_writer.SetCPUArchitecture(kCPUArchitecture); 201 system_info_writer->SetCPUArchitecture(kCPUArchitecture);
202 system_info_writer.SetCPULevelAndRevision(kCPULevel, kCPURevision); 202 system_info_writer->SetCPULevelAndRevision(kCPULevel, kCPURevision);
203 system_info_writer.SetCPUCount(kCPUCount); 203 system_info_writer->SetCPUCount(kCPUCount);
204 system_info_writer.SetOS(kOS); 204 system_info_writer->SetOS(kOS);
205 system_info_writer.SetOSType(kMinidumpOSTypeWorkstation); 205 system_info_writer->SetOSType(kMinidumpOSTypeWorkstation);
206 system_info_writer.SetOSVersion( 206 system_info_writer->SetOSVersion(
207 kOSVersionMajor, kOSVersionMinor, kOSVersionBuild); 207 kOSVersionMajor, kOSVersionMinor, kOSVersionBuild);
208 system_info_writer.SetCSDVersion(kCSDVersion); 208 system_info_writer->SetCSDVersion(kCSDVersion);
209 system_info_writer.SetCPUOtherFeatures(kCPUFeatures[0], kCPUFeatures[1]); 209 system_info_writer->SetCPUOtherFeatures(kCPUFeatures[0], kCPUFeatures[1]);
210 210
211 minidump_file_writer.AddStream(&system_info_writer); 211 minidump_file_writer.AddStream(system_info_writer.Pass());
212 212
213 StringFileWriter file_writer; 213 StringFileWriter file_writer;
214 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 214 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
215 215
216 const MINIDUMP_SYSTEM_INFO* system_info; 216 const MINIDUMP_SYSTEM_INFO* system_info;
217 const MINIDUMP_STRING* csd_version; 217 const MINIDUMP_STRING* csd_version;
218 218
219 ASSERT_NO_FATAL_FAILURE(GetSystemInfoStream( 219 ASSERT_NO_FATAL_FAILURE(GetSystemInfoStream(
220 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version)); 220 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version));
221 221
(...skipping 11 matching lines...) Expand all
233 system_info->Cpu.OtherCpuInfo.ProcessorFeatures[0]); 233 system_info->Cpu.OtherCpuInfo.ProcessorFeatures[0]);
234 EXPECT_EQ(kCPUFeatures[1], 234 EXPECT_EQ(kCPUFeatures[1],
235 system_info->Cpu.OtherCpuInfo.ProcessorFeatures[1]); 235 system_info->Cpu.OtherCpuInfo.ProcessorFeatures[1]);
236 } 236 }
237 237
238 TEST(MinidumpSystemInfoWriter, X86_CPUVendorFromRegisters) { 238 TEST(MinidumpSystemInfoWriter, X86_CPUVendorFromRegisters) {
239 // MinidumpSystemInfoWriter.X86_Win already tested SetCPUX86VendorString(). 239 // MinidumpSystemInfoWriter.X86_Win already tested SetCPUX86VendorString().
240 // This test exercises SetCPUX86Vendor() to set the vendor from register 240 // This test exercises SetCPUX86Vendor() to set the vendor from register
241 // values. 241 // values.
242 MinidumpFileWriter minidump_file_writer; 242 MinidumpFileWriter minidump_file_writer;
243 MinidumpSystemInfoWriter system_info_writer; 243 auto system_info_writer = make_scoped_ptr(new MinidumpSystemInfoWriter());
244 244
245 const MinidumpCPUArchitecture kCPUArchitecture = kMinidumpCPUArchitectureX86; 245 const MinidumpCPUArchitecture kCPUArchitecture = kMinidumpCPUArchitectureX86;
246 const uint32_t kCPUVendor[] = {'uneG', 'Ieni', 'letn'}; 246 const uint32_t kCPUVendor[] = {'uneG', 'Ieni', 'letn'};
247 247
248 system_info_writer.SetCPUArchitecture(kCPUArchitecture); 248 system_info_writer->SetCPUArchitecture(kCPUArchitecture);
249 system_info_writer.SetCPUX86Vendor( 249 system_info_writer->SetCPUX86Vendor(
250 kCPUVendor[0], kCPUVendor[1], kCPUVendor[2]); 250 kCPUVendor[0], kCPUVendor[1], kCPUVendor[2]);
251 system_info_writer.SetCSDVersion(std::string()); 251 system_info_writer->SetCSDVersion(std::string());
252 252
253 minidump_file_writer.AddStream(&system_info_writer); 253 minidump_file_writer.AddStream(system_info_writer.Pass());
254 254
255 StringFileWriter file_writer; 255 StringFileWriter file_writer;
256 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); 256 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer));
257 257
258 const MINIDUMP_SYSTEM_INFO* system_info; 258 const MINIDUMP_SYSTEM_INFO* system_info;
259 const MINIDUMP_STRING* csd_version; 259 const MINIDUMP_STRING* csd_version;
260 260
261 ASSERT_NO_FATAL_FAILURE( 261 ASSERT_NO_FATAL_FAILURE(
262 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version)); 262 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version));
263 263
264 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture); 264 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture);
265 EXPECT_EQ(0u, system_info->ProcessorLevel); 265 EXPECT_EQ(0u, system_info->ProcessorLevel);
266 EXPECT_EQ(kCPUVendor[0], system_info->Cpu.X86CpuInfo.VendorId[0]); 266 EXPECT_EQ(kCPUVendor[0], system_info->Cpu.X86CpuInfo.VendorId[0]);
267 EXPECT_EQ(kCPUVendor[1], system_info->Cpu.X86CpuInfo.VendorId[1]); 267 EXPECT_EQ(kCPUVendor[1], system_info->Cpu.X86CpuInfo.VendorId[1]);
268 EXPECT_EQ(kCPUVendor[2], system_info->Cpu.X86CpuInfo.VendorId[2]); 268 EXPECT_EQ(kCPUVendor[2], system_info->Cpu.X86CpuInfo.VendorId[2]);
269 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.VersionInformation); 269 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.VersionInformation);
270 } 270 }
271 271
272 TEST(MinidumpSystemInfoWriterDeathTest, NoCSDVersion) { 272 TEST(MinidumpSystemInfoWriterDeathTest, NoCSDVersion) {
273 MinidumpFileWriter minidump_file_writer; 273 MinidumpFileWriter minidump_file_writer;
274 MinidumpSystemInfoWriter system_info_writer; 274 auto system_info_writer = make_scoped_ptr(new MinidumpSystemInfoWriter());
275 minidump_file_writer.AddStream(&system_info_writer); 275 minidump_file_writer.AddStream(system_info_writer.Pass());
276 276
277 StringFileWriter file_writer; 277 StringFileWriter file_writer;
278 ASSERT_DEATH(minidump_file_writer.WriteEverything(&file_writer), 278 ASSERT_DEATH(minidump_file_writer.WriteEverything(&file_writer),
279 "csd_version_"); 279 "csd_version_");
280 } 280 }
281 281
282 } // namespace 282 } // namespace
283 } // namespace test 283 } // namespace test
284 } // namespace crashpad 284 } // namespace crashpad
OLDNEW
« no previous file with comments | « minidump/minidump_system_info_writer.h ('k') | minidump/minidump_thread_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698