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

Side by Side Diff: delta_performer_unittest.cc

Issue 3767002: AU: Really delta compress the kernel if an old kernel is provided. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git
Patch Set: Created 10 years, 2 months 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_diff_generator_unittest.cc ('k') | generate_delta_main.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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 bool WriteSparseFile(const string& path, off_t size) { 104 bool WriteSparseFile(const string& path, off_t size) {
105 int fd = open(path.c_str(), O_CREAT | O_TRUNC | O_WRONLY, 0644); 105 int fd = open(path.c_str(), O_CREAT | O_TRUNC | O_WRONLY, 0644);
106 TEST_AND_RETURN_FALSE_ERRNO(fd >= 0); 106 TEST_AND_RETURN_FALSE_ERRNO(fd >= 0);
107 ScopedFdCloser fd_closer(&fd); 107 ScopedFdCloser fd_closer(&fd);
108 off_t rc = lseek(fd, size + 1, SEEK_SET); 108 off_t rc = lseek(fd, size + 1, SEEK_SET);
109 TEST_AND_RETURN_FALSE_ERRNO(rc != static_cast<off_t>(-1)); 109 TEST_AND_RETURN_FALSE_ERRNO(rc != static_cast<off_t>(-1));
110 int return_code = ftruncate(fd, size); 110 int return_code = ftruncate(fd, size);
111 TEST_AND_RETURN_FALSE_ERRNO(return_code == 0); 111 TEST_AND_RETURN_FALSE_ERRNO(return_code == 0);
112 return true; 112 return true;
113 } 113 }
114 }
115 114
116 TEST(DeltaPerformerTest, RunAsRootSmallImageTest) { 115 void DoSmallImageTest(bool full_kernel) {
117 string a_img, b_img; 116 string a_img, b_img;
118 EXPECT_TRUE(utils::MakeTempFile("/tmp/a_img.XXXXXX", &a_img, NULL)); 117 EXPECT_TRUE(utils::MakeTempFile("/tmp/a_img.XXXXXX", &a_img, NULL));
119 ScopedPathUnlinker a_img_unlinker(a_img); 118 ScopedPathUnlinker a_img_unlinker(a_img);
120 EXPECT_TRUE(utils::MakeTempFile("/tmp/b_img.XXXXXX", &b_img, NULL)); 119 EXPECT_TRUE(utils::MakeTempFile("/tmp/b_img.XXXXXX", &b_img, NULL));
121 ScopedPathUnlinker b_img_unlinker(b_img); 120 ScopedPathUnlinker b_img_unlinker(b_img);
122 121
123 CreateExtImageAtPath(a_img, NULL); 122 CreateExtImageAtPath(a_img, NULL);
124 CreateExtImageAtPath(b_img, NULL); 123 CreateExtImageAtPath(b_img, NULL);
125 124
126 int image_size = static_cast<int>(utils::FileSize(a_img)); 125 int image_size = static_cast<int>(utils::FileSize(a_img));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 string delta_path; 205 string delta_path;
207 EXPECT_TRUE(utils::MakeTempFile("/tmp/delta.XXXXXX", &delta_path, NULL)); 206 EXPECT_TRUE(utils::MakeTempFile("/tmp/delta.XXXXXX", &delta_path, NULL));
208 LOG(INFO) << "delta path: " << delta_path; 207 LOG(INFO) << "delta path: " << delta_path;
209 ScopedPathUnlinker delta_path_unlinker(delta_path); 208 ScopedPathUnlinker delta_path_unlinker(delta_path);
210 { 209 {
211 string a_mnt, b_mnt; 210 string a_mnt, b_mnt;
212 ScopedLoopMounter a_mounter(a_img, &a_mnt, MS_RDONLY); 211 ScopedLoopMounter a_mounter(a_img, &a_mnt, MS_RDONLY);
213 ScopedLoopMounter b_mounter(b_img, &b_mnt, MS_RDONLY); 212 ScopedLoopMounter b_mounter(b_img, &b_mnt, MS_RDONLY);
214 213
215 EXPECT_TRUE( 214 EXPECT_TRUE(
216 DeltaDiffGenerator::GenerateDeltaUpdateFile(a_mnt, 215 DeltaDiffGenerator::GenerateDeltaUpdateFile(
217 a_img, 216 a_mnt,
218 b_mnt, 217 a_img,
219 b_img, 218 b_mnt,
220 old_kernel, 219 b_img,
221 new_kernel, 220 full_kernel ? "" : old_kernel,
222 delta_path, 221 new_kernel,
223 kUnittestPrivateKeyPath)); 222 delta_path,
223 kUnittestPrivateKeyPath));
224 } 224 }
225 225
226 // Read delta into memory. 226 // Read delta into memory.
227 vector<char> delta; 227 vector<char> delta;
228 EXPECT_TRUE(utils::ReadFile(delta_path, &delta)); 228 EXPECT_TRUE(utils::ReadFile(delta_path, &delta));
229 229
230 uint64_t manifest_metadata_size; 230 uint64_t manifest_metadata_size;
231 231
232 // Check the metadata. 232 // Check the metadata.
233 { 233 {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 EXPECT_EQ(0, strncmp(&updated_kernel_partition[0], new_data_string, 314 EXPECT_EQ(0, strncmp(&updated_kernel_partition[0], new_data_string,
315 strlen(new_data_string))); 315 strlen(new_data_string)));
316 316
317 EXPECT_TRUE(utils::FileExists(kUnittestPublicKeyPath)); 317 EXPECT_TRUE(utils::FileExists(kUnittestPublicKeyPath));
318 EXPECT_TRUE(performer.VerifyPayload( 318 EXPECT_TRUE(performer.VerifyPayload(
319 kUnittestPublicKeyPath, 319 kUnittestPublicKeyPath,
320 OmahaHashCalculator::OmahaHashOfData(delta), 320 OmahaHashCalculator::OmahaHashOfData(delta),
321 delta.size())); 321 delta.size()));
322 EXPECT_TRUE(performer.VerifyAppliedUpdate(a_img, old_kernel)); 322 EXPECT_TRUE(performer.VerifyAppliedUpdate(a_img, old_kernel));
323 } 323 }
324 }
325
326 TEST(DeltaPerformerTest, RunAsRootSmallImageTest) {
327 DoSmallImageTest(false);
328 }
329
330 TEST(DeltaPerformerTest, RunAsRootFullKernelSmallImageTest) {
331 DoSmallImageTest(true);
332 }
324 333
325 TEST(DeltaPerformerTest, NewFullUpdateTest) { 334 TEST(DeltaPerformerTest, NewFullUpdateTest) {
326 vector<char> new_root(20 * 1024 * 1024); 335 vector<char> new_root(20 * 1024 * 1024);
327 vector<char> new_kern(16 * 1024 * 1024); 336 vector<char> new_kern(16 * 1024 * 1024);
328 const off_t kChunkSize = 128 * 1024; 337 const off_t kChunkSize = 128 * 1024;
329 FillWithData(&new_root); 338 FillWithData(&new_root);
330 FillWithData(&new_kern); 339 FillWithData(&new_kern);
331 // Assume hashes take 2 MiB beyond the rootfs. 340 // Assume hashes take 2 MiB beyond the rootfs.
332 off_t new_rootfs_size = new_root.size() - 2 * 1024 * 1024; 341 off_t new_rootfs_size = new_root.size() - 2 * 1024 * 1024;
333 342
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 op.clear_src_extents(); 405 op.clear_src_extents();
397 *(op.add_src_extents()) = ExtentForRange(5, 3); 406 *(op.add_src_extents()) = ExtentForRange(5, 3);
398 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); 407 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op));
399 *(op.add_dst_extents()) = ExtentForRange(20, 6); 408 *(op.add_dst_extents()) = ExtentForRange(20, 6);
400 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op)); 409 EXPECT_TRUE(DeltaPerformer::IsIdempotentOperation(op));
401 *(op.add_src_extents()) = ExtentForRange(19, 2); 410 *(op.add_src_extents()) = ExtentForRange(19, 2);
402 EXPECT_FALSE(DeltaPerformer::IsIdempotentOperation(op)); 411 EXPECT_FALSE(DeltaPerformer::IsIdempotentOperation(op));
403 } 412 }
404 413
405 } // namespace chromeos_update_engine 414 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « delta_diff_generator_unittest.cc ('k') | generate_delta_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698