From e6f3f1d232cf8c115fb3ca16907e66fb7885415c Mon Sep 17 00:00:00 2001 From: Shubham Kaushal Date: Sat, 19 Jul 2025 20:40:51 +0000 Subject: [PATCH 1/6] adding otel tracing decorator for client_download_file --- google/cloud/storage/client.cc | 4 +-- .../cloud/storage/internal/connection_impl.cc | 22 +++++++++++----- .../cloud/storage/internal/connection_impl.h | 2 ++ .../storage/internal/storage_connection.h | 4 +++ .../internal/storage_connection_test.cc | 7 +++++ .../storage/internal/tracing_connection.cc | 8 ++++++ .../storage/internal/tracing_connection.h | 2 ++ .../internal/tracing_connection_test.cc | 26 +++++++++++++++++++ google/cloud/storage/testing/mock_client.h | 2 ++ 9 files changed, 68 insertions(+), 9 deletions(-) diff --git a/google/cloud/storage/client.cc b/google/cloud/storage/client.cc index 20054ee9097ec..51b6e33234afb 100644 --- a/google/cloud/storage/client.cc +++ b/google/cloud/storage/client.cc @@ -97,9 +97,7 @@ ObjectWriteStream Client::WriteObjectImpl( error_stream.Close(); return error_stream; } - auto const& current = google::cloud::internal::CurrentOptions(); - auto const buffer_size = request.GetOption().value_or( - current.get()); + std::size_t const buffer_size = *connection_->WriteObjectBufferSize(request).value(); return ObjectWriteStream(std::make_unique( connection_, request, std::move(response->upload_id), response->committed_size, std::move(response->metadata), buffer_size, diff --git a/google/cloud/storage/internal/connection_impl.cc b/google/cloud/storage/internal/connection_impl.cc index 158dbdeb2e58d..d72feb9a5afab 100644 --- a/google/cloud/storage/internal/connection_impl.cc +++ b/google/cloud/storage/internal/connection_impl.cc @@ -769,9 +769,9 @@ StatusOr> StorageConnectionImpl::UploadFileSimple( return google::cloud::internal::InvalidArgumentError(std::move(os).str(), GCP_ERROR_INFO()); } - auto upload_size = (std::min)( - request.GetOption().value_or(file_size - upload_offset), - file_size - upload_offset); + auto upload_size = (std::min)(request.GetOption().value_or( + file_size - upload_offset), + file_size - upload_offset); std::ifstream is(file_name, std::ios::binary); if (!is.is_open()) { @@ -835,9 +835,9 @@ integrity checks using the DisableMD5Hash() and DisableCrc32cChecksum() options. GCP_ERROR_INFO()); } - auto upload_size = (std::min)( - request.GetOption().value_or(file_size - upload_offset), - file_size - upload_offset); + auto upload_size = (std::min)(request.GetOption().value_or( + file_size - upload_offset), + file_size - upload_offset); request.set_option(UploadContentLength(upload_size)); } auto source = std::make_unique(file_name, std::ios::binary); @@ -854,6 +854,16 @@ integrity checks using the DisableMD5Hash() and DisableCrc32cChecksum() options. return std::unique_ptr(std::move(source)); } +StatusOr> +StorageConnectionImpl::WriteObjectBufferSize( + ResumableUploadRequest const& request) { + auto const& current = google::cloud::internal::CurrentOptions(); + std::size_t const buffer_size = + request.GetOption().value_or( + current.get()); + return std::make_unique(buffer_size); +} + StatusOr StorageConnectionImpl::ListBucketAcl( ListBucketAclRequest const& request) { auto const idempotency = current_idempotency_policy().IsIdempotent(request) diff --git a/google/cloud/storage/internal/connection_impl.h b/google/cloud/storage/internal/connection_impl.h index c42d806f78d84..095f2604524ff 100644 --- a/google/cloud/storage/internal/connection_impl.h +++ b/google/cloud/storage/internal/connection_impl.h @@ -104,6 +104,8 @@ class StorageConnectionImpl InsertObjectMediaRequest& request) override; StatusOr> UploadFileResumable( std::string const& file_name, ResumableUploadRequest& request) override; + StatusOr> WriteObjectBufferSize( + ResumableUploadRequest const& request) override; StatusOr ListBucketAcl( ListBucketAclRequest const& request) override; diff --git a/google/cloud/storage/internal/storage_connection.h b/google/cloud/storage/internal/storage_connection.h index e33638fad695f..89817a3bd12fa 100644 --- a/google/cloud/storage/internal/storage_connection.h +++ b/google/cloud/storage/internal/storage_connection.h @@ -118,6 +118,10 @@ class StorageConnection { std::string const&, ResumableUploadRequest&) { return Status(StatusCode::kUnimplemented, "unimplemented"); } + virtual StatusOr> WriteObjectBufferSize( + ResumableUploadRequest const&) { + return Status(StatusCode::kUnimplemented, "unimplemented"); + } ///@} ///@{ diff --git a/google/cloud/storage/internal/storage_connection_test.cc b/google/cloud/storage/internal/storage_connection_test.cc index 6e56c82a1dbdb..9ddfb93e1a8d3 100644 --- a/google/cloud/storage/internal/storage_connection_test.cc +++ b/google/cloud/storage/internal/storage_connection_test.cc @@ -160,6 +160,13 @@ TEST(StorageConnectionTest, UploadFileResumableUnimplemented) { EXPECT_THAT(response, StatusIs(StatusCode::kUnimplemented)); } +TEST(StorageConnectionTest, WriteObjectBufferSizeUnimplemented) { + TestStorageConnection connection; + ResumableUploadRequest request; + auto response = connection.WriteObjectBufferSize(request); + EXPECT_THAT(response, StatusIs(StatusCode::kUnimplemented)); +} + } // namespace } // namespace internal GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/storage/internal/tracing_connection.cc b/google/cloud/storage/internal/tracing_connection.cc index 661a1a2c5d976..0403840409f2e 100644 --- a/google/cloud/storage/internal/tracing_connection.cc +++ b/google/cloud/storage/internal/tracing_connection.cc @@ -255,6 +255,14 @@ StatusOr> TracingConnection::UploadFileResumable( impl_->UploadFileResumable(file_name, request)); } +StatusOr> TracingConnection::WriteObjectBufferSize( + storage::internal::ResumableUploadRequest const& request) { + auto span = + internal::MakeSpan("storage::Client::WriteObject/WriteObjectBufferSize"); + auto scope = opentelemetry::trace::Scope(span); + return internal::EndSpan(*span, impl_->WriteObjectBufferSize(request)); +} + StatusOr TracingConnection::ListBucketAcl( storage::internal::ListBucketAclRequest const& request) { diff --git a/google/cloud/storage/internal/tracing_connection.h b/google/cloud/storage/internal/tracing_connection.h index 60bf303074214..7585747721c62 100644 --- a/google/cloud/storage/internal/tracing_connection.h +++ b/google/cloud/storage/internal/tracing_connection.h @@ -104,6 +104,8 @@ class TracingConnection : public storage::internal::StorageConnection { StatusOr> UploadFileResumable( std::string const& file_name, storage::internal::ResumableUploadRequest& request) override; + StatusOr> WriteObjectBufferSize( + storage::internal::ResumableUploadRequest const&) override; StatusOr ListBucketAcl( storage::internal::ListBucketAclRequest const& request) override; diff --git a/google/cloud/storage/internal/tracing_connection_test.cc b/google/cloud/storage/internal/tracing_connection_test.cc index 5e6f7dc47f261..a08d9000e08e4 100644 --- a/google/cloud/storage/internal/tracing_connection_test.cc +++ b/google/cloud/storage/internal/tracing_connection_test.cc @@ -746,6 +746,32 @@ TEST(TracingClientTest, UploadFileResumable) { "gl-cpp.status_code", code_str))))); } +TEST(TracingClientTest, WriteObjectBufferSize) { + auto span_catcher = InstallSpanCatcher(); + auto mock = std::make_shared(); + EXPECT_CALL(*mock, WriteObjectBufferSize).WillOnce([](auto const&) { + EXPECT_TRUE(ThereIsAnActiveSpan()); + return PermanentError(); + }); + auto under_test = TracingConnection(mock); + storage::internal::ResumableUploadRequest request("test-bucket", + "test-object"); + auto actual = under_test.WriteObjectBufferSize(request); + + auto const code = PermanentError().code(); + auto const code_str = StatusCodeToString(code); + auto const msg = PermanentError().message(); + EXPECT_THAT(actual, StatusIs(code)); + EXPECT_THAT( + span_catcher->GetSpans(), + ElementsAre( + AllOf(SpanNamed("storage::Client::WriteObject/WriteObjectBufferSize"), + SpanHasInstrumentationScope(), SpanKindIsClient(), + SpanWithStatus(opentelemetry::trace::StatusCode::kError, msg), + SpanHasAttributes(OTelAttribute( + "gl-cpp.status_code", code_str))))); +} + TEST(TracingClientTest, ListBucketAcl) { auto span_catcher = InstallSpanCatcher(); auto mock = std::make_shared(); diff --git a/google/cloud/storage/testing/mock_client.h b/google/cloud/storage/testing/mock_client.h index 5aa1d2fa05de5..6b4305a320442 100644 --- a/google/cloud/storage/testing/mock_client.h +++ b/google/cloud/storage/testing/mock_client.h @@ -108,6 +108,8 @@ class MockClient : public google::cloud::storage::internal::StorageConnection { MOCK_METHOD(StatusOr>, UploadFileResumable, (std::string const&, storage::internal::ResumableUploadRequest&), (override)); + MOCK_METHOD(StatusOr>, WriteObjectBufferSize, + (storage::internal::ResumableUploadRequest const&), (override)); MOCK_METHOD(StatusOr, ListBucketAcl, (internal::ListBucketAclRequest const&), (override)); From 176c89c5eaaf99d67c8dec716a2a278238755a5e Mon Sep 17 00:00:00 2001 From: Shubham Kaushal Date: Sun, 20 Jul 2025 07:00:51 +0000 Subject: [PATCH 2/6] fix linting --- google/cloud/storage/client.cc | 3 ++- .../storage/examples/storage_client_mock_samples.cc | 4 ++++ google/cloud/storage/internal/connection_impl.cc | 9 +++------ google/cloud/storage/internal/connection_impl.h | 2 +- google/cloud/storage/internal/storage_connection.h | 2 +- google/cloud/storage/internal/tracing_connection.cc | 2 +- google/cloud/storage/internal/tracing_connection.h | 2 +- google/cloud/storage/testing/mock_client.h | 2 +- 8 files changed, 14 insertions(+), 12 deletions(-) diff --git a/google/cloud/storage/client.cc b/google/cloud/storage/client.cc index 51b6e33234afb..ca13bb5b9eabf 100644 --- a/google/cloud/storage/client.cc +++ b/google/cloud/storage/client.cc @@ -97,7 +97,8 @@ ObjectWriteStream Client::WriteObjectImpl( error_stream.Close(); return error_stream; } - std::size_t const buffer_size = *connection_->WriteObjectBufferSize(request).value(); + std::size_t const buffer_size = + connection_->WriteObjectBufferSize(request).value(); return ObjectWriteStream(std::make_unique( connection_, request, std::move(response->upload_id), response->committed_size, std::move(response->metadata), buffer_size, diff --git a/google/cloud/storage/examples/storage_client_mock_samples.cc b/google/cloud/storage/examples/storage_client_mock_samples.cc index bb8b050f6c6db..3b6e26f413e91 100644 --- a/google/cloud/storage/examples/storage_client_mock_samples.cc +++ b/google/cloud/storage/examples/storage_client_mock_samples.cc @@ -83,6 +83,8 @@ TEST(StorageMockingSamples, MockWriteObject) { using gcs::internal::QueryResumableUploadResponse; EXPECT_CALL(*mock, CreateResumableUpload) .WillOnce(Return(CreateResumableUploadResponse{"test-only-upload-id"})); + EXPECT_CALL(*mock, WriteObjectBufferSize) + .WillOnce(Return(google::cloud::make_status_or(std::size_t(1)))); EXPECT_CALL(*mock, UploadChunk) .WillOnce(Return(QueryResumableUploadResponse{ /*.committed_size=*/absl::nullopt, @@ -139,6 +141,8 @@ TEST(StorageMockingSamples, MockWriteObjectFailure) { using gcs::internal::QueryResumableUploadResponse; EXPECT_CALL(*mock, CreateResumableUpload) .WillOnce(Return(CreateResumableUploadResponse{"test-only-upload-id"})); + EXPECT_CALL(*mock, WriteObjectBufferSize) + .WillOnce(Return(google::cloud::make_status_or(std::size_t(1)))); EXPECT_CALL(*mock, UploadChunk) .WillOnce(Return(google::cloud::Status{ google::cloud::StatusCode::kInvalidArgument, "Invalid Argument"})); diff --git a/google/cloud/storage/internal/connection_impl.cc b/google/cloud/storage/internal/connection_impl.cc index d72feb9a5afab..b36f197c3d540 100644 --- a/google/cloud/storage/internal/connection_impl.cc +++ b/google/cloud/storage/internal/connection_impl.cc @@ -854,14 +854,11 @@ integrity checks using the DisableMD5Hash() and DisableCrc32cChecksum() options. return std::unique_ptr(std::move(source)); } -StatusOr> -StorageConnectionImpl::WriteObjectBufferSize( +StatusOr StorageConnectionImpl::WriteObjectBufferSize( ResumableUploadRequest const& request) { auto const& current = google::cloud::internal::CurrentOptions(); - std::size_t const buffer_size = - request.GetOption().value_or( - current.get()); - return std::make_unique(buffer_size); + return request.GetOption().value_or( + current.get()); } StatusOr StorageConnectionImpl::ListBucketAcl( diff --git a/google/cloud/storage/internal/connection_impl.h b/google/cloud/storage/internal/connection_impl.h index 095f2604524ff..f9c8116bcd6bc 100644 --- a/google/cloud/storage/internal/connection_impl.h +++ b/google/cloud/storage/internal/connection_impl.h @@ -104,7 +104,7 @@ class StorageConnectionImpl InsertObjectMediaRequest& request) override; StatusOr> UploadFileResumable( std::string const& file_name, ResumableUploadRequest& request) override; - StatusOr> WriteObjectBufferSize( + StatusOr WriteObjectBufferSize( ResumableUploadRequest const& request) override; StatusOr ListBucketAcl( diff --git a/google/cloud/storage/internal/storage_connection.h b/google/cloud/storage/internal/storage_connection.h index 89817a3bd12fa..2ed154263e419 100644 --- a/google/cloud/storage/internal/storage_connection.h +++ b/google/cloud/storage/internal/storage_connection.h @@ -118,7 +118,7 @@ class StorageConnection { std::string const&, ResumableUploadRequest&) { return Status(StatusCode::kUnimplemented, "unimplemented"); } - virtual StatusOr> WriteObjectBufferSize( + virtual StatusOr WriteObjectBufferSize( ResumableUploadRequest const&) { return Status(StatusCode::kUnimplemented, "unimplemented"); } diff --git a/google/cloud/storage/internal/tracing_connection.cc b/google/cloud/storage/internal/tracing_connection.cc index 0403840409f2e..ba4d18968f51d 100644 --- a/google/cloud/storage/internal/tracing_connection.cc +++ b/google/cloud/storage/internal/tracing_connection.cc @@ -255,7 +255,7 @@ StatusOr> TracingConnection::UploadFileResumable( impl_->UploadFileResumable(file_name, request)); } -StatusOr> TracingConnection::WriteObjectBufferSize( +StatusOr TracingConnection::WriteObjectBufferSize( storage::internal::ResumableUploadRequest const& request) { auto span = internal::MakeSpan("storage::Client::WriteObject/WriteObjectBufferSize"); diff --git a/google/cloud/storage/internal/tracing_connection.h b/google/cloud/storage/internal/tracing_connection.h index 7585747721c62..2dbfed66c5212 100644 --- a/google/cloud/storage/internal/tracing_connection.h +++ b/google/cloud/storage/internal/tracing_connection.h @@ -104,7 +104,7 @@ class TracingConnection : public storage::internal::StorageConnection { StatusOr> UploadFileResumable( std::string const& file_name, storage::internal::ResumableUploadRequest& request) override; - StatusOr> WriteObjectBufferSize( + StatusOr WriteObjectBufferSize( storage::internal::ResumableUploadRequest const&) override; StatusOr ListBucketAcl( diff --git a/google/cloud/storage/testing/mock_client.h b/google/cloud/storage/testing/mock_client.h index 6b4305a320442..f9b89597af6df 100644 --- a/google/cloud/storage/testing/mock_client.h +++ b/google/cloud/storage/testing/mock_client.h @@ -108,7 +108,7 @@ class MockClient : public google::cloud::storage::internal::StorageConnection { MOCK_METHOD(StatusOr>, UploadFileResumable, (std::string const&, storage::internal::ResumableUploadRequest&), (override)); - MOCK_METHOD(StatusOr>, WriteObjectBufferSize, + MOCK_METHOD(StatusOr, WriteObjectBufferSize, (storage::internal::ResumableUploadRequest const&), (override)); MOCK_METHOD(StatusOr, ListBucketAcl, From 3bfae088863c741ac200ef9c883541834b663e57 Mon Sep 17 00:00:00 2001 From: Shubham Kaushal Date: Sun, 20 Jul 2025 07:07:56 +0000 Subject: [PATCH 3/6] fix linting --- google/cloud/storage/internal/connection_impl.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/google/cloud/storage/internal/connection_impl.cc b/google/cloud/storage/internal/connection_impl.cc index b36f197c3d540..69e6fde837f3b 100644 --- a/google/cloud/storage/internal/connection_impl.cc +++ b/google/cloud/storage/internal/connection_impl.cc @@ -769,9 +769,9 @@ StatusOr> StorageConnectionImpl::UploadFileSimple( return google::cloud::internal::InvalidArgumentError(std::move(os).str(), GCP_ERROR_INFO()); } - auto upload_size = (std::min)(request.GetOption().value_or( - file_size - upload_offset), - file_size - upload_offset); + auto upload_size = (std::min)( + request.GetOption().value_or(file_size - upload_offset), + file_size - upload_offset); std::ifstream is(file_name, std::ios::binary); if (!is.is_open()) { @@ -835,9 +835,9 @@ integrity checks using the DisableMD5Hash() and DisableCrc32cChecksum() options. GCP_ERROR_INFO()); } - auto upload_size = (std::min)(request.GetOption().value_or( - file_size - upload_offset), - file_size - upload_offset); + auto upload_size = (std::min)( + request.GetOption().value_or(file_size - upload_offset), + file_size - upload_offset); request.set_option(UploadContentLength(upload_size)); } auto source = std::make_unique(file_name, std::ios::binary); From d1f6e2c8f9663ff0d1eddf4dda9484c9eb1f124c Mon Sep 17 00:00:00 2001 From: Shubham Kaushal Date: Thu, 31 Jul 2025 08:32:26 +0000 Subject: [PATCH 4/6] changing approach to generate the traces --- google/cloud/storage/client.cc | 17 ++++++---------- .../examples/storage_client_mock_samples.cc | 15 ++++++++++---- .../cloud/storage/internal/connection_impl.cc | 17 +++++++++++++++- .../cloud/storage/internal/connection_impl.h | 4 ++++ .../internal/object_write_streambuf.cc | 1 + .../storage/internal/object_write_streambuf.h | 18 ++++++++++++++++- .../storage/internal/storage_connection.cc | 10 ++++++++++ .../storage/internal/storage_connection.h | 6 ++++++ .../internal/storage_connection_test.cc | 6 +++++- .../storage/internal/tracing_connection.cc | 9 +++++++-- .../storage/internal/tracing_connection.h | 5 +++++ .../internal/tracing_connection_test.cc | 20 +++++++++++-------- google/cloud/storage/testing/mock_client.h | 4 ++++ ...object_write_streambuf_integration_test.cc | 11 +++++++--- 14 files changed, 112 insertions(+), 31 deletions(-) diff --git a/google/cloud/storage/client.cc b/google/cloud/storage/client.cc index ca13bb5b9eabf..f674c670a899f 100644 --- a/google/cloud/storage/client.cc +++ b/google/cloud/storage/client.cc @@ -97,19 +97,14 @@ ObjectWriteStream Client::WriteObjectImpl( error_stream.Close(); return error_stream; } - std::size_t const buffer_size = - connection_->WriteObjectBufferSize(request).value(); + internal::ObjectWriteStreamParams params = + connection_->SetupObjectWriteStream(request).value(); return ObjectWriteStream(std::make_unique( connection_, request, std::move(response->upload_id), - response->committed_size, std::move(response->metadata), buffer_size, - internal::CreateHashFunction(request), - internal::HashValues{ - request.GetOption().value_or(""), - request.GetOption().value_or(""), - }, - internal::CreateHashValidator(request), - request.GetOption().value_or( - AutoFinalizeConfig::kEnabled))); + response->committed_size, std::move(response->metadata), + params.buffer_size, std::move(params.hash_function), + std::move(params.known_hashes), std::move(params.hash_validator), + params.auto_finalize)); } bool Client::UseSimpleUpload(std::string const& file_name, std::size_t& size) { diff --git a/google/cloud/storage/examples/storage_client_mock_samples.cc b/google/cloud/storage/examples/storage_client_mock_samples.cc index 3b6e26f413e91..6fab8d2137668 100644 --- a/google/cloud/storage/examples/storage_client_mock_samples.cc +++ b/google/cloud/storage/examples/storage_client_mock_samples.cc @@ -14,6 +14,7 @@ #include "google/cloud/storage/client.h" #include "google/cloud/storage/internal/object_requests.h" +#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/testing/mock_client.h" #include #include @@ -83,8 +84,11 @@ TEST(StorageMockingSamples, MockWriteObject) { using gcs::internal::QueryResumableUploadResponse; EXPECT_CALL(*mock, CreateResumableUpload) .WillOnce(Return(CreateResumableUploadResponse{"test-only-upload-id"})); - EXPECT_CALL(*mock, WriteObjectBufferSize) - .WillOnce(Return(google::cloud::make_status_or(std::size_t(1)))); + EXPECT_CALL(*mock, SetupObjectWriteStream) + .WillOnce([](gcs::internal::ResumableUploadRequest const&) { + return google::cloud::make_status_or( + gcs::internal::ObjectWriteStreamParams{}); + }); EXPECT_CALL(*mock, UploadChunk) .WillOnce(Return(QueryResumableUploadResponse{ /*.committed_size=*/absl::nullopt, @@ -141,8 +145,11 @@ TEST(StorageMockingSamples, MockWriteObjectFailure) { using gcs::internal::QueryResumableUploadResponse; EXPECT_CALL(*mock, CreateResumableUpload) .WillOnce(Return(CreateResumableUploadResponse{"test-only-upload-id"})); - EXPECT_CALL(*mock, WriteObjectBufferSize) - .WillOnce(Return(google::cloud::make_status_or(std::size_t(1)))); + EXPECT_CALL(*mock, SetupObjectWriteStream) + .WillOnce([](gcs::internal::ResumableUploadRequest const&) { + return google::cloud::make_status_or( + gcs::internal::ObjectWriteStreamParams{}); + }); EXPECT_CALL(*mock, UploadChunk) .WillOnce(Return(google::cloud::Status{ google::cloud::StatusCode::kInvalidArgument, "Invalid Argument"})); diff --git a/google/cloud/storage/internal/connection_impl.cc b/google/cloud/storage/internal/connection_impl.cc index 20fa9b3989141..c1cacef4dfb3d 100644 --- a/google/cloud/storage/internal/connection_impl.cc +++ b/google/cloud/storage/internal/connection_impl.cc @@ -13,6 +13,7 @@ // limitations under the License. #include "google/cloud/storage/internal/connection_impl.h" +#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/internal/retry_object_read_source.h" #include "google/cloud/storage/parallel_upload.h" #include "google/cloud/internal/filesystem.h" @@ -855,6 +856,7 @@ integrity checks using the DisableMD5Hash() and DisableCrc32cChecksum() options. return std::unique_ptr(std::move(source)); } +<<<<<<< HEAD StatusOr StorageConnectionImpl::ExecuteParallelUploadFile( std::vector threads, std::vector shards, bool ignore_cleanup_failures) { @@ -870,10 +872,23 @@ StatusOr StorageConnectionImpl::ExecuteParallelUploadFile( } StatusOr StorageConnectionImpl::WriteObjectBufferSize( +======= +StatusOr StorageConnectionImpl::SetupObjectWriteStream( +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) ResumableUploadRequest const& request) { auto const& current = google::cloud::internal::CurrentOptions(); - return request.GetOption().value_or( + ObjectWriteStreamParams params; + params.buffer_size = request.GetOption().value_or( current.get()); + params.hash_function = internal::CreateHashFunction(request); + params.known_hashes = { + request.GetOption().value_or(""), + request.GetOption().value_or(""), + }; + params.hash_validator = internal::CreateHashValidator(request); + params.auto_finalize = + request.GetOption().value_or(AutoFinalizeConfig::kEnabled); + return params; } StatusOr StorageConnectionImpl::ListBucketAcl( diff --git a/google/cloud/storage/internal/connection_impl.h b/google/cloud/storage/internal/connection_impl.h index 007e67125747e..50712678cb40c 100644 --- a/google/cloud/storage/internal/connection_impl.h +++ b/google/cloud/storage/internal/connection_impl.h @@ -104,11 +104,15 @@ class StorageConnectionImpl InsertObjectMediaRequest& request) override; StatusOr> UploadFileResumable( std::string const& file_name, ResumableUploadRequest& request) override; +<<<<<<< HEAD StatusOr ExecuteParallelUploadFile( std::vector threads, std::vector shards, bool ignore_cleanup_failures) override; StatusOr WriteObjectBufferSize( +======= + StatusOr SetupObjectWriteStream( +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) ResumableUploadRequest const& request) override; StatusOr ListBucketAcl( diff --git a/google/cloud/storage/internal/object_write_streambuf.cc b/google/cloud/storage/internal/object_write_streambuf.cc index 486b4e15b2b03..32bba0ecfaeb7 100644 --- a/google/cloud/storage/internal/object_write_streambuf.cc +++ b/google/cloud/storage/internal/object_write_streambuf.cc @@ -13,6 +13,7 @@ // limitations under the License. #include "google/cloud/storage/internal/object_write_streambuf.h" +#include "google/cloud/storage/internal/storage_connection.h" #include "google/cloud/storage/internal/object_requests.h" #include "google/cloud/storage/version.h" #include "google/cloud/internal/make_status.h" diff --git a/google/cloud/storage/internal/object_write_streambuf.h b/google/cloud/storage/internal/object_write_streambuf.h index 9a7ea99d28e4e..1950f05c0c4e1 100644 --- a/google/cloud/storage/internal/object_write_streambuf.h +++ b/google/cloud/storage/internal/object_write_streambuf.h @@ -18,8 +18,9 @@ #include "google/cloud/storage/auto_finalize.h" #include "google/cloud/storage/internal/hash_function.h" #include "google/cloud/storage/internal/hash_validator.h" -#include "google/cloud/storage/internal/storage_connection.h" +#include "google/cloud/storage/internal/object_requests.h" #include "google/cloud/storage/version.h" +#include "google/cloud/options.h" #include #include #include @@ -31,6 +32,21 @@ namespace storage { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class ObjectWriteStream; namespace internal { +class StorageConnection; + +/** + * The parameters to construct an `ObjectWriteStreambuf`. + * + * This is an implementation detail, only used by the library to create the + * streambuf. + */ +struct ObjectWriteStreamParams { + std::size_t buffer_size; + std::unique_ptr hash_function; + HashValues known_hashes; + std::unique_ptr hash_validator; + AutoFinalizeConfig auto_finalize; +}; /** * Defines a compilation barrier for libcurl. diff --git a/google/cloud/storage/internal/storage_connection.cc b/google/cloud/storage/internal/storage_connection.cc index 793f88abeb021..44538dbfef46f 100644 --- a/google/cloud/storage/internal/storage_connection.cc +++ b/google/cloud/storage/internal/storage_connection.cc @@ -13,7 +13,11 @@ // limitations under the License. #include "google/cloud/storage/internal/storage_connection.h" +<<<<<<< HEAD #include "google/cloud/storage/parallel_upload.h" +======= +#include "google/cloud/storage/internal/object_write_streambuf.h" +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) #include #include @@ -45,6 +49,7 @@ StatusOr CreateOrResume( std::move(response->payload)}; } +<<<<<<< HEAD StatusOr StorageConnection::ExecuteParallelUploadFile( std::vector, // NOLINT(performance-unnecessary-value-param) std::vector< @@ -53,6 +58,11 @@ StatusOr StorageConnection::ExecuteParallelUploadFile( return Status( StatusCode::kUnimplemented, "ExecuteParallelUploadFile() is not implemented by this Object"); +======= +StatusOr StorageConnection::SetupObjectWriteStream( + ResumableUploadRequest const&) { + return Status(StatusCode::kUnimplemented, "unimplemented"); +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) } } // namespace internal diff --git a/google/cloud/storage/internal/storage_connection.h b/google/cloud/storage/internal/storage_connection.h index d6e6a7394b18b..2b522e60528a5 100644 --- a/google/cloud/storage/internal/storage_connection.h +++ b/google/cloud/storage/internal/storage_connection.h @@ -21,6 +21,7 @@ #include "google/cloud/storage/internal/bucket_requests.h" #include "google/cloud/storage/internal/default_object_acl_requests.h" #include "google/cloud/storage/internal/empty_response.h" +#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/internal/hash_validator.h" #include "google/cloud/storage/internal/hmac_key_requests.h" #include "google/cloud/storage/internal/notification_requests.h" @@ -120,12 +121,17 @@ class StorageConnection { std::string const&, ResumableUploadRequest&) { return Status(StatusCode::kUnimplemented, "unimplemented"); } +<<<<<<< HEAD virtual StatusOr ExecuteParallelUploadFile( std::vector, std::vector, bool); virtual StatusOr WriteObjectBufferSize( ResumableUploadRequest const&) { return Status(StatusCode::kUnimplemented, "unimplemented"); } +======= + virtual StatusOr SetupObjectWriteStream( + ResumableUploadRequest const&); +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) ///@} ///@{ diff --git a/google/cloud/storage/internal/storage_connection_test.cc b/google/cloud/storage/internal/storage_connection_test.cc index 88323ac50ef21..a8d34b3a4cb1b 100644 --- a/google/cloud/storage/internal/storage_connection_test.cc +++ b/google/cloud/storage/internal/storage_connection_test.cc @@ -161,6 +161,7 @@ TEST(StorageConnectionTest, UploadFileResumableUnimplemented) { EXPECT_THAT(response, StatusIs(StatusCode::kUnimplemented)); } +<<<<<<< HEAD TEST(StorageConnectionTest, ExecuteParallelUploadFileUnimplemented) { TestStorageConnection connection; std::vector threads; @@ -172,9 +173,12 @@ TEST(StorageConnectionTest, ExecuteParallelUploadFileUnimplemented) { } TEST(StorageConnectionTest, WriteObjectBufferSizeUnimplemented) { +======= +TEST(StorageConnectionTest, SetupObjectWriteStreamUnimplemented) { +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) TestStorageConnection connection; ResumableUploadRequest request; - auto response = connection.WriteObjectBufferSize(request); + auto response = connection.SetupObjectWriteStream(request); EXPECT_THAT(response, StatusIs(StatusCode::kUnimplemented)); } diff --git a/google/cloud/storage/internal/tracing_connection.cc b/google/cloud/storage/internal/tracing_connection.cc index 81e5c3b56b722..9119a591972b0 100644 --- a/google/cloud/storage/internal/tracing_connection.cc +++ b/google/cloud/storage/internal/tracing_connection.cc @@ -256,6 +256,7 @@ StatusOr> TracingConnection::UploadFileResumable( impl_->UploadFileResumable(file_name, request)); } +<<<<<<< HEAD StatusOr TracingConnection::ExecuteParallelUploadFile( std::vector threads, std::vector shards, @@ -269,11 +270,15 @@ StatusOr TracingConnection::ExecuteParallelUploadFile( } StatusOr TracingConnection::WriteObjectBufferSize( +======= +StatusOr +TracingConnection::SetupObjectWriteStream( +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) storage::internal::ResumableUploadRequest const& request) { auto span = - internal::MakeSpan("storage::Client::WriteObject/WriteObjectBufferSize"); + internal::MakeSpan("storage::Client::WriteObject/SetupObjectWriteStream"); auto scope = opentelemetry::trace::Scope(span); - return internal::EndSpan(*span, impl_->WriteObjectBufferSize(request)); + return internal::EndSpan(*span, impl_->SetupObjectWriteStream(request)); } StatusOr diff --git a/google/cloud/storage/internal/tracing_connection.h b/google/cloud/storage/internal/tracing_connection.h index 34d179363a8db..52849a1f80e45 100644 --- a/google/cloud/storage/internal/tracing_connection.h +++ b/google/cloud/storage/internal/tracing_connection.h @@ -105,6 +105,7 @@ class TracingConnection : public storage::internal::StorageConnection { StatusOr> UploadFileResumable( std::string const& file_name, storage::internal::ResumableUploadRequest& request) override; +<<<<<<< HEAD StatusOr ExecuteParallelUploadFile( std::vector threads, std::vector shards, @@ -115,6 +116,10 @@ class TracingConnection : public storage::internal::StorageConnection { std::vector threads, std::vector shards, bool ignore_cleanup_failures) override; +======= + StatusOr SetupObjectWriteStream( + storage::internal::ResumableUploadRequest const& request) override; +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) StatusOr ListBucketAcl( storage::internal::ListBucketAclRequest const& request) override; diff --git a/google/cloud/storage/internal/tracing_connection_test.cc b/google/cloud/storage/internal/tracing_connection_test.cc index d691daa94b526..40400a03bda01 100644 --- a/google/cloud/storage/internal/tracing_connection_test.cc +++ b/google/cloud/storage/internal/tracing_connection_test.cc @@ -746,6 +746,7 @@ TEST(TracingClientTest, UploadFileResumable) { "gl-cpp.status_code", code_str))))); } +<<<<<<< HEAD TEST(TracingClientTest, ExecuteParallelUploadFile) { auto span_catcher = InstallSpanCatcher(); auto mock = std::make_shared(); @@ -782,16 +783,19 @@ TEST(TracingClientTest, ExecuteParallelUploadFile) { } TEST(TracingClientTest, WriteObjectBufferSize) { +======= +TEST(TracingClientTest, SetupObjectWriteStream) { +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) auto span_catcher = InstallSpanCatcher(); auto mock = std::make_shared(); - EXPECT_CALL(*mock, WriteObjectBufferSize).WillOnce([](auto const&) { + EXPECT_CALL(*mock, SetupObjectWriteStream).WillOnce([](auto const&) { EXPECT_TRUE(ThereIsAnActiveSpan()); return PermanentError(); }); auto under_test = TracingConnection(mock); storage::internal::ResumableUploadRequest request("test-bucket", "test-object"); - auto actual = under_test.WriteObjectBufferSize(request); + auto actual = under_test.SetupObjectWriteStream(request); auto const code = PermanentError().code(); auto const code_str = StatusCodeToString(code); @@ -799,12 +803,12 @@ TEST(TracingClientTest, WriteObjectBufferSize) { EXPECT_THAT(actual, StatusIs(code)); EXPECT_THAT( span_catcher->GetSpans(), - ElementsAre( - AllOf(SpanNamed("storage::Client::WriteObject/WriteObjectBufferSize"), - SpanHasInstrumentationScope(), SpanKindIsClient(), - SpanWithStatus(opentelemetry::trace::StatusCode::kError, msg), - SpanHasAttributes(OTelAttribute( - "gl-cpp.status_code", code_str))))); + ElementsAre(AllOf( + SpanNamed("storage::Client::WriteObject/SetupObjectWriteStream"), + SpanHasInstrumentationScope(), SpanKindIsClient(), + SpanWithStatus(opentelemetry::trace::StatusCode::kError, msg), + SpanHasAttributes( + OTelAttribute("gl-cpp.status_code", code_str))))); } TEST(TracingClientTest, ListBucketAcl) { diff --git a/google/cloud/storage/testing/mock_client.h b/google/cloud/storage/testing/mock_client.h index a81542a979bdd..8f7c994e3217e 100644 --- a/google/cloud/storage/testing/mock_client.h +++ b/google/cloud/storage/testing/mock_client.h @@ -109,11 +109,15 @@ class MockClient : public google::cloud::storage::internal::StorageConnection { MOCK_METHOD(StatusOr>, UploadFileResumable, (std::string const&, storage::internal::ResumableUploadRequest&), (override)); +<<<<<<< HEAD MOCK_METHOD(StatusOr, ExecuteParallelUploadFile, (std::vector, std::vector, bool), (override)); MOCK_METHOD(StatusOr, WriteObjectBufferSize, +======= + MOCK_METHOD(StatusOr, SetupObjectWriteStream, +>>>>>>> 6b350ef5c6 (changing approach to generate the traces) (storage::internal::ResumableUploadRequest const&), (override)); MOCK_METHOD(StatusOr, ListBucketAcl, diff --git a/google/cloud/storage/tests/object_write_streambuf_integration_test.cc b/google/cloud/storage/tests/object_write_streambuf_integration_test.cc index 7de5d72dec925..98b3c7b72765d 100644 --- a/google/cloud/storage/tests/object_write_streambuf_integration_test.cc +++ b/google/cloud/storage/tests/object_write_streambuf_integration_test.cc @@ -56,11 +56,16 @@ class ObjectWriteStreambufIntegrationTest ASSERT_STATUS_OK(create); auto constexpr kTestUploadBufferSize = 16 * 1024 * 1024L; + internal::ObjectWriteStreamParams params; + params.buffer_size = kTestUploadBufferSize; + params.hash_function = CreateNullHashFunction(); + params.hash_validator = CreateNullHashValidator(); + params.auto_finalize = AutoFinalizeConfig::kEnabled; ObjectWriteStream writer(std::make_unique( connection, request, std::move(create->upload_id), /*committed_size=*/0, - /*metadata=*/absl::nullopt, kTestUploadBufferSize, - CreateNullHashFunction(), HashValues{}, CreateNullHashValidator(), - AutoFinalizeConfig::kEnabled)); + /*metadata=*/absl::nullopt, params.buffer_size, + std::move(params.hash_function), std::move(params.known_hashes), + std::move(params.hash_validator), params.auto_finalize)); std::ostringstream expected_stream; WriteRandomLines(writer, expected_stream, line_count, line_size); From af3f6e56571263baf9bfbef9a0eb0736d7ae24df Mon Sep 17 00:00:00 2001 From: Shubham Kaushal Date: Thu, 31 Jul 2025 09:18:29 +0000 Subject: [PATCH 5/6] resolving merge conflicts --- google/cloud/storage/internal/connection_impl.cc | 4 ---- google/cloud/storage/internal/connection_impl.h | 4 ---- .../cloud/storage/internal/object_write_streambuf.cc | 2 +- google/cloud/storage/internal/storage_connection.cc | 10 +++------- google/cloud/storage/internal/storage_connection.h | 9 +-------- .../cloud/storage/internal/storage_connection_test.cc | 4 ---- google/cloud/storage/internal/tracing_connection.cc | 4 ---- google/cloud/storage/internal/tracing_connection.h | 9 --------- .../cloud/storage/internal/tracing_connection_test.cc | 4 ---- google/cloud/storage/testing/mock_client.h | 7 ++----- 10 files changed, 7 insertions(+), 50 deletions(-) diff --git a/google/cloud/storage/internal/connection_impl.cc b/google/cloud/storage/internal/connection_impl.cc index c1cacef4dfb3d..d6ab46611aaba 100644 --- a/google/cloud/storage/internal/connection_impl.cc +++ b/google/cloud/storage/internal/connection_impl.cc @@ -856,7 +856,6 @@ integrity checks using the DisableMD5Hash() and DisableCrc32cChecksum() options. return std::unique_ptr(std::move(source)); } -<<<<<<< HEAD StatusOr StorageConnectionImpl::ExecuteParallelUploadFile( std::vector threads, std::vector shards, bool ignore_cleanup_failures) { @@ -871,10 +870,7 @@ StatusOr StorageConnectionImpl::ExecuteParallelUploadFile( return res; } -StatusOr StorageConnectionImpl::WriteObjectBufferSize( -======= StatusOr StorageConnectionImpl::SetupObjectWriteStream( ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) ResumableUploadRequest const& request) { auto const& current = google::cloud::internal::CurrentOptions(); ObjectWriteStreamParams params; diff --git a/google/cloud/storage/internal/connection_impl.h b/google/cloud/storage/internal/connection_impl.h index 50712678cb40c..a938e0f230466 100644 --- a/google/cloud/storage/internal/connection_impl.h +++ b/google/cloud/storage/internal/connection_impl.h @@ -104,15 +104,11 @@ class StorageConnectionImpl InsertObjectMediaRequest& request) override; StatusOr> UploadFileResumable( std::string const& file_name, ResumableUploadRequest& request) override; -<<<<<<< HEAD StatusOr ExecuteParallelUploadFile( std::vector threads, std::vector shards, bool ignore_cleanup_failures) override; - StatusOr WriteObjectBufferSize( -======= StatusOr SetupObjectWriteStream( ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) ResumableUploadRequest const& request) override; StatusOr ListBucketAcl( diff --git a/google/cloud/storage/internal/object_write_streambuf.cc b/google/cloud/storage/internal/object_write_streambuf.cc index 32bba0ecfaeb7..95f52c69a12a8 100644 --- a/google/cloud/storage/internal/object_write_streambuf.cc +++ b/google/cloud/storage/internal/object_write_streambuf.cc @@ -13,8 +13,8 @@ // limitations under the License. #include "google/cloud/storage/internal/object_write_streambuf.h" -#include "google/cloud/storage/internal/storage_connection.h" #include "google/cloud/storage/internal/object_requests.h" +#include "google/cloud/storage/internal/storage_connection.h" #include "google/cloud/storage/version.h" #include "google/cloud/internal/make_status.h" #include diff --git a/google/cloud/storage/internal/storage_connection.cc b/google/cloud/storage/internal/storage_connection.cc index 44538dbfef46f..c4223a99dd4b0 100644 --- a/google/cloud/storage/internal/storage_connection.cc +++ b/google/cloud/storage/internal/storage_connection.cc @@ -13,11 +13,8 @@ // limitations under the License. #include "google/cloud/storage/internal/storage_connection.h" -<<<<<<< HEAD -#include "google/cloud/storage/parallel_upload.h" -======= #include "google/cloud/storage/internal/object_write_streambuf.h" ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) +#include "google/cloud/storage/parallel_upload.h" #include #include @@ -49,7 +46,6 @@ StatusOr CreateOrResume( std::move(response->payload)}; } -<<<<<<< HEAD StatusOr StorageConnection::ExecuteParallelUploadFile( std::vector, // NOLINT(performance-unnecessary-value-param) std::vector< @@ -58,11 +54,11 @@ StatusOr StorageConnection::ExecuteParallelUploadFile( return Status( StatusCode::kUnimplemented, "ExecuteParallelUploadFile() is not implemented by this Object"); -======= +} + StatusOr StorageConnection::SetupObjectWriteStream( ResumableUploadRequest const&) { return Status(StatusCode::kUnimplemented, "unimplemented"); ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) } } // namespace internal diff --git a/google/cloud/storage/internal/storage_connection.h b/google/cloud/storage/internal/storage_connection.h index 2b522e60528a5..8345f3cf51277 100644 --- a/google/cloud/storage/internal/storage_connection.h +++ b/google/cloud/storage/internal/storage_connection.h @@ -21,13 +21,13 @@ #include "google/cloud/storage/internal/bucket_requests.h" #include "google/cloud/storage/internal/default_object_acl_requests.h" #include "google/cloud/storage/internal/empty_response.h" -#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/internal/hash_validator.h" #include "google/cloud/storage/internal/hmac_key_requests.h" #include "google/cloud/storage/internal/notification_requests.h" #include "google/cloud/storage/internal/object_acl_requests.h" #include "google/cloud/storage/internal/object_read_source.h" #include "google/cloud/storage/internal/object_requests.h" +#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/internal/service_account_requests.h" #include "google/cloud/storage/internal/sign_blob_requests.h" #include "google/cloud/storage/oauth2/credentials.h" @@ -121,17 +121,10 @@ class StorageConnection { std::string const&, ResumableUploadRequest&) { return Status(StatusCode::kUnimplemented, "unimplemented"); } -<<<<<<< HEAD virtual StatusOr ExecuteParallelUploadFile( std::vector, std::vector, bool); - virtual StatusOr WriteObjectBufferSize( - ResumableUploadRequest const&) { - return Status(StatusCode::kUnimplemented, "unimplemented"); - } -======= virtual StatusOr SetupObjectWriteStream( ResumableUploadRequest const&); ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) ///@} ///@{ diff --git a/google/cloud/storage/internal/storage_connection_test.cc b/google/cloud/storage/internal/storage_connection_test.cc index a8d34b3a4cb1b..57783e907c62f 100644 --- a/google/cloud/storage/internal/storage_connection_test.cc +++ b/google/cloud/storage/internal/storage_connection_test.cc @@ -161,7 +161,6 @@ TEST(StorageConnectionTest, UploadFileResumableUnimplemented) { EXPECT_THAT(response, StatusIs(StatusCode::kUnimplemented)); } -<<<<<<< HEAD TEST(StorageConnectionTest, ExecuteParallelUploadFileUnimplemented) { TestStorageConnection connection; std::vector threads; @@ -172,10 +171,7 @@ TEST(StorageConnectionTest, ExecuteParallelUploadFileUnimplemented) { EXPECT_THAT(response, StatusIs(StatusCode::kUnimplemented)); } -TEST(StorageConnectionTest, WriteObjectBufferSizeUnimplemented) { -======= TEST(StorageConnectionTest, SetupObjectWriteStreamUnimplemented) { ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) TestStorageConnection connection; ResumableUploadRequest request; auto response = connection.SetupObjectWriteStream(request); diff --git a/google/cloud/storage/internal/tracing_connection.cc b/google/cloud/storage/internal/tracing_connection.cc index 9119a591972b0..9dbe8e85d1b72 100644 --- a/google/cloud/storage/internal/tracing_connection.cc +++ b/google/cloud/storage/internal/tracing_connection.cc @@ -256,7 +256,6 @@ StatusOr> TracingConnection::UploadFileResumable( impl_->UploadFileResumable(file_name, request)); } -<<<<<<< HEAD StatusOr TracingConnection::ExecuteParallelUploadFile( std::vector threads, std::vector shards, @@ -269,11 +268,8 @@ StatusOr TracingConnection::ExecuteParallelUploadFile( ignore_cleanup_failures)); } -StatusOr TracingConnection::WriteObjectBufferSize( -======= StatusOr TracingConnection::SetupObjectWriteStream( ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) storage::internal::ResumableUploadRequest const& request) { auto span = internal::MakeSpan("storage::Client::WriteObject/SetupObjectWriteStream"); diff --git a/google/cloud/storage/internal/tracing_connection.h b/google/cloud/storage/internal/tracing_connection.h index 52849a1f80e45..140b19f04bc39 100644 --- a/google/cloud/storage/internal/tracing_connection.h +++ b/google/cloud/storage/internal/tracing_connection.h @@ -105,21 +105,12 @@ class TracingConnection : public storage::internal::StorageConnection { StatusOr> UploadFileResumable( std::string const& file_name, storage::internal::ResumableUploadRequest& request) override; -<<<<<<< HEAD StatusOr ExecuteParallelUploadFile( std::vector threads, std::vector shards, bool ignore_cleanup_failures) override; - StatusOr WriteObjectBufferSize( - storage::internal::ResumableUploadRequest const&) override; - StatusOr ExecuteParallelUploadFile( - std::vector threads, - std::vector shards, - bool ignore_cleanup_failures) override; -======= StatusOr SetupObjectWriteStream( storage::internal::ResumableUploadRequest const& request) override; ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) StatusOr ListBucketAcl( storage::internal::ListBucketAclRequest const& request) override; diff --git a/google/cloud/storage/internal/tracing_connection_test.cc b/google/cloud/storage/internal/tracing_connection_test.cc index 40400a03bda01..3ed63ac01437b 100644 --- a/google/cloud/storage/internal/tracing_connection_test.cc +++ b/google/cloud/storage/internal/tracing_connection_test.cc @@ -746,7 +746,6 @@ TEST(TracingClientTest, UploadFileResumable) { "gl-cpp.status_code", code_str))))); } -<<<<<<< HEAD TEST(TracingClientTest, ExecuteParallelUploadFile) { auto span_catcher = InstallSpanCatcher(); auto mock = std::make_shared(); @@ -782,10 +781,7 @@ TEST(TracingClientTest, ExecuteParallelUploadFile) { OTelAttribute("gl-cpp.status_code", code_str))))); } -TEST(TracingClientTest, WriteObjectBufferSize) { -======= TEST(TracingClientTest, SetupObjectWriteStream) { ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) auto span_catcher = InstallSpanCatcher(); auto mock = std::make_shared(); EXPECT_CALL(*mock, SetupObjectWriteStream).WillOnce([](auto const&) { diff --git a/google/cloud/storage/testing/mock_client.h b/google/cloud/storage/testing/mock_client.h index 8f7c994e3217e..5685cf5b34cd0 100644 --- a/google/cloud/storage/testing/mock_client.h +++ b/google/cloud/storage/testing/mock_client.h @@ -109,15 +109,12 @@ class MockClient : public google::cloud::storage::internal::StorageConnection { MOCK_METHOD(StatusOr>, UploadFileResumable, (std::string const&, storage::internal::ResumableUploadRequest&), (override)); -<<<<<<< HEAD MOCK_METHOD(StatusOr, ExecuteParallelUploadFile, (std::vector, std::vector, bool), (override)); - MOCK_METHOD(StatusOr, WriteObjectBufferSize, -======= - MOCK_METHOD(StatusOr, SetupObjectWriteStream, ->>>>>>> 6b350ef5c6 (changing approach to generate the traces) + MOCK_METHOD(StatusOr, + SetupObjectWriteStream, (storage::internal::ResumableUploadRequest const&), (override)); MOCK_METHOD(StatusOr, ListBucketAcl, From b6c993295aee50c2c3d7efaaca662d934363540f Mon Sep 17 00:00:00 2001 From: Shubham Kaushal Date: Sun, 3 Aug 2025 17:18:32 +0000 Subject: [PATCH 6/6] removing extra imports --- google/cloud/storage/examples/storage_client_mock_samples.cc | 1 - google/cloud/storage/internal/connection_impl.cc | 1 - google/cloud/storage/internal/storage_connection.cc | 1 - 3 files changed, 3 deletions(-) diff --git a/google/cloud/storage/examples/storage_client_mock_samples.cc b/google/cloud/storage/examples/storage_client_mock_samples.cc index 6fab8d2137668..fa12911b324cc 100644 --- a/google/cloud/storage/examples/storage_client_mock_samples.cc +++ b/google/cloud/storage/examples/storage_client_mock_samples.cc @@ -14,7 +14,6 @@ #include "google/cloud/storage/client.h" #include "google/cloud/storage/internal/object_requests.h" -#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/testing/mock_client.h" #include #include diff --git a/google/cloud/storage/internal/connection_impl.cc b/google/cloud/storage/internal/connection_impl.cc index d6ab46611aaba..88d6b9d036904 100644 --- a/google/cloud/storage/internal/connection_impl.cc +++ b/google/cloud/storage/internal/connection_impl.cc @@ -13,7 +13,6 @@ // limitations under the License. #include "google/cloud/storage/internal/connection_impl.h" -#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/internal/retry_object_read_source.h" #include "google/cloud/storage/parallel_upload.h" #include "google/cloud/internal/filesystem.h" diff --git a/google/cloud/storage/internal/storage_connection.cc b/google/cloud/storage/internal/storage_connection.cc index c4223a99dd4b0..16c11f46ca62d 100644 --- a/google/cloud/storage/internal/storage_connection.cc +++ b/google/cloud/storage/internal/storage_connection.cc @@ -13,7 +13,6 @@ // limitations under the License. #include "google/cloud/storage/internal/storage_connection.h" -#include "google/cloud/storage/internal/object_write_streambuf.h" #include "google/cloud/storage/parallel_upload.h" #include #include