| 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 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |