Add update_engine_host_unittests

Some of update_engine's codebase (payload generator stuff) run on host.
So it make sense to test them on the host. Adding a new unittest target
update_engine_host_unittests, which includes a subset of unittest. After
this CL, the old update_engine_unittests target remains unchanged, it
still contains all 600 unittests. The new host target will contain a
subset of these.

Test: th
Change-Id: I49c8310cee9a2b2ea197b8ab60ea3b00bf5680cf
diff --git a/Android.bp b/Android.bp
index a1bc6b0..f95f207 100644
--- a/Android.bp
+++ b/Android.bp
@@ -59,6 +59,7 @@
         "-ffunction-sections",
         "-fstack-protector-strong",
         "-fvisibility=hidden",
+        "-g3",
     ],
     cppflags: [
         "-Wnon-virtual-dtor",
@@ -251,6 +252,7 @@
         "payload_consumer/xz_extent_writer.cc",
         "payload_consumer/fec_file_descriptor.cc",
         "payload_consumer/partition_update_generator_android.cc",
+        "update_status_utils.cc",
     ],
 }
 
@@ -392,7 +394,6 @@
         "libcurl_http_fetcher.cc",
         "metrics_utils.cc",
         "update_boot_flags_action.cc",
-        "update_status_utils.cc",
     ],
 }
 
@@ -647,6 +648,7 @@
 }
 
 cc_test {
+    host_supported: true,
     name: "ue_unittest_delta_generator",
     defaults: [
         "ue_defaults",
@@ -728,6 +730,78 @@
     ],
 }
 
+filegroup {
+    name: "update_engine_host_unittest_srcs",
+    srcs: [
+        "common/action_pipe_unittest.cc",
+        "common/action_processor_unittest.cc",
+        "common/action_unittest.cc",
+        "common/cow_operation_convert_unittest.cc",
+        "common/cpu_limiter_unittest.cc",
+        "common/fake_prefs.cc",
+        "common/file_fetcher_unittest.cc",
+        "common/hash_calculator_unittest.cc",
+        "common/hwid_override_unittest.cc",
+        "common/metrics_reporter_stub.cc",
+        "common/mock_http_fetcher.cc",
+        "common/prefs_unittest.cc",
+        "common/terminator_unittest.cc",
+        "common/test_utils.cc",
+        "payload_generator/ab_generator_unittest.cc",
+        "payload_generator/blob_file_writer_unittest.cc",
+        "payload_generator/block_mapping_unittest.cc",
+        "payload_generator/boot_img_filesystem_unittest.cc",
+        "payload_generator/deflate_utils_unittest.cc",
+        "payload_generator/delta_diff_utils_unittest.cc",
+        "payload_generator/ext2_filesystem_unittest.cc",
+        "payload_generator/extent_ranges_unittest.cc",
+        "payload_generator/extent_utils_unittest.cc",
+        "payload_generator/fake_filesystem.cc",
+        "payload_generator/full_update_generator_unittest.cc",
+        "payload_generator/mapfile_filesystem_unittest.cc",
+        "payload_generator/merge_sequence_generator_unittest.cc",
+        "payload_generator/payload_file_unittest.cc",
+        "payload_generator/payload_generation_config_android_unittest.cc",
+        "payload_generator/payload_generation_config_unittest.cc",
+        "payload_generator/payload_properties_unittest.cc",
+        "payload_generator/payload_signer_unittest.cc",
+        "payload_generator/squashfs_filesystem_unittest.cc",
+        "payload_generator/zip_unittest.cc",
+        "testrunner.cc",
+    ],
+}
+
+cc_test_host {
+    name: "update_engine_host_unittests",
+    defaults: [
+        "ue_defaults",
+        "libpayload_generator_exports",
+    ],
+    strip: {
+        none: true,
+    },
+    cflags: [
+        "-g3",
+    ],
+    srcs: [":update_engine_host_unittest_srcs"],
+    data: [
+        ":ue_unittest_delta_generator",
+        ":ue_unittest_disk_imgs",
+        ":ue_unittest_keys",
+        "otacerts.zip",
+        "unittest_key.pem",
+        "unittest_key2.pem",
+        "unittest_key_RSA4096.pem",
+        "unittest_key_EC.pem",
+        "update_engine.conf",
+    ],
+    static_libs: [
+        "libcurl",
+        "libgmock",
+        "libpayload_generator",
+    ],
+}
+
 // update_engine_unittests (type: executable)
 // ========================================================
 // Main unittest file.
@@ -772,31 +846,18 @@
     test_suites: ["device-tests"],
 
     srcs: [
+        ":update_engine_host_unittest_srcs",
         "aosp/apex_handler_android_unittest.cc",
         "aosp/cleanup_previous_update_action_unittest.cc",
         "aosp/dynamic_partition_control_android_unittest.cc",
         "aosp/update_attempter_android_unittest.cc",
+        "download_action_android_unittest.cc",
         "certificate_checker_unittest.cc",
-        "common/action_pipe_unittest.cc",
-        "common/action_processor_unittest.cc",
-        "common/action_unittest.cc",
-        "common/cow_operation_convert_unittest.cc",
-        "common/cpu_limiter_unittest.cc",
-        "common/fake_prefs.cc",
-        "common/file_fetcher_unittest.cc",
-        "common/hash_calculator_unittest.cc",
+        "libcurl_http_fetcher_unittest.cc",
         "common/http_fetcher_unittest.cc",
-        "common/hwid_override_unittest.cc",
-        "common/metrics_reporter_stub.cc",
-        "common/mock_http_fetcher.cc",
-        "common/prefs_unittest.cc",
         "common/proxy_resolver_unittest.cc",
         "common/subprocess_unittest.cc",
-        "common/terminator_unittest.cc",
-        "common/test_utils.cc",
         "common/utils_unittest.cc",
-        "download_action_android_unittest.cc",
-        "libcurl_http_fetcher_unittest.cc",
         "payload_consumer/bzip_extent_writer_unittest.cc",
         "payload_consumer/cached_file_descriptor_unittest.cc",
         "payload_consumer/cow_writer_file_descriptor_unittest.cc",
@@ -806,10 +867,10 @@
         "payload_consumer/partition_writer_unittest.cc",
         "payload_consumer/extent_reader_unittest.cc",
         "payload_consumer/extent_writer_unittest.cc",
-        "payload_consumer/extent_map_unittest.cc",
         "payload_consumer/snapshot_extent_writer_unittest.cc",
         "payload_consumer/xor_extent_writer_unittest.cc",
         "payload_consumer/vabc_partition_writer_unittest.cc",
+        "payload_consumer/extent_map_unittest.cc",
         "payload_consumer/fake_file_descriptor.cc",
         "payload_consumer/file_descriptor_utils_unittest.cc",
         "payload_consumer/file_writer_unittest.cc",
@@ -820,27 +881,6 @@
         "payload_consumer/postinstall_runner_action_unittest.cc",
         "payload_consumer/verity_writer_android_unittest.cc",
         "payload_consumer/xz_extent_writer_unittest.cc",
-        "payload_generator/ab_generator_unittest.cc",
-        "payload_generator/blob_file_writer_unittest.cc",
-        "payload_generator/block_mapping_unittest.cc",
-        "payload_generator/boot_img_filesystem_unittest.cc",
-        "payload_generator/deflate_utils_unittest.cc",
-        "payload_generator/delta_diff_utils_unittest.cc",
-        "payload_generator/ext2_filesystem_unittest.cc",
-        "payload_generator/extent_ranges_unittest.cc",
-        "payload_generator/extent_utils_unittest.cc",
-        "payload_generator/fake_filesystem.cc",
-        "payload_generator/full_update_generator_unittest.cc",
-        "payload_generator/mapfile_filesystem_unittest.cc",
-        "payload_generator/merge_sequence_generator_unittest.cc",
-        "payload_generator/payload_file_unittest.cc",
-        "payload_generator/payload_generation_config_android_unittest.cc",
-        "payload_generator/payload_generation_config_unittest.cc",
-        "payload_generator/payload_properties_unittest.cc",
-        "payload_generator/payload_signer_unittest.cc",
-        "payload_generator/squashfs_filesystem_unittest.cc",
-        "payload_generator/zip_unittest.cc",
-        "testrunner.cc",
         "update_status_utils_unittest.cc",
     ],
 }
diff --git a/common/file_fetcher.h b/common/file_fetcher.h
index bd39007..0f034e3 100644
--- a/common/file_fetcher.h
+++ b/common/file_fetcher.h
@@ -23,7 +23,6 @@
 
 #include <base/logging.h>
 #include <base/macros.h>
-#include <brillo/message_loops/message_loop.h>
 #include <brillo/streams/stream.h>
 
 #include "update_engine/common/http_fetcher.h"
diff --git a/common/http_fetcher.h b/common/http_fetcher.h
index 7fa5f09..80985af 100644
--- a/common/http_fetcher.h
+++ b/common/http_fetcher.h
@@ -170,7 +170,7 @@
   ErrorCode auxiliary_error_code_{ErrorCode::kSuccess};
 
   // The delegate; may be null.
-  HttpFetcherDelegate* delegate_;
+  HttpFetcherDelegate* delegate_ = nullptr;
 
   // Proxy servers
   std::deque<std::string> proxies_;
diff --git a/payload_consumer/bzip_extent_writer.cc b/payload_consumer/bzip_extent_writer.cc
index 26fdc5f..9491964 100644
--- a/payload_consumer/bzip_extent_writer.cc
+++ b/payload_consumer/bzip_extent_writer.cc
@@ -78,8 +78,7 @@
 
   // Store unconsumed data (if any) in |input_buffer_|.
   if (stream_.avail_in || !input_buffer_.empty()) {
-    brillo::Blob new_input_buffer(input_end - stream_.avail_in, input_end);
-    new_input_buffer.swap(input_buffer_);
+    input_buffer_.assign(input_end - stream_.avail_in, input_end);
   }
 
   return true;
diff --git a/payload_generator/delta_diff_utils.cc b/payload_generator/delta_diff_utils.cc
index 356d369..1a2b407 100644
--- a/payload_generator/delta_diff_utils.cc
+++ b/payload_generator/delta_diff_utils.cc
@@ -475,7 +475,6 @@
 bool FileDeltaProcessor::MergeOperation(vector<AnnotatedOperation>* aops) {
   if (failed_)
     return false;
-  aops->reserve(aops->size() + file_aops_.size());
   std::move(file_aops_.begin(), file_aops_.end(), std::back_inserter(*aops));
   return true;
 }
diff --git a/payload_generator/xz_android.cc b/payload_generator/xz_android.cc
index 41c55f7..9d157c4 100644
--- a/payload_generator/xz_android.cc
+++ b/payload_generator/xz_android.cc
@@ -61,7 +61,6 @@
                             size_t size) {
     auto* self = static_cast<const BlobWriterStream*>(p);
     const uint8_t* buffer = reinterpret_cast<const uint8_t*>(buf);
-    self->data_->reserve(self->data_->size() + size);
     self->data_->insert(self->data_->end(), buffer, buffer + size);
     return size;
   }
diff --git a/payload_generator/zip_unittest.cc b/payload_generator/zip_unittest.cc
index 10e899b..6e1f5a3 100644
--- a/payload_generator/zip_unittest.cc
+++ b/payload_generator/zip_unittest.cc
@@ -21,6 +21,7 @@
 #include <string>
 #include <vector>
 
+#include <brillo/secure_blob.h>
 #include <gtest/gtest.h>
 
 #include "update_engine/common/test_utils.h"
@@ -54,7 +55,6 @@
     return true;
   }
   bool Write(const void* bytes, size_t count) override {
-    data_->reserve(data_->size() + count);
     data_->insert(data_->end(),
                   static_cast<const uint8_t*>(bytes),
                   static_cast<const uint8_t*>(bytes) + count);
@@ -67,6 +67,7 @@
 
 template <typename W>
 bool DecompressWithWriter(const brillo::Blob& in, brillo::Blob* out) {
+  out->reserve(in.size());
   std::unique_ptr<ExtentWriter> writer(
       new W(std::make_unique<MemoryExtentWriter>(out)));
   // Init() parameters are ignored by the testing MemoryExtentWriter.
@@ -163,7 +164,7 @@
 TYPED_TEST(ZipTest, CompressELFTest) {
   string path = test_utils::GetBuildArtifactsPath("delta_generator");
   brillo::Blob in;
-  utils::ReadFile(path, &in);
+  ASSERT_TRUE(utils::ReadFile(path, &in));
   brillo::Blob out;
   EXPECT_TRUE(this->ZipCompress(in, &out));
   EXPECT_LT(out.size(), in.size());
diff --git a/update_status_utils.cc b/update_status_utils.cc
index a702c61..6b96dda 100644
--- a/update_status_utils.cc
+++ b/update_status_utils.cc
@@ -18,7 +18,6 @@
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
 #include <brillo/key_value_store.h>
-#include <update_engine/dbus-constants.h>
 
 using brillo::KeyValueStore;
 using std::string;
@@ -40,6 +39,27 @@
 const char kProgress[] = "PROGRESS";
 const char kWillPowerwashAfterReboot[] = "WILL_POWERWASH_AFTER_REBOOT";
 
+namespace update_engine {
+const char kUpdateStatusIdle[] = "UPDATE_STATUS_IDLE";
+const char kUpdateStatusCheckingForUpdate[] =
+    "UPDATE_STATUS_CHECKING_FOR_UPDATE";
+const char kUpdateStatusUpdateAvailable[] = "UPDATE_STATUS_UPDATE_AVAILABLE";
+const char kUpdateStatusDownloading[] = "UPDATE_STATUS_DOWNLOADING";
+const char kUpdateStatusVerifying[] = "UPDATE_STATUS_VERIFYING";
+const char kUpdateStatusFinalizing[] = "UPDATE_STATUS_FINALIZING";
+const char kUpdateStatusUpdatedNeedReboot[] =
+    "UPDATE_STATUS_UPDATED_NEED_REBOOT";
+const char kUpdateStatusReportingErrorEvent[] =
+    "UPDATE_STATUS_REPORTING_ERROR_EVENT";
+const char kUpdateStatusAttemptingRollback[] =
+    "UPDATE_STATUS_ATTEMPTING_ROLLBACK";
+const char kUpdateStatusDisabled[] = "UPDATE_STATUS_DISABLED";
+const char kUpdateStatusNeedPermissionToUpdate[] =
+    "UPDATE_STATUS_NEED_PERMISSION_TO_UPDATE";
+const char kUpdateStatusCleanupPreviousUpdate[] =
+    "UPDATE_STATUS_CLEANUP_PREVIOUS_UPDATE";
+}  // namespace update_engine
+
 }  // namespace
 
 const char* UpdateStatusToString(const UpdateStatus& status) {