| 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, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 | 32 |
| 33 TEST(MinidumpFileWriter, Empty) { | 33 TEST(MinidumpFileWriter, Empty) { |
| 34 MinidumpFileWriter minidump_file; | 34 MinidumpFileWriter minidump_file; |
| 35 StringFileWriter file_writer; | 35 StringFileWriter file_writer; |
| 36 ASSERT_TRUE(minidump_file.WriteEverything(&file_writer)); | 36 ASSERT_TRUE(minidump_file.WriteEverything(&file_writer)); |
| 37 ASSERT_EQ(sizeof(MINIDUMP_HEADER), file_writer.string().size()); | 37 ASSERT_EQ(sizeof(MINIDUMP_HEADER), file_writer.string().size()); |
| 38 | 38 |
| 39 const MINIDUMP_HEADER* header = | 39 const MINIDUMP_HEADER* header = |
| 40 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); | 40 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); |
| 41 | 41 |
| 42 VerifyMinidumpHeader(header, 0, 0); | 42 ASSERT_NO_FATAL_FAILURE(VerifyMinidumpHeader(header, 0, 0)); |
| 43 if (Test::HasFatalFailure()) { | |
| 44 return; | |
| 45 } | |
| 46 } | 43 } |
| 47 | 44 |
| 48 class TestStream final : public internal::MinidumpStreamWriter { | 45 class TestStream final : public internal::MinidumpStreamWriter { |
| 49 public: | 46 public: |
| 50 TestStream(MinidumpStreamType stream_type, | 47 TestStream(MinidumpStreamType stream_type, |
| 51 size_t stream_size, | 48 size_t stream_size, |
| 52 uint8_t stream_value) | 49 uint8_t stream_value) |
| 53 : stream_data_(stream_size, stream_value), stream_type_(stream_type) {} | 50 : stream_data_(stream_size, stream_value), stream_type_(stream_type) {} |
| 54 | 51 |
| 55 ~TestStream() {} | 52 ~TestStream() {} |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 | 91 |
| 95 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); | 92 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); |
| 96 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); | 93 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); |
| 97 const size_t kFileSize = kStreamOffset + kStreamSize; | 94 const size_t kFileSize = kStreamOffset + kStreamSize; |
| 98 | 95 |
| 99 ASSERT_EQ(kFileSize, file_writer.string().size()); | 96 ASSERT_EQ(kFileSize, file_writer.string().size()); |
| 100 | 97 |
| 101 const MINIDUMP_HEADER* header = | 98 const MINIDUMP_HEADER* header = |
| 102 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); | 99 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); |
| 103 | 100 |
| 104 VerifyMinidumpHeader(header, 1, kTimestamp); | 101 ASSERT_NO_FATAL_FAILURE(VerifyMinidumpHeader(header, 1, kTimestamp)); |
| 105 if (Test::HasFatalFailure()) { | |
| 106 return; | |
| 107 } | |
| 108 | 102 |
| 109 const MINIDUMP_DIRECTORY* directory = | 103 const MINIDUMP_DIRECTORY* directory = |
| 110 reinterpret_cast<const MINIDUMP_DIRECTORY*>( | 104 reinterpret_cast<const MINIDUMP_DIRECTORY*>( |
| 111 &file_writer.string()[kDirectoryOffset]); | 105 &file_writer.string()[kDirectoryOffset]); |
| 112 | 106 |
| 113 EXPECT_EQ(kStreamType, directory->StreamType); | 107 EXPECT_EQ(kStreamType, directory->StreamType); |
| 114 EXPECT_EQ(kStreamSize, directory->Location.DataSize); | 108 EXPECT_EQ(kStreamSize, directory->Location.DataSize); |
| 115 EXPECT_EQ(kStreamOffset, directory->Location.Rva); | 109 EXPECT_EQ(kStreamOffset, directory->Location.Rva); |
| 116 | 110 |
| 117 const uint8_t* stream_data = | 111 const uint8_t* stream_data = |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 const size_t kStream2Offset = kStream1Offset + kStream1Size + kStream2Padding; | 151 const size_t kStream2Offset = kStream1Offset + kStream1Size + kStream2Padding; |
| 158 const size_t kStream3Padding = 1; | 152 const size_t kStream3Padding = 1; |
| 159 const size_t kStream3Offset = kStream2Offset + kStream2Size + kStream3Padding; | 153 const size_t kStream3Offset = kStream2Offset + kStream2Size + kStream3Padding; |
| 160 const size_t kFileSize = kStream3Offset + kStream3Size; | 154 const size_t kFileSize = kStream3Offset + kStream3Size; |
| 161 | 155 |
| 162 ASSERT_EQ(kFileSize, file_writer.string().size()); | 156 ASSERT_EQ(kFileSize, file_writer.string().size()); |
| 163 | 157 |
| 164 const MINIDUMP_HEADER* header = | 158 const MINIDUMP_HEADER* header = |
| 165 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); | 159 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); |
| 166 | 160 |
| 167 VerifyMinidumpHeader(header, 3, kTimestamp); | 161 ASSERT_NO_FATAL_FAILURE(VerifyMinidumpHeader(header, 3, kTimestamp)); |
| 168 if (Test::HasFatalFailure()) { | |
| 169 return; | |
| 170 } | |
| 171 | 162 |
| 172 const MINIDUMP_DIRECTORY* directory = | 163 const MINIDUMP_DIRECTORY* directory = |
| 173 reinterpret_cast<const MINIDUMP_DIRECTORY*>( | 164 reinterpret_cast<const MINIDUMP_DIRECTORY*>( |
| 174 &file_writer.string()[kDirectoryOffset]); | 165 &file_writer.string()[kDirectoryOffset]); |
| 175 | 166 |
| 176 EXPECT_EQ(kStream1Type, directory[0].StreamType); | 167 EXPECT_EQ(kStream1Type, directory[0].StreamType); |
| 177 EXPECT_EQ(kStream1Size, directory[0].Location.DataSize); | 168 EXPECT_EQ(kStream1Size, directory[0].Location.DataSize); |
| 178 EXPECT_EQ(kStream1Offset, directory[0].Location.Rva); | 169 EXPECT_EQ(kStream1Offset, directory[0].Location.Rva); |
| 179 EXPECT_EQ(kStream2Type, directory[1].StreamType); | 170 EXPECT_EQ(kStream2Type, directory[1].StreamType); |
| 180 EXPECT_EQ(kStream2Size, directory[1].Location.DataSize); | 171 EXPECT_EQ(kStream2Size, directory[1].Location.DataSize); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 | 213 |
| 223 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); | 214 const size_t kDirectoryOffset = sizeof(MINIDUMP_HEADER); |
| 224 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); | 215 const size_t kStreamOffset = kDirectoryOffset + sizeof(MINIDUMP_DIRECTORY); |
| 225 const size_t kFileSize = kStreamOffset + kStreamSize; | 216 const size_t kFileSize = kStreamOffset + kStreamSize; |
| 226 | 217 |
| 227 ASSERT_EQ(kFileSize, file_writer.string().size()); | 218 ASSERT_EQ(kFileSize, file_writer.string().size()); |
| 228 | 219 |
| 229 const MINIDUMP_HEADER* header = | 220 const MINIDUMP_HEADER* header = |
| 230 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); | 221 reinterpret_cast<const MINIDUMP_HEADER*>(&file_writer.string()[0]); |
| 231 | 222 |
| 232 VerifyMinidumpHeader(header, 1, 0); | 223 ASSERT_NO_FATAL_FAILURE(VerifyMinidumpHeader(header, 1, 0)); |
| 233 if (Test::HasFatalFailure()) { | |
| 234 return; | |
| 235 } | |
| 236 | 224 |
| 237 const MINIDUMP_DIRECTORY* directory = | 225 const MINIDUMP_DIRECTORY* directory = |
| 238 reinterpret_cast<const MINIDUMP_DIRECTORY*>( | 226 reinterpret_cast<const MINIDUMP_DIRECTORY*>( |
| 239 &file_writer.string()[kDirectoryOffset]); | 227 &file_writer.string()[kDirectoryOffset]); |
| 240 | 228 |
| 241 EXPECT_EQ(kStreamType, directory->StreamType); | 229 EXPECT_EQ(kStreamType, directory->StreamType); |
| 242 EXPECT_EQ(kStreamSize, directory->Location.DataSize); | 230 EXPECT_EQ(kStreamSize, directory->Location.DataSize); |
| 243 EXPECT_EQ(kStreamOffset, directory->Location.Rva); | 231 EXPECT_EQ(kStreamOffset, directory->Location.Rva); |
| 244 } | 232 } |
| 245 | 233 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 256 const size_t kStream2Size = 3; | 244 const size_t kStream2Size = 3; |
| 257 const MinidumpStreamType kStream2Type = static_cast<MinidumpStreamType>(0x4d); | 245 const MinidumpStreamType kStream2Type = static_cast<MinidumpStreamType>(0x4d); |
| 258 const uint8_t kStream2Value = 0xa5; | 246 const uint8_t kStream2Value = 0xa5; |
| 259 TestStream stream2(kStream2Type, kStream2Size, kStream2Value); | 247 TestStream stream2(kStream2Type, kStream2Size, kStream2Value); |
| 260 ASSERT_DEATH(minidump_file.AddStream(&stream2), "already present"); | 248 ASSERT_DEATH(minidump_file.AddStream(&stream2), "already present"); |
| 261 } | 249 } |
| 262 | 250 |
| 263 } // namespace | 251 } // namespace |
| 264 } // namespace test | 252 } // namespace test |
| 265 } // namespace crashpad | 253 } // namespace crashpad |
| OLD | NEW |