summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-10 18:51:20 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-13 14:41:00 +0200
commitf60d39620b29aeaf1addeb244bdd6e15ddf4894c (patch)
tree2617d65884c975b3fc63dd48e58242ec36138246
parented8f24fb246142ffaa88707ae86b53c34df82986 (diff)
downloadjustbuild-f60d39620b29aeaf1addeb244bdd6e15ddf4894c.tar.gz
Rename Compatibility class to ProtocolTraits
...and move it to the common stage.
-rw-r--r--src/buildtool/common/TARGETS8
-rw-r--r--src/buildtool/common/cli.hpp4
-rw-r--r--src/buildtool/common/protocol_traits.hpp (renamed from src/buildtool/compatibility/compatibility.hpp)20
-rw-r--r--src/buildtool/compatibility/TARGETS7
-rw-r--r--src/buildtool/execution_api/common/TARGETS1
-rw-r--r--src/buildtool/execution_api/common/stream_dumper.hpp4
-rw-r--r--src/buildtool/execution_api/common/tree_reader.hpp5
-rw-r--r--src/buildtool/execution_api/execution_service/TARGETS7
-rw-r--r--src/buildtool/execution_api/execution_service/capabilities_server.cpp4
-rw-r--r--src/buildtool/execution_api/execution_service/cas_server.cpp4
-rw-r--r--src/buildtool/execution_api/execution_service/execution_server.cpp4
-rw-r--r--src/buildtool/execution_api/execution_service/server_implementation.cpp12
-rw-r--r--src/buildtool/execution_api/local/TARGETS2
-rw-r--r--src/buildtool/execution_api/local/local_action.cpp2
-rw-r--r--src/buildtool/execution_api/local/local_api.hpp7
-rw-r--r--src/buildtool/execution_api/remote/TARGETS5
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp4
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp6
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_response.cpp2
-rw-r--r--src/buildtool/execution_api/utils/TARGETS2
-rw-r--r--src/buildtool/execution_api/utils/subobject.cpp4
-rw-r--r--src/buildtool/execution_engine/executor/TARGETS2
-rw-r--r--src/buildtool/execution_engine/executor/executor.hpp4
-rw-r--r--src/buildtool/file_system/TARGETS2
-rw-r--r--src/buildtool/file_system/file_root.hpp6
-rw-r--r--src/buildtool/main/TARGETS7
-rw-r--r--src/buildtool/main/add_to_cas.cpp4
-rw-r--r--src/buildtool/main/main.cpp25
-rw-r--r--src/buildtool/main/serve.cpp3
-rw-r--r--src/buildtool/serve_api/serve_service/TARGETS6
-rw-r--r--src/buildtool/serve_api/serve_service/configuration.cpp4
-rw-r--r--src/buildtool/serve_api/serve_service/serve_server_implementation.cpp16
-rw-r--r--src/buildtool/serve_api/serve_service/source_tree.cpp12
-rw-r--r--src/buildtool/storage/TARGETS6
-rw-r--r--src/buildtool/storage/config.hpp4
-rw-r--r--src/buildtool/storage/garbage_collector.cpp13
-rw-r--r--src/buildtool/storage/large_object_cas.tpp10
-rw-r--r--src/buildtool/storage/local_cas.hpp3
-rw-r--r--src/buildtool/storage/local_cas.tpp6
-rw-r--r--src/other_tools/just_mr/TARGETS2
-rw-r--r--src/other_tools/just_mr/main.cpp4
-rw-r--r--src/other_tools/ops_maps/TARGETS2
-rw-r--r--src/other_tools/ops_maps/git_tree_fetch_map.cpp2
-rw-r--r--test/buildtool/build_engine/base_maps/TARGETS1
-rw-r--r--test/buildtool/build_engine/base_maps/source_map.test.cpp13
-rw-r--r--test/buildtool/common/TARGETS4
-rw-r--r--test/buildtool/common/action_description.test.cpp5
-rw-r--r--test/buildtool/common/artifact_description.test.cpp42
-rw-r--r--test/buildtool/execution_api/bazel/TARGETS11
-rw-r--r--test/buildtool/execution_api/bazel/bazel_api.test.cpp18
-rw-r--r--test/buildtool/execution_api/bazel/bazel_cas_client.test.cpp8
-rw-r--r--test/buildtool/execution_api/bazel/bazel_execution_client.test.cpp6
-rw-r--r--test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp4
-rw-r--r--test/buildtool/execution_api/bazel/bazel_network.test.cpp8
-rw-r--r--test/buildtool/execution_api/bazel/bytestream_client.test.cpp6
-rw-r--r--test/buildtool/execution_api/common/TARGETS4
-rw-r--r--test/buildtool/execution_api/common/api_test.hpp8
-rw-r--r--test/buildtool/execution_api/execution_service/TARGETS1
-rw-r--r--test/buildtool/execution_api/execution_service/cas_server.test.cpp3
-rw-r--r--test/buildtool/execution_engine/executor/TARGETS6
-rw-r--r--test/buildtool/execution_engine/executor/executor.test.cpp8
-rw-r--r--test/buildtool/execution_engine/executor/executor_api.test.hpp12
-rw-r--r--test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp12
-rw-r--r--test/buildtool/execution_engine/traverser/TARGETS2
-rw-r--r--test/buildtool/execution_engine/traverser/traverser.test.cpp4
-rw-r--r--test/buildtool/file_system/TARGETS1
-rw-r--r--test/buildtool/file_system/file_root.test.cpp5
-rw-r--r--test/buildtool/graph_traverser/TARGETS3
-rw-r--r--test/buildtool/graph_traverser/graph_traverser.test.hpp3
-rw-r--r--test/buildtool/graph_traverser/graph_traverser_remote.test.cpp3
-rw-r--r--test/buildtool/storage/TARGETS2
-rw-r--r--test/buildtool/storage/large_object_cas.test.cpp8
-rw-r--r--test/utils/TARGETS5
-rw-r--r--test/utils/hermeticity/test_storage_config.hpp3
-rw-r--r--test/utils/serve_service/main-serve.cpp2
-rw-r--r--test/utils/test_env.hpp4
77 files changed, 261 insertions, 223 deletions
diff --git a/src/buildtool/common/TARGETS b/src/buildtool/common/TARGETS
index e20f2996..1f280d78 100644
--- a/src/buildtool/common/TARGETS
+++ b/src/buildtool/common/TARGETS
@@ -20,7 +20,7 @@
[ "clidefaults"
, "retry_cli"
, ["src/buildtool/build_engine/expression", "expression"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
, ["src/buildtool/main", "build_utils"]
@@ -192,4 +192,10 @@
]
, "stage": ["src", "buildtool", "common"]
}
+, "protocol_traits":
+ { "type": ["@", "rules", "CC", "library"]
+ , "name": ["protocol_traits"]
+ , "hdrs": ["protocol_traits.hpp"]
+ , "stage": ["src", "buildtool", "common"]
+ }
}
diff --git a/src/buildtool/common/cli.hpp b/src/buildtool/common/cli.hpp
index 79beaadb..c388879e 100644
--- a/src/buildtool/common/cli.hpp
+++ b/src/buildtool/common/cli.hpp
@@ -32,8 +32,8 @@
#include "nlohmann/json.hpp"
#include "src/buildtool/build_engine/expression/evaluator.hpp"
#include "src/buildtool/common/clidefaults.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/retry_cli.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/main/build_utils.hpp"
#include "src/utils/cpp/path.hpp"
@@ -686,7 +686,7 @@ static inline auto SetupCompatibilityArguments(
gsl::not_null<CLI::App*> const& app) {
app->add_flag_function(
"--compatible",
- [](auto /*unused*/) { Compatibility::SetCompatible(); },
+ [](auto /*unused*/) { ProtocolTraits::Instance().SetCompatible(); },
"At increased computational effort, be compatible with the original "
"remote build execution protocol. As the change affects identifiers, "
"the flag must be used consistently for all related invocations.");
diff --git a/src/buildtool/compatibility/compatibility.hpp b/src/buildtool/common/protocol_traits.hpp
index 5e6b6703..49850233 100644
--- a/src/buildtool/compatibility/compatibility.hpp
+++ b/src/buildtool/common/protocol_traits.hpp
@@ -12,23 +12,21 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef INCLUDED_SRC_BUILDTOOL_COMPATIBILITY_COMPATIBILITY_HPP
-#define INCLUDED_SRC_BUILDTOOL_COMPATIBILITY_COMPATIBILITY_HPP
+#ifndef INCLUDED_SRC_BUILDTOOL_COMMON_PROTOCOL_TRAITS_HPP
+#define INCLUDED_SRC_BUILDTOOL_COMMON_PROTOCOL_TRAITS_HPP
-class Compatibility final {
+class ProtocolTraits final {
public:
- [[nodiscard]] static auto Instance() noexcept -> Compatibility& {
- static Compatibility instance{};
+ [[nodiscard]] static auto Instance() noexcept -> ProtocolTraits& {
+ static ProtocolTraits instance{};
return instance;
}
- [[nodiscard]] static auto IsCompatible() noexcept -> bool {
- return Instance().compatible_;
- }
- static void SetCompatible(bool value = true) noexcept {
- Instance().compatible_ = value;
+ [[nodiscard]] auto IsCompatible() const noexcept -> bool {
+ return compatible_;
}
+ void SetCompatible(bool value = true) noexcept { compatible_ = value; }
private:
bool compatible_ = false;
};
-#endif // INCLUDED_SRC_BUILDTOOL_COMPATIBILITY_COMPATIBILITY_HPP
+#endif // INCLUDED_SRC_BUILDTOOL_COMMON_PROTOCOL_TRAITS_HPP
diff --git a/src/buildtool/compatibility/TARGETS b/src/buildtool/compatibility/TARGETS
deleted file mode 100644
index 1bb56609..00000000
--- a/src/buildtool/compatibility/TARGETS
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "compatibility":
- { "type": ["@", "rules", "CC", "library"]
- , "name": ["compatibility"]
- , "hdrs": ["compatibility.hpp"]
- , "stage": ["src", "buildtool", "compatibility"]
- }
-}
diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS
index 4c9cfa81..b417e26a 100644
--- a/src/buildtool/execution_api/common/TARGETS
+++ b/src/buildtool/execution_api/common/TARGETS
@@ -15,6 +15,7 @@
[ "artifact_blob_container"
, ["@", "gsl", "", "gsl"]
, ["src/buildtool/common", "common"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/crypto", "hash_function"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/file_system", "file_system_manager"]
diff --git a/src/buildtool/execution_api/common/stream_dumper.hpp b/src/buildtool/execution_api/common/stream_dumper.hpp
index 81d3bf35..ea0a323d 100644
--- a/src/buildtool/execution_api/common/stream_dumper.hpp
+++ b/src/buildtool/execution_api/common/stream_dumper.hpp
@@ -22,7 +22,7 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/common/tree_reader_utils.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -65,7 +65,7 @@ class StreamDumper final {
[[nodiscard]] auto DumpTree(
Artifact::ObjectInfo const& info,
gsl::not_null<FILE*> const& stream) const noexcept -> bool {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto directory = impl_.ReadDirectory(info.digest);
auto data = directory
? TreeReaderUtils::DirectoryToString(*directory)
diff --git a/src/buildtool/execution_api/common/tree_reader.hpp b/src/buildtool/execution_api/common/tree_reader.hpp
index d9048e1f..18e94fe8 100644
--- a/src/buildtool/execution_api/common/tree_reader.hpp
+++ b/src/buildtool/execution_api/common/tree_reader.hpp
@@ -23,6 +23,7 @@
#include "src/buildtool/common/artifact.hpp"
#include "src/buildtool/common/bazel_types.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/common/tree_reader_utils.hpp"
#include "src/buildtool/file_system/git_repo.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -58,7 +59,7 @@ class TreeReader final {
return true;
};
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto tree = impl_.ReadDirectory(digest);
if (tree and
not TreeReaderUtils::ReadObjectInfos(*tree, store_info)) {
@@ -131,7 +132,7 @@ class TreeReader final {
: store(parent / path, info);
};
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
if (auto tree = impl_.ReadDirectory(digest)) {
if (include_trees and IsDirectoryEmpty(*tree)) {
if (not store(parent, {digest, ObjectType::Tree})) {
diff --git a/src/buildtool/execution_api/execution_service/TARGETS b/src/buildtool/execution_api/execution_service/TARGETS
index cfb845b3..97d70528 100644
--- a/src/buildtool/execution_api/execution_service/TARGETS
+++ b/src/buildtool/execution_api/execution_service/TARGETS
@@ -25,6 +25,7 @@
, ["src/buildtool/execution_api/local", "local"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
+ , ["src/buildtool/common", "protocol_traits"]
]
, "private-ldflags":
["-pthread", "-Wl,--whole-archive,-lpthread,--no-whole-archive"]
@@ -66,7 +67,7 @@
, ["src/buildtool/storage", "config"]
]
, "private-deps":
- [ ["src/buildtool/compatibility", "compatibility"]
+ [ ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/logging", "log_level"]
@@ -97,7 +98,7 @@
, ["@", "json", "", "json"]
, ["@", "grpc", "", "grpc++"]
, ["@", "fmt", "", "fmt"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/common/remote", "port"]
]
}
@@ -138,7 +139,7 @@
, "private-deps":
[ ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
]
}
, "operation_cache":
diff --git a/src/buildtool/execution_api/execution_service/capabilities_server.cpp b/src/buildtool/execution_api/execution_service/capabilities_server.cpp
index d8ba4279..c4ec6b06 100644
--- a/src/buildtool/execution_api/execution_service/capabilities_server.cpp
+++ b/src/buildtool/execution_api/execution_service/capabilities_server.cpp
@@ -16,7 +16,7 @@
#include <cstddef>
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
@@ -25,7 +25,7 @@ auto CapabilitiesServiceImpl::GetCapabilities(
const ::bazel_re::GetCapabilitiesRequest*
/*request*/,
::bazel_re::ServerCapabilities* response) -> ::grpc::Status {
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
auto const* str = "GetCapabilities not implemented";
Logger::Log(LogLevel::Error, str);
return ::grpc::Status{grpc::StatusCode::UNIMPLEMENTED, str};
diff --git a/src/buildtool/execution_api/execution_service/cas_server.cpp b/src/buildtool/execution_api/execution_service/cas_server.cpp
index 337eed84..5394b985 100644
--- a/src/buildtool/execution_api/execution_service/cas_server.cpp
+++ b/src/buildtool/execution_api/execution_service/cas_server.cpp
@@ -25,7 +25,7 @@
#include "fmt/core.h"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/execution_service/cas_utils.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/storage/garbage_collector.hpp"
@@ -54,7 +54,7 @@ namespace {
bool valid = ref.hash() == computed.hash();
if (valid) {
bool const check_sizes =
- Compatibility::IsCompatible() or ref.size() != 0;
+ ProtocolTraits::Instance().IsCompatible() or ref.size() != 0;
if (check_sizes) {
valid = ref.size() == computed.size();
}
diff --git a/src/buildtool/execution_api/execution_service/execution_server.cpp b/src/buildtool/execution_api/execution_service/execution_server.cpp
index a213c552..6e3c77ab 100644
--- a/src/buildtool/execution_api/execution_service/execution_server.cpp
+++ b/src/buildtool/execution_api/execution_service/execution_server.cpp
@@ -276,7 +276,7 @@ namespace {
::bazel_re::OutputDirectory out_dir{};
*(out_dir.mutable_path()) = std::move(path);
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
// In compatible mode: Create a tree digest from directory
// digest on the fly and set tree digest.
LocalCasReader reader(&storage.CAS());
@@ -410,7 +410,7 @@ namespace {
return unexpected{input_root_digest.error()};
}
auto const input_root_path =
- Compatibility::IsCompatible()
+ ProtocolTraits::Instance().IsCompatible()
? storage.CAS().BlobPath(*input_root_digest,
/*is_executable=*/false)
: storage.CAS().TreePath(*input_root_digest);
diff --git a/src/buildtool/execution_api/execution_service/server_implementation.cpp b/src/buildtool/execution_api/execution_service/server_implementation.cpp
index 81eabe01..e6ad463c 100644
--- a/src/buildtool/execution_api/execution_service/server_implementation.cpp
+++ b/src/buildtool/execution_api/execution_service/server_implementation.cpp
@@ -26,8 +26,8 @@
#include "fmt/core.h"
#include "grpcpp/grpcpp.h"
#include "nlohmann/json.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/port.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/execution_api/execution_service/ac_server.hpp"
#include "src/buildtool/execution_api/execution_service/bytestream_server.hpp"
#include "src/buildtool/execution_api/execution_service/capabilities_server.hpp"
@@ -141,10 +141,12 @@ auto ServerImpl::Run(gsl::not_null<LocalContext const*> const& local_context,
}
auto const& info_str = nlohmann::to_string(info);
- Logger::Log(LogLevel::Info,
- fmt::format("{}execution service started: {}",
- Compatibility::IsCompatible() ? "compatible " : "",
- info_str));
+ Logger::Log(
+ LogLevel::Info,
+ fmt::format(
+ "{}execution service started: {}",
+ ProtocolTraits::Instance().IsCompatible() ? "compatible " : "",
+ info_str));
if (not info_file_.empty()) {
if (not TryWrite(info_file_, info_str)) {
diff --git a/src/buildtool/execution_api/local/TARGETS b/src/buildtool/execution_api/local/TARGETS
index 32d04697..66a57f21 100644
--- a/src/buildtool/execution_api/local/TARGETS
+++ b/src/buildtool/execution_api/local/TARGETS
@@ -30,6 +30,7 @@
, ["src/buildtool/common", "bazel_types"]
, ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common", "config"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/storage", "storage"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/common", "artifact_blob_container"]
@@ -37,7 +38,6 @@
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/execution_api/git", "git"]
, ["src/buildtool/file_system", "file_system_manager"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
diff --git a/src/buildtool/execution_api/local/local_action.cpp b/src/buildtool/execution_api/local/local_action.cpp
index 97507d35..701acea4 100644
--- a/src/buildtool/execution_api/local/local_action.cpp
+++ b/src/buildtool/execution_api/local/local_action.cpp
@@ -70,7 +70,7 @@ class BuildCleanupAnchor {
[&cas](std::string const& content) -> std::optional<ArtifactDigest> {
return cas.StoreBlob(content);
};
- return Compatibility::IsCompatible()
+ return ProtocolTraits::Instance().IsCompatible()
? BazelMsgFactory::CreateDirectoryDigestFromLocalTree(
dir_path, store_blob, store_tree, store_symlink)
: BazelMsgFactory::CreateGitTreeDigestFromLocalTree(
diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp
index b3e7808d..75f2d578 100644
--- a/src/buildtool/execution_api/local/local_api.hpp
+++ b/src/buildtool/execution_api/local/local_api.hpp
@@ -32,8 +32,8 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/repository_config.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/common/artifact_blob_container.hpp"
#include "src/buildtool/execution_api/common/blob_tree.hpp"
@@ -284,7 +284,7 @@ class LocalApi final : public IExecutionApi {
return std::nullopt;
}
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
return CommonUploadTreeCompatible(
*this,
*build_root,
@@ -383,7 +383,8 @@ class LocalApi final : public IExecutionApi {
[[nodiscard]] static auto CreateFallbackApi(
RepositoryConfig const* repo_config) noexcept -> std::optional<GitApi> {
- if (repo_config == nullptr or Compatibility::IsCompatible()) {
+ if (repo_config == nullptr or
+ ProtocolTraits::Instance().IsCompatible()) {
return std::nullopt;
}
return GitApi{repo_config};
diff --git a/src/buildtool/execution_api/remote/TARGETS b/src/buildtool/execution_api/remote/TARGETS
index 41079f33..ae67146d 100644
--- a/src/buildtool/execution_api/remote/TARGETS
+++ b/src/buildtool/execution_api/remote/TARGETS
@@ -50,13 +50,12 @@
, "private-deps":
[ ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common", "bazel_digest_factory"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/file_system", "object_type"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/execution_api/common", "common_api"]
, ["src/buildtool/execution_api/utils", "outputscheck"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["@", "grpc", "", "grpc++"]
, ["src/buildtool/common/remote", "retry"]
, ["src/buildtool/execution_api/common", "message_limits"]
@@ -84,7 +83,6 @@
[ "bazel_network"
, ["@", "fmt", "", "fmt"]
, ["src/buildtool/auth", "auth"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/multithreading", "task_system"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/common", "artifact_blob_container"]
@@ -94,6 +92,7 @@
, ["src/buildtool/storage", "fs_utils"]
, ["src/buildtool/crypto", "hash_function"]
, ["src/buildtool/common", "artifact_digest_factory"]
+ , ["src/buildtool/common", "protocol_traits"]
]
}
, "config":
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index e36bf942..d0e96292 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -29,7 +29,7 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
#include "src/buildtool/common/bazel_types.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
@@ -527,7 +527,7 @@ auto BazelApi::CreateAction(
return std::nullopt;
}
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
return CommonUploadTreeCompatible(
*this,
*build_root,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
index 130012e7..3d08825e 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
@@ -24,10 +24,10 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/bazel_digest_factory.hpp"
#include "src/buildtool/common/bazel_types.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/client_common.hpp"
#include "src/buildtool/common/remote/retry.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/common/execution_common.hpp"
#include "src/buildtool/execution_api/common/message_limits.hpp"
@@ -54,7 +54,7 @@ namespace {
stub) noexcept -> bool {
// Create empty blob.
std::string empty_str{};
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
auto const digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
@@ -120,7 +120,7 @@ namespace {
stub) noexcept -> bool {
// Create empty blob.
std::string empty_str{};
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
auto const digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
index 02f189d0..4b411d91 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
@@ -40,7 +40,7 @@ BazelNetworkReader::BazelNetworkReader(
: instance_name_{other.instance_name_},
cas_{other.cas_},
hash_function_{other.hash_function_} {
- if (Compatibility::IsCompatible() and request_remote_tree) {
+ if (ProtocolTraits::Instance().IsCompatible() and request_remote_tree) {
// Query full tree from remote CAS. Note that this is currently not
// supported by Buildbarn revision c3c06bbe2a.
auto full_tree =
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
index ec76061c..cb481e3e 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
@@ -135,7 +135,7 @@ void BazelResponse::Populate() noexcept {
}
}
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
// in native mode: just collect and store tree digests
for (auto const& tree : action_result.output_directories()) {
auto digest =
diff --git a/src/buildtool/execution_api/utils/TARGETS b/src/buildtool/execution_api/utils/TARGETS
index b202a9ea..cc30421d 100644
--- a/src/buildtool/execution_api/utils/TARGETS
+++ b/src/buildtool/execution_api/utils/TARGETS
@@ -8,7 +8,7 @@
, ["src/buildtool/execution_api/common", "common"]
]
, "private-deps":
- [ ["src/buildtool/compatibility", "compatibility"]
+ [ ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/logging", "logging"]
, ["src/buildtool/crypto", "hash_function"]
diff --git a/src/buildtool/execution_api/utils/subobject.cpp b/src/buildtool/execution_api/utils/subobject.cpp
index 380fe65f..e2c6b256 100644
--- a/src/buildtool/execution_api/utils/subobject.cpp
+++ b/src/buildtool/execution_api/utils/subobject.cpp
@@ -15,7 +15,7 @@
#include "src/buildtool/execution_api/utils/subobject.hpp"
#ifndef BOOTSTRAP_BUILD_TOOL
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/execution_api/common/tree_reader_utils.hpp"
@@ -43,7 +43,7 @@ auto RetrieveSubPathId(Artifact::ObjectInfo object_info,
sofar.string());
return std::nullopt;
}
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto directory =
BazelMsgFactory::MessageFromString<bazel_re::Directory>(*data);
if (not directory) {
diff --git a/src/buildtool/execution_engine/executor/TARGETS b/src/buildtool/execution_engine/executor/TARGETS
index f24030b2..eabbb371 100644
--- a/src/buildtool/execution_engine/executor/TARGETS
+++ b/src/buildtool/execution_engine/executor/TARGETS
@@ -9,7 +9,7 @@
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common", "tree"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/execution_engine/dag", "dag"]
, ["src/buildtool/execution_api/common", "api_bundle"]
diff --git a/src/buildtool/execution_engine/executor/executor.hpp b/src/buildtool/execution_engine/executor/executor.hpp
index 1d94d2ca..5a1eb857 100644
--- a/src/buildtool/execution_engine/executor/executor.hpp
+++ b/src/buildtool/execution_engine/executor/executor.hpp
@@ -31,9 +31,9 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
#include "src/buildtool/common/git_hashes_converter.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/common/tree.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/artifact_blob_container.hpp"
#include "src/buildtool/execution_api/common/common_api.hpp"
@@ -437,7 +437,7 @@ class ExecutorImpl {
std::string const& repo,
gsl::not_null<const RepositoryConfig*> const& repo_config,
Artifact::ObjectInfo const& info) noexcept -> bool {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto opt =
GitHashesConverter::Instance().GetGitEntry(info.digest.hash());
if (opt) {
diff --git a/src/buildtool/file_system/TARGETS b/src/buildtool/file_system/TARGETS
index 9d5be7a3..47c5e249 100644
--- a/src/buildtool/file_system/TARGETS
+++ b/src/buildtool/file_system/TARGETS
@@ -171,8 +171,8 @@
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_description"]
, ["src/buildtool/common", "artifact_digest_factory"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/crypto", "hash_function"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
, ["@", "gsl", "", "gsl"]
diff --git a/src/buildtool/file_system/file_root.hpp b/src/buildtool/file_system/file_root.hpp
index 381f5c23..798d8341 100644
--- a/src/buildtool/file_system/file_root.hpp
+++ b/src/buildtool/file_system/file_root.hpp
@@ -29,7 +29,7 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
#include "src/buildtool/common/git_hashes_converter.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/file_system/git_tree.hpp"
@@ -224,7 +224,7 @@ class FileRoot {
/// Only succeeds if no entries have to be ignored.
[[nodiscard]] auto AsKnownTree(std::string const& repository)
const noexcept -> std::optional<ArtifactDescription> {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
return std::nullopt;
}
if (std::holds_alternative<tree_t>(data_)) {
@@ -584,7 +584,7 @@ class FileRoot {
std::get<git_root_t>(root_).tree->LookupEntryByPath(
file_path)) {
if (entry->IsBlob()) {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto compatible_hash =
GitHashesConverter::Instance().RegisterGitEntry(
entry->Hash(), *entry->Blob(), repository);
diff --git a/src/buildtool/main/TARGETS b/src/buildtool/main/TARGETS
index 03e9dd0f..d58ad86f 100644
--- a/src/buildtool/main/TARGETS
+++ b/src/buildtool/main/TARGETS
@@ -10,8 +10,8 @@
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "config"]
, ["src/buildtool/common/remote", "remote_common"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/storage", "storage"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/graph_traverser", "graph_traverser"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
@@ -154,10 +154,10 @@
, ["src/buildtool/storage", "storage"]
]
, "private-deps":
- [ ["src/buildtool/compatibility", "compatibility"]
+ [ ["src/buildtool/common", "protocol_traits"]
+ , ["src/buildtool/common", "common"]
, ["src/buildtool/execution_api/bazel_msg", "bazel_msg_factory"]
, ["src/buildtool/execution_api/common", "common"]
- , ["src/buildtool/common", "common"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
@@ -291,6 +291,7 @@
[ ["@", "json", "", "json"]
, ["src/buildtool/build_engine/expression", "expression"]
, ["src/buildtool/common", "location"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
diff --git a/src/buildtool/main/add_to_cas.cpp b/src/buildtool/main/add_to_cas.cpp
index 2a7b2c0b..640c4621 100644
--- a/src/buildtool/main/add_to_cas.cpp
+++ b/src/buildtool/main/add_to_cas.cpp
@@ -22,7 +22,7 @@
#include <string>
#include "src/buildtool/common/artifact_digest.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
@@ -71,7 +71,7 @@ auto AddArtifactsToCas(ToAddArguments const& clargs,
digest = cas.StoreBlob(*content, /*is_executable=*/false);
} break;
case ObjectType::Tree: {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
Logger::Log(LogLevel::Error,
"Storing of trees only supported in native mode");
return false;
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp
index ee118f4a..bb97fc44 100644
--- a/src/buildtool/main/main.cpp
+++ b/src/buildtool/main/main.cpp
@@ -34,10 +34,10 @@
#include "src/buildtool/build_engine/expression/expression.hpp"
#include "src/buildtool/build_engine/target_map/target_map.hpp"
#include "src/buildtool/common/artifact_description.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/remote_common.hpp"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/common/statistics.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/file_root.hpp"
#include "src/buildtool/logging/log_config.hpp"
@@ -765,7 +765,7 @@ auto main(int argc, char* argv[]) -> int {
if (arguments.cmd == SubCommand::kGc) {
// Set up storage for GC, as we have all the config args we need.
auto const storage_config = CreateStorageConfig(
- arguments.endpoint, Compatibility::IsCompatible());
+ arguments.endpoint, ProtocolTraits::Instance().IsCompatible());
if (not storage_config) {
return kExitFailure;
}
@@ -803,7 +803,8 @@ auto main(int argc, char* argv[]) -> int {
// Set up storage for local execution.
auto const storage_config = CreateStorageConfig(
- arguments.endpoint, Compatibility::IsCompatible());
+ arguments.endpoint,
+ ProtocolTraits::Instance().IsCompatible());
if (not storage_config) {
return kExitFailure;
}
@@ -865,12 +866,12 @@ auto main(int argc, char* argv[]) -> int {
}
// Set up storage for serve operation.
- auto const storage_config =
- CreateStorageConfig(arguments.endpoint,
- Compatibility::IsCompatible(),
- remote_exec_config->remote_address,
- remote_exec_config->platform_properties,
- remote_exec_config->dispatch);
+ auto const storage_config = CreateStorageConfig(
+ arguments.endpoint,
+ ProtocolTraits::Instance().IsCompatible(),
+ remote_exec_config->remote_address,
+ remote_exec_config->platform_properties,
+ remote_exec_config->dispatch);
if (not storage_config) {
return kExitFailure;
}
@@ -942,7 +943,7 @@ auto main(int argc, char* argv[]) -> int {
// correctly-sharded target cache.
auto const storage_config =
CreateStorageConfig(arguments.endpoint,
- Compatibility::IsCompatible(),
+ ProtocolTraits::Instance().IsCompatible(),
remote_exec_config->remote_address,
remote_exec_config->platform_properties,
remote_exec_config->dispatch);
@@ -950,7 +951,7 @@ auto main(int argc, char* argv[]) -> int {
// For bootstrapping the TargetCache sharding is not needed, so we can
// default all execution arguments.
auto const storage_config = CreateStorageConfig(
- arguments.endpoint, Compatibility::IsCompatible());
+ arguments.endpoint, ProtocolTraits::Instance().IsCompatible());
#endif // BOOTSTRAP_BUILD_TOOL
if (not storage_config) {
return kExitFailure;
@@ -1041,7 +1042,7 @@ auto main(int argc, char* argv[]) -> int {
if (arguments.cmd == SubCommand::kTraverse) {
if (arguments.graph.git_cas) {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
Logger::Log(LogLevel::Error,
"Command line options {} and {} cannot be used "
"together.",
diff --git a/src/buildtool/main/serve.cpp b/src/buildtool/main/serve.cpp
index 622df15e..66787a6e 100644
--- a/src/buildtool/main/serve.cpp
+++ b/src/buildtool/main/serve.cpp
@@ -31,6 +31,7 @@
#include "src/buildtool/build_engine/expression/configuration.hpp"
#include "src/buildtool/build_engine/expression/expression.hpp"
#include "src/buildtool/common/location.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
@@ -390,7 +391,7 @@ void ReadJustServeConfig(gsl::not_null<CommandLineArguments*> const& clargs) {
}
// compatibility is set immediately if flag is true
if (compatible->Bool()) {
- Compatibility::SetCompatible();
+ ProtocolTraits::Instance().SetCompatible();
}
}
// read the address
diff --git a/src/buildtool/serve_api/serve_service/TARGETS b/src/buildtool/serve_api/serve_service/TARGETS
index 6135cd5a..b9b2ca57 100644
--- a/src/buildtool/serve_api/serve_service/TARGETS
+++ b/src/buildtool/serve_api/serve_service/TARGETS
@@ -34,7 +34,7 @@
[ ["@", "fmt", "", "fmt"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "git_repo"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/multithreading", "async_map_utils"]
@@ -69,7 +69,7 @@
, ["@", "grpc", "", "grpc++"]
, ["@", "json", "", "json"]
, ["src/buildtool/common/remote", "port"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/execution_api/execution_service", "execution_server"]
, ["src/buildtool/execution_api/execution_service", "ac_server"]
@@ -139,7 +139,7 @@
, "deps":
[["@", "gsl", "", "gsl"], ["src/buildtool/execution_api/remote", "config"]]
, "stage": ["src", "buildtool", "serve_api", "serve_service"]
- , "private-deps": [["src/buildtool/compatibility", "compatibility"]]
+ , "private-deps": [["src/buildtool/common", "protocol_traits"]]
}
, "target_utils":
{ "type": ["@", "rules", "CC", "library"]
diff --git a/src/buildtool/serve_api/serve_service/configuration.cpp b/src/buildtool/serve_api/serve_service/configuration.cpp
index a5bd7655..8b340e8c 100644
--- a/src/buildtool/serve_api/serve_service/configuration.cpp
+++ b/src/buildtool/serve_api/serve_service/configuration.cpp
@@ -16,7 +16,7 @@
#include "src/buildtool/serve_api/serve_service/configuration.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
auto ConfigurationService::RemoteExecutionEndpoint(
::grpc::ServerContext* /*context*/,
@@ -33,7 +33,7 @@ auto ConfigurationService::Compatibility(
const ::justbuild::just_serve::CompatibilityRequest* /*request*/,
::justbuild::just_serve::CompatibilityResponse* response)
-> ::grpc::Status {
- response->set_compatible(Compatibility::IsCompatible());
+ response->set_compatible(ProtocolTraits::Instance().IsCompatible());
return ::grpc::Status::OK;
}
diff --git a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
index 7a398a1d..be307ba5 100644
--- a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
+++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
@@ -29,8 +29,8 @@
#include "fmt/core.h"
#include "grpcpp/grpcpp.h"
#include "nlohmann/json.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/port.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/execution_api/execution_service/ac_server.hpp"
#include "src/buildtool/execution_api/execution_service/bytestream_server.hpp"
#include "src/buildtool/execution_api/execution_service/capabilities_server.hpp"
@@ -185,12 +185,14 @@ auto ServeServerImpl::Run(
}
auto const& info_str = nlohmann::to_string(info);
- Logger::Log(LogLevel::Info,
- fmt::format("{}serve{} service{} started: {}",
- Compatibility::IsCompatible() ? "compatible " : "",
- with_execute ? " and execute" : "",
- with_execute ? "s" : "",
- info_str));
+ Logger::Log(
+ LogLevel::Info,
+ fmt::format(
+ "{}serve{} service{} started: {}",
+ ProtocolTraits::Instance().IsCompatible() ? "compatible " : "",
+ with_execute ? " and execute" : "",
+ with_execute ? "s" : "",
+ info_str));
if (not info_file_.empty()) {
if (not TryWrite(info_file_, info_str)) {
diff --git a/src/buildtool/serve_api/serve_service/source_tree.cpp b/src/buildtool/serve_api/serve_service/source_tree.cpp
index acc29ba9..ed6fcae0 100644
--- a/src/buildtool/serve_api/serve_service/source_tree.cpp
+++ b/src/buildtool/serve_api/serve_service/source_tree.cpp
@@ -24,7 +24,7 @@
#include "src/buildtool/common/artifact.hpp"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/git/git_api.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
@@ -287,7 +287,7 @@ auto SourceTreeService::SyncGitEntryToCas(
std::string const& object_hash,
std::filesystem::path const& repo_path) const noexcept
-> std::remove_cvref_t<decltype(TResponse::OK)> {
- if (IsTreeObject(kType) and Compatibility::IsCompatible()) {
+ if (IsTreeObject(kType) and ProtocolTraits::Instance().IsCompatible()) {
logger_->Emit(LogLevel::Error,
"Cannot sync tree {} from repository {} with "
"the remote in compatible mode",
@@ -984,7 +984,7 @@ auto SourceTreeService::ServeDistdirTree(
0,
/*is_tree=*/false);
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
blob_found = digest and cas.BlobPath(*digest, kv.executable());
}
if (blob_found) {
@@ -1054,8 +1054,8 @@ auto SourceTreeService::ServeDistdirTree(
}
if (not blob_found) {
// check remote CAS
- if (not Compatibility::IsCompatible() and digest and
- apis_.remote->IsAvailable(*digest)) {
+ if (not ProtocolTraits::Instance().IsCompatible() and
+ digest and apis_.remote->IsAvailable(*digest)) {
// retrieve content to local CAS
if (not apis_.remote->RetrieveToCas(
{Artifact::ObjectInfo{
@@ -1320,7 +1320,7 @@ auto SourceTreeService::ServeTree(
storage_config_.hash_function.GetType(), tree_id, 0, /*is_tree=*/true);
if (digest and apis_.local->IsAvailable(*digest)) {
// upload tree to remote CAS; only possible in native mode
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
logger_->Emit(LogLevel::Error,
"Cannot sync tree {} from local CAS with the remote "
"in compatible mode",
diff --git a/src/buildtool/storage/TARGETS b/src/buildtool/storage/TARGETS
index ce54901e..f94cdf8d 100644
--- a/src/buildtool/storage/TARGETS
+++ b/src/buildtool/storage/TARGETS
@@ -8,7 +8,7 @@
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
, ["src/buildtool/common/remote", "remote_common"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/file_system", "object_type"]
, ["src/buildtool/logging", "logging"]
@@ -65,6 +65,8 @@
, "file_chunker"
, ["src/buildtool/common", "common"]
, ["src/buildtool/common", "artifact_digest_factory"]
+ , ["src/buildtool/common", "artifact_description"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "file_storage"]
, ["src/buildtool/file_system", "object_cas"]
, ["src/buildtool/execution_api/common", "common"]
@@ -82,8 +84,6 @@
, ["src/buildtool/logging", "logging"]
, ["src/buildtool/common", "bazel_types"]
, ["src/buildtool/file_system", "git_repo"]
- , ["src/buildtool/common", "artifact_description"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/crypto", "hash_function"]
]
, "stage": ["src", "buildtool", "storage"]
diff --git a/src/buildtool/storage/config.hpp b/src/buildtool/storage/config.hpp
index 81f14feb..da0e72d4 100644
--- a/src/buildtool/storage/config.hpp
+++ b/src/buildtool/storage/config.hpp
@@ -26,8 +26,8 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/remote_common.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -132,7 +132,7 @@ struct StorageConfig final {
[[nodiscard]] auto CreateGenerationConfig(
std::size_t generation) const noexcept -> GenerationConfig {
- bool const compatible = Compatibility::IsCompatible();
+ bool const compatible = ProtocolTraits::Instance().IsCompatible();
auto const cache_root = GenerationCacheRoot(generation);
auto const cache_dir =
UpdatePathForCompatibility(cache_root, compatible);
diff --git a/src/buildtool/storage/garbage_collector.cpp b/src/buildtool/storage/garbage_collector.cpp
index a108ae73..97a0f96c 100644
--- a/src/buildtool/storage/garbage_collector.cpp
+++ b/src/buildtool/storage/garbage_collector.cpp
@@ -22,7 +22,7 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/message_limits.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
@@ -215,13 +215,14 @@ auto GarbageCollector::TriggerGarbageCollection(
auto GarbageCollector::Compactify(StorageConfig const& storage_config,
size_t threshold) noexcept -> bool {
// Return to the initial compatibility mode once done:
- auto const guard = gsl::finally([mode = Compatibility::IsCompatible()] {
- Compatibility::SetCompatible(mode);
- });
+ auto const guard =
+ gsl::finally([mode = ProtocolTraits::Instance().IsCompatible()] {
+ ProtocolTraits::Instance().SetCompatible(mode);
+ });
auto compactify = [threshold](StorageConfig const& config) -> bool {
- Compatibility::SetCompatible(config.hash_function.GetType() ==
- HashFunction::Type::PlainSHA256);
+ ProtocolTraits::Instance().SetCompatible(
+ config.hash_function.GetType() == HashFunction::Type::PlainSHA256);
auto const storage = ::Generation::Create(&config);
return Compactifier::RemoveInvalid(storage.CAS()) and
diff --git a/src/buildtool/storage/large_object_cas.tpp b/src/buildtool/storage/large_object_cas.tpp
index 67a4ad75..b790140a 100644
--- a/src/buildtool/storage/large_object_cas.tpp
+++ b/src/buildtool/storage/large_object_cas.tpp
@@ -23,7 +23,7 @@
#include "fmt/core.h"
#include "nlohmann/json.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/storage/file_chunker.hpp"
@@ -47,10 +47,10 @@ auto LargeObjectCAS<kDoGlobalUplink, kType>::GetEntryPath(
if constexpr (kDoGlobalUplink) {
// To promote parts of the tree properly, regular uplinking logic for
// trees is used:
- bool uplinked =
- IsTreeObject(kType) and not Compatibility::IsCompatible()
- ? uplinker_.UplinkTree(digest)
- : uplinker_.UplinkLargeBlob(digest);
+ bool uplinked = IsTreeObject(kType) and
+ not ProtocolTraits::Instance().IsCompatible()
+ ? uplinker_.UplinkTree(digest)
+ : uplinker_.UplinkLargeBlob(digest);
if (uplinked and FileSystemManager::IsFile(file_path)) {
return file_path;
}
diff --git a/src/buildtool/storage/local_cas.hpp b/src/buildtool/storage/local_cas.hpp
index e7f5ce22..e6dc9ee4 100644
--- a/src/buildtool/storage/local_cas.hpp
+++ b/src/buildtool/storage/local_cas.hpp
@@ -23,6 +23,7 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact_digest.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/git_repo.hpp"
#include "src/buildtool/file_system/object_cas.hpp"
@@ -286,7 +287,7 @@ class LocalCAS {
if constexpr (IsTreeObject(kType)) {
// in non-compatible mode, do explicit deep tree uplink
// in compatible mode, treat all trees as blobs
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
return uplinker->UplinkTree(digest);
}
}
diff --git a/src/buildtool/storage/local_cas.tpp b/src/buildtool/storage/local_cas.tpp
index 7ab29b08..39433b81 100644
--- a/src/buildtool/storage/local_cas.tpp
+++ b/src/buildtool/storage/local_cas.tpp
@@ -83,7 +83,7 @@ auto LocalCAS<kDoGlobalUplink>::LocalUplinkTree(
LocalGenerationCAS const& latest,
ArtifactDigest const& digest,
bool splice_result) const noexcept -> bool {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
std::unordered_set<ArtifactDigest> seen{};
return LocalUplinkBazelDirectory(latest, digest, &seen, splice_result);
}
@@ -303,7 +303,7 @@ auto LocalCAS<kDoGlobalUplink>::CheckTreeInvariant(
ArtifactDigest const& tree_digest,
std::string const& tree_data) const noexcept
-> std::optional<LargeObjectError> {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
return std::nullopt;
}
@@ -399,7 +399,7 @@ auto LocalCAS<kDoGlobalUplink>::Splice(ArtifactDigest const& digest,
// Check tree invariants:
if constexpr (kIsTree) {
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
// Read tree entries:
auto const tree_data = FileSystemManager::ReadFile(file_path);
if (not tree_data) {
diff --git a/src/other_tools/just_mr/TARGETS b/src/other_tools/just_mr/TARGETS
index ca433364..2587909a 100644
--- a/src/other_tools/just_mr/TARGETS
+++ b/src/other_tools/just_mr/TARGETS
@@ -9,7 +9,7 @@
, ["@", "json", "", "json"]
, ["src/buildtool/build_engine/expression", "expression"]
, ["src/buildtool/common", "retry_cli"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "git_context"]
, ["src/buildtool/logging", "logging"]
, ["src/buildtool/logging", "log_level"]
diff --git a/src/other_tools/just_mr/main.cpp b/src/other_tools/just_mr/main.cpp
index 24bf8ffd..43b615ce 100644
--- a/src/other_tools/just_mr/main.cpp
+++ b/src/other_tools/just_mr/main.cpp
@@ -26,8 +26,8 @@
#include "gsl/gsl"
#include "nlohmann/json.hpp"
#include "src/buildtool/build_engine/expression/configuration.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/retry_cli.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/git_context.hpp"
#include "src/buildtool/logging/log_config.hpp"
@@ -319,7 +319,7 @@ auto main(int argc, char* argv[]) -> int {
// Setup LocalStorageConfig to store the local_build_root properly
// and make the cas and git cache roots available
auto storage_config = CreateStorageConfig(
- arguments.common, Compatibility::IsCompatible());
+ arguments.common, ProtocolTraits::Instance().IsCompatible());
if (not storage_config) {
Logger::Log(LogLevel::Error,
"Failed to configure local build root.");
diff --git a/src/other_tools/ops_maps/TARGETS b/src/other_tools/ops_maps/TARGETS
index 9fa5dce7..5cd2d46f 100644
--- a/src/other_tools/ops_maps/TARGETS
+++ b/src/other_tools/ops_maps/TARGETS
@@ -124,7 +124,7 @@
[ ["src/other_tools/ops_maps", "critical_git_op_map"]
, ["src/buildtool/common", "config"]
, ["src/buildtool/common", "common"]
- , ["src/buildtool/compatibility", "compatibility"]
+ , ["src/buildtool/common", "protocol_traits"]
, ["src/buildtool/file_system", "file_system_manager"]
, ["src/buildtool/multithreading", "task_system"]
, ["src/buildtool/system", "system_command"]
diff --git a/src/other_tools/ops_maps/git_tree_fetch_map.cpp b/src/other_tools/ops_maps/git_tree_fetch_map.cpp
index 7e6da1dd..1bfc25ad 100644
--- a/src/other_tools/ops_maps/git_tree_fetch_map.cpp
+++ b/src/other_tools/ops_maps/git_tree_fetch_map.cpp
@@ -20,8 +20,8 @@
#include "fmt/core.h"
#include "src/buildtool/common/artifact_digest.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/repository_config.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/execution_api/common/execution_common.hpp"
#include "src/buildtool/execution_api/git/git_api.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
diff --git a/test/buildtool/build_engine/base_maps/TARGETS b/test/buildtool/build_engine/base_maps/TARGETS
index 855d6217..2c5f4029 100644
--- a/test/buildtool/build_engine/base_maps/TARGETS
+++ b/test/buildtool/build_engine/base_maps/TARGETS
@@ -63,6 +63,7 @@
, ["", "catch-main"]
, ["@", "json", "", "json"]
, ["@", "src", "src/buildtool/common", "config"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/build_engine/base_maps", "directory_map"]
, ["@", "src", "src/buildtool/build_engine/base_maps", "source_map"]
, ["@", "src", "src/buildtool/build_engine/base_maps", "entity_name_data"]
diff --git a/test/buildtool/build_engine/base_maps/source_map.test.cpp b/test/buildtool/build_engine/base_maps/source_map.test.cpp
index 44c6863a..b6c7f1c1 100644
--- a/test/buildtool/build_engine/base_maps/source_map.test.cpp
+++ b/test/buildtool/build_engine/base_maps/source_map.test.cpp
@@ -25,6 +25,7 @@
#include "src/buildtool/build_engine/base_maps/directory_map.hpp"
#include "src/buildtool/build_engine/base_maps/entity_name.hpp"
#include "src/buildtool/build_engine/base_maps/entity_name_data.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/file_system/file_root.hpp"
#include "src/buildtool/multithreading/async_map_consumer.hpp"
@@ -102,7 +103,8 @@ TEST_CASE("from file") {
CHECK(ReadSourceTarget(name, consumer, /*use_git=*/true));
CHECK(artifacts["file"]["type"] == "KNOWN");
CHECK(artifacts["file"]["data"]["id"] ==
- (Compatibility::IsCompatible() ? kEmptySha256 : kEmptySha1));
+ (ProtocolTraits::Instance().IsCompatible() ? kEmptySha256
+ : kEmptySha1));
CHECK(artifacts["file"]["data"]["size"] == 0);
}
}
@@ -168,7 +170,8 @@ TEST_CASE("subdir file") {
CHECK(ReadSourceTarget(name, consumer, /*use_git=*/true));
CHECK(artifacts["bar/file"]["type"] == "KNOWN");
CHECK(artifacts["bar/file"]["data"]["id"] ==
- (Compatibility::IsCompatible() ? kEmptySha256 : kEmptySha1));
+ (ProtocolTraits::Instance().IsCompatible() ? kEmptySha256
+ : kEmptySha1));
CHECK(artifacts["bar/file"]["data"]["size"] == 0);
}
}
@@ -189,9 +192,9 @@ TEST_CASE("subdir symlink") {
SECTION("via git tree") {
CHECK(ReadSourceTarget(name, consumer, /*use_git=*/true));
CHECK(artifacts["link"]["type"] == "KNOWN");
- CHECK(artifacts["link"]["data"]["id"] == (Compatibility::IsCompatible()
- ? kSrcLinkIdSha256
- : kSrcLinkIdSha1));
+ CHECK(artifacts["link"]["data"]["id"] ==
+ (ProtocolTraits::Instance().IsCompatible() ? kSrcLinkIdSha256
+ : kSrcLinkIdSha1));
CHECK(artifacts["link"]["data"]["size"] == 5); // content: dummy
}
}
diff --git a/test/buildtool/common/TARGETS b/test/buildtool/common/TARGETS
index ef1fff25..1355af3f 100644
--- a/test/buildtool/common/TARGETS
+++ b/test/buildtool/common/TARGETS
@@ -9,9 +9,9 @@
, ["@", "src", "src/buildtool/common", "artifact_description"]
, ["@", "src", "src/buildtool/common", "common"]
, ["@", "src", "src/buildtool/common", "artifact_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
, ["@", "src", "src/buildtool/file_system", "object_type"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
]
, "stage": ["test", "buildtool", "common"]
}
@@ -25,8 +25,8 @@
, ["@", "json", "", "json"]
, ["@", "src", "src/buildtool/common", "action_description"]
, ["@", "src", "src/buildtool/common", "common"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
]
, "stage": ["test", "buildtool", "common"]
}
diff --git a/test/buildtool/common/action_description.test.cpp b/test/buildtool/common/action_description.test.cpp
index 7d5a72d7..504f6aa3 100644
--- a/test/buildtool/common/action_description.test.cpp
+++ b/test/buildtool/common/action_description.test.cpp
@@ -20,7 +20,7 @@
#include "nlohmann/json.hpp"
#include "src/buildtool/common/action.hpp"
#include "src/buildtool/common/artifact_description.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
[[nodiscard]] static inline auto GetHashType(bool compatible) noexcept
@@ -45,7 +45,8 @@ TEST_CASE("From JSON", "[action_description]") {
desc.Inputs()}
.ToJson();
- auto const hash_type = GetHashType(Compatibility::IsCompatible());
+ auto const hash_type =
+ GetHashType(ProtocolTraits::Instance().IsCompatible());
SECTION("Parse full action") {
auto description = ActionDescription::FromJson(hash_type, "id", json);
REQUIRE(description);
diff --git a/test/buildtool/common/artifact_description.test.cpp b/test/buildtool/common/artifact_description.test.cpp
index a05baa66..99a24964 100644
--- a/test/buildtool/common/artifact_description.test.cpp
+++ b/test/buildtool/common/artifact_description.test.cpp
@@ -22,12 +22,12 @@
#include "src/buildtool/common/artifact.hpp"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/object_type.hpp"
static auto NamedDigest(std::string const& str) -> ArtifactDigest {
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
return ArtifactDigestFactory::HashDataAs<ObjectType::File>(hash_function,
@@ -50,7 +50,8 @@ TEST_CASE("Local artifact", "[artifact_description]") {
auto local_desc = ArtifactDescription::CreateLocal(
std::filesystem::path{"local_path"}, "repo");
auto from_json = ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), local_desc.ToJson());
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ local_desc.ToJson());
CHECK(local_desc == *from_json);
}
@@ -59,21 +60,24 @@ TEST_CASE("Known artifact", "[artifact_description]") {
auto known_desc = ArtifactDescription::CreateKnown(
NamedDigest("f_fake_hash"), ObjectType::File);
auto from_json = ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), known_desc.ToJson());
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ known_desc.ToJson());
CHECK(known_desc == *from_json);
}
SECTION("Executable object") {
auto known_desc = ArtifactDescription::CreateKnown(
NamedDigest("x_fake_hash"), ObjectType::Executable);
auto from_json = ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), known_desc.ToJson());
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ known_desc.ToJson());
CHECK(known_desc == *from_json);
}
SECTION("Symlink object") {
auto known_desc = ArtifactDescription::CreateKnown(
NamedDigest("l_fake_hash"), ObjectType::Symlink);
auto from_json = ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), known_desc.ToJson());
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ known_desc.ToJson());
CHECK(known_desc == *from_json);
}
}
@@ -82,7 +86,8 @@ TEST_CASE("Action artifact", "[artifact_description]") {
auto action_desc = ArtifactDescription::CreateAction(
"action_id", std::filesystem::path{"out_path"});
auto from_json = ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), action_desc.ToJson());
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ action_desc.ToJson());
CHECK(action_desc == *from_json);
}
@@ -93,7 +98,8 @@ TEST_CASE("From JSON", "[artifact_description]") {
.ToJson();
auto action = ArtifactDescription::CreateAction("id", "output").ToJson();
- auto const hash_type = GetHashType(Compatibility::IsCompatible());
+ auto const hash_type =
+ GetHashType(ProtocolTraits::Instance().IsCompatible());
SECTION("Parse artifacts") {
CHECK(ArtifactDescription::FromJson(hash_type, local));
CHECK(ArtifactDescription::FromJson(hash_type, known));
@@ -172,10 +178,10 @@ TEST_CASE("Description missing mandatory key/value pair",
"[artifact_description]") {
nlohmann::json const missing_type = {{"data", {{"path", "some/path"}}}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), missing_type));
+ GetHashType(ProtocolTraits::Instance().IsCompatible()), missing_type));
nlohmann::json const missing_data = {{"type", "LOCAL"}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), missing_data));
+ GetHashType(ProtocolTraits::Instance().IsCompatible()), missing_data));
}
TEST_CASE("Local artifact description contains incorrect value for \"data\"",
@@ -183,7 +189,8 @@ TEST_CASE("Local artifact description contains incorrect value for \"data\"",
nlohmann::json const local_art_missing_path = {
{"type", "LOCAL"}, {"data", nlohmann::json::object()}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), local_art_missing_path));
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ local_art_missing_path));
}
TEST_CASE("Known artifact description contains incorrect value for \"data\"",
@@ -195,14 +202,15 @@ TEST_CASE("Known artifact description contains incorrect value for \"data\"",
{"type", "KNOWN"},
{"data", {{"size", 15}, {"file_type", file_type}}}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), known_art_missing_id));
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ known_art_missing_id));
}
SECTION("missing \"size\"") {
nlohmann::json const known_art_missing_size = {
{"type", "KNOWN"},
{"data", {{"id", "known_input"}, {"file_type", file_type}}}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()),
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
known_art_missing_size));
}
SECTION("missing \"file_type\"") {
@@ -210,7 +218,7 @@ TEST_CASE("Known artifact description contains incorrect value for \"data\"",
{"type", "KNOWN"}, {"data", {{"id", "known_input"}, {"size", 15}}}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()),
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
known_art_missing_file_type));
}
}
@@ -220,10 +228,12 @@ TEST_CASE("Action artifact description contains incorrect value for \"data\"",
nlohmann::json const action_art_missing_id = {
{"type", "ACTION"}, {"data", {{"path", "output/path"}}}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), action_art_missing_id));
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ action_art_missing_id));
nlohmann::json const action_art_missing_path = {
{"type", "ACTION"}, {"data", {{"id", "action_id"}}}};
CHECK(not ArtifactDescription::FromJson(
- GetHashType(Compatibility::IsCompatible()), action_art_missing_path));
+ GetHashType(ProtocolTraits::Instance().IsCompatible()),
+ action_art_missing_path));
}
diff --git a/test/buildtool/execution_api/bazel/TARGETS b/test/buildtool/execution_api/bazel/TARGETS
index 192a6182..64e52ad6 100644
--- a/test/buildtool/execution_api/bazel/TARGETS
+++ b/test/buildtool/execution_api/bazel/TARGETS
@@ -9,6 +9,7 @@
, ["utils", "test_auth_config"]
, ["utils", "test_remote_config"]
, ["@", "src", "src/buildtool/common", "bazel_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/common/remote", "retry_config"]
, ["@", "src", "src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["@", "src", "src/buildtool/execution_api/remote", "bazel_network"]
@@ -29,12 +30,12 @@
, ["utils", "test_auth_config"]
, ["utils", "test_remote_config"]
, ["@", "src", "src/buildtool/common", "bazel_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/common/remote", "retry_config"]
, ["@", "src", "src/buildtool/execution_api/remote", "bazel_network"]
, ["@", "src", "src/buildtool/execution_api/remote", "config"]
, ["@", "src", "src/buildtool/file_system", "object_type"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
]
, "stage": ["test", "buildtool", "execution_api", "bazel"]
}
@@ -49,12 +50,12 @@
, ["utils", "test_auth_config"]
, ["utils", "test_remote_config"]
, ["@", "src", "src/buildtool/common", "bazel_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["@", "src", "src/buildtool/execution_api/remote", "bazel_network"]
, ["@", "src", "src/buildtool/execution_api/remote", "config"]
, ["@", "src", "src/buildtool/file_system", "object_type"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
]
, "stage": ["test", "buildtool", "execution_api", "bazel"]
}
@@ -69,8 +70,8 @@
, ["utils", "test_auth_config"]
, ["utils", "test_remote_config"]
, ["@", "src", "src/buildtool/common", "bazel_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/common/remote", "retry_config"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
, ["@", "src", "src/buildtool/execution_api/bazel_msg", "bazel_msg"]
, ["@", "src", "src/buildtool/execution_api/remote", "bazel_network"]
, ["@", "src", "src/buildtool/execution_api/remote", "config"]
@@ -96,8 +97,8 @@
, ["@", "src", "src/buildtool/file_system", "object_type"]
, ["@", "src", "src/buildtool/common", "common"]
, ["@", "src", "src/buildtool/common", "artifact_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
, ["@", "src", "src/buildtool/execution_api/common", "common"]
, [ "@"
, "src"
@@ -121,7 +122,7 @@
, ["@", "src", "src/buildtool/execution_api/remote", "bazel"]
, ["buildtool/execution_api/common", "api_test"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
]
, "stage": ["test", "buildtool", "execution_api", "bazel"]
}
diff --git a/test/buildtool/execution_api/bazel/bazel_api.test.cpp b/test/buildtool/execution_api/bazel/bazel_api.test.cpp
index bced4a87..5dc4198d 100644
--- a/test/buildtool/execution_api/bazel/bazel_api.test.cpp
+++ b/test/buildtool/execution_api/bazel/bazel_api.test.cpp
@@ -18,8 +18,8 @@
#include <string>
#include "catch2/catch_test_macros.hpp"
+#include "src/buildtool/common/protocol_traits.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/config.hpp"
#include "test/buildtool/execution_api/common/api_test.hpp"
@@ -64,7 +64,7 @@ TEST_CASE("BazelAPI: No input, no output", "[execution_api]") {
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -80,7 +80,7 @@ TEST_CASE("BazelAPI: No input, create output", "[execution_api]") {
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -96,7 +96,7 @@ TEST_CASE("BazelAPI: One input copied to output", "[execution_api]") {
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -112,7 +112,7 @@ TEST_CASE("BazelAPI: Non-zero exit code, create output", "[execution_api]") {
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -129,7 +129,7 @@ TEST_CASE("BazelAPI: Retrieve two identical trees to path", "[execution_api]") {
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -147,7 +147,7 @@ TEST_CASE("BazelAPI: Retrieve file and symlink with same content to path",
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -164,7 +164,7 @@ TEST_CASE("BazelAPI: Retrieve mixed blobs and trees", "[execution_api]") {
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -181,7 +181,7 @@ TEST_CASE("BazelAPI: Create directory prior to execution", "[execution_api]") {
auto auth = TestAuthConfig::ReadFromEnvironment();
REQUIRE(auth);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_api/bazel/bazel_cas_client.test.cpp b/test/buildtool/execution_api/bazel/bazel_cas_client.test.cpp
index e4772f7d..4be61071 100644
--- a/test/buildtool/execution_api/bazel/bazel_cas_client.test.cpp
+++ b/test/buildtool/execution_api/bazel/bazel_cas_client.test.cpp
@@ -21,6 +21,7 @@
#include "catch2/catch_test_macros.hpp"
#include "gsl/gsl"
#include "src/buildtool/common/bazel_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/retry_config.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
@@ -49,9 +50,10 @@ TEST_CASE("Bazel internals: CAS Client", "[execution_api]") {
SECTION("Valid digest and blob") {
// digest of "test"
- HashFunction const hash_function{Compatibility::IsCompatible()
- ? HashFunction::Type::PlainSHA256
- : HashFunction::Type::GitSHA1};
+ HashFunction const hash_function{
+ ProtocolTraits::Instance().IsCompatible()
+ ? HashFunction::Type::PlainSHA256
+ : HashFunction::Type::GitSHA1};
auto digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
hash_function, content);
diff --git a/test/buildtool/execution_api/bazel/bazel_execution_client.test.cpp b/test/buildtool/execution_api/bazel/bazel_execution_client.test.cpp
index c354316c..a0f77066 100644
--- a/test/buildtool/execution_api/bazel/bazel_execution_client.test.cpp
+++ b/test/buildtool/execution_api/bazel/bazel_execution_client.test.cpp
@@ -18,8 +18,8 @@
#include "catch2/catch_test_macros.hpp"
#include "src/buildtool/common/bazel_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.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/config.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -31,7 +31,7 @@ TEST_CASE("Bazel internals: Execution Client", "[execution_api]") {
std::string instance_name{"remote-execution"};
std::string content("test");
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -115,7 +115,7 @@ TEST_CASE("Bazel internals: Execution Client using env variables",
std::string instance_name{"remote-execution"};
std::string content("contents of env variable");
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp b/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp
index 40dec8da..8ec074f9 100644
--- a/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp
+++ b/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp
@@ -23,7 +23,7 @@
#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/artifact_blob_container.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
@@ -62,7 +62,7 @@ TEST_CASE("Bazel internals: MessageFactory", "[execution_api]") {
std::filesystem::path link = subdir1 / "link";
REQUIRE(FileSystemManager::CreateSymlink("file1", link));
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_api/bazel/bazel_network.test.cpp b/test/buildtool/execution_api/bazel/bazel_network.test.cpp
index 01c5aea9..c69e7619 100644
--- a/test/buildtool/execution_api/bazel/bazel_network.test.cpp
+++ b/test/buildtool/execution_api/bazel/bazel_network.test.cpp
@@ -22,8 +22,8 @@
#include "catch2/catch_test_macros.hpp"
#include "src/buildtool/auth/authentication.hpp"
#include "src/buildtool/common/bazel_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.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/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp"
@@ -46,7 +46,7 @@ TEST_CASE("Bazel network: write/read blobs", "[execution_api]") {
RetryConfig retry_config{}; // default retry config
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -97,7 +97,7 @@ TEST_CASE("Bazel network: write/read blobs", "[execution_api]") {
}
TEST_CASE("Bazel network: read blobs with unknown size", "[execution_api]") {
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
// only supported in native mode
return;
}
@@ -113,7 +113,7 @@ TEST_CASE("Bazel network: read blobs with unknown size", "[execution_api]") {
RetryConfig retry_config{}; // default retry config
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_api/bazel/bytestream_client.test.cpp b/test/buildtool/execution_api/bazel/bytestream_client.test.cpp
index 731073e5..1956a6a3 100644
--- a/test/buildtool/execution_api/bazel/bytestream_client.test.cpp
+++ b/test/buildtool/execution_api/bazel/bytestream_client.test.cpp
@@ -21,7 +21,7 @@
#include "catch2/catch_test_macros.hpp"
#include "src/buildtool/auth/authentication.hpp"
#include "src/buildtool/common/bazel_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
#include "src/buildtool/execution_api/common/execution_common.hpp"
@@ -45,7 +45,7 @@ TEST_CASE("ByteStream Client: Transfer single blob", "[execution_api]") {
&*auth_config};
auto uuid = CreateUUIDVersion4(*CreateProcessUniqueId());
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -152,7 +152,7 @@ TEST_CASE("ByteStream Client: Transfer multiple blobs", "[execution_api]") {
&*auth_config};
auto uuid = CreateUUIDVersion4(*CreateProcessUniqueId());
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_api/common/TARGETS b/test/buildtool/execution_api/common/TARGETS
index 08ee9c39..f58bb4f0 100644
--- a/test/buildtool/execution_api/common/TARGETS
+++ b/test/buildtool/execution_api/common/TARGETS
@@ -5,14 +5,14 @@
, "deps":
[ ["@", "catch2", "", "catch2"]
, ["@", "src", "src/buildtool/common", "artifact_description"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
+ , ["@", "src", "src/buildtool/common", "artifact_digest_factory"]
, ["@", "src", "src/buildtool/execution_api/common", "common"]
, ["@", "src", "src/buildtool/execution_api/local", "config"]
, ["@", "src", "src/buildtool/file_system", "file_system_manager"]
, ["@", "src", "src/buildtool/logging", "log_level"]
, ["@", "src", "src/buildtool/logging", "logging"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
- , ["@", "src", "src/buildtool/common", "artifact_digest_factory"]
]
, "stage": ["test", "buildtool", "execution_api", "common"]
}
diff --git a/test/buildtool/execution_api/common/api_test.hpp b/test/buildtool/execution_api/common/api_test.hpp
index 382760f6..3c4052b3 100644
--- a/test/buildtool/execution_api/common/api_test.hpp
+++ b/test/buildtool/execution_api/common/api_test.hpp
@@ -25,7 +25,7 @@
#include "catch2/catch_test_macros.hpp"
#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/execution_action.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
@@ -140,7 +140,7 @@ using ExecProps = std::map<std::string, std::string>;
bool is_hermetic = false) {
std::string test_content("test");
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -224,7 +224,7 @@ using ExecProps = std::map<std::string, std::string>;
bool is_hermetic = false) {
std::string test_content("test");
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -315,7 +315,7 @@ using ExecProps = std::map<std::string, std::string>;
ExecProps const& props) {
std::string test_content("test");
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_api/execution_service/TARGETS b/test/buildtool/execution_api/execution_service/TARGETS
index a2c1e9dd..776f0f2b 100644
--- a/test/buildtool/execution_api/execution_service/TARGETS
+++ b/test/buildtool/execution_api/execution_service/TARGETS
@@ -17,6 +17,7 @@
, ["@", "src", "src/buildtool/file_system", "object_type"]
, ["@", "src", "src/buildtool/common", "common"]
, ["@", "src", "src/buildtool/common", "bazel_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/storage", "config"]
, ["@", "src", "src/buildtool/storage", "storage"]
, ["@", "gsl", "", "gsl"]
diff --git a/test/buildtool/execution_api/execution_service/cas_server.test.cpp b/test/buildtool/execution_api/execution_service/cas_server.test.cpp
index ca88b17b..8d68d9cb 100644
--- a/test/buildtool/execution_api/execution_service/cas_server.test.cpp
+++ b/test/buildtool/execution_api/execution_service/cas_server.test.cpp
@@ -20,6 +20,7 @@
#include "gsl/gsl"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/bazel_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/local/config.hpp"
#include "src/buildtool/execution_api/local/context.hpp"
#include "src/buildtool/file_system/git_repo.hpp"
@@ -47,7 +48,7 @@ namespace {
TEST_CASE("CAS Service: upload incomplete tree", "[execution_service]") {
// For compatible mode tree invariants aren't checked.
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
return;
}
diff --git a/test/buildtool/execution_engine/executor/TARGETS b/test/buildtool/execution_engine/executor/TARGETS
index a3176e91..74247e49 100644
--- a/test/buildtool/execution_engine/executor/TARGETS
+++ b/test/buildtool/execution_engine/executor/TARGETS
@@ -7,6 +7,7 @@
, ["@", "src", "src/buildtool/common", "artifact_description"]
, ["@", "src", "src/buildtool/common", "common"]
, ["@", "src", "src/buildtool/common", "artifact_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/execution_api/common", "common"]
, ["@", "src", "src/buildtool/execution_api/remote", "config"]
, ["@", "src", "src/buildtool/execution_api/remote", "context"]
@@ -16,7 +17,6 @@
, ["@", "src", "src/buildtool/file_system", "file_system_manager"]
, ["@", "src", "src/buildtool/progress_reporting", "progress"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
, ["@", "catch2", "", "catch2"]
, ["@", "gsl", "", "gsl"]
, ["utils", "test_api_bundle"]
@@ -34,6 +34,7 @@
, ["@", "src", "src/buildtool/common", "common"]
, ["@", "src", "src/buildtool/common", "artifact_digest_factory"]
, ["@", "src", "src/buildtool/common", "config"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/common/remote", "retry_config"]
, ["@", "src", "src/buildtool/execution_api/common", "common"]
, ["@", "src", "src/buildtool/execution_api/remote", "config"]
@@ -43,7 +44,6 @@
, ["@", "src", "src/buildtool/execution_engine/executor", "executor"]
, ["@", "src", "src/buildtool/progress_reporting", "progress"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
, ["", "catch-main"]
, ["@", "catch2", "", "catch2"]
, ["@", "gsl", "", "gsl"]
@@ -84,13 +84,13 @@
[ "executor_api_tests"
, ["@", "src", "src/buildtool/common", "common"]
, ["@", "src", "src/buildtool/common", "config"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/common/remote", "retry_config"]
, ["@", "src", "src/buildtool/execution_api/remote", "bazel"]
, ["@", "src", "src/buildtool/execution_api/remote", "config"]
, ["@", "src", "src/buildtool/execution_engine/executor", "executor"]
, ["@", "src", "src/buildtool/progress_reporting", "progress"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
, ["utils", "catch-main-remote-execution"]
, ["utils", "test_auth_config"]
, ["utils", "test_remote_config"]
diff --git a/test/buildtool/execution_engine/executor/executor.test.cpp b/test/buildtool/execution_engine/executor/executor.test.cpp
index ee950ec0..d0533f9c 100644
--- a/test/buildtool/execution_engine/executor/executor.test.cpp
+++ b/test/buildtool/execution_engine/executor/executor.test.cpp
@@ -29,9 +29,9 @@
#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/common/statistics.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
@@ -64,7 +64,7 @@ struct TestApiConfig {
};
static auto NamedDigest(std::string const& str) -> ArtifactDigest {
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
return ArtifactDigestFactory::HashDataAs<ObjectType::File>(hash_function,
@@ -305,7 +305,7 @@ TEST_CASE("Executor: Process artifact", "[executor]") {
DependencyGraph g;
auto [config, repo_config] = CreateTest(&g, workspace_path);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -383,7 +383,7 @@ TEST_CASE("Executor: Process action", "[executor]") {
DependencyGraph g;
auto [config, repo_config] = CreateTest(&g, workspace_path);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_engine/executor/executor_api.test.hpp b/test/buildtool/execution_engine/executor/executor_api.test.hpp
index c898d9e8..570c6e39 100644
--- a/test/buildtool/execution_engine/executor/executor_api.test.hpp
+++ b/test/buildtool/execution_engine/executor/executor_api.test.hpp
@@ -27,10 +27,10 @@
#include "src/buildtool/common/artifact.hpp"
#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/retry_config.hpp"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/common/statistics.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
@@ -56,7 +56,7 @@ static inline void RunBlobUpload(RepositoryConfig* repo_config,
ApiFactory const& factory) {
SetupConfig(repo_config);
auto api = factory();
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -144,7 +144,7 @@ static inline void RunHelloWorldCompilation(
.retry_config = &retry_config,
.exec_config = &*remote_config};
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -279,7 +279,7 @@ static inline void RunGreeterCompilation(
.retry_config = &retry_config,
.exec_config = &*remote_config};
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -420,7 +420,7 @@ static inline void TestUploadAndDownloadTrees(
env.emplace("PATH", "/bin:/usr/bin");
}
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -576,7 +576,7 @@ static inline void TestRetrieveOutputDirectories(
int /*expected_cached*/ = 0) {
SetupConfig(repo_config);
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp b/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp
index 0e068ea9..fd2167a7 100644
--- a/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp
+++ b/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp
@@ -15,10 +15,10 @@
#include <optional>
#include "catch2/catch_test_macros.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/retry_config.hpp"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/common/statistics.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"
@@ -41,7 +41,7 @@ TEST_CASE("Executor<BazelApi>: Upload blob", "[executor]") {
RetryConfig retry_config{}; // default retry config
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -72,7 +72,7 @@ TEST_CASE("Executor<BazelApi>: Compile hello world", "[executor]") {
RetryConfig retry_config{}; // default retry config
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -110,7 +110,7 @@ TEST_CASE("Executor<BazelApi>: Compile greeter", "[executor]") {
RetryConfig retry_config{}; // default retry config
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -148,7 +148,7 @@ TEST_CASE("Executor<BazelApi>: Upload and download trees", "[executor]") {
RetryConfig retry_config{}; // default retry config
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
@@ -186,7 +186,7 @@ TEST_CASE("Executor<BazelApi>: Retrieve output directories", "[executor]") {
RetryConfig retry_config{}; // default retry config
- HashFunction const hash_function{Compatibility::IsCompatible()
+ HashFunction const hash_function{ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1};
diff --git a/test/buildtool/execution_engine/traverser/TARGETS b/test/buildtool/execution_engine/traverser/TARGETS
index bdd7c4cc..7228b0af 100644
--- a/test/buildtool/execution_engine/traverser/TARGETS
+++ b/test/buildtool/execution_engine/traverser/TARGETS
@@ -7,11 +7,11 @@
, ["", "catch-main"]
, ["utils", "container_matchers"]
, ["@", "src", "src/buildtool/common", "common"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/common", "artifact_description"]
, ["@", "src", "src/buildtool/execution_engine/dag", "dag"]
, ["@", "src", "src/buildtool/execution_engine/traverser", "traverser"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
]
, "stage": ["test", "buildtool", "execution_engine", "traverser"]
}
diff --git a/test/buildtool/execution_engine/traverser/traverser.test.cpp b/test/buildtool/execution_engine/traverser/traverser.test.cpp
index 70ab2465..7b2e6293 100644
--- a/test/buildtool/execution_engine/traverser/traverser.test.cpp
+++ b/test/buildtool/execution_engine/traverser/traverser.test.cpp
@@ -24,7 +24,7 @@
#include "catch2/catch_test_macros.hpp"
#include "src/buildtool/common/artifact_description.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_engine/dag/dag.hpp"
#include "test/utils/container_matchers.hpp"
@@ -184,7 +184,7 @@ class TestProject {
auto inputs_desc = ActionDescription::inputs_t{};
if (not inputs.empty()) {
command.emplace_back("FROM");
- auto const hash_type = Compatibility::IsCompatible()
+ auto const hash_type = ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1;
for (auto const& input_desc : inputs) {
diff --git a/test/buildtool/file_system/TARGETS b/test/buildtool/file_system/TARGETS
index a7342221..eda8f376 100644
--- a/test/buildtool/file_system/TARGETS
+++ b/test/buildtool/file_system/TARGETS
@@ -62,6 +62,7 @@
, ["@", "src", "src/buildtool/common", "artifact_description"]
, ["@", "src", "src/buildtool/common", "common"]
, ["@", "src", "src/buildtool/common", "artifact_digest_factory"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
, ["@", "src", "src/buildtool/file_system", "file_root"]
, ["@", "src", "src/buildtool/file_system", "file_system_manager"]
diff --git a/test/buildtool/file_system/file_root.test.cpp b/test/buildtool/file_system/file_root.test.cpp
index f709aa7a..1e7b9e7b 100644
--- a/test/buildtool/file_system/file_root.test.cpp
+++ b/test/buildtool/file_system/file_root.test.cpp
@@ -25,6 +25,7 @@
#include "src/buildtool/common/artifact_description.hpp"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/artifact_digest_factory.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "test/utils/container_matchers.hpp"
@@ -412,7 +413,7 @@ static void CheckGitRoot(bool ignore_special) noexcept {
auto const foo = root->ToArtifactDescription("baz/foo", "repo");
REQUIRE(foo);
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto const digest =
ArtifactDigestFactory::Create(HashFunction::Type::PlainSHA256,
kFooIdSha256,
@@ -435,7 +436,7 @@ static void CheckGitRoot(bool ignore_special) noexcept {
auto const bar = root->ToArtifactDescription("baz/bar", "repo");
REQUIRE(bar);
- if (Compatibility::IsCompatible()) {
+ if (ProtocolTraits::Instance().IsCompatible()) {
auto const digest =
ArtifactDigestFactory::Create(HashFunction::Type::PlainSHA256,
kBarIdSha256,
diff --git a/test/buildtool/graph_traverser/TARGETS b/test/buildtool/graph_traverser/TARGETS
index fcf2da20..d9dd7af6 100644
--- a/test/buildtool/graph_traverser/TARGETS
+++ b/test/buildtool/graph_traverser/TARGETS
@@ -7,6 +7,7 @@
, ["@", "json", "", "json"]
, ["@", "src", "src/buildtool/auth", "auth"]
, ["@", "src", "src/buildtool/common", "common"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/common/remote", "retry_config"]
, ["@", "src", "src/buildtool/execution_api/local", "config"]
, ["@", "src", "src/buildtool/execution_api/local", "context"]
@@ -39,6 +40,7 @@
, ["@", "src", "src/buildtool/execution_api/remote", "config"]
, ["@", "src", "src/buildtool/storage", "config"]
, ["@", "src", "src/buildtool/storage", "storage"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
]
, "stage": ["test", "buildtool", "graph_traverser"]
}
@@ -56,6 +58,7 @@
, ["@", "src", "src/buildtool/storage", "storage"]
, ["@", "src", "src/buildtool/storage", "config"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
]
, "stage": ["test", "buildtool", "graph_traverser"]
}
diff --git a/test/buildtool/graph_traverser/graph_traverser.test.hpp b/test/buildtool/graph_traverser/graph_traverser.test.hpp
index 28ec44e0..666b905f 100644
--- a/test/buildtool/graph_traverser/graph_traverser.test.hpp
+++ b/test/buildtool/graph_traverser/graph_traverser.test.hpp
@@ -29,6 +29,7 @@
#include "gsl/gsl"
#include "nlohmann/json.hpp"
#include "src/buildtool/auth/authentication.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/common/remote/retry_config.hpp"
#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/execution_api/common/api_bundle.hpp"
@@ -127,7 +128,7 @@ class TestProject {
CommandLineArguments clargs{gtargs};
clargs.artifacts = entry_points;
auto const comp_graph = root_dir_ / "graph_description_compatible";
- if (Compatibility::IsCompatible() and
+ if (ProtocolTraits::Instance().IsCompatible() and
FileSystemManager::Exists(comp_graph)) {
clargs.graph_description = comp_graph;
}
diff --git a/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp b/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp
index d92b9ef9..bf3dfe02 100644
--- a/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp
+++ b/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp
@@ -13,6 +13,7 @@
// limitations under the License.
#include "catch2/catch_test_macros.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
#include "src/buildtool/storage/config.hpp"
@@ -34,7 +35,7 @@
StorageConfig::Builder builder;
auto config = builder.SetBuildRoot(cache_dir)
- .SetHashType(Compatibility::IsCompatible()
+ .SetHashType(ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1)
.SetRemoteExecutionArgs(remote_config.remote_address,
diff --git a/test/buildtool/storage/TARGETS b/test/buildtool/storage/TARGETS
index 5eeafa9a..7b58b109 100644
--- a/test/buildtool/storage/TARGETS
+++ b/test/buildtool/storage/TARGETS
@@ -58,6 +58,7 @@
, ["@", "src", "src/buildtool/storage", "config"]
, ["utils", "test_storage_config"]
, ["@", "src", "src/buildtool/common", "bazel_types"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["utils", "large_object_utils"]
, ["@", "src", "src/utils/cpp", "tmp_dir"]
, [ "@"
@@ -65,7 +66,6 @@
, "src/buildtool/execution_api/bazel_msg"
, "bazel_msg_factory"
]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
]
, "stage": ["test", "buildtool", "storage"]
}
diff --git a/test/buildtool/storage/large_object_cas.test.cpp b/test/buildtool/storage/large_object_cas.test.cpp
index f0644694..cbc92038 100644
--- a/test/buildtool/storage/large_object_cas.test.cpp
+++ b/test/buildtool/storage/large_object_cas.test.cpp
@@ -28,7 +28,7 @@
#include "catch2/catch_test_macros.hpp"
#include "src/buildtool/common/bazel_types.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -405,7 +405,7 @@ static void TestExternal(StorageConfig const& storage_config,
REQUIRE(FileSystemManager::IsFile(path));
}
- if (kIsTree and not Compatibility::IsCompatible()) {
+ if (kIsTree and not ProtocolTraits::Instance().IsCompatible()) {
// Tree invariants check is omitted in compatible mode.
SECTION("Tree invariants check fails") {
// Check splice fails due to the tree invariants check.
@@ -606,7 +606,7 @@ TEST_CASE("LargeObjectCAS: uplink nested large objects", "[storage]") {
// However, in native mode they might be reconstructed on request because
// their entries are in the latest generation:
- if (not Compatibility::IsCompatible()) {
+ if (not ProtocolTraits::Instance().IsCompatible()) {
auto split_nested_tree_2 = latest.CAS().SplitTree(*nested_tree_digest);
REQUIRE(split_nested_tree_2);
@@ -720,7 +720,7 @@ auto Tree::StoreRaw(LocalCAS<kDefaultDoGlobalUplink> const& cas,
return cas.StoreBlob(content);
};
- return Compatibility::IsCompatible()
+ return ProtocolTraits::Instance().IsCompatible()
? BazelMsgFactory::CreateDirectoryDigestFromLocalTree(
directory, store_blob, store_tree, store_symlink)
: BazelMsgFactory::CreateGitTreeDigestFromLocalTree(
diff --git a/test/utils/TARGETS b/test/utils/TARGETS
index 9daecce8..d0a427a6 100644
--- a/test/utils/TARGETS
+++ b/test/utils/TARGETS
@@ -38,7 +38,7 @@
, "hdrs": ["test_env.hpp"]
, "deps":
[ "log_config"
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, ["@", "src", "src/buildtool/auth", "auth"]
]
, "stage": ["test", "utils"]
@@ -54,6 +54,7 @@
, ["@", "src", "src/buildtool/storage", "config"]
, ["@", "src", "src/utils/cpp", "tmp_dir"]
, ["@", "src", "src/buildtool/crypto", "hash_function"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
]
, "stage": ["test", "utils"]
}
@@ -134,7 +135,7 @@
, ["@", "src", "src/buildtool/logging", "logging"]
, ["@", "src", "src/buildtool/storage", "storage"]
, ["@", "src", "src/buildtool/file_system", "file_system_manager"]
- , ["@", "src", "src/buildtool/compatibility", "compatibility"]
+ , ["@", "src", "src/buildtool/common", "protocol_traits"]
, "shell_quoting"
, "log_config"
, "test_env"
diff --git a/test/utils/hermeticity/test_storage_config.hpp b/test/utils/hermeticity/test_storage_config.hpp
index 4bcbc1be..4820782f 100644
--- a/test/utils/hermeticity/test_storage_config.hpp
+++ b/test/utils/hermeticity/test_storage_config.hpp
@@ -21,6 +21,7 @@
#include <utility> //std::move
#include "gsl/gsl"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
@@ -53,7 +54,7 @@ class TestStorageConfig final {
StorageConfig::Builder builder;
auto config = builder.SetBuildRoot(temp_dir->GetPath())
- .SetHashType(Compatibility::IsCompatible()
+ .SetHashType(ProtocolTraits::Instance().IsCompatible()
? HashFunction::Type::PlainSHA256
: HashFunction::Type::GitSHA1)
.Build();
diff --git a/test/utils/serve_service/main-serve.cpp b/test/utils/serve_service/main-serve.cpp
index 5a08eb89..2868e354 100644
--- a/test/utils/serve_service/main-serve.cpp
+++ b/test/utils/serve_service/main-serve.cpp
@@ -23,7 +23,7 @@
#include "catch2/catch_session.hpp"
#include "catch2/catch_test_macros.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/logging/log_level.hpp"
diff --git a/test/utils/test_env.hpp b/test/utils/test_env.hpp
index 30eba26c..fc6ac739 100644
--- a/test/utils/test_env.hpp
+++ b/test/utils/test_env.hpp
@@ -23,7 +23,7 @@
#include <string>
#include "src/buildtool/auth/authentication.hpp"
-#include "src/buildtool/compatibility/compatibility.hpp"
+#include "src/buildtool/common/protocol_traits.hpp"
#include "test/utils/logging/log_config.hpp"
[[nodiscard]] static inline auto ReadPlatformPropertiesFromEnv()
@@ -43,7 +43,7 @@
static inline void ReadCompatibilityFromEnv() {
auto* compatible = std::getenv("COMPATIBLE");
if (compatible != nullptr) {
- Compatibility::SetCompatible();
+ ProtocolTraits::Instance().SetCompatible();
}
}