16
16
using Google . Api . Gax . Grpc ;
17
17
using Google . Apis . Auth . OAuth2 ;
18
18
using Google . Cloud . Bigtable . Common . V2 ;
19
+ using Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy ;
19
20
using Google . Cloud . Bigtable . V2 ;
20
21
using Grpc . Auth ;
21
22
using Grpc . Core ;
22
- using System . Diagnostics ;
23
23
24
24
namespace google . bigtable . testproxy ;
25
25
26
26
public sealed class CloudBigtableV2TestProxyImpl : CloudBigtableV2TestProxy . CloudBigtableV2TestProxyBase
27
27
{
28
- private class CbtClient
29
- {
30
- public BigtableClient Client { get ; }
31
- public ChannelBase LastCreatedChannel { get ; }
32
- public InstanceName InstanceName { get ; }
33
-
34
- public CbtClient ( BigtableClient bigtableClient , ChannelBase channelBase , InstanceName instanceName )
35
- {
36
- Client = bigtableClient ;
37
- LastCreatedChannel = channelBase ;
38
- InstanceName = instanceName ;
39
- }
40
- }
41
-
42
- private static readonly Dictionary < string , CbtClient > s_clientMap = new Dictionary < string , CbtClient > ( ) ;
28
+ private static readonly Dictionary < string , BigtableClient > s_clientMap = new Dictionary < string , BigtableClient > ( ) ;
43
29
44
30
public override async Task < CreateClientResponse > CreateClient ( CreateClientRequest request , ServerCallContext context )
45
31
{
@@ -67,15 +53,11 @@ public override async Task<CreateClientResponse> CreateClient(CreateClientReques
67
53
builder . GrpcChannelOptions = GetChannelOptions ( ) ;
68
54
}
69
55
70
- s_clientMap [ request . ClientId ] = new CbtClient (
71
- await builder . BuildAsync ( ) ,
72
- builder . LastCreatedChannel ,
73
- new InstanceName ( request . ProjectId , request . InstanceId ) ) ;
56
+ s_clientMap [ request . ClientId ] = await builder . BuildAsync ( ) ;
74
57
}
75
58
catch ( Exception e )
76
59
{
77
- context . Status = new Status ( StatusCode . Internal , e . Message , e ) ;
78
- throw new RpcException ( context . Status ) ;
60
+ throw new RpcException ( new Status ( StatusCode . Internal , e . Message , e ) ) ;
79
61
}
80
62
81
63
return new CreateClientResponse ( ) ;
@@ -98,7 +80,6 @@ void MaybeOverrideTimeoutSetting(BigtableServiceApiSettings settings)
98
80
99
81
ChannelCredentials GetChannelCredentials ( )
100
82
{
101
- // securityOptions.UseSsl, securityOptions.SslRootCertsPem, securityOptions.AccessToken
102
83
if ( request . SecurityOptions . AccessToken is null )
103
84
{
104
85
return request . SecurityOptions . UseSsl ? new SslCredentials ( request . SecurityOptions . SslRootCertsPem ) : ChannelCredentials . Insecure ;
@@ -114,22 +95,9 @@ GrpcChannelOptions GetChannelOptions() => request.SecurityOptions.SslEndpointOve
114
95
: null ;
115
96
}
116
97
117
- public override async Task < CloseClientResponse > CloseClient ( CloseClientRequest request , ServerCallContext context )
98
+ public override Task < CloseClientResponse > CloseClient ( CloseClientRequest request , ServerCallContext context )
118
99
{
119
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
120
- try
121
- {
122
- if ( cbtClient . LastCreatedChannel is not null )
123
- {
124
- await cbtClient . LastCreatedChannel . ShutdownAsync ( ) ;
125
- }
126
- }
127
- catch ( Exception e )
128
- {
129
- context . Status = new Status ( StatusCode . Internal , e . Message , e ) ;
130
- throw new RpcException ( context . Status ) ;
131
- }
132
- return new CloseClientResponse ( ) ;
100
+ return Task . FromResult ( new CloseClientResponse ( ) ) ;
133
101
}
134
102
135
103
public override Task < RemoveClientResponse > RemoveClient ( RemoveClientRequest request , ServerCallContext context )
@@ -138,19 +106,18 @@ public override Task<RemoveClientResponse> RemoveClient(RemoveClientRequest requ
138
106
bool removed = s_clientMap . Remove ( clientId ) ;
139
107
if ( ! removed )
140
108
{
141
- context . Status = new Status ( StatusCode . NotFound , $ "Client { clientId } not found.") ;
142
- throw new RpcException ( context . Status ) ;
109
+ throw new RpcException ( new Status ( StatusCode . NotFound , $ "Client { clientId } not found.") ) ;
143
110
}
144
111
return Task . FromResult ( new RemoveClientResponse ( ) ) ;
145
112
}
146
113
147
114
public override async Task < RowResult > ReadRow ( ReadRowRequest request , ServerCallContext context )
148
115
{
149
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
116
+ BigtableClient bigtableClient = GetClient ( request . ClientId , context ) ;
150
117
TableName tableName = TableName . Parse ( request . TableName ) ;
151
118
try
152
119
{
153
- Row row = await cbtClient . Client . ReadRowAsync ( tableName ,
120
+ Row row = await bigtableClient . ReadRowAsync ( tableName ,
154
121
new BigtableByteString ( request . RowKey ) ,
155
122
request . Filter ) ;
156
123
string message = row is null ? $ "ReadRow didn't find row: { request . RowKey } " : "ReadRow succeeded" ;
@@ -168,13 +135,13 @@ public override async Task<RowResult> ReadRow(ReadRowRequest request, ServerCall
168
135
} ;
169
136
}
170
137
}
171
- public override async Task < RowsResult > ReadRows ( ReadRowsRequest request , ServerCallContext context )
138
+ public override async Task < RowsResult > ReadRows ( Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy . ReadRowsRequest request , ServerCallContext context )
172
139
{
173
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
140
+ BigtableClient bigtableClient = GetClient ( request . ClientId , context ) ;
174
141
RowsResult rowsResult = new RowsResult ( ) ;
175
142
try
176
143
{
177
- ReadRowsStream stream = cbtClient . Client . ReadRows ( request . Request ) ;
144
+ ReadRowsStream stream = bigtableClient . ReadRows ( request . Request ) ;
178
145
await foreach ( Row row in stream )
179
146
{
180
147
rowsResult . Rows . Add ( row ) ;
@@ -201,12 +168,12 @@ public override async Task<RowsResult> ReadRows(ReadRowsRequest request, ServerC
201
168
}
202
169
}
203
170
204
- public override async Task < MutateRowResult > MutateRow ( MutateRowRequest request , ServerCallContext context )
171
+ public override async Task < MutateRowResult > MutateRow ( Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy . MutateRowRequest request , ServerCallContext context )
205
172
{
206
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
173
+ BigtableClient bigtableClient = GetClient ( request . ClientId , context ) ;
207
174
try
208
175
{
209
- MutateRowResponse response = await cbtClient . Client . MutateRowAsync ( request . Request ) ;
176
+ MutateRowResponse response = await bigtableClient . MutateRowAsync ( request . Request ) ;
210
177
string message = "MutateRow succeeded" ;
211
178
return new MutateRowResult
212
179
{
@@ -222,13 +189,13 @@ public override async Task<MutateRowResult> MutateRow(MutateRowRequest request,
222
189
}
223
190
}
224
191
225
- public override async Task < MutateRowsResult > BulkMutateRows ( MutateRowsRequest request , ServerCallContext context )
192
+ public override async Task < MutateRowsResult > BulkMutateRows ( Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy . MutateRowsRequest request , ServerCallContext context )
226
193
{
227
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
194
+ BigtableClient bigtableClient = GetClient ( request . ClientId , context ) ;
228
195
MutateRowsResult result = new MutateRowsResult ( ) ;
229
196
try
230
197
{
231
- MutateRowsResponse response = await cbtClient . Client . MutateRowsAsync ( request . Request ) ;
198
+ MutateRowsResponse response = await bigtableClient . MutateRowsAsync ( request . Request ) ;
232
199
string message = "MutateRows succeeded" ;
233
200
result . Status = SetSuccessStatus ( message ) ;
234
201
foreach ( MutateRowsResponse . Types . Entry entry in response . Entries )
@@ -262,12 +229,12 @@ public override async Task<MutateRowsResult> BulkMutateRows(MutateRowsRequest re
262
229
}
263
230
}
264
231
265
- public override async Task < CheckAndMutateRowResult > CheckAndMutateRow ( CheckAndMutateRowRequest request , ServerCallContext context )
232
+ public override async Task < CheckAndMutateRowResult > CheckAndMutateRow ( Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy . CheckAndMutateRowRequest request , ServerCallContext context )
266
233
{
267
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
234
+ BigtableClient bigtableClient = GetClient ( request . ClientId , context ) ;
268
235
try
269
236
{
270
- CheckAndMutateRowResponse response = await cbtClient . Client . CheckAndMutateRowAsync ( request . Request ) ;
237
+ CheckAndMutateRowResponse response = await bigtableClient . CheckAndMutateRowAsync ( request . Request ) ;
271
238
string message = "CheckAndMutateRow succeeded" ;
272
239
return new CheckAndMutateRowResult
273
240
{
@@ -284,12 +251,12 @@ public override async Task<CheckAndMutateRowResult> CheckAndMutateRow(CheckAndMu
284
251
}
285
252
}
286
253
287
- public override async Task < SampleRowKeysResult > SampleRowKeys ( SampleRowKeysRequest request , ServerCallContext context )
254
+ public override async Task < SampleRowKeysResult > SampleRowKeys ( Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy . SampleRowKeysRequest request , ServerCallContext context )
288
255
{
289
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
256
+ BigtableClient bigtableClient = GetClient ( request . ClientId , context ) ;
290
257
try
291
258
{
292
- BigtableServiceApiClient . SampleRowKeysStream stream = cbtClient . Client . SampleRowKeys ( request . Request ) ;
259
+ BigtableServiceApiClient . SampleRowKeysStream stream = bigtableClient . SampleRowKeys ( request . Request ) ;
293
260
SampleRowKeysResult result = new SampleRowKeysResult ( ) ;
294
261
result . Samples . Add ( await stream . ToListAsync ( ) ) ;
295
262
string message = result . Samples . Count == 0 ? "SampleRowKeys did not find sample" : "SampleRowKeys succeeded" ;
@@ -305,12 +272,12 @@ public override async Task<SampleRowKeysResult> SampleRowKeys(SampleRowKeysReque
305
272
}
306
273
}
307
274
308
- public override async Task < RowResult > ReadModifyWriteRow ( ReadModifyWriteRowRequest request , ServerCallContext context )
275
+ public override async Task < RowResult > ReadModifyWriteRow ( Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy . ReadModifyWriteRowRequest request , ServerCallContext context )
309
276
{
310
- CbtClient cbtClient = GetClient ( request . ClientId , context ) ;
277
+ BigtableClient bigtableClient = GetClient ( request . ClientId , context ) ;
311
278
try
312
279
{
313
- Row row = ( await cbtClient . Client . ReadModifyWriteRowAsync ( request . Request ) ) . Row ;
280
+ Row row = ( await bigtableClient . ReadModifyWriteRowAsync ( request . Request ) ) . Row ;
314
281
string message = row is null ? "ReadModifyRow didn't find row" : "ReadModifyRow succeeded" ;
315
282
return new RowResult
316
283
{
@@ -327,19 +294,18 @@ public override async Task<RowResult> ReadModifyWriteRow(ReadModifyWriteRowReque
327
294
}
328
295
}
329
296
330
- public override Task < ExecuteQueryResult > ExecuteQuery ( ExecuteQueryRequest request , ServerCallContext context )
297
+ public override Task < ExecuteQueryResult > ExecuteQuery ( Google . Cloud . Bigtable . V2 . ConformanceTests . TestProxy . ExecuteQueryRequest request , ServerCallContext context )
331
298
{
332
299
throw new NotImplementedException ( ) ;
333
300
}
334
301
335
302
public static CloudBigtableV2TestProxyImpl Create ( ) => new ( ) ;
336
303
337
- private CbtClient GetClient ( string clientId , ServerCallContext context )
304
+ private BigtableClient GetClient ( string clientId , ServerCallContext context )
338
305
{
339
306
if ( ! s_clientMap . ContainsKey ( clientId ) )
340
307
{
341
- context . Status = new Status ( StatusCode . NotFound , $ "Client { clientId } not found.") ;
342
- throw new RpcException ( context . Status ) ;
308
+ throw new RpcException ( new Status ( StatusCode . NotFound , $ "Client { clientId } not found.") ) ;
343
309
}
344
310
345
311
return s_clientMap [ clientId ] ;
0 commit comments