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

Side by Side Diff: delta_performer_unittest.cc

Issue 3762007: AU: Include old kernel hash for source partition verification. (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.cc ('k') | no next file » | 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 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW
« no previous file with comments | « delta_diff_generator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698