Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: delta_performer_unittest.cc

Issue 5516009: AU: Split applied update verification into a separate step. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git@master
Patch Set: review comments Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « delta_performer.cc ('k') | download_action.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « delta_performer.cc ('k') | download_action.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698