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) {