summaryrefslogtreecommitdiff
path: root/test/buildtool/execution_api/bazel/bazel_api.test.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-07-19 12:14:28 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-07-22 17:01:13 +0200
commit9a9409e44b8ad5a68f38f918e5e026875732b574 (patch)
tree6a86cdfc8a6f29ea51e26464fb6bd71649adfd48 /test/buildtool/execution_api/bazel/bazel_api.test.cpp
parent792751a72f86360afd12158e9eedc00e88db13a6 (diff)
downloadjustbuild-9a9409e44b8ad5a68f38f918e5e026875732b574.tar.gz
Pass HashFunction to BazelApi
Diffstat (limited to 'test/buildtool/execution_api/bazel/bazel_api.test.cpp')
-rw-r--r--test/buildtool/execution_api/bazel/bazel_api.test.cpp136
1 files changed, 115 insertions, 21 deletions
diff --git a/test/buildtool/execution_api/bazel/bazel_api.test.cpp b/test/buildtool/execution_api/bazel/bazel_api.test.cpp
index c774f034..42d4880e 100644
--- a/test/buildtool/execution_api/bazel/bazel_api.test.cpp
+++ b/test/buildtool/execution_api/bazel/bazel_api.test.cpp
@@ -17,6 +17,8 @@
#include "catch2/catch_test_macros.hpp"
#include "src/buildtool/common/remote/retry_config.hpp"
+#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_api.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
#include "test/buildtool/execution_api/common/api_test.hpp"
@@ -25,19 +27,31 @@
namespace {
-auto const kApiFactory = []() {
- auto remote_config = TestRemoteConfig::ReadFromEnvironment();
- REQUIRE(remote_config);
- REQUIRE(remote_config->remote_address);
- auto auth_config = TestAuthConfig::ReadFromEnvironment();
- REQUIRE(auth_config);
- static RetryConfig retry_config{}; // default retry config
- return IExecutionApi::Ptr{new BazelApi{"remote-execution",
- remote_config->remote_address->host,
- remote_config->remote_address->port,
- &*auth_config,
- &retry_config,
- {}}};
+class FactoryApi final {
+ public:
+ explicit FactoryApi(
+ gsl::not_null<ServerAddress const*> const& server_address,
+ gsl::not_null<Auth const*> const& auth,
+ HashFunction hash_function) noexcept
+ : address_{*server_address},
+ auth_{*auth},
+ hash_function_{hash_function} {}
+
+ [[nodiscard]] auto operator()() const -> IExecutionApi::Ptr {
+ static RetryConfig retry_config{}; // default retry config
+ return IExecutionApi::Ptr{new BazelApi{"remote-execution",
+ address_.host,
+ address_.port,
+ &auth_,
+ &retry_config,
+ {},
+ hash_function_}};
+ }
+
+ private:
+ ServerAddress const& address_;
+ Auth const& auth_;
+ HashFunction const hash_function_;
};
} // namespace
@@ -45,53 +59,133 @@ auto const kApiFactory = []() {
TEST_CASE("BazelAPI: No input, no output", "[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
- TestNoInputNoOutput(kApiFactory, remote_config->platform_properties);
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
+ TestNoInputNoOutput(api_factory, remote_config->platform_properties);
}
TEST_CASE("BazelAPI: No input, create output", "[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
- TestNoInputCreateOutput(kApiFactory, remote_config->platform_properties);
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
+ TestNoInputCreateOutput(api_factory, remote_config->platform_properties);
}
TEST_CASE("BazelAPI: One input copied to output", "[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
- TestOneInputCopiedToOutput(kApiFactory, remote_config->platform_properties);
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
+ TestOneInputCopiedToOutput(api_factory, remote_config->platform_properties);
}
TEST_CASE("BazelAPI: Non-zero exit code, create output", "[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
- TestNonZeroExitCodeCreateOutput(kApiFactory,
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
+ TestNonZeroExitCodeCreateOutput(api_factory,
remote_config->platform_properties);
}
TEST_CASE("BazelAPI: Retrieve two identical trees to path", "[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
TestRetrieveTwoIdenticalTreesToPath(
- kApiFactory, remote_config->platform_properties, "two_trees");
+ api_factory, remote_config->platform_properties, "two_trees");
}
TEST_CASE("BazelAPI: Retrieve file and symlink with same content to path",
"[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
TestRetrieveFileAndSymlinkWithSameContentToPath(
- kApiFactory, remote_config->platform_properties, "file_and_symlink");
+ api_factory, remote_config->platform_properties, "file_and_symlink");
}
TEST_CASE("BazelAPI: Retrieve mixed blobs and trees", "[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
TestRetrieveMixedBlobsAndTrees(
- kApiFactory, remote_config->platform_properties, "blobs_and_trees");
+ api_factory, remote_config->platform_properties, "blobs_and_trees");
}
TEST_CASE("BazelAPI: Create directory prior to execution", "[execution_api]") {
auto remote_config = TestRemoteConfig::ReadFromEnvironment();
REQUIRE(remote_config);
- TestCreateDirPriorToExecution(kApiFactory,
+ REQUIRE(remote_config->remote_address);
+ auto auth = TestAuthConfig::ReadFromEnvironment();
+ REQUIRE(auth);
+
+ HashFunction const hash_function{Compatibility::IsCompatible()
+ ? HashFunction::JustHash::Compatible
+ : HashFunction::JustHash::Native};
+
+ FactoryApi api_factory{
+ &*remote_config->remote_address, &*auth, hash_function};
+ TestCreateDirPriorToExecution(api_factory,
remote_config->platform_properties);
}