| 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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 .WillOnce(Return(true)); | 308 .WillOnce(Return(true)); |
| 309 | 309 |
| 310 // Update the A image in place. | 310 // Update the A image in place. |
| 311 DeltaPerformer performer(&prefs); | 311 DeltaPerformer performer(&prefs); |
| 312 | 312 |
| 313 vector<char> rootfs_hash; | 313 vector<char> rootfs_hash; |
| 314 EXPECT_EQ(image_size, | 314 EXPECT_EQ(image_size, |
| 315 OmahaHashCalculator::RawHashOfFile(a_img, | 315 OmahaHashCalculator::RawHashOfFile(a_img, |
| 316 image_size, | 316 image_size, |
| 317 &rootfs_hash)); | 317 &rootfs_hash)); |
| 318 performer.set_current_rootfs_hash(&rootfs_hash); | 318 performer.set_current_rootfs_hash(rootfs_hash); |
| 319 vector<char> kernel_hash; | 319 vector<char> kernel_hash; |
| 320 EXPECT_TRUE(OmahaHashCalculator::RawHashOfData(old_kernel_data, | 320 EXPECT_TRUE(OmahaHashCalculator::RawHashOfData(old_kernel_data, |
| 321 &kernel_hash)); | 321 &kernel_hash)); |
| 322 performer.set_current_kernel_hash(&kernel_hash); | 322 performer.set_current_kernel_hash(kernel_hash); |
| 323 | 323 |
| 324 EXPECT_EQ(0, performer.Open(a_img.c_str(), 0, 0)); | 324 EXPECT_EQ(0, performer.Open(a_img.c_str(), 0, 0)); |
| 325 EXPECT_TRUE(performer.OpenKernel(old_kernel.c_str())); | 325 EXPECT_TRUE(performer.OpenKernel(old_kernel.c_str())); |
| 326 | 326 |
| 327 // Write at some number of bytes per operation. Arbitrarily chose 5. | 327 // Write at some number of bytes per operation. Arbitrarily chose 5. |
| 328 const size_t kBytesPerWrite = 5; | 328 const size_t kBytesPerWrite = 5; |
| 329 for (size_t i = 0; i < delta.size(); i += kBytesPerWrite) { | 329 for (size_t i = 0; i < delta.size(); i += kBytesPerWrite) { |
| 330 size_t count = min(delta.size() - i, kBytesPerWrite); | 330 size_t count = min(delta.size() - i, kBytesPerWrite); |
| 331 EXPECT_EQ(count, performer.Write(&delta[i], count)); | 331 EXPECT_EQ(count, performer.Write(&delta[i], count)); |
| 332 } | 332 } |
| 333 | 333 |
| 334 // Wrapper around close. Returns 0 on success or -errno on error. | 334 // Wrapper around close. Returns 0 on success or -errno on error. |
| 335 EXPECT_EQ(0, performer.Close()); | 335 EXPECT_EQ(0, performer.Close()); |
| 336 | 336 |
| 337 CompareFilesByBlock(old_kernel, new_kernel); | 337 CompareFilesByBlock(old_kernel, new_kernel); |
| 338 CompareFilesByBlock(a_img, b_img); | 338 CompareFilesByBlock(a_img, b_img); |
| 339 | 339 |
| 340 vector<char> updated_kernel_partition; | 340 vector<char> updated_kernel_partition; |
| 341 EXPECT_TRUE(utils::ReadFile(old_kernel, &updated_kernel_partition)); | 341 EXPECT_TRUE(utils::ReadFile(old_kernel, &updated_kernel_partition)); |
| 342 EXPECT_EQ(0, strncmp(&updated_kernel_partition[0], new_data_string, | 342 EXPECT_EQ(0, strncmp(&updated_kernel_partition[0], new_data_string, |
| 343 strlen(new_data_string))); | 343 strlen(new_data_string))); |
| 344 | 344 |
| 345 EXPECT_TRUE(utils::FileExists(kUnittestPublicKeyPath)); | 345 EXPECT_TRUE(utils::FileExists(kUnittestPublicKeyPath)); |
| 346 EXPECT_TRUE(performer.VerifyPayload( | 346 EXPECT_TRUE(performer.VerifyPayload( |
| 347 kUnittestPublicKeyPath, | 347 kUnittestPublicKeyPath, |
| 348 OmahaHashCalculator::OmahaHashOfData(delta), | 348 OmahaHashCalculator::OmahaHashOfData(delta), |
| 349 delta.size())); | 349 delta.size())); |
| 350 EXPECT_TRUE(performer.VerifyAppliedUpdate(a_img, old_kernel)); | 350 |
| 351 uint64_t new_kernel_size; |
| 352 vector<char> new_kernel_hash; |
| 353 uint64_t new_rootfs_size; |
| 354 vector<char> new_rootfs_hash; |
| 355 EXPECT_TRUE(performer.GetNewPartitionInfo(&new_kernel_size, |
| 356 &new_kernel_hash, |
| 357 &new_rootfs_size, |
| 358 &new_rootfs_hash)); |
| 359 EXPECT_EQ(4096, new_kernel_size); |
| 360 vector<char> expected_new_kernel_hash; |
| 361 EXPECT_TRUE(OmahaHashCalculator::RawHashOfData(new_kernel_data, |
| 362 &expected_new_kernel_hash)); |
| 363 EXPECT_TRUE(expected_new_kernel_hash == new_kernel_hash); |
| 364 EXPECT_EQ(image_size, new_rootfs_size); |
| 365 vector<char> expected_new_rootfs_hash; |
| 366 EXPECT_EQ(image_size, |
| 367 OmahaHashCalculator::RawHashOfFile(b_img, |
| 368 image_size, |
| 369 &expected_new_rootfs_hash)); |
| 370 EXPECT_TRUE(expected_new_rootfs_hash == new_rootfs_hash); |
| 351 } | 371 } |
| 352 } | 372 } |
| 353 | 373 |
| 354 TEST(DeltaPerformerTest, RunAsRootSmallImageTest) { | 374 TEST(DeltaPerformerTest, RunAsRootSmallImageTest) { |
| 355 DoSmallImageTest(false, false, false); | 375 DoSmallImageTest(false, false, false); |
| 356 } | 376 } |
| 357 | 377 |
| 358 TEST(DeltaPerformerTest, RunAsRootFullKernelSmallImageTest) { | 378 TEST(DeltaPerformerTest, RunAsRootFullKernelSmallImageTest) { |
| 359 DoSmallImageTest(true, false, false); | 379 DoSmallImageTest(true, false, false); |
| 360 } | 380 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 388 op.clear_src_extents(); | 408 op.clear_src_extents(); |
| 389 *(op.add_src_extents()) = ExtentForRange(5, 3); | 409 *(op.add_src_extents()) = ExtentForRange(5, 3); |
| 390 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); | 410 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); |
| 391 *(op.add_dst_extents()) = ExtentForRange(20, 6); | 411 *(op.add_dst_extents()) = ExtentForRange(20, 6); |
| 392 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); | 412 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); |
| 393 *(op.add_src_extents()) = ExtentForRange(19, 2); | 413 *(op.add_src_extents()) = ExtentForRange(19, 2); |
| 394 EXPECT_FALSE(DeltaPerformer::IsIdempotentOperation(op)); | 414 EXPECT_FALSE(DeltaPerformer::IsIdempotentOperation(op)); |
| 395 } | 415 } |
| 396 | 416 |
| 397 } // namespace chromeos_update_engine | 417 } // namespace chromeos_update_engine |
| OLD | NEW |