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, |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
13 // limitations under the License. | 13 // limitations under the License. |
14 | 14 |
15 #include "minidump/minidump_system_info_writer.h" | 15 #include "minidump/minidump_system_info_writer.h" |
16 | 16 |
17 #include <dbghelp.h> | 17 #include <dbghelp.h> |
18 #include <string.h> | 18 #include <string.h> |
19 | 19 |
20 #include <string> | 20 #include <string> |
21 | 21 |
22 #include "gtest/gtest.h" | 22 #include "gtest/gtest.h" |
23 #include "minidump/minidump_file_writer.h" | 23 #include "minidump/minidump_file_writer.h" |
24 #include "util/file/string_file_writer.h" | 24 #include "util/file/string_file_writer.h" |
25 | 25 |
26 namespace { | 26 namespace { |
27 | 27 |
28 using namespace crashpad; | 28 using namespace crashpad; |
| 29 using namespace testing; |
29 | 30 |
30 void GetSystemInfoStream(const std::string& file_contents, | 31 void GetSystemInfoStream(const std::string& file_contents, |
31 size_t csd_version_length, | 32 size_t csd_version_length, |
32 const MINIDUMP_SYSTEM_INFO** system_info, | 33 const MINIDUMP_SYSTEM_INFO** system_info, |
33 const MINIDUMP_STRING** csd_version) { | 34 const MINIDUMP_STRING** csd_version) { |
34 // The expected number of bytes for the CSD version’s MINIDUMP_STRING::Buffer. | 35 // The expected number of bytes for the CSD version’s MINIDUMP_STRING::Buffer. |
35 const size_t kCSDVersionBytes = | 36 const size_t kCSDVersionBytes = |
36 csd_version_length * sizeof(MINIDUMP_STRING::Buffer[0]); | 37 csd_version_length * sizeof(MINIDUMP_STRING::Buffer[0]); |
37 const size_t kCSDVersionBytesWithNUL = | 38 const size_t kCSDVersionBytesWithNUL = |
38 kCSDVersionBytes + sizeof(MINIDUMP_STRING::Buffer[0]); | 39 kCSDVersionBytes + sizeof(MINIDUMP_STRING::Buffer[0]); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 | 86 |
86 minidump_file_writer.AddStream(&system_info_writer); | 87 minidump_file_writer.AddStream(&system_info_writer); |
87 | 88 |
88 StringFileWriter file_writer; | 89 StringFileWriter file_writer; |
89 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); | 90 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); |
90 | 91 |
91 const MINIDUMP_SYSTEM_INFO* system_info; | 92 const MINIDUMP_SYSTEM_INFO* system_info; |
92 const MINIDUMP_STRING* csd_version; | 93 const MINIDUMP_STRING* csd_version; |
93 | 94 |
94 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version); | 95 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version); |
| 96 if (Test::HasFatalFailure()) { |
| 97 return; |
| 98 } |
95 | 99 |
96 EXPECT_EQ(kMinidumpCPUArchitectureUnknown, | 100 EXPECT_EQ(kMinidumpCPUArchitectureUnknown, |
97 system_info->ProcessorArchitecture); | 101 system_info->ProcessorArchitecture); |
98 EXPECT_EQ(0u, system_info->ProcessorLevel); | 102 EXPECT_EQ(0u, system_info->ProcessorLevel); |
99 EXPECT_EQ(0u, system_info->ProcessorRevision); | 103 EXPECT_EQ(0u, system_info->ProcessorRevision); |
100 EXPECT_EQ(0u, system_info->NumberOfProcessors); | 104 EXPECT_EQ(0u, system_info->NumberOfProcessors); |
101 EXPECT_EQ(0u, system_info->ProductType); | 105 EXPECT_EQ(0u, system_info->ProductType); |
102 EXPECT_EQ(0u, system_info->MajorVersion); | 106 EXPECT_EQ(0u, system_info->MajorVersion); |
103 EXPECT_EQ(0u, system_info->MinorVersion); | 107 EXPECT_EQ(0u, system_info->MinorVersion); |
104 EXPECT_EQ(0u, system_info->BuildNumber); | 108 EXPECT_EQ(0u, system_info->BuildNumber); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 minidump_file_writer.AddStream(&system_info_writer); | 160 minidump_file_writer.AddStream(&system_info_writer); |
157 | 161 |
158 StringFileWriter file_writer; | 162 StringFileWriter file_writer; |
159 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); | 163 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); |
160 | 164 |
161 const MINIDUMP_SYSTEM_INFO* system_info; | 165 const MINIDUMP_SYSTEM_INFO* system_info; |
162 const MINIDUMP_STRING* csd_version; | 166 const MINIDUMP_STRING* csd_version; |
163 | 167 |
164 GetSystemInfoStream( | 168 GetSystemInfoStream( |
165 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version); | 169 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version); |
| 170 if (Test::HasFatalFailure()) { |
| 171 return; |
| 172 } |
166 | 173 |
167 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture); | 174 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture); |
168 EXPECT_EQ(kCPULevel, system_info->ProcessorLevel); | 175 EXPECT_EQ(kCPULevel, system_info->ProcessorLevel); |
169 EXPECT_EQ(kCPURevision, system_info->ProcessorRevision); | 176 EXPECT_EQ(kCPURevision, system_info->ProcessorRevision); |
170 EXPECT_EQ(kCPUCount, system_info->NumberOfProcessors); | 177 EXPECT_EQ(kCPUCount, system_info->NumberOfProcessors); |
171 EXPECT_EQ(kOSType, system_info->ProductType); | 178 EXPECT_EQ(kOSType, system_info->ProductType); |
172 EXPECT_EQ(kOSVersionMajor, system_info->MajorVersion); | 179 EXPECT_EQ(kOSVersionMajor, system_info->MajorVersion); |
173 EXPECT_EQ(kOSVersionMinor, system_info->MinorVersion); | 180 EXPECT_EQ(kOSVersionMinor, system_info->MinorVersion); |
174 EXPECT_EQ(kOSVersionBuild, system_info->BuildNumber); | 181 EXPECT_EQ(kOSVersionBuild, system_info->BuildNumber); |
175 EXPECT_EQ(kOS, system_info->PlatformId); | 182 EXPECT_EQ(kOS, system_info->PlatformId); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 minidump_file_writer.AddStream(&system_info_writer); | 223 minidump_file_writer.AddStream(&system_info_writer); |
217 | 224 |
218 StringFileWriter file_writer; | 225 StringFileWriter file_writer; |
219 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); | 226 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); |
220 | 227 |
221 const MINIDUMP_SYSTEM_INFO* system_info; | 228 const MINIDUMP_SYSTEM_INFO* system_info; |
222 const MINIDUMP_STRING* csd_version; | 229 const MINIDUMP_STRING* csd_version; |
223 | 230 |
224 GetSystemInfoStream( | 231 GetSystemInfoStream( |
225 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version); | 232 file_writer.string(), strlen(kCSDVersion), &system_info, &csd_version); |
| 233 if (Test::HasFatalFailure()) { |
| 234 return; |
| 235 } |
226 | 236 |
227 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture); | 237 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture); |
228 EXPECT_EQ(kCPULevel, system_info->ProcessorLevel); | 238 EXPECT_EQ(kCPULevel, system_info->ProcessorLevel); |
229 EXPECT_EQ(kCPURevision, system_info->ProcessorRevision); | 239 EXPECT_EQ(kCPURevision, system_info->ProcessorRevision); |
230 EXPECT_EQ(kCPUCount, system_info->NumberOfProcessors); | 240 EXPECT_EQ(kCPUCount, system_info->NumberOfProcessors); |
231 EXPECT_EQ(kOSType, system_info->ProductType); | 241 EXPECT_EQ(kOSType, system_info->ProductType); |
232 EXPECT_EQ(kOSVersionMajor, system_info->MajorVersion); | 242 EXPECT_EQ(kOSVersionMajor, system_info->MajorVersion); |
233 EXPECT_EQ(kOSVersionMinor, system_info->MinorVersion); | 243 EXPECT_EQ(kOSVersionMinor, system_info->MinorVersion); |
234 EXPECT_EQ(kOSVersionBuild, system_info->BuildNumber); | 244 EXPECT_EQ(kOSVersionBuild, system_info->BuildNumber); |
235 EXPECT_EQ(kOS, system_info->PlatformId); | 245 EXPECT_EQ(kOS, system_info->PlatformId); |
(...skipping 21 matching lines...) Expand all Loading... |
257 | 267 |
258 minidump_file_writer.AddStream(&system_info_writer); | 268 minidump_file_writer.AddStream(&system_info_writer); |
259 | 269 |
260 StringFileWriter file_writer; | 270 StringFileWriter file_writer; |
261 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); | 271 ASSERT_TRUE(minidump_file_writer.WriteEverything(&file_writer)); |
262 | 272 |
263 const MINIDUMP_SYSTEM_INFO* system_info; | 273 const MINIDUMP_SYSTEM_INFO* system_info; |
264 const MINIDUMP_STRING* csd_version; | 274 const MINIDUMP_STRING* csd_version; |
265 | 275 |
266 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version); | 276 GetSystemInfoStream(file_writer.string(), 0, &system_info, &csd_version); |
| 277 if (Test::HasFatalFailure()) { |
| 278 return; |
| 279 } |
267 | 280 |
268 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture); | 281 EXPECT_EQ(kCPUArchitecture, system_info->ProcessorArchitecture); |
269 EXPECT_EQ(0u, system_info->ProcessorLevel); | 282 EXPECT_EQ(0u, system_info->ProcessorLevel); |
270 EXPECT_EQ(kCPUVendor[0], system_info->Cpu.X86CpuInfo.VendorId[0]); | 283 EXPECT_EQ(kCPUVendor[0], system_info->Cpu.X86CpuInfo.VendorId[0]); |
271 EXPECT_EQ(kCPUVendor[1], system_info->Cpu.X86CpuInfo.VendorId[1]); | 284 EXPECT_EQ(kCPUVendor[1], system_info->Cpu.X86CpuInfo.VendorId[1]); |
272 EXPECT_EQ(kCPUVendor[2], system_info->Cpu.X86CpuInfo.VendorId[2]); | 285 EXPECT_EQ(kCPUVendor[2], system_info->Cpu.X86CpuInfo.VendorId[2]); |
273 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.VersionInformation); | 286 EXPECT_EQ(0u, system_info->Cpu.X86CpuInfo.VersionInformation); |
274 } | 287 } |
275 | 288 |
276 TEST(MinidumpSystemInfoWriterDeathTest, NoCSDVersion) { | 289 TEST(MinidumpSystemInfoWriterDeathTest, NoCSDVersion) { |
277 MinidumpFileWriter minidump_file_writer; | 290 MinidumpFileWriter minidump_file_writer; |
278 MinidumpSystemInfoWriter system_info_writer; | 291 MinidumpSystemInfoWriter system_info_writer; |
279 minidump_file_writer.AddStream(&system_info_writer); | 292 minidump_file_writer.AddStream(&system_info_writer); |
280 | 293 |
281 StringFileWriter file_writer; | 294 StringFileWriter file_writer; |
282 ASSERT_DEATH(minidump_file_writer.WriteEverything(&file_writer), | 295 ASSERT_DEATH(minidump_file_writer.WriteEverything(&file_writer), |
283 "csd_version_"); | 296 "csd_version_"); |
284 } | 297 } |
285 | 298 |
286 } // namespace | 299 } // namespace |
OLD | NEW |