OLD | NEW |
1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <sys/mount.h> | 5 #include <sys/mount.h> |
6 #include <inttypes.h> | 6 #include <inttypes.h> |
7 | 7 |
8 #include <algorithm> | 8 #include <algorithm> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 EXPECT_EQ(1, sigs_message.signatures_size()); | 251 EXPECT_EQ(1, sigs_message.signatures_size()); |
252 const Signatures_Signature& signature = sigs_message.signatures(0); | 252 const Signatures_Signature& signature = sigs_message.signatures(0); |
253 EXPECT_EQ(1, signature.version()); | 253 EXPECT_EQ(1, signature.version()); |
254 | 254 |
255 uint64_t expected_sig_data_length = 0; | 255 uint64_t expected_sig_data_length = 0; |
256 EXPECT_TRUE(PayloadSigner::SignatureBlobLength(kUnittestPrivateKeyPath, | 256 EXPECT_TRUE(PayloadSigner::SignatureBlobLength(kUnittestPrivateKeyPath, |
257 &expected_sig_data_length)); | 257 &expected_sig_data_length)); |
258 EXPECT_EQ(expected_sig_data_length, manifest.signatures_size()); | 258 EXPECT_EQ(expected_sig_data_length, manifest.signatures_size()); |
259 EXPECT_FALSE(signature.data().empty()); | 259 EXPECT_FALSE(signature.data().empty()); |
260 | 260 |
261 // TODO(petkov): Add a test once the generator start sending old kernel | 261 if (full_kernel) { |
262 // info. | 262 EXPECT_FALSE(manifest.has_old_kernel_info()); |
263 EXPECT_FALSE(manifest.has_old_kernel_info()); | 263 } else { |
| 264 EXPECT_EQ(old_kernel_data.size(), manifest.old_kernel_info().size()); |
| 265 EXPECT_FALSE(manifest.old_kernel_info().hash().empty()); |
| 266 } |
264 | 267 |
265 EXPECT_EQ(new_kernel_data.size(), manifest.new_kernel_info().size()); | 268 EXPECT_EQ(new_kernel_data.size(), manifest.new_kernel_info().size()); |
266 EXPECT_EQ(image_size, manifest.old_rootfs_info().size()); | 269 EXPECT_EQ(image_size, manifest.old_rootfs_info().size()); |
267 EXPECT_EQ(image_size, manifest.new_rootfs_info().size()); | 270 EXPECT_EQ(image_size, manifest.new_rootfs_info().size()); |
268 | 271 |
269 EXPECT_FALSE(manifest.new_kernel_info().hash().empty()); | 272 EXPECT_FALSE(manifest.new_kernel_info().hash().empty()); |
270 EXPECT_FALSE(manifest.old_rootfs_info().hash().empty()); | 273 EXPECT_FALSE(manifest.old_rootfs_info().hash().empty()); |
271 EXPECT_FALSE(manifest.new_rootfs_info().hash().empty()); | 274 EXPECT_FALSE(manifest.new_rootfs_info().hash().empty()); |
272 } | 275 } |
273 | 276 |
274 PrefsMock prefs; | 277 PrefsMock prefs; |
275 EXPECT_CALL(prefs, SetInt64(kPrefsManifestMetadataSize, | 278 EXPECT_CALL(prefs, SetInt64(kPrefsManifestMetadataSize, |
276 manifest_metadata_size)).WillOnce(Return(true)); | 279 manifest_metadata_size)).WillOnce(Return(true)); |
277 EXPECT_CALL(prefs, SetInt64(kPrefsUpdateStateNextOperation, _)) | 280 EXPECT_CALL(prefs, SetInt64(kPrefsUpdateStateNextOperation, _)) |
278 .WillRepeatedly(Return(true)); | 281 .WillRepeatedly(Return(true)); |
279 EXPECT_CALL(prefs, GetInt64(kPrefsUpdateStateNextOperation, _)) | 282 EXPECT_CALL(prefs, GetInt64(kPrefsUpdateStateNextOperation, _)) |
280 .WillOnce(Return(false)); | 283 .WillOnce(Return(false)); |
281 EXPECT_CALL(prefs, SetInt64(kPrefsUpdateStateNextDataOffset, _)) | 284 EXPECT_CALL(prefs, SetInt64(kPrefsUpdateStateNextDataOffset, _)) |
282 .WillRepeatedly(Return(true)); | 285 .WillRepeatedly(Return(true)); |
283 EXPECT_CALL(prefs, SetString(kPrefsUpdateStateSHA256Context, _)) | 286 EXPECT_CALL(prefs, SetString(kPrefsUpdateStateSHA256Context, _)) |
284 .WillRepeatedly(Return(true)); | 287 .WillRepeatedly(Return(true)); |
285 EXPECT_CALL(prefs, SetString(kPrefsUpdateStateSignedSHA256Context, _)) | 288 EXPECT_CALL(prefs, SetString(kPrefsUpdateStateSignedSHA256Context, _)) |
286 .WillOnce(Return(true)); | 289 .WillOnce(Return(true)); |
287 | 290 |
288 // Update the A image in place. | 291 // Update the A image in place. |
289 DeltaPerformer performer(&prefs); | 292 DeltaPerformer performer(&prefs); |
290 | 293 |
| 294 vector<char> rootfs_hash; |
| 295 EXPECT_EQ(image_size, |
| 296 OmahaHashCalculator::RawHashOfFile(a_img, |
| 297 image_size, |
| 298 &rootfs_hash)); |
| 299 performer.set_current_rootfs_hash(&rootfs_hash); |
| 300 vector<char> kernel_hash; |
| 301 EXPECT_TRUE(OmahaHashCalculator::RawHashOfData(old_kernel_data, |
| 302 &kernel_hash)); |
| 303 performer.set_current_kernel_hash(&kernel_hash); |
| 304 |
291 EXPECT_EQ(0, performer.Open(a_img.c_str(), 0, 0)); | 305 EXPECT_EQ(0, performer.Open(a_img.c_str(), 0, 0)); |
292 EXPECT_TRUE(performer.OpenKernel(old_kernel.c_str())); | 306 EXPECT_TRUE(performer.OpenKernel(old_kernel.c_str())); |
293 | 307 |
294 vector<char> rootfs_hash; | |
295 CHECK_EQ(image_size, | |
296 OmahaHashCalculator::RawHashOfFile(a_img, image_size, &rootfs_hash)); | |
297 performer.set_current_rootfs_hash(&rootfs_hash); | |
298 | |
299 // Write at some number of bytes per operation. Arbitrarily chose 5. | 308 // Write at some number of bytes per operation. Arbitrarily chose 5. |
300 const size_t kBytesPerWrite = 5; | 309 const size_t kBytesPerWrite = 5; |
301 for (size_t i = 0; i < delta.size(); i += kBytesPerWrite) { | 310 for (size_t i = 0; i < delta.size(); i += kBytesPerWrite) { |
302 size_t count = min(delta.size() - i, kBytesPerWrite); | 311 size_t count = min(delta.size() - i, kBytesPerWrite); |
303 EXPECT_EQ(count, performer.Write(&delta[i], count)); | 312 EXPECT_EQ(count, performer.Write(&delta[i], count)); |
304 } | 313 } |
305 | 314 |
306 // Wrapper around close. Returns 0 on success or -errno on error. | 315 // Wrapper around close. Returns 0 on success or -errno on error. |
307 EXPECT_EQ(0, performer.Close()); | 316 EXPECT_EQ(0, performer.Close()); |
308 | 317 |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 op.clear_src_extents(); | 414 op.clear_src_extents(); |
406 *(op.add_src_extents()) = ExtentForRange(5, 3); | 415 *(op.add_src_extents()) = ExtentForRange(5, 3); |
407 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); | 416 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); |
408 *(op.add_dst_extents()) = ExtentForRange(20, 6); | 417 *(op.add_dst_extents()) = ExtentForRange(20, 6); |
409 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); | 418 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); |
410 *(op.add_src_extents()) = ExtentForRange(19, 2); | 419 *(op.add_src_extents()) = ExtentForRange(19, 2); |
411 EXPECT_FALSE(DeltaPerformer::IsIdempotentOperation(op)); | 420 EXPECT_FALSE(DeltaPerformer::IsIdempotentOperation(op)); |
412 } | 421 } |
413 | 422 |
414 } // namespace chromeos_update_engine | 423 } // namespace chromeos_update_engine |
OLD | NEW |