Skip to content

Commit 248d4a2

Browse files
committed
chore(bigtable): migrate to std::optional
1 parent 6b36030 commit 248d4a2

35 files changed

Lines changed: 262 additions & 272 deletions

google/cloud/bigtable/client_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ TEST(Client, AsyncPrepareQuery) {
103103
class MockQueryRowSource : public ResultSourceInterface {
104104
public:
105105
MOCK_METHOD(StatusOr<QueryRow>, NextRow, (), (override));
106-
MOCK_METHOD(absl::optional<google::bigtable::v2::ResultSetMetadata>, Metadata,
106+
MOCK_METHOD(std::optional<google::bigtable::v2::ResultSetMetadata>, Metadata,
107107
(), (override));
108108
};
109109

google/cloud/bigtable/examples/data_snippets.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,7 @@ void PrepareAndExecuteQuery(google::cloud::bigtable::Client client,
801801

802802
auto results = client.ExecuteQuery(std::move(bound_query));
803803

804-
using RowType = std::tuple<cbt::Bytes, absl::optional<std::string>>;
804+
using RowType = std::tuple<cbt::Bytes, std::optional<std::string>>;
805805
for (auto& row : cbt::StreamOf<RowType>(results)) {
806806
if (!row.ok()) throw std::move(row.status());
807807
auto v = std::get<1>(*row);

google/cloud/bigtable/internal/async_bulk_apply_test.cc

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ Matcher<v2::MutateRowsRequest::Entry> MatchEntry(std::string const& row_key) {
8484
}
8585

8686
// Individual entry pairs are: {index, StatusCode}
87-
absl::optional<v2::MutateRowsResponse> MakeResponse(
87+
std::optional<v2::MutateRowsResponse> MakeResponse(
8888
std::vector<std::pair<int, grpc::StatusCode>> const& entries) {
8989
v2::MutateRowsResponse resp;
9090
for (auto entry : entries) {
@@ -227,8 +227,7 @@ TEST_F(AsyncBulkApplyTest, Success) {
227227
MakeResponse({{1, grpc::StatusCode::OK}}));
228228
})
229229
.WillOnce([] {
230-
return make_ready_future(
231-
absl::optional<v2::MutateRowsResponse>{});
230+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
232231
});
233232
EXPECT_CALL(*stream, Finish).WillOnce([] {
234233
return make_ready_future(Status{});
@@ -299,8 +298,7 @@ TEST_F(AsyncBulkApplyTest, PartialStreamIsRetried) {
299298
MakeResponse({{0, grpc::StatusCode::OK}}));
300299
})
301300
.WillOnce([] {
302-
return make_ready_future(
303-
absl::optional<v2::MutateRowsResponse>{});
301+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
304302
});
305303
EXPECT_CALL(*stream, Finish).WillOnce([] {
306304
return make_ready_future(Status{});
@@ -323,8 +321,7 @@ TEST_F(AsyncBulkApplyTest, PartialStreamIsRetried) {
323321
MakeResponse({{0, grpc::StatusCode::OK}}));
324322
})
325323
.WillOnce([] {
326-
return make_ready_future(
327-
absl::optional<v2::MutateRowsResponse>{});
324+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
328325
});
329326
EXPECT_CALL(*stream, Finish).WillOnce([] {
330327
return make_ready_future(Status{});
@@ -403,8 +400,7 @@ TEST_F(AsyncBulkApplyTest, IdempotentMutationPolicy) {
403400
{3, grpc::StatusCode::UNAVAILABLE}}));
404401
})
405402
.WillOnce([] {
406-
return make_ready_future(
407-
absl::optional<v2::MutateRowsResponse>{});
403+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
408404
});
409405
EXPECT_CALL(*stream, Finish).WillOnce([] {
410406
return make_ready_future(Status{});
@@ -428,8 +424,7 @@ TEST_F(AsyncBulkApplyTest, IdempotentMutationPolicy) {
428424
MakeResponse({{0, grpc::StatusCode::OK}}));
429425
})
430426
.WillOnce([] {
431-
return make_ready_future(
432-
absl::optional<v2::MutateRowsResponse>{});
427+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
433428
});
434429
EXPECT_CALL(*stream, Finish).WillOnce([] {
435430
return make_ready_future(Status{});
@@ -559,7 +554,7 @@ TEST_F(AsyncBulkApplyTest, RetryInfoHeeded) {
559554
.WillOnce(Return(ByMove(
560555
make_ready_future(MakeResponse({{0, grpc::StatusCode::OK}})))))
561556
.WillOnce(Return(ByMove(
562-
make_ready_future(absl::optional<v2::MutateRowsResponse>()))));
557+
make_ready_future(std::optional<v2::MutateRowsResponse>()))));
563558
EXPECT_CALL(*stream, Finish)
564559
.WillOnce(Return(make_ready_future(Status())));
565560
return stream;
@@ -687,7 +682,7 @@ TEST_F(AsyncBulkApplyTest, TimerError) {
687682

688683
TEST_F(AsyncBulkApplyTest, CancelAfterSuccess) {
689684
bigtable::BulkMutation mut(IdempotentMutation("r0"));
690-
promise<absl::optional<v2::MutateRowsResponse>> p;
685+
promise<std::optional<v2::MutateRowsResponse>> p;
691686

692687
#ifdef GOOGLE_CLOUD_CPP_BIGTABLE_WITH_OTEL_METRICS
693688
auto mock_metric = std::make_unique<MockMetric>();
@@ -754,7 +749,7 @@ TEST_F(AsyncBulkApplyTest, CancelAfterSuccess) {
754749
actual.cancel();
755750
// Proceed with the rest of the stream. In this test, there are no more
756751
// responses to be read. The client call should succeed.
757-
p.set_value(absl::optional<v2::MutateRowsResponse>{});
752+
p.set_value(std::optional<v2::MutateRowsResponse>{});
758753
CheckFailedMutations(actual.get(), {});
759754
}
760755

@@ -763,7 +758,7 @@ TEST_F(AsyncBulkApplyTest, CancelMidStream) {
763758
{Status(StatusCode::kCancelled, "User cancelled"), 2}};
764759
bigtable::BulkMutation mut(IdempotentMutation("r0"), IdempotentMutation("r1"),
765760
IdempotentMutation("r2"));
766-
promise<absl::optional<v2::MutateRowsResponse>> p;
761+
promise<std::optional<v2::MutateRowsResponse>> p;
767762

768763
#ifdef GOOGLE_CLOUD_CPP_BIGTABLE_WITH_OTEL_METRICS
769764
auto mock_metric = std::make_unique<MockMetric>();
@@ -806,7 +801,7 @@ TEST_F(AsyncBulkApplyTest, CancelMidStream) {
806801
.WillOnce([&p] { return p.get_future(); });
807802
EXPECT_CALL(*stream, Cancel);
808803
EXPECT_CALL(*stream, Read).WillOnce([] {
809-
return make_ready_future(absl::optional<v2::MutateRowsResponse>{});
804+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
810805
});
811806
EXPECT_CALL(*stream, Finish).WillOnce([] {
812807
return make_ready_future(
@@ -924,8 +919,7 @@ TEST_F(AsyncBulkApplyTest, RetriesOkStreamWithFailedMutations) {
924919
MakeResponse({{0, grpc::StatusCode::UNAVAILABLE}}));
925920
})
926921
.WillOnce([] {
927-
return make_ready_future(
928-
absl::optional<v2::MutateRowsResponse>{});
922+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
929923
});
930924
EXPECT_CALL(*stream, Finish).WillOnce([] {
931925
return make_ready_future(Status());
@@ -993,7 +987,7 @@ TEST_F(AsyncBulkApplyTest, Throttling) {
993987
});
994988
EXPECT_CALL(*limiter, Update);
995989
EXPECT_CALL(*stream, Read).WillOnce([] {
996-
return make_ready_future(absl::optional<v2::MutateRowsResponse>{});
990+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
997991
});
998992
EXPECT_CALL(*stream, Finish).WillOnce([] {
999993
return make_ready_future(Status());
@@ -1029,8 +1023,7 @@ TEST_F(AsyncBulkApplyTest, ThrottlingBeforeEachRetry) {
10291023
MakeResponse({{0, grpc::StatusCode::UNAVAILABLE}}));
10301024
})
10311025
.WillOnce([] {
1032-
return make_ready_future(
1033-
absl::optional<v2::MutateRowsResponse>{});
1026+
return make_ready_future(std::optional<v2::MutateRowsResponse>{});
10341027
});
10351028
EXPECT_CALL(*stream, Finish).WillOnce([] {
10361029
return make_ready_future(Status());

google/cloud/bigtable/internal/async_row_reader.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
#include "google/cloud/internal/call_context.h"
3131
#include "google/cloud/options.h"
3232
#include "google/cloud/status_or.h"
33-
#include "absl/types/optional.h"
3433
#include <chrono>
3534
#include <memory>
35+
#include <optional>
3636
#include <queue>
3737
#include <string>
3838
#include <utility>
@@ -157,13 +157,13 @@ class AsyncRowReader : public std::enable_shared_from_this<AsyncRowReader> {
157157
/**
158158
* The promise to the underlying stream to either continue reading or cancel.
159159
*
160-
* If the `absl::optional` is empty, it means that either the whole scan is
160+
* If the `std::optional` is empty, it means that either the whole scan is
161161
* finished or the underlying layers are already trying to fetch more data.
162162
*
163-
* If the `absl::optional` is not empty, the lower layers are waiting for this
163+
* If the `std::optional` is not empty, the lower layers are waiting for this
164164
* to be satisfied before they start fetching more data.
165165
*/
166-
absl::optional<promise<bool>> continue_reading_;
166+
std::optional<promise<bool>> continue_reading_;
167167
/// The final status of the operation.
168168
bool whole_op_finished_ = false;
169169
/**

google/cloud/bigtable/internal/async_row_reader_test.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ Status TransientError() {
7070
//
7171
// We use `commit_row == true` to return a full row, and `commit_row == false`
7272
// to return a partial row.
73-
absl::optional<v2::ReadRowsResponse> MakeResponse(
73+
std::optional<v2::ReadRowsResponse> MakeResponse(
7474
std::vector<std::pair<std::string, bool>> rows) {
7575
v2::ReadRowsResponse resp;
7676
for (auto& row : rows) {
@@ -85,7 +85,7 @@ absl::optional<v2::ReadRowsResponse> MakeResponse(
8585
return resp;
8686
}
8787

88-
absl::optional<v2::ReadRowsResponse> EndOfStream() { return absl::nullopt; }
88+
std::optional<v2::ReadRowsResponse> EndOfStream() { return std::nullopt; }
8989

9090
class AsyncRowReaderTest : public ::testing::Test {
9191
protected:
@@ -975,7 +975,7 @@ TEST_F(AsyncRowReaderTest, LastScannedRowKeyIsRespected) {
975975
.WillOnce([] {
976976
v2::ReadRowsResponse r;
977977
r.set_last_scanned_row_key("r2");
978-
return make_ready_future(absl::make_optional(r));
978+
return make_ready_future(std::make_optional(r));
979979
})
980980
.WillOnce([] { return make_ready_future(EndOfStream()); });
981981
EXPECT_CALL(*stream, Finish).WillOnce([] {
@@ -1610,7 +1610,7 @@ TEST_F(AsyncRowReaderTest, ReverseScanResumption) {
16101610
.WillOnce([] {
16111611
v2::ReadRowsResponse r;
16121612
r.set_last_scanned_row_key("r2");
1613-
return make_ready_future(absl::make_optional(r));
1613+
return make_ready_future(std::make_optional(r));
16141614
})
16151615
.WillOnce([] { return make_ready_future(EndOfStream()); });
16161616
EXPECT_CALL(*stream, Finish).WillOnce([] {

google/cloud/bigtable/internal/async_row_sampler_test.cc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,12 @@ struct RowKeySampleVectors {
7272
std::vector<std::int64_t> offset_bytes;
7373
};
7474

75-
absl::optional<v2::SampleRowKeysResponse> MakeResponse(std::string row_key,
76-
std::int64_t offset) {
75+
std::optional<v2::SampleRowKeysResponse> MakeResponse(std::string row_key,
76+
std::int64_t offset) {
7777
v2::SampleRowKeysResponse r;
7878
r.set_row_key(std::move(row_key));
7979
r.set_offset_bytes(offset);
80-
return absl::make_optional(r);
80+
return std::make_optional(r);
8181
};
8282

8383
#ifdef GOOGLE_CLOUD_CPP_BIGTABLE_WITH_OTEL_METRICS
@@ -163,7 +163,7 @@ TEST_F(AsyncSampleRowKeysTest, Simple) {
163163
[] { return make_ready_future(MakeResponse("test2", 22)); })
164164
.WillOnce([] {
165165
return make_ready_future(
166-
absl::optional<v2::SampleRowKeysResponse>{});
166+
std::optional<v2::SampleRowKeysResponse>{});
167167
});
168168
EXPECT_CALL(*stream, Finish).WillOnce([] {
169169
return make_ready_future(Status{});
@@ -229,7 +229,7 @@ TEST_F(AsyncSampleRowKeysTest, RetryResetsSamples) {
229229
[] { return make_ready_future(MakeResponse("forgotten", 11)); })
230230
.WillOnce([] {
231231
return make_ready_future(
232-
absl::optional<v2::SampleRowKeysResponse>{});
232+
std::optional<v2::SampleRowKeysResponse>{});
233233
});
234234
EXPECT_CALL(*stream, Finish).WillOnce([] {
235235
return make_ready_future(
@@ -251,7 +251,7 @@ TEST_F(AsyncSampleRowKeysTest, RetryResetsSamples) {
251251
[] { return make_ready_future(MakeResponse("returned", 22)); })
252252
.WillOnce([] {
253253
return make_ready_future(
254-
absl::optional<v2::SampleRowKeysResponse>{});
254+
std::optional<v2::SampleRowKeysResponse>{});
255255
});
256256
EXPECT_CALL(*stream, Finish).WillOnce([] {
257257
return make_ready_future(Status{});
@@ -396,7 +396,7 @@ TEST_F(AsyncSampleRowKeysTest, RetryInfoHeeded) {
396396
[] { return make_ready_future(MakeResponse("returned", 22)); })
397397
.WillOnce([] {
398398
return make_ready_future(
399-
absl::optional<v2::SampleRowKeysResponse>{});
399+
std::optional<v2::SampleRowKeysResponse>{});
400400
});
401401
EXPECT_CALL(*stream, Finish).WillOnce([] {
402402
return make_ready_future(Status{});
@@ -521,7 +521,7 @@ TEST_F(AsyncSampleRowKeysTest, TimerError) {
521521
}
522522

523523
TEST_F(AsyncSampleRowKeysTest, CancelAfterSuccess) {
524-
promise<absl::optional<v2::SampleRowKeysResponse>> p;
524+
promise<std::optional<v2::SampleRowKeysResponse>> p;
525525
#ifdef GOOGLE_CLOUD_CPP_BIGTABLE_WITH_OTEL_METRICS
526526
auto mock_metric = std::make_unique<MockMetric>();
527527
EXPECT_CALL(*mock_metric, PreCall).Times(1);
@@ -582,7 +582,7 @@ TEST_F(AsyncSampleRowKeysTest, CancelAfterSuccess) {
582582
fut.cancel();
583583
// Proceed with the rest of the stream. In this test, there are no more
584584
// responses to be read. The client call should succeed.
585-
p.set_value(absl::optional<v2::SampleRowKeysResponse>{});
585+
p.set_value(std::optional<v2::SampleRowKeysResponse>{});
586586
auto sor = fut.get();
587587
ASSERT_STATUS_OK(sor);
588588
auto samples = RowKeySampleVectors(*sor);
@@ -591,7 +591,7 @@ TEST_F(AsyncSampleRowKeysTest, CancelAfterSuccess) {
591591
}
592592

593593
TEST_F(AsyncSampleRowKeysTest, CancelMidStream) {
594-
promise<absl::optional<v2::SampleRowKeysResponse>> p;
594+
promise<std::optional<v2::SampleRowKeysResponse>> p;
595595
#ifdef GOOGLE_CLOUD_CPP_BIGTABLE_WITH_OTEL_METRICS
596596
auto mock_metric = std::make_unique<MockMetric>();
597597
EXPECT_CALL(*mock_metric, PreCall).Times(1);
@@ -636,7 +636,7 @@ TEST_F(AsyncSampleRowKeysTest, CancelMidStream) {
636636
[] { return make_ready_future(MakeResponse("discarded", 33)); })
637637
.WillOnce([] {
638638
return make_ready_future(
639-
absl::optional<v2::SampleRowKeysResponse>{});
639+
std::optional<v2::SampleRowKeysResponse>{});
640640
});
641641
EXPECT_CALL(*stream, Finish).WillOnce([] {
642642
return make_ready_future(

google/cloud/bigtable/internal/async_streaming_read.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class AsyncStreamingReadImpl
6363
void Read() {
6464
auto self = this->shared_from_this();
6565
auto read = stream_->Read();
66-
read.then([self](future<absl::optional<Response>> f) {
66+
read.then([self](future<std::optional<Response>> f) {
6767
auto r = f.get();
6868
// Read did not yield a response, finish stream.
6969
if (!r.has_value()) return self->Finish();
@@ -79,7 +79,7 @@ class AsyncStreamingReadImpl
7979
void Discard() {
8080
auto self = this->shared_from_this();
8181
auto read = stream_->Read();
82-
read.then([self](future<absl::optional<Response>> f) {
82+
read.then([self](future<std::optional<Response>> f) {
8383
auto r = f.get();
8484
// Read did not yield a response, finish stream.
8585
if (!r.has_value()) return self->Finish();

google/cloud/bigtable/internal/async_streaming_read_test.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,21 @@ TEST(AsyncStreamingReadTest, FullStream) {
4242
::testing::InSequence s;
4343
EXPECT_CALL(*mock, Start).WillOnce([] { return make_ready_future(true); });
4444
EXPECT_CALL(*mock, Read).WillOnce([] {
45-
return make_ready_future(absl::make_optional(FakeResponse{"v0"}));
45+
return make_ready_future(std::make_optional(FakeResponse{"v0"}));
4646
});
4747
EXPECT_CALL(on_read, Call).WillOnce([](FakeResponse const& r) {
4848
EXPECT_EQ(r.value, "v0");
4949
return make_ready_future(true);
5050
});
5151
EXPECT_CALL(*mock, Read).WillOnce([] {
52-
return make_ready_future(absl::make_optional(FakeResponse{"v1"}));
52+
return make_ready_future(std::make_optional(FakeResponse{"v1"}));
5353
});
5454
EXPECT_CALL(on_read, Call).WillOnce([](FakeResponse const& r) {
5555
EXPECT_EQ(r.value, "v1");
5656
return make_ready_future(true);
5757
});
5858
EXPECT_CALL(*mock, Read).WillOnce([] {
59-
return make_ready_future(absl::optional<FakeResponse>{});
59+
return make_ready_future(std::optional<FakeResponse>{});
6060
});
6161
EXPECT_CALL(*mock, Finish).WillOnce([] {
6262
return make_ready_future(Status{});
@@ -91,18 +91,18 @@ TEST(AsyncStreamingReadTest, CancelMidStream) {
9191
::testing::InSequence s;
9292
EXPECT_CALL(*mock, Start).WillOnce([] { return make_ready_future(true); });
9393
EXPECT_CALL(*mock, Read).WillOnce([] {
94-
return make_ready_future(absl::make_optional(FakeResponse{"v0"}));
94+
return make_ready_future(std::make_optional(FakeResponse{"v0"}));
9595
});
9696
EXPECT_CALL(on_read, Call).WillOnce([](FakeResponse const& r) {
9797
EXPECT_EQ(r.value, "v0");
9898
return make_ready_future(false);
9999
});
100100
EXPECT_CALL(*mock, Cancel);
101101
EXPECT_CALL(*mock, Read).Times(3).WillRepeatedly([] {
102-
return make_ready_future(absl::make_optional(FakeResponse{"ignored"}));
102+
return make_ready_future(std::make_optional(FakeResponse{"ignored"}));
103103
});
104104
EXPECT_CALL(*mock, Read).WillOnce([] {
105-
return make_ready_future(absl::optional<FakeResponse>{});
105+
return make_ready_future(std::optional<FakeResponse>{});
106106
});
107107
EXPECT_CALL(*mock, Finish).WillOnce([] {
108108
return make_ready_future(Status(StatusCode::kCancelled, "cancelled"));

google/cloud/bigtable/internal/bulk_mutator.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ Status BulkMutator::MakeOneRequest(BigtableStub& stub,
213213

214214
// Read the stream of responses.
215215
auto stream = stub.MutateRows(client_context, options, mutations);
216-
absl::optional<Status> status;
216+
std::optional<Status> status;
217217
while (true) {
218218
btproto::MutateRowsResponse response;
219219
status = stream->Read(&response);

0 commit comments

Comments
 (0)