Add UpdateAttempterIntegrationTesting

Test: th
Bug: 201099341

Change-Id: I46d5ad86e238d28b7c20ef6768ffadf0e6ab9177
diff --git a/common/utils.cc b/common/utils.cc
index 45ad425..7a4a836 100644
--- a/common/utils.cc
+++ b/common/utils.cc
@@ -1045,10 +1045,24 @@
   return android::base::MappedFile::FromFd(fd, 0, size, PROT_READ);
 }
 
+std::string_view GetReadonlyZeroString(size_t size) {
+  // Reserve 512MB of Virtual Address Space. No actual memory will be used.
+  static auto zero_block = GetReadonlyZeroBlock(1024 * 1024 * 512);
+  if (size > zero_block->size()) {
+    auto larger_block = GetReadonlyZeroBlock(size);
+    zero_block = std::move(larger_block);
+  }
+  return {zero_block->data(), size};
+}
+
 }  // namespace utils
 
 std::string HexEncode(const brillo::Blob& blob) noexcept {
   return base::HexEncode(blob.data(), blob.size());
 }
 
+std::string HexEncode(const std::string_view blob) noexcept {
+  return base::HexEncode(blob.data(), blob.size());
+}
+
 }  // namespace chromeos_update_engine