Fix unittest key path in Brillo.
The unittests weren't able to find the keys if it's not run from the
update_engine_unittests directory.
Test: /data/nativetest/update_engine_unittests/update_engine_unittests
Bug: 26955860
Change-Id: I4c189cca2714986d3d2b2669b54a5dff9a488964
diff --git a/common/http_fetcher_unittest.cc b/common/http_fetcher_unittest.cc
index 0d4b5da..e287103 100644
--- a/common/http_fetcher_unittest.cc
+++ b/common/http_fetcher_unittest.cc
@@ -117,9 +117,7 @@
// Spawn the server process.
unique_ptr<brillo::Process> http_server(new brillo::ProcessImpl());
- base::FilePath test_server_path =
- test_utils::GetBuildArtifactsPath().Append("test_http_server");
- http_server->AddArg(test_server_path.value());
+ http_server->AddArg(test_utils::GetBuildArtifactsPath("test_http_server"));
http_server->RedirectUsingPipe(STDOUT_FILENO, false);
if (!http_server->Start()) {
diff --git a/common/test_utils.cc b/common/test_utils.cc
index 2de8ced..13ce6f9 100644
--- a/common/test_utils.cc
+++ b/common/test_utils.cc
@@ -263,5 +263,9 @@
return exe_path.DirName();
}
+string GetBuildArtifactsPath(const string& relative_path) {
+ return GetBuildArtifactsPath().Append(relative_path).value();
+}
+
} // namespace test_utils
} // namespace chromeos_update_engine
diff --git a/common/test_utils.h b/common/test_utils.h
index e4919d8..952cbea 100644
--- a/common/test_utils.h
+++ b/common/test_utils.h
@@ -190,6 +190,8 @@
// Returns the path where the build artifacts are stored. This is the directory
// where the unittest executable is being run from.
base::FilePath GetBuildArtifactsPath();
+// Returns the path of the build artifact specified in |relative_path|.
+std::string GetBuildArtifactsPath(const std::string& relative_path);
} // namespace test_utils
diff --git a/payload_consumer/delta_performer_integration_test.cc b/payload_consumer/delta_performer_integration_test.cc
index 5f0dc89..b9fed06 100644
--- a/payload_consumer/delta_performer_integration_test.cc
+++ b/payload_consumer/delta_performer_integration_test.cc
@@ -47,6 +47,7 @@
using std::string;
using std::vector;
+using test_utils::GetBuildArtifactsPath;
using test_utils::ScopedLoopMounter;
using test_utils::System;
using test_utils::kRandomString;
@@ -191,31 +192,22 @@
static void SignGeneratedPayload(const string& payload_path,
uint64_t* out_metadata_size) {
- int signature_size = GetSignatureSize(kUnittestPrivateKeyPath);
+ string private_key_path = GetBuildArtifactsPath(kUnittestPrivateKeyPath);
+ int signature_size = GetSignatureSize(private_key_path);
brillo::Blob hash;
ASSERT_TRUE(PayloadSigner::HashPayloadForSigning(
- payload_path,
- vector<int>(1, signature_size),
- &hash,
- nullptr));
+ payload_path, {signature_size}, &hash, nullptr));
brillo::Blob signature;
- ASSERT_TRUE(PayloadSigner::SignHash(hash,
- kUnittestPrivateKeyPath,
- &signature));
+ ASSERT_TRUE(PayloadSigner::SignHash(hash, private_key_path, &signature));
ASSERT_TRUE(PayloadSigner::AddSignatureToPayload(
- payload_path,
- vector<brillo::Blob>(1, signature),
- {},
- payload_path,
- out_metadata_size));
+ payload_path, {signature}, {}, payload_path, out_metadata_size));
EXPECT_TRUE(PayloadSigner::VerifySignedPayload(
- payload_path,
- kUnittestPublicKeyPath));
+ payload_path, GetBuildArtifactsPath(kUnittestPublicKeyPath)));
}
static void SignGeneratedShellPayload(SignatureTest signature_test,
const string& payload_path) {
- string private_key_path = kUnittestPrivateKeyPath;
+ string private_key_path = GetBuildArtifactsPath(kUnittestPrivateKeyPath);
if (signature_test == kSignatureGeneratedShellBadKey) {
ASSERT_TRUE(utils::MakeTempFile("key.XXXXXX",
&private_key_path,
@@ -276,7 +268,7 @@
ASSERT_EQ(0,
System(base::StringPrintf(
"openssl rsautl -raw -sign -inkey %s -in %s -out %s",
- kUnittestPrivateKey2Path,
+ GetBuildArtifactsPath(kUnittestPrivateKey2Path).c_str(),
hash_file.c_str(),
sig_file2.c_str())));
// Append second sig file to first path
@@ -290,13 +282,14 @@
payload_path.c_str(),
sig_file.c_str(),
payload_path.c_str())));
- int verify_result =
- System(base::StringPrintf(
- "./delta_generator -in_file=%s -public_key=%s -public_key_version=%d",
- payload_path.c_str(),
- signature_test == kSignatureGeneratedShellRotateCl2 ?
- kUnittestPublicKey2Path : kUnittestPublicKeyPath,
- signature_test == kSignatureGeneratedShellRotateCl2 ? 2 : 1));
+ int verify_result = System(base::StringPrintf(
+ "./delta_generator -in_file=%s -public_key=%s -public_key_version=%d",
+ payload_path.c_str(),
+ (signature_test == kSignatureGeneratedShellRotateCl2
+ ? GetBuildArtifactsPath(kUnittestPublicKey2Path)
+ : GetBuildArtifactsPath(kUnittestPublicKeyPath))
+ .c_str(),
+ signature_test == kSignatureGeneratedShellRotateCl2 ? 2 : 1));
if (signature_test == kSignatureGeneratedShellBadKey) {
ASSERT_NE(0, verify_result);
} else {
@@ -319,9 +312,9 @@
EXPECT_TRUE(
utils::MakeTempFile("result_img.XXXXXX", &state->result_img, nullptr));
- EXPECT_TRUE(base::CopyFile(
- test_utils::GetBuildArtifactsPath().Append("gen/disk_ext2_4k.img"),
- base::FilePath(state->a_img)));
+ EXPECT_TRUE(
+ base::CopyFile(GetBuildArtifactsPath().Append("gen/disk_ext2_4k.img"),
+ base::FilePath(state->a_img)));
state->image_size = utils::FileSize(state->a_img);
@@ -398,9 +391,9 @@
utils::FileSize(state->result_img));
}
- EXPECT_TRUE(base::CopyFile(
- test_utils::GetBuildArtifactsPath().Append("gen/disk_ext2_4k.img"),
- base::FilePath(state->b_img)));
+ EXPECT_TRUE(
+ base::CopyFile(GetBuildArtifactsPath().Append("gen/disk_ext2_4k.img"),
+ base::FilePath(state->b_img)));
// Make some changes to the B image.
string b_mnt;
@@ -499,7 +492,9 @@
LOG(INFO) << "delta path: " << state->delta_path;
{
const string private_key =
- signature_test == kSignatureGenerator ? kUnittestPrivateKeyPath : "";
+ signature_test == kSignatureGenerator
+ ? GetBuildArtifactsPath(kUnittestPrivateKeyPath)
+ : "";
PayloadGenerationConfig payload_config;
payload_config.is_delta = !full_rootfs;
@@ -551,7 +546,8 @@
if (signature_test == kSignatureGeneratedPlaceholder ||
signature_test == kSignatureGeneratedPlaceholderMismatch) {
- int signature_size = GetSignatureSize(kUnittestPrivateKeyPath);
+ int signature_size =
+ GetSignatureSize(GetBuildArtifactsPath(kUnittestPrivateKeyPath));
LOG(INFO) << "Inserting placeholder signature.";
ASSERT_TRUE(InsertSignaturePlaceholder(signature_size, state->delta_path,
&state->metadata_size));
@@ -618,10 +614,10 @@
EXPECT_EQ(1U, signature.version());
uint64_t expected_sig_data_length = 0;
- vector<string> key_paths{kUnittestPrivateKeyPath};
+ vector<string> key_paths{GetBuildArtifactsPath(kUnittestPrivateKeyPath)};
if (signature_test == kSignatureGeneratedShellRotateCl1 ||
signature_test == kSignatureGeneratedShellRotateCl2) {
- key_paths.push_back(kUnittestPrivateKey2Path);
+ key_paths.push_back(GetBuildArtifactsPath(kUnittestPrivateKey2Path));
}
EXPECT_TRUE(PayloadSigner::SignatureBlobLength(
key_paths,
@@ -735,7 +731,7 @@
ASSERT_TRUE(PayloadSigner::GetMetadataSignature(
state->delta.data(),
state->metadata_size,
- kUnittestPrivateKeyPath,
+ GetBuildArtifactsPath(kUnittestPrivateKeyPath),
&install_plan->metadata_signature));
EXPECT_FALSE(install_plan->metadata_signature.empty());
@@ -744,8 +740,9 @@
&state->fake_hardware_,
&state->mock_delegate_,
install_plan);
- EXPECT_TRUE(utils::FileExists(kUnittestPublicKeyPath));
- (*performer)->set_public_key_path(kUnittestPublicKeyPath);
+ string public_key_path = GetBuildArtifactsPath(kUnittestPublicKeyPath);
+ EXPECT_TRUE(utils::FileExists(public_key_path.c_str()));
+ (*performer)->set_public_key_path(public_key_path);
DeltaPerformerIntegrationTest::SetSupportedVersion(*performer, minor_version);
EXPECT_EQ(static_cast<off_t>(state->image_size),
diff --git a/payload_consumer/delta_performer_unittest.cc b/payload_consumer/delta_performer_unittest.cc
index 89182fe..f25ee2b 100644
--- a/payload_consumer/delta_performer_unittest.cc
+++ b/payload_consumer/delta_performer_unittest.cc
@@ -49,6 +49,7 @@
using std::string;
using std::vector;
+using test_utils::GetBuildArtifactsPath;
using test_utils::System;
using test_utils::kRandomString;
using testing::_;
@@ -220,9 +221,10 @@
string payload_path;
EXPECT_TRUE(utils::MakeTempFile("Payload-XXXXXX", &payload_path, nullptr));
ScopedPathUnlinker payload_unlinker(payload_path);
- EXPECT_TRUE(payload.WritePayload(payload_path, blob_path,
- sign_payload ? kUnittestPrivateKeyPath : "",
- &install_plan_.metadata_size));
+ string private_key =
+ sign_payload ? GetBuildArtifactsPath(kUnittestPrivateKeyPath) : "";
+ EXPECT_TRUE(payload.WritePayload(
+ payload_path, blob_path, private_key, &install_plan_.metadata_size));
brillo::Blob payload_data;
EXPECT_TRUE(utils::ReadFile(payload_path, &payload_data));
@@ -311,7 +313,6 @@
void DoMetadataSignatureTest(MetadataSignatureTest metadata_signature_test,
bool sign_payload,
bool hash_checks_mandatory) {
-
// Loads the payload and parses the manifest.
brillo::Blob payload = GeneratePayload(brillo::Blob(),
vector<AnnotatedOperation>(), sign_payload,
@@ -346,7 +347,7 @@
ASSERT_TRUE(PayloadSigner::GetMetadataSignature(
payload.data(),
install_plan_.metadata_size,
- kUnittestPrivateKeyPath,
+ GetBuildArtifactsPath(kUnittestPrivateKeyPath),
&install_plan_.metadata_signature));
EXPECT_FALSE(install_plan_.metadata_signature.empty());
expected_result = DeltaPerformer::kMetadataParseSuccess;
@@ -362,8 +363,9 @@
// Use the public key corresponding to the private key used above to
// sign the metadata.
- EXPECT_TRUE(utils::FileExists(kUnittestPublicKeyPath));
- performer_.set_public_key_path(kUnittestPublicKeyPath);
+ string public_key_path = GetBuildArtifactsPath(kUnittestPublicKeyPath);
+ EXPECT_TRUE(utils::FileExists(public_key_path.c_str()));
+ performer_.set_public_key_path(public_key_path);
// Init actual_error with an invalid value so that we make sure
// ParsePayloadMetadata properly populates it in all cases.
@@ -753,10 +755,10 @@
performer_.major_payload_version_ = kBrilloMajorPayloadVersion;
performer_.metadata_size_ = install_plan_.metadata_size;
uint64_t signature_length;
- EXPECT_TRUE(PayloadSigner::SignatureBlobLength({kUnittestPrivateKeyPath},
- &signature_length));
+ EXPECT_TRUE(PayloadSigner::SignatureBlobLength(
+ {GetBuildArtifactsPath(kUnittestPrivateKeyPath)}, &signature_length));
performer_.metadata_signature_size_ = signature_length;
- performer_.set_public_key_path(kUnittestPublicKeyPath);
+ performer_.set_public_key_path(GetBuildArtifactsPath(kUnittestPublicKeyPath));
EXPECT_EQ(ErrorCode::kSuccess,
performer_.ValidateMetadataSignature(payload_data));
}
diff --git a/payload_consumer/postinstall_runner_action_unittest.cc b/payload_consumer/postinstall_runner_action_unittest.cc
index c6c5ecf..7d300eb 100644
--- a/payload_consumer/postinstall_runner_action_unittest.cc
+++ b/payload_consumer/postinstall_runner_action_unittest.cc
@@ -86,9 +86,8 @@
powerwash_marker_file_ = working_dir_ + "/factory_install_reset";
// These tests use the postinstall files generated by "generate_images.sh"
// stored in the "disk_ext2_unittest.img" image.
- postinstall_image_ = test_utils::GetBuildArtifactsPath()
- .Append("gen/disk_ext2_unittest.img")
- .value();
+ postinstall_image_ =
+ test_utils::GetBuildArtifactsPath("gen/disk_ext2_unittest.img");
ASSERT_EQ(0U, getuid()) << "Run these tests as root.";
}
diff --git a/payload_generator/delta_diff_utils_unittest.cc b/payload_generator/delta_diff_utils_unittest.cc
index c70c70f..7364965 100644
--- a/payload_generator/delta_diff_utils_unittest.cc
+++ b/payload_generator/delta_diff_utils_unittest.cc
@@ -819,12 +819,10 @@
}
TEST_F(DeltaDiffUtilsTest, IsExtFilesystemTest) {
- EXPECT_TRUE(diff_utils::IsExtFilesystem(test_utils::GetBuildArtifactsPath()
- .Append("gen/disk_ext2_1k.img")
- .value()));
- EXPECT_TRUE(diff_utils::IsExtFilesystem(test_utils::GetBuildArtifactsPath()
- .Append("gen/disk_ext2_4k.img")
- .value()));
+ EXPECT_TRUE(diff_utils::IsExtFilesystem(
+ test_utils::GetBuildArtifactsPath("gen/disk_ext2_1k.img")));
+ EXPECT_TRUE(diff_utils::IsExtFilesystem(
+ test_utils::GetBuildArtifactsPath("gen/disk_ext2_4k.img")));
}
TEST_F(DeltaDiffUtilsTest, IsSquashfs4FilesystemTest) {
diff --git a/payload_generator/ext2_filesystem_unittest.cc b/payload_generator/ext2_filesystem_unittest.cc
index 3824dc2..a3c7731 100644
--- a/payload_generator/ext2_filesystem_unittest.cc
+++ b/payload_generator/ext2_filesystem_unittest.cc
@@ -34,6 +34,7 @@
#include "update_engine/common/utils.h"
#include "update_engine/payload_generator/extent_utils.h"
+using chromeos_update_engine::test_utils::GetBuildArtifactsPath;
using std::map;
using std::set;
using std::string;
@@ -72,9 +73,8 @@
}
TEST_F(Ext2FilesystemTest, EmptyFilesystem) {
- base::FilePath path =
- test_utils::GetBuildArtifactsPath().Append("gen/disk_ext2_4k_empty.img");
- unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(path.value());
+ unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(
+ GetBuildArtifactsPath("gen/disk_ext2_4k_empty.img"));
ASSERT_NE(nullptr, fs.get());
EXPECT_EQ(kDefaultFilesystemBlockCount, fs->GetBlockCount());
@@ -101,7 +101,7 @@
const vector<string> kGeneratedImages = {
"disk_ext2_1k.img",
"disk_ext2_4k.img" };
- base::FilePath build_path = test_utils::GetBuildArtifactsPath().Append("gen");
+ base::FilePath build_path = GetBuildArtifactsPath().Append("gen");
for (const string& fs_name : kGeneratedImages) {
LOG(INFO) << "Testing " << fs_name;
unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(
@@ -180,9 +180,8 @@
}
TEST_F(Ext2FilesystemTest, LoadSettingsFailsTest) {
- base::FilePath path = test_utils::GetBuildArtifactsPath().Append(
- "gen/disk_ext2_1k.img");
- unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(path.value());
+ unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(
+ GetBuildArtifactsPath("gen/disk_ext2_1k.img"));
ASSERT_NE(nullptr, fs.get());
brillo::KeyValueStore store;
@@ -191,9 +190,8 @@
}
TEST_F(Ext2FilesystemTest, LoadSettingsWorksTest) {
- base::FilePath path =
- test_utils::GetBuildArtifactsPath().Append("gen/disk_ext2_unittest.img");
- unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(path.value());
+ unique_ptr<Ext2Filesystem> fs = Ext2Filesystem::CreateFromFile(
+ GetBuildArtifactsPath("gen/disk_ext2_unittest.img"));
ASSERT_NE(nullptr, fs.get());
brillo::KeyValueStore store;
diff --git a/payload_generator/payload_signer_unittest.cc b/payload_generator/payload_signer_unittest.cc
index ebdd280..f6319d4 100644
--- a/payload_generator/payload_signer_unittest.cc
+++ b/payload_generator/payload_signer_unittest.cc
@@ -23,12 +23,14 @@
#include <gtest/gtest.h>
#include "update_engine/common/hash_calculator.h"
+#include "update_engine/common/test_utils.h"
#include "update_engine/common/utils.h"
#include "update_engine/payload_consumer/payload_constants.h"
#include "update_engine/payload_consumer/payload_verifier.h"
#include "update_engine/payload_generator/payload_file.h"
#include "update_engine/update_metadata.pb.h"
+using chromeos_update_engine::test_utils::GetBuildArtifactsPath;
using std::string;
using std::vector;
@@ -162,7 +164,8 @@
TEST_F(PayloadSignerTest, SignSimpleTextTest) {
brillo::Blob signature_blob;
- SignSampleData(&signature_blob, {kUnittestPrivateKeyPath});
+ SignSampleData(&signature_blob,
+ {GetBuildArtifactsPath(kUnittestPrivateKeyPath)});
// Check the signature itself
Signatures signatures;
@@ -181,28 +184,34 @@
TEST_F(PayloadSignerTest, VerifyAllSignatureTest) {
brillo::Blob signature_blob;
SignSampleData(&signature_blob,
- {kUnittestPrivateKeyPath, kUnittestPrivateKey2Path});
+ {GetBuildArtifactsPath(kUnittestPrivateKeyPath),
+ GetBuildArtifactsPath(kUnittestPrivateKey2Path)});
// Either public key should pass the verification.
- EXPECT_TRUE(PayloadVerifier::VerifySignature(signature_blob,
- kUnittestPublicKeyPath,
- padded_hash_data_));
- EXPECT_TRUE(PayloadVerifier::VerifySignature(signature_blob,
- kUnittestPublicKey2Path,
- padded_hash_data_));
+ EXPECT_TRUE(PayloadVerifier::VerifySignature(
+ signature_blob,
+ GetBuildArtifactsPath(kUnittestPublicKeyPath),
+ padded_hash_data_));
+ EXPECT_TRUE(PayloadVerifier::VerifySignature(
+ signature_blob,
+ GetBuildArtifactsPath(kUnittestPublicKey2Path),
+ padded_hash_data_));
}
TEST_F(PayloadSignerTest, VerifySignatureTest) {
brillo::Blob signature_blob;
- SignSampleData(&signature_blob, {kUnittestPrivateKeyPath});
+ SignSampleData(&signature_blob,
+ {GetBuildArtifactsPath(kUnittestPrivateKeyPath)});
- EXPECT_TRUE(PayloadVerifier::VerifySignature(signature_blob,
- kUnittestPublicKeyPath,
- padded_hash_data_));
+ EXPECT_TRUE(PayloadVerifier::VerifySignature(
+ signature_blob,
+ GetBuildArtifactsPath(kUnittestPublicKeyPath),
+ padded_hash_data_));
// Passing the invalid key should fail the verification.
- EXPECT_FALSE(PayloadVerifier::VerifySignature(signature_blob,
- kUnittestPublicKey2Path,
- padded_hash_data_));
+ EXPECT_FALSE(PayloadVerifier::VerifySignature(
+ signature_blob,
+ GetBuildArtifactsPath(kUnittestPublicKey2Path),
+ padded_hash_data_));
}
TEST_F(PayloadSignerTest, SkipMetadataSignatureTest) {
@@ -221,8 +230,11 @@
brillo::Blob unsigned_payload_hash, unsigned_metadata_hash;
EXPECT_TRUE(PayloadSigner::HashPayloadForSigning(
payload_path, sizes, &unsigned_payload_hash, &unsigned_metadata_hash));
- EXPECT_TRUE(payload.WritePayload(
- payload_path, "/dev/null", kUnittestPrivateKeyPath, &metadata_size));
+ EXPECT_TRUE(
+ payload.WritePayload(payload_path,
+ "/dev/null",
+ GetBuildArtifactsPath(kUnittestPrivateKeyPath),
+ &metadata_size));
brillo::Blob signed_payload_hash, signed_metadata_hash;
EXPECT_TRUE(PayloadSigner::HashPayloadForSigning(
payload_path, sizes, &signed_payload_hash, &signed_metadata_hash));
@@ -240,10 +252,13 @@
PayloadFile payload;
EXPECT_TRUE(payload.Init(config));
uint64_t metadata_size;
- EXPECT_TRUE(payload.WritePayload(
- payload_path, "/dev/null", kUnittestPrivateKeyPath, &metadata_size));
- EXPECT_TRUE(PayloadSigner::VerifySignedPayload(payload_path,
- kUnittestPublicKeyPath));
+ EXPECT_TRUE(
+ payload.WritePayload(payload_path,
+ "/dev/null",
+ GetBuildArtifactsPath(kUnittestPrivateKeyPath),
+ &metadata_size));
+ EXPECT_TRUE(PayloadSigner::VerifySignedPayload(
+ payload_path, GetBuildArtifactsPath(kUnittestPublicKeyPath)));
}
} // namespace chromeos_update_engine