summaryrefslogtreecommitdiff
path: root/src/buildtool/graph_traverser/graph_traverser.hpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-01-08 11:13:42 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-01-09 11:35:45 +0100
commit3987f571650c591ec895cb82745fac2c895c66d2 (patch)
tree4adf62897fd15811399847babc2a71d8f2e66132 /src/buildtool/graph_traverser/graph_traverser.hpp
parenta5b0964d71fc943347d1e961b68929710a0f632d (diff)
downloadjustbuild-3987f571650c591ec895cb82745fac2c895c66d2.tar.gz
Refactor GraphTraverser to take in platform properties and dispatch list
In order for the serve endpoint to correctly dispatch a build to the correct remote-execution endpoint, the platform properties and dispatch list for a build need to be passed explicitly to the executor (via the graph traverser instance) instead of always being taken from the RemoteExecutionConfig struct. This commit implements these changes, including updating existing tests accordingly.
Diffstat (limited to 'src/buildtool/graph_traverser/graph_traverser.hpp')
-rw-r--r--src/buildtool/graph_traverser/graph_traverser.hpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp
index 205bac32..611ea3e0 100644
--- a/src/buildtool/graph_traverser/graph_traverser.hpp
+++ b/src/buildtool/graph_traverser/graph_traverser.hpp
@@ -26,6 +26,7 @@
#include <thread>
#include <unordered_map>
#include <utility>
+#include <vector>
#include "fmt/core.h"
#include "gsl/gsl"
@@ -69,21 +70,33 @@ class GraphTraverser {
bool failed_artifacts;
};
- explicit GraphTraverser(CommandLineArguments clargs,
- gsl::not_null<RepositoryConfig*> const& repo_config)
+ explicit GraphTraverser(
+ CommandLineArguments clargs,
+ gsl::not_null<RepositoryConfig*> const& repo_config,
+ std::map<std::string, std::string> platform_properties,
+ std::vector<std::pair<std::map<std::string, std::string>,
+ ServerAddress>> dispatch_list)
: clargs_{std::move(clargs)},
repo_config_{repo_config},
+ platform_properties_{std::move(platform_properties)},
+ dispatch_list_{std::move(dispatch_list)},
local_api_{CreateExecutionApi(std::nullopt,
std::make_optional(repo_config))},
remote_api_{CreateExecutionApi(RemoteExecutionConfig::RemoteAddress(),
std::make_optional(repo_config))},
reporter_{[](auto done, auto cv) {}} {}
- explicit GraphTraverser(CommandLineArguments clargs,
- gsl::not_null<RepositoryConfig*> const& repo_config,
- progress_reporter_t reporter)
+ explicit GraphTraverser(
+ CommandLineArguments clargs,
+ gsl::not_null<RepositoryConfig*> const& repo_config,
+ std::map<std::string, std::string> platform_properties,
+ std::vector<std::pair<std::map<std::string, std::string>,
+ ServerAddress>> dispatch_list,
+ progress_reporter_t reporter)
: clargs_{std::move(clargs)},
repo_config_{repo_config},
+ platform_properties_{std::move(platform_properties)},
+ dispatch_list_{std::move(dispatch_list)},
local_api_{CreateExecutionApi(std::nullopt,
std::make_optional(repo_config))},
remote_api_{CreateExecutionApi(RemoteExecutionConfig::RemoteAddress(),
@@ -230,6 +243,9 @@ class GraphTraverser {
private:
CommandLineArguments const clargs_;
gsl::not_null<RepositoryConfig*> repo_config_;
+ std::map<std::string, std::string> platform_properties_;
+ std::vector<std::pair<std::map<std::string, std::string>, ServerAddress>>
+ dispatch_list_;
gsl::not_null<IExecutionApi::Ptr> const local_api_;
gsl::not_null<IExecutionApi::Ptr> const remote_api_;
progress_reporter_t reporter_;
@@ -350,7 +366,8 @@ class GraphTraverser {
Executor executor{repo_config_,
&(*local_api_),
&(*remote_api_),
- RemoteExecutionConfig::PlatformProperties(),
+ platform_properties_,
+ dispatch_list_,
clargs_.build.timeout};
bool traversing{};
std::atomic<bool> done = false;
@@ -380,7 +397,8 @@ class GraphTraverser {
&(*local_api_),
&(*remote_api_),
&(*api_cached),
- RemoteExecutionConfig::PlatformProperties(),
+ platform_properties_,
+ dispatch_list_,
clargs_.build.timeout};
bool traversing{false};
std::atomic<bool> done = false;