Skip to content

Commit 59d7cf6

Browse files
authored
refactor(generator): de-duplicate mock stubs (#6814)
1 parent 3d041a4 commit 59d7cf6

4 files changed

Lines changed: 75 additions & 419 deletions

File tree

generator/integration_tests/golden/tests/golden_kitchen_sink_connection_test.cc

Lines changed: 2 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#include "google/cloud/testing_util/is_proto_equal.h"
1818
#include "google/cloud/testing_util/status_matchers.h"
1919
#include "generator/integration_tests/golden/golden_kitchen_sink_options.h"
20-
#include <google/protobuf/text_format.h>
20+
#include "generator/integration_tests/golden/mocks/mock_golden_kitchen_sink_stub.h"
2121
#include <gmock/gmock.h>
2222
#include <memory>
2323

@@ -27,63 +27,12 @@ namespace golden {
2727
inline namespace GOOGLE_CLOUD_CPP_GENERATED_NS {
2828
namespace {
2929

30-
using ::google::cloud::testing_util::IsProtoEqual;
31-
using ::google::protobuf::TextFormat;
30+
using ::google::cloud::golden_internal::MockGoldenKitchenSinkStub;
3231
using ::testing::AtLeast;
3332
using ::testing::ByMove;
3433
using ::testing::ElementsAre;
35-
using ::testing::Mock;
3634
using ::testing::Return;
3735

38-
class MockGoldenKitchenSinkStub
39-
: public google::cloud::golden_internal::GoldenKitchenSinkStub {
40-
public:
41-
~MockGoldenKitchenSinkStub() override = default;
42-
MOCK_METHOD(
43-
StatusOr<
44-
::google::test::admin::database::v1::GenerateAccessTokenResponse>,
45-
GenerateAccessToken,
46-
(grpc::ClientContext & context,
47-
::google::test::admin::database::v1::GenerateAccessTokenRequest const&
48-
request),
49-
(override));
50-
MOCK_METHOD(
51-
StatusOr<::google::test::admin::database::v1::GenerateIdTokenResponse>,
52-
GenerateIdToken,
53-
(grpc::ClientContext & context,
54-
::google::test::admin::database::v1::GenerateIdTokenRequest const&
55-
request),
56-
(override));
57-
MOCK_METHOD(
58-
StatusOr<::google::test::admin::database::v1::WriteLogEntriesResponse>,
59-
WriteLogEntries,
60-
(grpc::ClientContext & context,
61-
::google::test::admin::database::v1::WriteLogEntriesRequest const&
62-
request),
63-
(override));
64-
MOCK_METHOD(
65-
StatusOr<::google::test::admin::database::v1::ListLogsResponse>, ListLogs,
66-
(grpc::ClientContext & context,
67-
::google::test::admin::database::v1::ListLogsRequest const& request),
68-
(override));
69-
MOCK_METHOD(
70-
(std::unique_ptr<internal::StreamingReadRpc<
71-
::google::test::admin::database::v1::TailLogEntriesResponse>>),
72-
TailLogEntries,
73-
(std::unique_ptr<grpc::ClientContext> context,
74-
::google::test::admin::database::v1::TailLogEntriesRequest const&
75-
request),
76-
(override));
77-
MOCK_METHOD(
78-
StatusOr<
79-
::google::test::admin::database::v1::ListServiceAccountKeysResponse>,
80-
ListServiceAccountKeys,
81-
(grpc::ClientContext & context,
82-
::google::test::admin::database::v1::ListServiceAccountKeysRequest const&
83-
request),
84-
(override));
85-
};
86-
8736
std::shared_ptr<golden::GoldenKitchenSinkConnection> CreateTestingConnection(
8837
std::shared_ptr<golden_internal::GoldenKitchenSinkStub> mock) {
8938
golden::GoldenKitchenSinkLimitedErrorCountRetryPolicy retry(

generator/integration_tests/golden/tests/golden_kitchen_sink_metadata_decorator_test.cc

Lines changed: 18 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
#include "google/cloud/internal/api_client_header.h"
1717
#include "google/cloud/testing_util/status_matchers.h"
1818
#include "google/cloud/testing_util/validate_metadata.h"
19+
#include "absl/memory/memory.h"
20+
#include "generator/integration_tests/golden/mocks/mock_golden_kitchen_sink_stub.h"
1921
#include <gmock/gmock.h>
2022
#include <memory>
2123

@@ -25,71 +27,21 @@ namespace golden_internal {
2527
inline namespace GOOGLE_CLOUD_CPP_GENERATED_NS {
2628
namespace {
2729

30+
using ::google::cloud::golden_internal::MockGoldenKitchenSinkStub;
2831
using ::google::cloud::testing_util::IsContextMDValid;
2932
using ::google::cloud::testing_util::IsOk;
33+
using ::google::test::admin::database::v1::TailLogEntriesRequest;
34+
using ::google::test::admin::database::v1::TailLogEntriesResponse;
3035
using ::testing::Not;
3136
using ::testing::Return;
3237

33-
class MockGoldenKitchenSinkStub
34-
: public google::cloud::golden_internal::GoldenKitchenSinkStub {
35-
public:
36-
~MockGoldenKitchenSinkStub() override = default;
37-
MOCK_METHOD(
38-
StatusOr<
39-
::google::test::admin::database::v1::GenerateAccessTokenResponse>,
40-
GenerateAccessToken,
41-
(grpc::ClientContext & context,
42-
::google::test::admin::database::v1::GenerateAccessTokenRequest const&
43-
request),
44-
(override));
45-
MOCK_METHOD(
46-
StatusOr<::google::test::admin::database::v1::GenerateIdTokenResponse>,
47-
GenerateIdToken,
48-
(grpc::ClientContext & context,
49-
::google::test::admin::database::v1::GenerateIdTokenRequest const&
50-
request),
51-
(override));
52-
MOCK_METHOD(
53-
StatusOr<::google::test::admin::database::v1::WriteLogEntriesResponse>,
54-
WriteLogEntries,
55-
(grpc::ClientContext & context,
56-
::google::test::admin::database::v1::WriteLogEntriesRequest const&
57-
request),
58-
(override));
59-
MOCK_METHOD(
60-
StatusOr<::google::test::admin::database::v1::ListLogsResponse>, ListLogs,
61-
(grpc::ClientContext & context,
62-
::google::test::admin::database::v1::ListLogsRequest const& request),
63-
(override));
64-
MOCK_METHOD(
65-
(std::unique_ptr<internal::StreamingReadRpc<
66-
::google::test::admin::database::v1::TailLogEntriesResponse>>),
67-
TailLogEntries,
68-
(std::unique_ptr<grpc::ClientContext> context,
69-
::google::test::admin::database::v1::TailLogEntriesRequest const&
70-
request),
71-
(override));
72-
MOCK_METHOD(
73-
StatusOr<
74-
::google::test::admin::database::v1::ListServiceAccountKeysResponse>,
75-
ListServiceAccountKeys,
76-
(grpc::ClientContext & context,
77-
::google::test::admin::database::v1::ListServiceAccountKeysRequest const&
78-
request),
79-
(override));
80-
};
81-
8238
class MetadataDecoratorTest : public ::testing::Test {
8339
protected:
8440
void SetUp() override {
8541
expected_api_client_header_ = google::cloud::internal::ApiClientHeader();
8642
mock_ = std::make_shared<MockGoldenKitchenSinkStub>();
8743
}
8844

89-
static grpc::Status GrpcTransientError() {
90-
return grpc::Status(grpc::StatusCode::UNAVAILABLE, "try-again");
91-
}
92-
9345
static Status TransientError() {
9446
return Status(StatusCode::kUnavailable, "try-again");
9547
}
@@ -178,35 +130,31 @@ TEST_F(MetadataDecoratorTest, ListLogs) {
178130
}
179131

180132
class MockTailLogEntriesStreamingReadRpc
181-
: public internal::StreamingReadRpc<
182-
google::test::admin::database::v1::TailLogEntriesResponse> {
133+
: public internal::StreamingReadRpc<TailLogEntriesResponse> {
183134
public:
184135
MOCK_METHOD(void, Cancel, (), (override));
185-
MOCK_METHOD(
186-
(absl::variant<
187-
Status, google::test::admin::database::v1::TailLogEntriesResponse>),
188-
Read, (), (override));
136+
MOCK_METHOD((absl::variant<Status, TailLogEntriesResponse>), Read, (),
137+
(override));
189138
};
190139

191140
TEST_F(MetadataDecoratorTest, TailLogEntries) {
192-
auto mock_response = new MockTailLogEntriesStreamingReadRpc;
193-
EXPECT_CALL(*mock_response, Read)
194-
.WillOnce(Return(Status(StatusCode::kPermissionDenied, "uh-oh")));
195141
EXPECT_CALL(*mock_, TailLogEntries)
196-
.WillOnce([mock_response, this](
197-
std::unique_ptr<grpc::ClientContext> context,
198-
google::test::admin::database::v1::
199-
TailLogEntriesRequest const&) {
142+
.WillOnce([this](std::unique_ptr<grpc::ClientContext> context,
143+
TailLogEntriesRequest const&) {
144+
auto mock_response =
145+
absl::make_unique<MockTailLogEntriesStreamingReadRpc>();
146+
EXPECT_CALL(*mock_response, Read)
147+
.WillOnce(Return(Status(StatusCode::kPermissionDenied, "uh-oh")));
200148
EXPECT_STATUS_OK(IsContextMDValid(
201149
*context,
202150
"google.test.admin.database.v1.GoldenKitchenSink.TailLogEntries",
203151
expected_api_client_header_));
204-
return std::unique_ptr<internal::StreamingReadRpc<
205-
::google::test::admin::database::v1::TailLogEntriesResponse>>(
206-
mock_response);
152+
return std::unique_ptr<
153+
internal::StreamingReadRpc<TailLogEntriesResponse>>(
154+
std::move(mock_response));
207155
});
208156
GoldenKitchenSinkMetadata stub(mock_);
209-
google::test::admin::database::v1::TailLogEntriesRequest request;
157+
TailLogEntriesRequest request;
210158
auto response =
211159
stub.TailLogEntries(absl::make_unique<grpc::ClientContext>(), request);
212160
EXPECT_THAT(absl::get<Status>(response->Read()), Not(IsOk()));

0 commit comments

Comments
 (0)