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 |