Split slower tests to a separate test target
If a test binary didn't change in a CL, ATP will skip running it. Right
now, all update engine unittests are packed into a single target called
update_engine_unittests. This is bad, as any changes in code will cause
this test binary to change, triggering re-run of all test cases.
This CL splits some of the HTTP related testcases to a separate test
target. We rarely change HTTP related code, and these test cases take a
long time to run. For majority of code changes that don't touch HTTP,
ATP should be able to skip running HTTP testcases and save us time.
Test runtime:
1. http unitests: 3min
2. all other update_engine unitests: 3min
Test: th
Change-Id: Ieb5bf986a5fedf38710d96a4a9c974e5a1c1491d
diff --git a/Android.bp b/Android.bp
index b123c7d..cace5b6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -902,7 +902,6 @@
"update_engine.conf",
],
static_libs: [
- "libcurl",
"libgmock",
"libpayload_generator",
],
@@ -912,6 +911,82 @@
// ========================================================
// Main unittest file.
cc_test {
+ name: "update_engine_http_unittests",
+ defaults: [
+ "ue_defaults",
+ "liblz4diff_defaults",
+ "update_metadata-protos_exports",
+ ],
+ require_root: true,
+ static_libs: [
+ "libbase",
+ "libbrillo-test-helpers",
+ "libchrome_test_helpers",
+ "libcurl",
+ "libcutils",
+ "libdm",
+ "libgmock",
+ "libz",
+ ],
+ shared_libs: [
+ "libssl",
+ "libcrypto",
+ "libziparchive",
+ "liblog",
+ ],
+
+ data: [
+ ":test_http_server",
+ ":test_subprocess",
+ ":ue_unittest_keys",
+ "otacerts.zip",
+ "unittest_key.pem",
+ "unittest_key2.pem",
+ "unittest_key_RSA4096.pem",
+ "unittest_key_EC.pem",
+ ],
+
+ // We cannot use the default generated AndroidTest.xml because of the use of helper modules
+ // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
+ // test_config: "test_config.xml",
+ test_suites: ["device-tests"],
+
+ srcs: [
+ "aosp/platform_constants_android.cc",
+ "certificate_checker.cc",
+ "common/action_processor.cc",
+ "common/boot_control_stub.cc",
+ "common/error_code_utils.cc",
+ "common/file_fetcher.cc",
+ "common/hash_calculator.cc",
+ "common/http_fetcher.cc",
+ "common/multi_range_http_fetcher.cc",
+ "common/http_common.cc",
+ "common/subprocess.cc",
+ "common/test_utils.cc",
+ "common/utils.cc",
+ "common/proxy_resolver.cc",
+ "libcurl_http_fetcher.cc",
+ "payload_consumer/certificate_parser_android.cc",
+ "payload_consumer/payload_verifier.cc",
+ "payload_generator/payload_signer.cc",
+ "update_status_utils.cc",
+
+ "certificate_checker_unittest.cc",
+ "common/http_fetcher_unittest.cc",
+ "common/mock_http_fetcher.cc",
+ "common/proxy_resolver_unittest.cc",
+ "common/subprocess_unittest.cc",
+ "libcurl_http_fetcher_unittest.cc",
+ "payload_consumer/certificate_parser_android_unittest.cc",
+ "update_status_utils_unittest.cc",
+ ],
+}
+
+// update_engine_unittests (type: executable)
+// ========================================================
+// Main unittest file.
+cc_test {
name: "update_engine_unittests",
defaults: [
"ue_defaults",
@@ -933,8 +1008,6 @@
],
data: [
- ":test_http_server",
- ":test_subprocess",
":ue_unittest_delta_generator",
":ue_unittest_disk_imgs",
":ue_unittest_erofs_imgs",
@@ -966,17 +1039,11 @@
"aosp/dynamic_partition_control_android_unittest.cc",
"aosp/update_attempter_android_integration_test.cc",
"aosp/update_attempter_android_unittest.cc",
- "certificate_checker_unittest.cc",
- "common/http_fetcher_unittest.cc",
- "common/proxy_resolver_unittest.cc",
- "common/subprocess_unittest.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",
- "payload_consumer/certificate_parser_android_unittest.cc",
"payload_consumer/delta_performer_integration_test.cc",
"payload_consumer/delta_performer_unittest.cc",
"payload_consumer/extent_reader_unittest.cc",
@@ -994,7 +1061,6 @@
"payload_consumer/snapshot_extent_writer_unittest.cc",
"payload_consumer/vabc_partition_writer_unittest.cc",
"payload_consumer/xor_extent_writer_unittest.cc",
- "update_status_utils_unittest.cc",
],
}
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 93777d4..3a9a238 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -2,6 +2,9 @@
"presubmit": [
{
"name": "update_engine_unittests"
+ },
+ {
+ "name": "update_engine_http_unittests"
}
]
}
diff --git a/common/mock_http_fetcher.h b/common/mock_http_fetcher.h
index ea5b83d..3d7859b 100644
--- a/common/mock_http_fetcher.h
+++ b/common/mock_http_fetcher.h
@@ -36,7 +36,7 @@
// MockHttpFetcher will send a chunk of data down in each call to BeginTransfer
// and Unpause. For the other chunks of data, a callback is put on the run
// loop and when that's called, another chunk is sent down.
-const size_t kMockHttpFetcherChunkSize(65536);
+static constexpr size_t kMockHttpFetcherChunkSize(65536);
class MockHttpFetcher : public HttpFetcher {
public:
diff --git a/payload_generator/payload_generation_config.h b/payload_generator/payload_generation_config.h
index a7ddee4..7124cb0 100644
--- a/payload_generator/payload_generation_config.h
+++ b/payload_generator/payload_generation_config.h
@@ -25,7 +25,6 @@
#include <brillo/key_value_store.h>
#include <brillo/secure_blob.h>
-#include <lz4diff/lz4diff.pb.h>
#include "bsdiff/constants.h"
#include "update_engine/payload_consumer/payload_constants.h"