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