diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-20 12:57:58 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-21 14:46:30 +0100 |
commit | 93fdd3beba1a44a2d3fd95d01cd2c844709936a8 (patch) | |
tree | 5f467a3e599003cff21451a4caeb7a9975dedf0b | |
parent | 185d67664ff4e6cd87a4190ce233bd0cf1a40f98 (diff) | |
download | justbuild-93fdd3beba1a44a2d3fd95d01cd2c844709936a8.tar.gz |
ByteStreamClient: Return ArtifactBlob from Read.
3 files changed, 10 insertions, 11 deletions
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 91da34ec..3cd9d4a8 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp @@ -400,10 +400,7 @@ auto BazelCasClient::IncrementalReadSingleBlob(std::string const& instance_name, auto BazelCasClient::ReadSingleBlob(std::string const& instance_name, ArtifactDigest const& digest) const noexcept -> std::optional<ArtifactBlob> { - if (auto data = stream_->Read(instance_name, digest)) { - return ArtifactBlob{digest, std::move(*data), /*is_exec=*/false}; - } - return std::nullopt; + return stream_->Read(instance_name, digest); } auto BazelCasClient::SplitBlob(HashFunction hash_function, diff --git a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp index 213e4793..a85fa565 100644 --- a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp @@ -104,7 +104,7 @@ class ByteStreamClient { [[nodiscard]] auto Read(std::string const& instance_name, ArtifactDigest const& digest) const noexcept - -> std::optional<std::string> { + -> std::optional<ArtifactBlob> { auto reader = IncrementalRead(instance_name, digest); std::string output{}; auto data = reader.Next(); @@ -115,7 +115,7 @@ class ByteStreamClient { if (not data) { return std::nullopt; } - return output; + return ArtifactBlob{digest, std::move(output), /*is_exec=*/false}; } [[nodiscard]] auto Write(std::string const& instance_name, diff --git a/test/buildtool/execution_api/bazel/bytestream_client.test.cpp b/test/buildtool/execution_api/bazel/bytestream_client.test.cpp index f607bc3a..20e00aee 100644 --- a/test/buildtool/execution_api/bazel/bytestream_client.test.cpp +++ b/test/buildtool/execution_api/bazel/bytestream_client.test.cpp @@ -15,6 +15,7 @@ #include "src/buildtool/execution_api/remote/bazel/bytestream_client.hpp" #include <cstddef> +#include <memory> #include <optional> #include <string> @@ -58,9 +59,9 @@ TEST_CASE("ByteStream Client: Transfer single blob", "[execution_api]") { ArtifactBlob const blob{digest, content, /*is_exec=*/false}; CHECK(stream.Write(instance_name, blob)); - auto const data = stream.Read(instance_name, digest); - - CHECK(data == content); + auto const downloaded_blob = stream.Read(instance_name, digest); + REQUIRE(downloaded_blob.has_value()); + CHECK(*downloaded_blob->data == content); } SECTION("Small blob with wrong digest") { @@ -94,8 +95,9 @@ TEST_CASE("ByteStream Client: Transfer single blob", "[execution_api]") { CHECK(stream.Write(instance_name, blob)); SECTION("Download large blob") { - auto const data = stream.Read(instance_name, digest); - CHECK(data == content); + auto const downloaded_blob = stream.Read(instance_name, digest); + REQUIRE(downloaded_blob.has_value()); + CHECK(*downloaded_blob->data == content); } SECTION("Incrementally download large blob") { |