Skip to content

Commit a9cc374

Browse files
authored
test: add blackbox gRPC server tests (#11)
1 parent e2155d9 commit a9cc374

1 file changed

Lines changed: 199 additions & 1 deletion

File tree

google/cloud/bigtable/emulator/server_test.cc

Lines changed: 199 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,209 @@
1313
// limitations under the License.
1414

1515
#include "google/cloud/bigtable/emulator/server.h"
16+
#include <google/bigtable/admin/v2/bigtable_table_admin.grpc.pb.h>
17+
#include <google/bigtable/admin/v2/bigtable_table_admin.pb.h>
18+
#include <google/bigtable/admin/v2/table.pb.h>
19+
#include <google/bigtable/v2/bigtable.grpc.pb.h>
20+
#include <google/bigtable/v2/bigtable.pb.h>
21+
#include <gmock/gmock.h>
22+
#include <grpcpp/grpcpp.h>
1623

1724
namespace google {
1825
namespace cloud {
1926
namespace bigtable {
20-
namespace emulator {} // namespace emulator
27+
namespace emulator {
28+
29+
class ServerTest : public ::testing::Test {
30+
protected:
31+
std::unique_ptr<EmulatorServer> server_;
32+
std::shared_ptr<grpc::Channel> channel_;
33+
grpc::ClientContext ctx_;
34+
35+
void SetUp() override {
36+
server_ = CreateDefaultEmulatorServer("127.0.0.1", 0);
37+
channel_ = grpc::CreateChannel(
38+
"localhost:" + std::to_string(server_->bound_port()),
39+
grpc::InsecureChannelCredentials());
40+
}
41+
42+
std::unique_ptr<google::bigtable::v2::Bigtable::Stub> DataClient() {
43+
return google::bigtable::v2::Bigtable::NewStub(channel_);
44+
}
45+
46+
std::unique_ptr<google::bigtable::admin::v2::BigtableTableAdmin::Stub>
47+
TableAdminClient() {
48+
return google::bigtable::admin::v2::BigtableTableAdmin::NewStub(channel_);
49+
}
50+
};
51+
52+
TEST_F(ServerTest, DataCheckAndMutateRow) {
53+
google::bigtable::v2::CheckAndMutateRowRequest request;
54+
google::bigtable::v2::CheckAndMutateRowResponse response;
55+
56+
grpc::Status status =
57+
DataClient()->CheckAndMutateRow(&ctx_, request, &response);
58+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
59+
}
60+
61+
TEST_F(ServerTest, DataExecuteQuery) {
62+
google::bigtable::v2::ExecuteQueryRequest request;
63+
64+
grpc::Status status = DataClient()->ExecuteQuery(&ctx_, request)->Finish();
65+
GTEST_SKIP() << "Data API's ExecuteQuery is not supported by the emulator.";
66+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
67+
}
68+
69+
TEST_F(ServerTest, DataGenerateInitialChangeStreamPartitions) {
70+
google::bigtable::v2::GenerateInitialChangeStreamPartitionsRequest request;
71+
72+
grpc::Status status =
73+
DataClient()
74+
->GenerateInitialChangeStreamPartitions(&ctx_, request)
75+
->Finish();
76+
GTEST_SKIP() << "Data API's GenerateInitialChangeStreamPartitions is not "
77+
"supported by the emulator.";
78+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
79+
}
80+
81+
TEST_F(ServerTest, DataMutateRow) {
82+
google::bigtable::v2::MutateRowRequest request;
83+
google::bigtable::v2::MutateRowResponse response;
84+
85+
grpc::Status status = DataClient()->MutateRow(&ctx_, request, &response);
86+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
87+
}
88+
89+
TEST_F(ServerTest, DataMutateRows) {
90+
google::bigtable::v2::MutateRowsRequest request;
91+
92+
grpc::Status status = DataClient()->MutateRows(&ctx_, request)->Finish();
93+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
94+
}
95+
96+
TEST_F(ServerTest, DataPingAndWarm) {
97+
google::bigtable::v2::PingAndWarmRequest request;
98+
google::bigtable::v2::PingAndWarmResponse response;
99+
100+
grpc::Status status = DataClient()->PingAndWarm(&ctx_, request, &response);
101+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
102+
}
103+
104+
TEST_F(ServerTest, DataReadChangeStream) {
105+
google::bigtable::v2::ReadChangeStreamRequest request;
106+
107+
grpc::Status status =
108+
DataClient()->ReadChangeStream(&ctx_, request)->Finish();
109+
GTEST_SKIP()
110+
<< "Data API's ReadChangeStream is not supported by the emulator.";
111+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
112+
}
113+
114+
TEST_F(ServerTest, DataReadModifyWriteRow) {
115+
google::bigtable::v2::ReadModifyWriteRowRequest request;
116+
google::bigtable::v2::ReadModifyWriteRowResponse response;
117+
118+
grpc::Status status =
119+
DataClient()->ReadModifyWriteRow(&ctx_, request, &response);
120+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
121+
}
122+
123+
TEST_F(ServerTest, DataReadRows) {
124+
google::bigtable::v2::ReadRowsRequest request;
125+
126+
grpc::Status status = DataClient()->ReadRows(&ctx_, request)->Finish();
127+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
128+
}
129+
130+
TEST_F(ServerTest, DataSampleRowKeys) {
131+
google::bigtable::v2::SampleRowKeysRequest request;
132+
google::bigtable::v2::SampleRowKeysResponse response;
133+
134+
grpc::Status status = DataClient()->SampleRowKeys(&ctx_, request)->Finish();
135+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
136+
}
137+
138+
TEST_F(ServerTest, TableAdminCheckConsistency) {
139+
google::bigtable::admin::v2::CheckConsistencyRequest request;
140+
google::bigtable::admin::v2::CheckConsistencyResponse response;
141+
142+
grpc::Status status =
143+
TableAdminClient()->CheckConsistency(&ctx_, request, &response);
144+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
145+
}
146+
147+
TEST_F(ServerTest, TableAdminCreateTable) {
148+
google::bigtable::admin::v2::CreateTableRequest request;
149+
google::bigtable::admin::v2::Table response;
150+
151+
grpc::Status status =
152+
TableAdminClient()->CreateTable(&ctx_, request, &response);
153+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
154+
}
155+
156+
TEST_F(ServerTest, TableAdminDeleteTable) {
157+
google::bigtable::admin::v2::DeleteTableRequest request;
158+
google::protobuf::Empty response;
159+
160+
grpc::Status status =
161+
TableAdminClient()->DeleteTable(&ctx_, request, &response);
162+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
163+
}
164+
165+
TEST_F(ServerTest, TableAdminDropRowRange) {
166+
google::bigtable::admin::v2::DropRowRangeRequest request;
167+
google::protobuf::Empty response;
168+
169+
grpc::Status status =
170+
TableAdminClient()->DropRowRange(&ctx_, request, &response);
171+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
172+
}
173+
174+
TEST_F(ServerTest, TableAdminGenerateConsistencyToken) {
175+
google::bigtable::admin::v2::GenerateConsistencyTokenRequest request;
176+
google::bigtable::admin::v2::GenerateConsistencyTokenResponse response;
177+
178+
grpc::Status status =
179+
TableAdminClient()->GenerateConsistencyToken(&ctx_, request, &response);
180+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
181+
}
182+
183+
TEST_F(ServerTest, TableAdminGetTable) {
184+
google::bigtable::admin::v2::GetTableRequest request;
185+
google::bigtable::admin::v2::Table response;
186+
187+
grpc::Status status = TableAdminClient()->GetTable(&ctx_, request, &response);
188+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
189+
}
190+
191+
TEST_F(ServerTest, TableAdminListTables) {
192+
google::bigtable::admin::v2::ListTablesRequest request;
193+
google::bigtable::admin::v2::ListTablesResponse response;
194+
195+
grpc::Status status =
196+
TableAdminClient()->ListTables(&ctx_, request, &response);
197+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
198+
}
199+
200+
TEST_F(ServerTest, TableAdminModifyColumnFamilies) {
201+
google::bigtable::admin::v2::ModifyColumnFamiliesRequest request;
202+
google::bigtable::admin::v2::Table response;
203+
204+
grpc::Status status =
205+
TableAdminClient()->ModifyColumnFamilies(&ctx_, request, &response);
206+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
207+
}
208+
209+
TEST_F(ServerTest, TableAdminUpdateTable) {
210+
google::bigtable::admin::v2::UpdateTableRequest request;
211+
google::longrunning::Operation response;
212+
213+
grpc::Status status =
214+
TableAdminClient()->UpdateTable(&ctx_, request, &response);
215+
EXPECT_NE(status.error_code(), grpc::StatusCode::UNIMPLEMENTED);
216+
}
217+
218+
} // namespace emulator
21219
} // namespace bigtable
22220
} // namespace cloud
23221
} // namespace google

0 commit comments

Comments
 (0)