Fix Ext2FilesystemTest unittests on Brillo.
am: c90be63117

* commit 'c90be63117cdad2622694b6f9ac2aec65fa80bf0':
  Fix Ext2FilesystemTest unittests on Brillo.
diff --git a/Android.mk b/Android.mk
index 8d453aa..6b24fd0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -686,6 +686,34 @@
 # dependencies are removed or placed behind the USE_DBUS flag.
 ifdef BRILLO
 
+# Sample images for unittests.
+# ========================================================
+# Generate a prebuilt module that installs a sample image from the compressed
+# sample_images.tar.bz2 file used by the unittests.
+#
+# $(1): The filename in the sample_images.tar.bz2
+define ue-unittest-sample-image
+    $(eval include $(CLEAR_VARS)) \
+    $(eval LOCAL_MODULE := ue_unittest_$(1)) \
+    $(eval LOCAL_MODULE_CLASS := EXECUTABLES) \
+    $(eval $(ifeq $(BRILLO), 1, LOCAL_MODULE_TAGS := eng)) \
+    $(eval LOCAL_MODULE_PATH := \
+        $(TARGET_OUT_DATA_NATIVE_TESTS)/update_engine_unittests/gen) \
+    $(eval LOCAL_MODULE_STEM := $(1)) \
+    $(eval my_gen := $(call local-intermediates-dir)/gen/$(1)) \
+    $(eval $(my_gen) : PRIVATE_CUSTOM_TOOL = \
+        tar -jxf $$< -C $$(dir $$@) $$(notdir $$@)) \
+    $(eval $(my_gen) : $(LOCAL_PATH)/sample_images/sample_images.tar.bz2 ; \
+        $$(transform-generated-source)) \
+    $(eval LOCAL_PREBUILT_MODULE_FILE := $(my_gen)) \
+    $(eval include $(BUILD_PREBUILT))
+endef
+
+$(call ue-unittest-sample-image,disk_ext2_1k.img)
+$(call ue-unittest-sample-image,disk_ext2_4k.img)
+$(call ue-unittest-sample-image,disk_ext2_4k_empty.img)
+$(call ue-unittest-sample-image,disk_ext2_ue_settings.img)
+
 # test_http_server (type: executable)
 # ========================================================
 # Test HTTP Server.
@@ -715,6 +743,11 @@
 ifdef BRILLO
   LOCAL_MODULE_TAGS := eng
 endif
+LOCAL_REQUIRED_MODULES := \
+    ue_unittest_disk_ext2_1k.img \
+    ue_unittest_disk_ext2_4k.img \
+    ue_unittest_disk_ext2_4k_empty.img \
+    ue_unittest_disk_ext2_ue_settings.img
 LOCAL_MODULE_CLASS := EXECUTABLES
 LOCAL_CPP_EXTENSION := .cc
 LOCAL_CLANG := true
diff --git a/payload_generator/ext2_filesystem_unittest.cc b/payload_generator/ext2_filesystem_unittest.cc
index 1362027..f7d25da 100644
--- a/payload_generator/ext2_filesystem_unittest.cc
+++ b/payload_generator/ext2_filesystem_unittest.cc
@@ -34,7 +34,6 @@
 #include "update_engine/common/utils.h"
 #include "update_engine/payload_generator/extent_utils.h"
 
-using chromeos_update_engine::test_utils::System;
 using std::map;
 using std::set;
 using std::string;
@@ -59,24 +58,13 @@
 
 }  // namespace
 
-
-class Ext2FilesystemTest : public ::testing::Test {
- protected:
-  void SetUp() override {
-    ASSERT_TRUE(utils::MakeTempFile("Ext2FilesystemTest-XXXXXX",
-                                    &fs_filename_, nullptr));
-    ASSERT_EQ(0, truncate(fs_filename_.c_str(), kDefaultFilesystemSize));
-  }
-
-  void TearDown() override {
-    unlink(fs_filename_.c_str());
-  }
-
-  string fs_filename_;
-};
+class Ext2FilesystemTest : public ::testing::Test {};
 
 TEST_F(Ext2FilesystemTest, InvalidFilesystem) {
-  unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(fs_filename_);
+  test_utils::ScopedTempFile fs_filename_{"Ext2FilesystemTest-XXXXXX"};
+  ASSERT_EQ(0, truncate(fs_filename_.path().c_str(), kDefaultFilesystemSize));
+  unique_ptr<Ext2Filesystem> fs =
+      Ext2Filesystem::CreateFromFile(fs_filename_.path());
   ASSERT_EQ(nullptr, fs.get());
 
   fs = Ext2Filesystem::CreateFromFile("/path/to/invalid/file");
@@ -84,10 +72,9 @@
 }
 
 TEST_F(Ext2FilesystemTest, EmptyFilesystem) {
-  EXPECT_EQ(0, System(base::StringPrintf(
-      "/sbin/mkfs.ext2 -q -b %" PRIuS " -F %s",
-      kDefaultFilesystemBlockSize, fs_filename_.c_str())));
-  unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(fs_filename_);
+  base::FilePath path =
+      test_utils::GetBuildArtifactsPath().Append("gen/disk_ext2_4k_empty.img");
+  unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(path.value());
 
   ASSERT_NE(nullptr, fs.get());
   EXPECT_EQ(kDefaultFilesystemBlockCount, fs->GetBlockCount());
@@ -194,6 +181,7 @@
   base::FilePath path = test_utils::GetBuildArtifactsPath().Append(
       "gen/disk_ext2_1k.img");
   unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(path.value());
+  ASSERT_NE(nullptr, fs.get());
 
   brillo::KeyValueStore store;
   // disk_ext2_1k.img doesn't have the /etc/update_engine.conf file.
@@ -204,6 +192,7 @@
   base::FilePath path = test_utils::GetBuildArtifactsPath().Append(
       "gen/disk_ext2_ue_settings.img");
   unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(path.value());
+  ASSERT_NE(nullptr, fs.get());
 
   brillo::KeyValueStore store;
   EXPECT_TRUE(fs->LoadSettings(&store));
diff --git a/sample_images/generate_images.sh b/sample_images/generate_images.sh
index 70fc14b..1c2a83c 100755
--- a/sample_images/generate_images.sh
+++ b/sample_images/generate_images.sh
@@ -156,6 +156,8 @@
     default)
       add_files_default "${mntdir}" "${block_size}"
       ;;
+    empty)
+      ;;
   esac
 
   cleanup "${mntdir}"
@@ -176,6 +178,7 @@
   # Add more sample images here.
   generate_image disk_ext2_1k default 16777216 1024
   generate_image disk_ext2_4k default 16777216 4096
+  generate_image disk_ext2_4k_empty empty $((1024 * 4096)) 4096
   generate_image disk_ext2_ue_settings ue_settings 16777216 4096
 
   # Generate the tarball and delete temporary images.
diff --git a/sample_images/sample_images.tar.bz2 b/sample_images/sample_images.tar.bz2
index 0982271..83141ab 100644
--- a/sample_images/sample_images.tar.bz2
+++ b/sample_images/sample_images.tar.bz2
Binary files differ