diff options
Diffstat (limited to 'src/buildtool/execution_api')
5 files changed, 14 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/common/execution_response.hpp b/src/buildtool/execution_api/common/execution_response.hpp index 6b313874..9899584f 100644 --- a/src/buildtool/execution_api/common/execution_response.hpp +++ b/src/buildtool/execution_api/common/execution_response.hpp @@ -58,6 +58,10 @@ class IExecutionResponse { [[nodiscard]] virtual auto StdOut() noexcept -> std::string = 0; + // Duration of the actual action execution, in seconds. The value may + // be 0 if the action was taken from cache. + [[nodiscard]] virtual auto ExecutionDuration() noexcept -> double = 0; + [[nodiscard]] virtual auto ActionDigest() const noexcept -> std::string const& = 0; diff --git a/src/buildtool/execution_api/local/local_action.hpp b/src/buildtool/execution_api/local/local_action.hpp index ea19632e..9667dbfb 100644 --- a/src/buildtool/execution_api/local/local_action.hpp +++ b/src/buildtool/execution_api/local/local_action.hpp @@ -49,6 +49,7 @@ class LocalAction final : public IExecutionAction { struct Output { bazel_re::ActionResult action; bool is_cached{}; + double duration{}; }; using OutputFileOrSymlink = diff --git a/src/buildtool/execution_api/local/local_response.hpp b/src/buildtool/execution_api/local/local_response.hpp index 60d37ae5..5c0dcd0a 100644 --- a/src/buildtool/execution_api/local/local_response.hpp +++ b/src/buildtool/execution_api/local/local_response.hpp @@ -77,6 +77,10 @@ class LocalResponse final : public IExecutionResponse { } auto IsCached() const noexcept -> bool final { return output_.is_cached; }; + auto ExecutionDuration() noexcept -> double final { + return output_.duration; + } + auto ActionDigest() const noexcept -> std::string const& final { return action_id_; } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp index 1d4dcf4a..3b94e217 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp @@ -41,6 +41,7 @@ class BazelExecutionClient { struct ExecutionOutput { bazel_re::ActionResult action_result; bool cached_result{}; + double duration{}; grpc::Status status{}; std::unordered_map<std::string, bazel_re::Digest> server_logs{}; std::string message{}; diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.hpp b/src/buildtool/execution_api/remote/bazel/bazel_response.hpp index e51bd46a..b24763e0 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_response.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_response.hpp @@ -59,6 +59,10 @@ class BazelResponse final : public IExecutionResponse { return output_.cached_result; }; + auto ExecutionDuration() noexcept -> double final { + return output_.duration; + }; + auto ActionDigest() const noexcept -> std::string const& final { return action_id_; } |