AU: Gut code for old updater. New protobuf for v2 updater.

Review URL: http://codereview.chromium.org/545072
diff --git a/delta_diff_generator_unittest.cc b/delta_diff_generator_unittest.cc
index f86f0e2..a5def92 100644
--- a/delta_diff_generator_unittest.cc
+++ b/delta_diff_generator_unittest.cc
@@ -23,933 +23,6 @@
 
 namespace chromeos_update_engine {
 
-using std::set;
-using std::string;
-using std::vector;
-
-class DeltaDiffGeneratorTest : public ::testing::Test {
-  virtual void TearDown() {
-    EXPECT_EQ(0, system("rm -rf diff-gen-test"));
-  }
-protected:
-  void FakerootEncodeDataToDeltaFileTest(bool test_diff_exclusion);
-};
-
-namespace {
-void DumpProto(const DeltaArchiveManifest* archive) {
-  for (int i = 0; i < archive->files_size(); i++) {
-    printf("Node %d\n", i);
-    const DeltaArchiveManifest_File& file = archive->files(i);
-    for (int j = 0; j < file.children_size(); j++) {
-      const DeltaArchiveManifest_File_Child& child = file.children(j);
-      printf("  %d %s\n", child.index(), child.name().c_str());
-    }
-  }
-}
-
-const char* const kWellCompressingFilename =
-    "this_compresses_well_xxxxxxxxxxxxxxxxx"
-    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-// The following files are generated at the path 'base':
-// /
-//  cdev (c 2 1)
-//  dir/
-//      bdev (b 3 1)
-//      emptydir/ (owner:group = 501:503)
-//      hello ("hello")
-//      newempty ("")
-//      subdir/
-//             fifo
-//             link -> /target
-//  encoding/
-//           long_new
-//           long_small_change
-//           nochange
-//           onebyte
-//  hi ("hi")
-void GenerateFilesAtPath(const string& base) {
-  const char* base_c = base.c_str();
-  EXPECT_EQ(0, System(StringPrintf("echo hi > '%s/hi'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("mkdir -p '%s/dir'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("rm -f '%s/dir/bdev'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("mknod '%s/dir/bdev' b 3 1", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("rm -f '%s/cdev'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("mknod '%s/cdev' c 2 1", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("mkdir -p '%s/dir/subdir'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("mkdir -p '%s/dir/emptydir'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("chown 501:503 '%s/dir/emptydir'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("rm -f '%s/dir/subdir/fifo'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("mkfifo '%s/dir/subdir/fifo'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("ln -f -s /target '%s/dir/subdir/link'",
-                                   base_c)));
-  EXPECT_EQ(0, System(StringPrintf("rm -f '%s/hard_link'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("ln '%s/hi' '%s/hard_link'",
-                                   base_c, base_c)));
-  EXPECT_EQ(0, System(StringPrintf(
-      "ln -f -s '%s' '%s/compress_link'", kWellCompressingFilename, base_c)));
-
-  // Things that will encode differently:
-  EXPECT_EQ(0, System(StringPrintf("mkdir -p '%s/encoding'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("echo nochange > '%s/encoding/nochange'",
-                                   base_c)));
-  EXPECT_EQ(0, System(StringPrintf("echo -n > '%s/encoding/onebyte'", base_c)));
-  EXPECT_EQ(0, System(StringPrintf("echo -n > '%s/encoding/long_new'",
-                                   base_c)));
-  // Random 1 MiB byte length file
-  EXPECT_TRUE(utils::WriteFile((base +
-                                "/encoding/long_small_change").c_str(),
-                               reinterpret_cast<const char*>(kRandomString),
-                               sizeof(kRandomString)));
-}
-// base points to a folder that was passed to GenerateFilesAtPath().
-// This edits some, so that one can make a diff from the original data
-// and the edited data.
-void EditFilesAtPath(const string& base) {
-  CHECK_EQ(0, System(string("echo hello > ") + base + "/dir/hello"));
-  CHECK_EQ(0, System(string("echo -n > ") + base + "/dir/newempty"));
-  CHECK_EQ(0, System(string("echo newhi > ") + base + "/hi"));
-  CHECK_EQ(0, System(string("echo -n h >> ") + base +
-                     "/encoding/onebyte"));
-  CHECK_EQ(0, System(string("echo -n h >> ") + base +
-                     "/encoding/long_small_change"));
-  CHECK_EQ(0, System(string("echo -n This is a pice of text that should "
-                            "compress well since it is just ascii and it "
-                            "has repetition xxxxxxxxxxxxxxxxxxxxx"
-                            "xxxxxxxxxxxxxxxxxxxx > ") + base +
-                     "/encoding/long_new"));
-}
-
-}  // namespace {}
-
-TEST_F(DeltaDiffGeneratorTest, FakerootEncodeMetadataToProtoBufferTest) {
-  char cwd[1000];
-  ASSERT_EQ(cwd, getcwd(cwd, sizeof(cwd))) << "cwd buf possibly too small";
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test/old"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test/new"));
-  GenerateFilesAtPath(string(cwd) + "/diff-gen-test/old");
-  GenerateFilesAtPath(string(cwd) + "/diff-gen-test/new");
-  EditFilesAtPath(string(cwd) + "/diff-gen-test/new");
-
-  DeltaArchiveManifest* archive =
-      DeltaDiffGenerator::EncodeMetadataToProtoBuffer(
-          (string(cwd) + "/diff-gen-test/new").c_str());
-  EXPECT_TRUE(NULL != archive);
-
-  EXPECT_EQ(18, archive->files_size());
-  //DumpProto(archive);
-  const DeltaArchiveManifest_File& root = archive->files(0);
-  EXPECT_TRUE(S_ISDIR(root.mode()));
-  EXPECT_EQ(0, root.uid());
-  EXPECT_EQ(0, root.gid());
-  ASSERT_EQ(6, root.children_size());
-  EXPECT_EQ("cdev", root.children(0).name());
-  EXPECT_EQ("compress_link", root.children(1).name());
-  EXPECT_EQ("dir", root.children(2).name());
-  EXPECT_EQ("encoding", root.children(3).name());
-  EXPECT_EQ("hard_link", root.children(4).name());
-  EXPECT_EQ("hi", root.children(5).name());
-  EXPECT_FALSE(root.has_hardlink_path());
-  EXPECT_FALSE(root.has_data_format());
-  EXPECT_FALSE(root.has_data_offset());
-  EXPECT_FALSE(root.has_data_length());
-
-  const DeltaArchiveManifest_File& cdev =
-      archive->files(root.children(0).index());
-  EXPECT_EQ(0, cdev.children_size());
-  EXPECT_TRUE(S_ISCHR(cdev.mode()));
-  EXPECT_EQ(0, cdev.uid());
-  EXPECT_EQ(0, cdev.gid());
-  EXPECT_FALSE(cdev.has_hardlink_path());
-  EXPECT_FALSE(cdev.has_data_format());
-  EXPECT_FALSE(cdev.has_data_offset());
-  EXPECT_FALSE(cdev.has_data_length());
-
-  const DeltaArchiveManifest_File& compress_link =
-      archive->files(root.children(1).index());
-  EXPECT_EQ(0, compress_link.children_size());
-  EXPECT_TRUE(S_ISLNK(compress_link.mode()));
-  EXPECT_EQ(0, compress_link.uid());
-  EXPECT_EQ(0, compress_link.gid());
-  EXPECT_FALSE(compress_link.has_hardlink_path());
-  EXPECT_FALSE(compress_link.has_data_format());
-  EXPECT_FALSE(compress_link.has_data_offset());
-  EXPECT_FALSE(compress_link.has_data_length());
-
-  const DeltaArchiveManifest_File& hard_link =
-      archive->files(root.children(4).index());
-  EXPECT_EQ(0, hard_link.children_size());
-  EXPECT_TRUE(S_ISREG(hard_link.mode()));
-  EXPECT_EQ(0, hard_link.uid());
-  EXPECT_EQ(0, hard_link.gid());
-  EXPECT_FALSE(hard_link.has_hardlink_path());
-  EXPECT_FALSE(hard_link.has_data_format());
-  EXPECT_FALSE(hard_link.has_data_offset());
-  EXPECT_FALSE(hard_link.has_data_length());
-
-  const DeltaArchiveManifest_File& hi =
-      archive->files(root.children(5).index());
-  EXPECT_EQ(0, hi.children_size());
-  EXPECT_TRUE(S_ISREG(hi.mode()));
-  EXPECT_EQ(0, hi.uid());
-  EXPECT_EQ(0, hi.gid());
-  EXPECT_TRUE(hi.has_hardlink_path());
-  EXPECT_EQ("/hard_link", hi.hardlink_path());
-  EXPECT_FALSE(hi.has_data_format());
-  EXPECT_FALSE(hi.has_data_offset());
-  EXPECT_FALSE(hi.has_data_length());
-
-  const DeltaArchiveManifest_File& encoding =
-      archive->files(root.children(3).index());
-  EXPECT_TRUE(S_ISDIR(encoding.mode()));
-  EXPECT_EQ(0, encoding.uid());
-  EXPECT_EQ(0, encoding.gid());
-  EXPECT_EQ(4, encoding.children_size());
-  EXPECT_EQ("long_new", encoding.children(0).name());
-  EXPECT_EQ("long_small_change", encoding.children(1).name());
-  EXPECT_EQ("nochange", encoding.children(2).name());
-  EXPECT_EQ("onebyte", encoding.children(3).name());
-  EXPECT_FALSE(encoding.has_hardlink_path());
-  EXPECT_FALSE(encoding.has_data_format());
-  EXPECT_FALSE(encoding.has_data_offset());
-  EXPECT_FALSE(encoding.has_data_length());
-
-  const DeltaArchiveManifest_File& long_new =
-      archive->files(encoding.children(0).index());
-  EXPECT_EQ(0, long_new.children_size());
-  EXPECT_TRUE(S_ISREG(long_new.mode()));
-  EXPECT_EQ(0, long_new.uid());
-  EXPECT_EQ(0, long_new.gid());
-  EXPECT_FALSE(long_new.has_hardlink_path());
-  EXPECT_FALSE(long_new.has_data_format());
-  EXPECT_FALSE(long_new.has_data_offset());
-  EXPECT_FALSE(long_new.has_data_length());
-
-  const DeltaArchiveManifest_File& long_small_change =
-      archive->files(encoding.children(1).index());
-  EXPECT_EQ(0, long_small_change.children_size());
-  EXPECT_TRUE(S_ISREG(long_small_change.mode()));
-  EXPECT_EQ(0, long_small_change.uid());
-  EXPECT_EQ(0, long_small_change.gid());
-  EXPECT_FALSE(long_small_change.has_hardlink_path());
-  EXPECT_FALSE(long_small_change.has_data_format());
-  EXPECT_FALSE(long_small_change.has_data_offset());
-  EXPECT_FALSE(long_small_change.has_data_length());
-
-  const DeltaArchiveManifest_File& nochange =
-      archive->files(encoding.children(2).index());
-  EXPECT_EQ(0, nochange.children_size());
-  EXPECT_TRUE(S_ISREG(nochange.mode()));
-  EXPECT_EQ(0, nochange.uid());
-  EXPECT_EQ(0, nochange.gid());
-  EXPECT_FALSE(nochange.has_hardlink_path());
-  EXPECT_FALSE(nochange.has_data_format());
-  EXPECT_FALSE(nochange.has_data_offset());
-  EXPECT_FALSE(nochange.has_data_length());
-
-  const DeltaArchiveManifest_File& onebyte =
-      archive->files(encoding.children(3).index());
-  EXPECT_EQ(0, onebyte.children_size());
-  EXPECT_TRUE(S_ISREG(onebyte.mode()));
-  EXPECT_EQ(0, onebyte.uid());
-  EXPECT_EQ(0, onebyte.gid());
-  EXPECT_FALSE(onebyte.has_hardlink_path());
-  EXPECT_FALSE(onebyte.has_data_format());
-  EXPECT_FALSE(onebyte.has_data_offset());
-  EXPECT_FALSE(onebyte.has_data_length());
-
-  const DeltaArchiveManifest_File& dir =
-      archive->files(root.children(2).index());
-  EXPECT_TRUE(S_ISDIR(dir.mode()));
-  EXPECT_EQ(0, dir.uid());
-  EXPECT_EQ(0, dir.gid());
-  ASSERT_EQ(5, dir.children_size());
-  EXPECT_EQ("bdev", dir.children(0).name());
-  EXPECT_EQ("emptydir", dir.children(1).name());
-  EXPECT_EQ("hello", dir.children(2).name());
-  EXPECT_EQ("newempty", dir.children(3).name());
-  EXPECT_EQ("subdir", dir.children(4).name());
-  EXPECT_FALSE(dir.has_hardlink_path());
-  EXPECT_FALSE(dir.has_data_format());
-  EXPECT_FALSE(dir.has_data_offset());
-  EXPECT_FALSE(dir.has_data_length());
-
-  const DeltaArchiveManifest_File& bdev =
-      archive->files(dir.children(0).index());
-  EXPECT_EQ(0, bdev.children_size());
-  EXPECT_TRUE(S_ISBLK(bdev.mode()));
-  EXPECT_EQ(0, bdev.uid());
-  EXPECT_EQ(0, bdev.gid());
-  EXPECT_FALSE(bdev.has_hardlink_path());
-  EXPECT_FALSE(bdev.has_data_format());
-  EXPECT_FALSE(bdev.has_data_offset());
-  EXPECT_FALSE(bdev.has_data_length());
-
-  const DeltaArchiveManifest_File& emptydir =
-      archive->files(dir.children(1).index());
-  EXPECT_EQ(0, emptydir.children_size());
-  EXPECT_TRUE(S_ISDIR(emptydir.mode()));
-  EXPECT_EQ(501, emptydir.uid());
-  EXPECT_EQ(503, emptydir.gid());
-  EXPECT_FALSE(emptydir.has_hardlink_path());
-  EXPECT_FALSE(emptydir.has_data_format());
-  EXPECT_FALSE(emptydir.has_data_offset());
-  EXPECT_FALSE(emptydir.has_data_length());
-
-  const DeltaArchiveManifest_File& hello =
-      archive->files(dir.children(2).index());
-  EXPECT_EQ(0, hello.children_size());
-  EXPECT_TRUE(S_ISREG(hello.mode()));
-  EXPECT_EQ(0, hello.uid());
-  EXPECT_EQ(0, hello.gid());
-  EXPECT_FALSE(hello.has_hardlink_path());
-  EXPECT_FALSE(hello.has_data_format());
-  EXPECT_FALSE(hello.has_data_offset());
-  EXPECT_FALSE(hello.has_data_length());
-
-  const DeltaArchiveManifest_File& newempty =
-      archive->files(dir.children(3).index());
-  EXPECT_EQ(0, newempty.children_size());
-  EXPECT_TRUE(S_ISREG(newempty.mode()));
-  EXPECT_EQ(0, newempty.uid());
-  EXPECT_EQ(0, newempty.gid());
-  EXPECT_FALSE(newempty.has_hardlink_path());
-  EXPECT_FALSE(newempty.has_data_format());
-  EXPECT_FALSE(newempty.has_data_offset());
-  EXPECT_FALSE(newempty.has_data_length());
-
-  const DeltaArchiveManifest_File& subdir =
-      archive->files(dir.children(4).index());
-  EXPECT_EQ(2, subdir.children_size());
-  EXPECT_EQ("fifo", subdir.children(0).name());
-  EXPECT_EQ("link", subdir.children(1).name());
-  EXPECT_TRUE(S_ISDIR(subdir.mode()));
-  EXPECT_EQ(0, subdir.uid());
-  EXPECT_EQ(0, subdir.gid());
-  EXPECT_FALSE(subdir.has_hardlink_path());
-  EXPECT_FALSE(subdir.has_data_format());
-  EXPECT_FALSE(subdir.has_data_offset());
-  EXPECT_FALSE(subdir.has_data_length());
-
-  const DeltaArchiveManifest_File& fifo =
-      archive->files(subdir.children(0).index());
-  EXPECT_EQ(0, fifo.children_size());
-  EXPECT_TRUE(S_ISFIFO(fifo.mode()));
-  EXPECT_EQ(0, fifo.uid());
-  EXPECT_EQ(0, fifo.gid());
-  EXPECT_FALSE(fifo.has_hardlink_path());
-  EXPECT_FALSE(fifo.has_data_format());
-  EXPECT_FALSE(fifo.has_data_offset());
-  EXPECT_FALSE(fifo.has_data_length());
-
-  const DeltaArchiveManifest_File& link =
-      archive->files(subdir.children(1).index());
-  EXPECT_EQ(0, link.children_size());
-  EXPECT_TRUE(S_ISLNK(link.mode()));
-  EXPECT_EQ(0, link.uid());
-  EXPECT_EQ(0, link.gid());
-  EXPECT_FALSE(link.has_hardlink_path());
-  EXPECT_FALSE(link.has_data_format());
-  EXPECT_FALSE(link.has_data_offset());
-  EXPECT_FALSE(link.has_data_length());
-}
-
-TEST_F(DeltaDiffGeneratorTest, FakerootEncodeDataToDeltaFileTest) {
-  FakerootEncodeDataToDeltaFileTest(false);
-}
-TEST_F(DeltaDiffGeneratorTest, FakerootDiffExclusionsTest) {
-  FakerootEncodeDataToDeltaFileTest(true);
-}
-
-void DeltaDiffGeneratorTest::FakerootEncodeDataToDeltaFileTest(
-    bool test_diff_exclusion) {
-  char cwd[1000];
-  ASSERT_EQ(cwd, getcwd(cwd, sizeof(cwd))) << "cwd buf possibly too small";
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test/old"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test/new"));
-  GenerateFilesAtPath(string(cwd) + "/diff-gen-test/old");
-  GenerateFilesAtPath(string(cwd) + "/diff-gen-test/new");
-  EditFilesAtPath(string(cwd) + "/diff-gen-test/new");
-
-  set<string> diff_exclusions;
-  if (test_diff_exclusion) {
-    diff_exclusions.insert("/encoding/long_small_change");
-  } else {
-    diff_exclusions.insert("/hi");
-  }
-
-  DeltaArchiveManifest* archive =
-      DeltaDiffGenerator::EncodeMetadataToProtoBuffer(
-          (string(cwd) + "/diff-gen-test/new").c_str());
-  EXPECT_TRUE(NULL != archive);
-
-  EXPECT_TRUE(DeltaDiffGenerator::EncodeDataToDeltaFile(
-      archive,
-      string(cwd) + "/diff-gen-test/old",
-      string(cwd) + "/diff-gen-test/new",
-      string(cwd) + "/diff-gen-test/out.dat",
-      diff_exclusions, ""));
-
-  EXPECT_EQ(18, archive->files_size());
-
-  const DeltaArchiveManifest_File& root = archive->files(0);
-  EXPECT_TRUE(S_ISDIR(root.mode()));
-  EXPECT_EQ(0, root.uid());
-  EXPECT_EQ(0, root.gid());
-  ASSERT_EQ(6, root.children_size());
-  EXPECT_EQ("cdev", root.children(0).name());
-  EXPECT_EQ("compress_link", root.children(1).name());
-  EXPECT_EQ("dir", root.children(2).name());
-  EXPECT_EQ("encoding", root.children(3).name());
-  EXPECT_EQ("hard_link", root.children(4).name());
-  EXPECT_EQ("hi", root.children(5).name());
-  EXPECT_FALSE(root.has_hardlink_path());
-  EXPECT_FALSE(root.has_data_format());
-  EXPECT_FALSE(root.has_data_offset());
-  EXPECT_FALSE(root.has_data_length());
-
-  const DeltaArchiveManifest_File& cdev =
-      archive->files(root.children(0).index());
-  EXPECT_EQ(0, cdev.children_size());
-  EXPECT_TRUE(S_ISCHR(cdev.mode()));
-  EXPECT_EQ(0, cdev.uid());
-  EXPECT_EQ(0, cdev.gid());
-  ASSERT_TRUE(cdev.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, cdev.data_format());
-  EXPECT_TRUE(cdev.has_data_offset());
-  ASSERT_TRUE(cdev.has_data_length());
-  EXPECT_GT(cdev.data_length(), 0);
-  EXPECT_FALSE(cdev.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& compress_link =
-      archive->files(root.children(1).index());
-  EXPECT_EQ(0, compress_link.children_size());
-  EXPECT_TRUE(S_ISLNK(compress_link.mode()));
-  EXPECT_EQ(0, compress_link.uid());
-  EXPECT_EQ(0, compress_link.gid());
-  ASSERT_TRUE(compress_link.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL_GZ,
-            compress_link.data_format());
-  EXPECT_TRUE(compress_link.has_data_offset());
-  ASSERT_TRUE(compress_link.has_data_length());
-  EXPECT_GT(compress_link.data_length(), 0);
-  EXPECT_FALSE(compress_link.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& hard_link =
-      archive->files(root.children(4).index());
-  EXPECT_EQ(0, hard_link.children_size());
-  EXPECT_TRUE(S_ISREG(hard_link.mode()));
-  EXPECT_EQ(0, hard_link.uid());
-  EXPECT_EQ(0, hard_link.gid());
-  ASSERT_TRUE(hard_link.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, hard_link.data_format());
-  EXPECT_TRUE(hard_link.has_data_offset());
-  ASSERT_TRUE(hard_link.has_data_length());
-  EXPECT_GT(hard_link.data_length(), 0);
-  EXPECT_FALSE(hard_link.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& hi =
-      archive->files(root.children(5).index());
-  EXPECT_EQ(0, hi.children_size());
-  EXPECT_TRUE(S_ISREG(hi.mode()));
-  EXPECT_EQ(0, hi.uid());
-  EXPECT_EQ(0, hi.gid());
-  EXPECT_FALSE(hi.has_data_format());
-  EXPECT_FALSE(hi.has_data_offset());
-  EXPECT_FALSE(hi.has_data_length());
-  EXPECT_TRUE(hi.has_hardlink_path());
-  EXPECT_EQ("/hard_link", hi.hardlink_path());
-
-  const DeltaArchiveManifest_File& encoding =
-      archive->files(root.children(3).index());
-  EXPECT_TRUE(S_ISDIR(encoding.mode()));
-  EXPECT_EQ(0, encoding.uid());
-  EXPECT_EQ(0, encoding.gid());
-  EXPECT_EQ(4, encoding.children_size());
-  EXPECT_EQ("long_new", encoding.children(0).name());
-  EXPECT_EQ("long_small_change", encoding.children(1).name());
-  EXPECT_EQ("nochange", encoding.children(2).name());
-  EXPECT_EQ("onebyte", encoding.children(3).name());
-  EXPECT_FALSE(encoding.has_data_format());
-  EXPECT_FALSE(encoding.has_data_offset());
-  EXPECT_FALSE(encoding.has_data_length());
-  EXPECT_FALSE(encoding.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& long_new =
-      archive->files(encoding.children(0).index());
-  EXPECT_EQ(0, long_new.children_size());
-  EXPECT_TRUE(S_ISREG(long_new.mode()));
-  EXPECT_EQ(0, long_new.uid());
-  EXPECT_EQ(0, long_new.gid());
-  EXPECT_TRUE(long_new.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL_GZ,
-            long_new.data_format());
-  EXPECT_TRUE(long_new.has_data_offset());
-  EXPECT_TRUE(long_new.has_data_length());
-  EXPECT_FALSE(long_new.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& long_small_change =
-      archive->files(encoding.children(1).index());
-  EXPECT_EQ(0, long_small_change.children_size());
-  EXPECT_TRUE(S_ISREG(long_small_change.mode()));
-  EXPECT_EQ(0, long_small_change.uid());
-  EXPECT_EQ(0, long_small_change.gid());
-  EXPECT_TRUE(long_small_change.has_data_format());
-  DeltaArchiveManifest_File_DataFormat expected_format =
-      DeltaArchiveManifest_File_DataFormat_BSDIFF;
-  if (test_diff_exclusion)
-    expected_format = DeltaArchiveManifest_File_DataFormat_FULL;
-  EXPECT_EQ(expected_format, long_small_change.data_format());
-  EXPECT_TRUE(long_small_change.has_data_offset());
-  EXPECT_TRUE(long_small_change.has_data_length());
-  EXPECT_FALSE(long_small_change.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& nochange =
-      archive->files(encoding.children(2).index());
-  EXPECT_EQ(0, nochange.children_size());
-  EXPECT_TRUE(S_ISREG(nochange.mode()));
-  EXPECT_EQ(0, nochange.uid());
-  EXPECT_EQ(0, nochange.gid());
-  EXPECT_FALSE(nochange.has_data_format());
-  EXPECT_FALSE(nochange.has_data_offset());
-  EXPECT_FALSE(nochange.has_data_length());
-  EXPECT_FALSE(nochange.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& onebyte =
-      archive->files(encoding.children(3).index());
-  EXPECT_EQ(0, onebyte.children_size());
-  EXPECT_TRUE(S_ISREG(onebyte.mode()));
-  EXPECT_EQ(0, onebyte.uid());
-  EXPECT_EQ(0, onebyte.gid());
-  EXPECT_TRUE(onebyte.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, onebyte.data_format());
-  EXPECT_TRUE(onebyte.has_data_offset());
-  EXPECT_TRUE(onebyte.has_data_length());
-  EXPECT_EQ(1, onebyte.data_length());
-  EXPECT_FALSE(onebyte.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& dir =
-      archive->files(root.children(2).index());
-  EXPECT_TRUE(S_ISDIR(dir.mode()));
-  EXPECT_EQ(0, dir.uid());
-  EXPECT_EQ(0, dir.gid());
-  ASSERT_EQ(5, dir.children_size());
-  EXPECT_EQ("bdev", dir.children(0).name());
-  EXPECT_EQ("emptydir", dir.children(1).name());
-  EXPECT_EQ("hello", dir.children(2).name());
-  EXPECT_EQ("newempty", dir.children(3).name());
-  EXPECT_EQ("subdir", dir.children(4).name());
-  EXPECT_FALSE(dir.has_data_format());
-  EXPECT_FALSE(dir.has_data_offset());
-  EXPECT_FALSE(dir.has_data_length());
-  EXPECT_FALSE(dir.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& bdev =
-      archive->files(dir.children(0).index());
-  EXPECT_EQ(0, bdev.children_size());
-  EXPECT_TRUE(S_ISBLK(bdev.mode()));
-  EXPECT_EQ(0, bdev.uid());
-  EXPECT_EQ(0, bdev.gid());
-  ASSERT_TRUE(bdev.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, bdev.data_format());
-  EXPECT_TRUE(bdev.has_data_offset());
-  ASSERT_TRUE(bdev.has_data_length());
-  EXPECT_GT(bdev.data_length(), 0);
-  EXPECT_FALSE(bdev.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& emptydir =
-      archive->files(dir.children(1).index());
-  EXPECT_EQ(0, emptydir.children_size());
-  EXPECT_TRUE(S_ISDIR(emptydir.mode()));
-  EXPECT_EQ(501, emptydir.uid());
-  EXPECT_EQ(503, emptydir.gid());
-  EXPECT_FALSE(emptydir.has_data_format());
-  EXPECT_FALSE(emptydir.has_data_offset());
-  EXPECT_FALSE(emptydir.has_data_length());
-  EXPECT_FALSE(emptydir.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& hello =
-      archive->files(dir.children(2).index());
-  EXPECT_EQ(0, hello.children_size());
-  EXPECT_TRUE(S_ISREG(hello.mode()));
-  EXPECT_EQ(0, hello.uid());
-  EXPECT_EQ(0, hello.gid());
-  ASSERT_TRUE(hello.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, hello.data_format());
-  EXPECT_TRUE(hello.has_data_offset());
-  ASSERT_TRUE(hello.has_data_length());
-  EXPECT_GT(hello.data_length(), 0);
-  EXPECT_FALSE(hello.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& newempty =
-      archive->files(dir.children(3).index());
-  EXPECT_EQ(0, newempty.children_size());
-  EXPECT_TRUE(S_ISREG(newempty.mode()));
-  EXPECT_EQ(0, newempty.uid());
-  EXPECT_EQ(0, newempty.gid());
-  EXPECT_TRUE(newempty.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, newempty.data_format());
-  EXPECT_TRUE(newempty.has_data_offset());
-  EXPECT_TRUE(newempty.has_data_length());
-  EXPECT_FALSE(newempty.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& subdir =
-      archive->files(dir.children(4).index());
-  EXPECT_EQ(2, subdir.children_size());
-  EXPECT_EQ("fifo", subdir.children(0).name());
-  EXPECT_EQ("link", subdir.children(1).name());
-  EXPECT_TRUE(S_ISDIR(subdir.mode()));
-  EXPECT_EQ(0, subdir.uid());
-  EXPECT_EQ(0, subdir.gid());
-  EXPECT_FALSE(subdir.has_data_format());
-  EXPECT_FALSE(subdir.has_data_offset());
-  EXPECT_FALSE(subdir.has_data_length());
-  EXPECT_FALSE(subdir.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& fifo =
-      archive->files(subdir.children(0).index());
-  EXPECT_EQ(0, fifo.children_size());
-  EXPECT_TRUE(S_ISFIFO(fifo.mode()));
-  EXPECT_EQ(0, fifo.uid());
-  EXPECT_EQ(0, fifo.gid());
-  EXPECT_FALSE(fifo.has_data_format());
-  EXPECT_FALSE(fifo.has_data_offset());
-  EXPECT_FALSE(fifo.has_data_length());
-  EXPECT_FALSE(fifo.has_hardlink_path());
-
-  const DeltaArchiveManifest_File& link =
-      archive->files(subdir.children(1).index());
-  EXPECT_EQ(0, link.children_size());
-  EXPECT_TRUE(S_ISLNK(link.mode()));
-  EXPECT_EQ(0, link.uid());
-  EXPECT_EQ(0, link.gid());
-  ASSERT_TRUE(link.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, link.data_format());
-  EXPECT_TRUE(link.has_data_offset());
-  ASSERT_TRUE(link.has_data_length());
-  EXPECT_GT(link.data_length(), 0);
-  EXPECT_FALSE(link.has_hardlink_path());
-}
-
-class DeltaDiffParserTest : public ::testing::Test {
-  virtual void TearDown() {
-    EXPECT_EQ(0, system("rm -rf diff-gen-test"));
-  }
-};
-
-namespace {
-// Reads part of a file into memory
-vector<char> ReadFilePart(const string& path, off_t start, off_t size) {
-  vector<char> ret;
-  int fd = open(path.c_str(), O_RDONLY, 0);
-  if (fd < 0)
-    return ret;
-  ret.resize(size);
-  EXPECT_EQ(size, pread(fd, &ret[0], size, start));
-  close(fd);
-  return ret;
-}
-
-string ReadFilePartToString(const string& path, off_t start, off_t size) {
-  vector<char> bytes = ReadFilePart(path, start, size);
-  string ret;
-  ret.append(&bytes[0], bytes.size());
-  return ret;
-}
-
-string StringFromVectorChar(const vector<char>& in) {
-  return string(&in[0], in.size());
-}
-
-string GzipDecompressToString(const vector<char>& in) {
-  vector<char> out;
-  EXPECT_TRUE(GzipDecompress(in, &out));
-  return StringFromVectorChar(out);
-}
-
-}
-
-TEST_F(DeltaDiffParserTest, FakerootDecodeDataFromDeltaFileTest) {
-  char cwd[1000];
-  ASSERT_EQ(cwd, getcwd(cwd, sizeof(cwd))) << "cwd buf possibly too small";
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test/old"));
-  ASSERT_EQ(0, System(string("mkdir -p ") + cwd + "/diff-gen-test/new"));
-  GenerateFilesAtPath(string(cwd) + "/diff-gen-test/old");
-  GenerateFilesAtPath(string(cwd) + "/diff-gen-test/new");
-  EditFilesAtPath(string(cwd) + "/diff-gen-test/new");
-
-  DeltaArchiveManifest* archive =
-      DeltaDiffGenerator::EncodeMetadataToProtoBuffer(
-          (string(cwd) + "/diff-gen-test/new").c_str());
-  EXPECT_TRUE(NULL != archive);
-
-  EXPECT_TRUE(DeltaDiffGenerator::EncodeDataToDeltaFile(
-      archive,
-      string(cwd) + "/diff-gen-test/old",
-      string(cwd) + "/diff-gen-test/new",
-      string(cwd) + "/diff-gen-test/out.dat",
-      set<string>(), ""));
-  // parse the file
-
-  DeltaDiffParser parser(string(cwd) + "/diff-gen-test/out.dat");
-  ASSERT_TRUE(parser.valid());
-  DeltaDiffParser::Iterator it = parser.Begin();
-  string expected_paths[] = {
-    "",
-    "/cdev",
-    "/compress_link",
-    "/dir",
-    "/dir/bdev",
-    "/dir/emptydir",
-    "/dir/hello",
-    "/dir/newempty",
-    "/dir/subdir",
-    "/dir/subdir/fifo",
-    "/dir/subdir/link",
-    "/encoding",
-    "/encoding/long_new",
-    "/encoding/long_small_change",
-    "/encoding/nochange",
-    "/encoding/onebyte",
-    "/hard_link",
-    "/hi"
-  };
-  for (unsigned int i = 0;
-       i < (sizeof(expected_paths)/sizeof(expected_paths[0])); i++) {
-    ASSERT_TRUE(it != parser.End());
-    ASSERT_TRUE(parser.ContainsPath(expected_paths[i]));
-    EXPECT_EQ(expected_paths[i], it.path());
-    EXPECT_EQ(expected_paths[i].substr(expected_paths[i].find_last_of('/') + 1),
-              it.GetName());
-    DeltaArchiveManifest_File f1 = parser.GetFileAtPath(expected_paths[i]);
-    DeltaArchiveManifest_File f2 = it.GetFile();
-    EXPECT_EQ(f1.mode(), f2.mode()) << it.path();
-    EXPECT_EQ(f1.uid(), f2.uid());
-    EXPECT_EQ(f1.gid(), f2.gid());
-    EXPECT_EQ(f1.has_data_format(), f2.has_data_format());
-    if (f1.has_data_format()) {
-      EXPECT_EQ(f1.data_format(), f2.data_format());
-      EXPECT_TRUE(f1.has_data_offset());
-      EXPECT_TRUE(f2.has_data_offset());
-      EXPECT_EQ(f1.data_offset(), f2.data_offset());
-    } else {
-      EXPECT_FALSE(f2.has_data_format());
-      EXPECT_FALSE(f1.has_data_offset());
-      EXPECT_FALSE(f2.has_data_offset());
-    }
-    EXPECT_EQ(f1.children_size(), f2.children_size());
-    for (int j = 0; j < f1.children_size(); j++) {
-      EXPECT_EQ(f1.children(j).name(), f2.children(j).name());
-      EXPECT_EQ(f1.children(j).index(), f2.children(j).index());
-    }
-    it.Increment();
-  }
-  EXPECT_TRUE(it == parser.End());
-  EXPECT_FALSE(parser.ContainsPath("/cdew"));
-  EXPECT_FALSE(parser.ContainsPath("/hi/hi"));
-  EXPECT_FALSE(parser.ContainsPath("/dir/newempty/hi"));
-  EXPECT_TRUE(parser.ContainsPath("/dir/"));
-
-  // Check the data
-  // root
-  DeltaArchiveManifest_File file = parser.GetFileAtPath("");
-  EXPECT_TRUE(S_ISDIR(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-
-  // cdev
-  file = parser.GetFileAtPath("/cdev");
-  EXPECT_TRUE(S_ISCHR(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  vector<char> data = ReadFilePart(string(cwd) + "/diff-gen-test/out.dat",
-                                   file.data_offset(), file.data_length());
-  LinuxDevice linux_device;
-  linux_device.ParseFromArray(&data[0], data.size());
-  EXPECT_EQ(linux_device.major(), 2);
-  EXPECT_EQ(linux_device.minor(), 1);
-
-  // compress_link
-  file = parser.GetFileAtPath("/compress_link");
-  EXPECT_TRUE(S_ISLNK(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL_GZ, file.data_format());
-  EXPECT_EQ(kWellCompressingFilename,
-            GzipDecompressToString(ReadFilePart(string(cwd) +
-                                                "/diff-gen-test/out.dat",
-                                                file.data_offset(),
-                                                file.data_length())));
-  // dir
-  file = parser.GetFileAtPath("/dir");
-  EXPECT_TRUE(S_ISDIR(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-
-  // bdev
-  file = parser.GetFileAtPath("/dir/bdev");
-  EXPECT_TRUE(S_ISBLK(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  data = ReadFilePart(string(cwd) + "/diff-gen-test/out.dat",
-                      file.data_offset(), file.data_length());
-  linux_device.ParseFromArray(&data[0], data.size());
-  EXPECT_EQ(linux_device.major(), 3);
-  EXPECT_EQ(linux_device.minor(), 1);
-
-  // emptydir
-  file = parser.GetFileAtPath("/dir/emptydir");
-  EXPECT_TRUE(S_ISDIR(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-
-  // hello
-  file = parser.GetFileAtPath("/dir/hello");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, file.data_format());
-  EXPECT_EQ("hello\n", ReadFilePartToString(string(cwd) +
-                                            "/diff-gen-test/out.dat",
-                                            file.data_offset(),
-                                            file.data_length()));
-
-  // newempty
-  file = parser.GetFileAtPath("/dir/newempty");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, file.data_format());
-
-  // subdir
-  file = parser.GetFileAtPath("/dir/subdir");
-  EXPECT_TRUE(S_ISDIR(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-
-  // fifo
-  file = parser.GetFileAtPath("/dir/subdir/fifo");
-  EXPECT_TRUE(S_ISFIFO(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-
-  // link
-  file = parser.GetFileAtPath("/dir/subdir/link");
-  EXPECT_TRUE(S_ISLNK(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, file.data_format());
-  EXPECT_EQ("/target", ReadFilePartToString(string(cwd) +
-                                            "/diff-gen-test/out.dat",
-                                            file.data_offset(),
-                                            file.data_length()));
-
-  // encoding
-  file = parser.GetFileAtPath("/encoding");
-  EXPECT_TRUE(S_ISDIR(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-
-  // long_new
-  file = parser.GetFileAtPath("/encoding/long_new");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL_GZ, file.data_format());
-  EXPECT_EQ("This is a pice of text that should "
-            "compress well since it is just ascii and it "
-            "has repetition xxxxxxxxxxxxxxxxxxxxx"
-            "xxxxxxxxxxxxxxxxxxxx",
-            GzipDecompressToString(ReadFilePart(string(cwd) +
-                                                "/diff-gen-test/out.dat",
-                                                file.data_offset(),
-                                                file.data_length())));
-
-  // long_small_change
-  file = parser.GetFileAtPath("/encoding/long_small_change");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_BSDIFF, file.data_format());
-  data = ReadFilePart(string(cwd) + "/diff-gen-test/out.dat",
-                      file.data_offset(), file.data_length());
-  WriteFileVector(string(cwd) + "/diff-gen-test/patch", data);
-  int rc = 1;
-  vector<string> cmd;
-  cmd.push_back("/usr/bin/bspatch");
-  cmd.push_back(string(cwd) + "/diff-gen-test/old/encoding/long_small_change");
-  cmd.push_back(string(cwd) + "/diff-gen-test/patch_result");
-  cmd.push_back(string(cwd) + "/diff-gen-test/patch");
-  Subprocess::SynchronousExec(cmd, &rc);
-  ASSERT_EQ(0, rc);
-  vector<char> patch_result;
-  EXPECT_TRUE(utils::ReadFile(string(cwd) + "/diff-gen-test/patch_result",
-                              &patch_result));
-  vector<char> expected_data(sizeof(kRandomString) + 1);
-  memcpy(&expected_data[0], kRandomString, sizeof(kRandomString));
-  expected_data[expected_data.size() - 1] = 'h';
-  ExpectVectorsEq(expected_data, patch_result);
-
-  // nochange
-  file = parser.GetFileAtPath("/encoding/nochange");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-  EXPECT_FALSE(file.has_data_offset());
-  EXPECT_FALSE(file.has_data_length());
-
-  // onebyte
-  file = parser.GetFileAtPath("/encoding/onebyte");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, file.data_format());
-  EXPECT_EQ("h", ReadFilePartToString(string(cwd) +
-                                      "/diff-gen-test/out.dat",
-                                      file.data_offset(),
-                                      file.data_length()));
-
-  // hard_link
-  file = parser.GetFileAtPath("/hard_link");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_TRUE(file.has_data_format());
-  EXPECT_EQ(DeltaArchiveManifest_File_DataFormat_FULL, file.data_format());
-  EXPECT_EQ("newhi\n", ReadFilePartToString(string(cwd) +
-                                            "/diff-gen-test/out.dat",
-                                            file.data_offset(),
-                                            file.data_length()));
-
-  // hi
-  file = parser.GetFileAtPath("/hi");
-  EXPECT_TRUE(S_ISREG(file.mode()));
-  EXPECT_FALSE(file.has_data_format());
-  EXPECT_TRUE(file.has_hardlink_path());
-  EXPECT_EQ("/hard_link", file.hardlink_path());
-}
-
-TEST_F(DeltaDiffParserTest, FakerootInvalidTest) {
-  ASSERT_EQ(0, mkdir("diff-gen-test", 0777));
-  {
-    DeltaDiffParser parser("/no/such/file");
-    EXPECT_FALSE(parser.valid());
-  }
-  {
-    vector<char> data(3);
-    memcpy(&data[0], "CrA", 3);
-    WriteFileVector("diff-gen-test/baddelta", data);
-    DeltaDiffParser parser("diff-gen-test/baddelta");
-    EXPECT_FALSE(parser.valid());
-  }
-  {
-    vector<char> data(5);
-    memcpy(&data[0], "CrAPx", 5);
-    WriteFileVector("diff-gen-test/baddelta", data);
-    DeltaDiffParser parser("diff-gen-test/baddelta");
-    EXPECT_FALSE(parser.valid());
-  }
-  {
-    vector<char> data(5);
-    memcpy(&data[0], "CrAU\0", 5);
-    WriteFileVector("diff-gen-test/baddelta", data);
-    DeltaDiffParser parser("diff-gen-test/baddelta");
-    EXPECT_FALSE(parser.valid());
-  }
-  {
-    vector<char> data(14);
-    memcpy(&data[0], "CrAU\0\0\0\0\0\0\0\x0cxx", 12);
-    WriteFileVector("diff-gen-test/baddelta", data);
-    DeltaDiffParser parser("diff-gen-test/baddelta");
-    EXPECT_FALSE(parser.valid());
-  }
-}
+class DeltaDiffGeneratorTest : public ::testing::Test {};
 
 }  // namespace chromeos_update_engine