diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-01-08 11:13:42 +0100 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-01-09 11:35:45 +0100 |
commit | 3987f571650c591ec895cb82745fac2c895c66d2 (patch) | |
tree | 4adf62897fd15811399847babc2a71d8f2e66132 /src/buildtool/graph_traverser/graph_traverser.hpp | |
parent | a5b0964d71fc943347d1e961b68929710a0f632d (diff) | |
download | justbuild-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.hpp | 32 |
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; |