| Index: delta_performer_unittest.cc
|
| diff --git a/delta_performer_unittest.cc b/delta_performer_unittest.cc
|
| index 3c05b1d9f62dc44c14d04e21dc5fdba2d8b8b07f..37a0c683da72dc9439cae17437f40393a772e74f 100755
|
| --- a/delta_performer_unittest.cc
|
| +++ b/delta_performer_unittest.cc
|
| @@ -18,6 +18,7 @@
|
| #include "update_engine/delta_diff_generator.h"
|
| #include "update_engine/delta_performer.h"
|
| #include "update_engine/extent_ranges.h"
|
| +#include "update_engine/full_update_generator.h"
|
| #include "update_engine/graph_types.h"
|
| #include "update_engine/payload_signer.h"
|
| #include "update_engine/prefs_mock.h"
|
| @@ -113,7 +114,7 @@ bool WriteSparseFile(const string& path, off_t size) {
|
| return true;
|
| }
|
|
|
| -void DoSmallImageTest(bool full_kernel, bool noop) {
|
| +void DoSmallImageTest(bool full_kernel, bool full_rootfs, bool noop) {
|
| string a_img, b_img;
|
| EXPECT_TRUE(utils::MakeTempFile("/tmp/a_img.XXXXXX", &a_img, NULL));
|
| ScopedPathUnlinker a_img_unlinker(a_img);
|
| @@ -221,8 +222,8 @@ void DoSmallImageTest(bool full_kernel, bool noop) {
|
|
|
| EXPECT_TRUE(
|
| DeltaDiffGenerator::GenerateDeltaUpdateFile(
|
| - a_mnt,
|
| - a_img,
|
| + full_rootfs ? "" : a_mnt,
|
| + full_rootfs ? "" : a_img,
|
| b_mnt,
|
| b_img,
|
| full_kernel ? "" : old_kernel,
|
| @@ -278,12 +279,17 @@ void DoSmallImageTest(bool full_kernel, bool noop) {
|
| EXPECT_FALSE(manifest.old_kernel_info().hash().empty());
|
| }
|
|
|
| + if (full_rootfs) {
|
| + EXPECT_FALSE(manifest.has_old_rootfs_info());
|
| + } else {
|
| + EXPECT_EQ(image_size, manifest.old_rootfs_info().size());
|
| + EXPECT_FALSE(manifest.old_rootfs_info().hash().empty());
|
| + }
|
| +
|
| EXPECT_EQ(new_kernel_data.size(), manifest.new_kernel_info().size());
|
| - EXPECT_EQ(image_size, manifest.old_rootfs_info().size());
|
| EXPECT_EQ(image_size, manifest.new_rootfs_info().size());
|
|
|
| EXPECT_FALSE(manifest.new_kernel_info().hash().empty());
|
| - EXPECT_FALSE(manifest.old_rootfs_info().hash().empty());
|
| EXPECT_FALSE(manifest.new_rootfs_info().hash().empty());
|
| }
|
|
|
| @@ -346,79 +352,19 @@ void DoSmallImageTest(bool full_kernel, bool noop) {
|
| }
|
|
|
| TEST(DeltaPerformerTest, RunAsRootSmallImageTest) {
|
| - DoSmallImageTest(false, false);
|
| + DoSmallImageTest(false, false, false);
|
| }
|
|
|
| TEST(DeltaPerformerTest, RunAsRootFullKernelSmallImageTest) {
|
| - DoSmallImageTest(true, false);
|
| + DoSmallImageTest(true, false, false);
|
| }
|
|
|
| -TEST(DeltaPerformerTest, RunAsRootNoopSmallImageTest) {
|
| - DoSmallImageTest(false, true);
|
| +TEST(DeltaPerformerTest, RunAsRootFullSmallImageTest) {
|
| + DoSmallImageTest(true, true, false);
|
| }
|
|
|
| -TEST(DeltaPerformerTest, NewFullUpdateTest) {
|
| - vector<char> new_root(20 * 1024 * 1024);
|
| - vector<char> new_kern(16 * 1024 * 1024);
|
| - const off_t kChunkSize = 128 * 1024;
|
| - FillWithData(&new_root);
|
| - FillWithData(&new_kern);
|
| - // Assume hashes take 2 MiB beyond the rootfs.
|
| - off_t new_rootfs_size = new_root.size() - 2 * 1024 * 1024;
|
| -
|
| - string new_root_path;
|
| - EXPECT_TRUE(utils::MakeTempFile("/tmp/NewFullUpdateTest_R.XXXXXX",
|
| - &new_root_path,
|
| - NULL));
|
| - ScopedPathUnlinker new_root_path_unlinker(new_root_path);
|
| - EXPECT_TRUE(WriteFileVector(new_root_path, new_root));
|
| -
|
| - string new_kern_path;
|
| - EXPECT_TRUE(utils::MakeTempFile("/tmp/NewFullUpdateTest_K.XXXXXX",
|
| - &new_kern_path,
|
| - NULL));
|
| - ScopedPathUnlinker new_kern_path_unlinker(new_kern_path);
|
| - EXPECT_TRUE(WriteFileVector(new_kern_path, new_kern));
|
| -
|
| - string out_blobs_path;
|
| - int out_blobs_fd;
|
| - EXPECT_TRUE(utils::MakeTempFile("/tmp/NewFullUpdateTest_D.XXXXXX",
|
| - &out_blobs_path,
|
| - &out_blobs_fd));
|
| - ScopedPathUnlinker out_blobs_path_unlinker(out_blobs_path);
|
| - ScopedFdCloser out_blobs_fd_closer(&out_blobs_fd);
|
| -
|
| - off_t out_blobs_length = 0;
|
| -
|
| - Graph graph;
|
| - vector<DeltaArchiveManifest_InstallOperation> kernel_ops;
|
| - vector<Vertex::Index> final_order;
|
| -
|
| - EXPECT_TRUE(DeltaDiffGenerator::ReadFullUpdateFromDisk(&graph,
|
| - new_kern_path,
|
| - new_root_path,
|
| - new_rootfs_size,
|
| - out_blobs_fd,
|
| - &out_blobs_length,
|
| - kChunkSize,
|
| - &kernel_ops,
|
| - &final_order));
|
| - EXPECT_EQ(new_rootfs_size / kChunkSize, graph.size());
|
| - EXPECT_EQ(new_rootfs_size / kChunkSize, final_order.size());
|
| - EXPECT_EQ(new_kern.size() / kChunkSize, kernel_ops.size());
|
| - for (off_t i = 0; i < (new_rootfs_size / kChunkSize); ++i) {
|
| - EXPECT_EQ(i, final_order[i]);
|
| - EXPECT_EQ(1, graph[i].op.dst_extents_size());
|
| - EXPECT_EQ(i * kChunkSize / kBlockSize,
|
| - graph[i].op.dst_extents(0).start_block()) << "i = " << i;
|
| - EXPECT_EQ(kChunkSize / kBlockSize,
|
| - graph[i].op.dst_extents(0).num_blocks());
|
| - if (graph[i].op.type() !=
|
| - DeltaArchiveManifest_InstallOperation_Type_REPLACE) {
|
| - EXPECT_EQ(DeltaArchiveManifest_InstallOperation_Type_REPLACE_BZ,
|
| - graph[i].op.type());
|
| - }
|
| - }
|
| +TEST(DeltaPerformerTest, RunAsRootNoopSmallImageTest) {
|
| + DoSmallImageTest(false, false, true);
|
| }
|
|
|
| TEST(DeltaPerformerTest, IsIdempotentOperationTest) {
|
|
|