You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

453 lines
13 KiB

  1. // Copyright 2019 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // https://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // Code generated by gapic-generator. DO NOT EDIT.
  15. package storage
  16. import (
  17. emptypb "github.com/golang/protobuf/ptypes/empty"
  18. storagepb "google.golang.org/genproto/googleapis/cloud/bigquery/storage/v1beta1"
  19. )
  20. import (
  21. "context"
  22. "flag"
  23. "fmt"
  24. "io"
  25. "log"
  26. "net"
  27. "os"
  28. "strings"
  29. "testing"
  30. "github.com/golang/protobuf/proto"
  31. "github.com/golang/protobuf/ptypes"
  32. "google.golang.org/api/option"
  33. status "google.golang.org/genproto/googleapis/rpc/status"
  34. "google.golang.org/grpc"
  35. "google.golang.org/grpc/codes"
  36. "google.golang.org/grpc/metadata"
  37. gstatus "google.golang.org/grpc/status"
  38. )
  39. var _ = io.EOF
  40. var _ = ptypes.MarshalAny
  41. var _ status.Status
  42. type mockBigQueryStorageServer struct {
  43. // Embed for forward compatibility.
  44. // Tests will keep working if more methods are added
  45. // in the future.
  46. storagepb.BigQueryStorageServer
  47. reqs []proto.Message
  48. // If set, all calls return this error.
  49. err error
  50. // responses to return if err == nil
  51. resps []proto.Message
  52. }
  53. func (s *mockBigQueryStorageServer) CreateReadSession(ctx context.Context, req *storagepb.CreateReadSessionRequest) (*storagepb.ReadSession, error) {
  54. md, _ := metadata.FromIncomingContext(ctx)
  55. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  56. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  57. }
  58. s.reqs = append(s.reqs, req)
  59. if s.err != nil {
  60. return nil, s.err
  61. }
  62. return s.resps[0].(*storagepb.ReadSession), nil
  63. }
  64. func (s *mockBigQueryStorageServer) ReadRows(req *storagepb.ReadRowsRequest, stream storagepb.BigQueryStorage_ReadRowsServer) error {
  65. md, _ := metadata.FromIncomingContext(stream.Context())
  66. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  67. return fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  68. }
  69. s.reqs = append(s.reqs, req)
  70. if s.err != nil {
  71. return s.err
  72. }
  73. for _, v := range s.resps {
  74. if err := stream.Send(v.(*storagepb.ReadRowsResponse)); err != nil {
  75. return err
  76. }
  77. }
  78. return nil
  79. }
  80. func (s *mockBigQueryStorageServer) BatchCreateReadSessionStreams(ctx context.Context, req *storagepb.BatchCreateReadSessionStreamsRequest) (*storagepb.BatchCreateReadSessionStreamsResponse, error) {
  81. md, _ := metadata.FromIncomingContext(ctx)
  82. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  83. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  84. }
  85. s.reqs = append(s.reqs, req)
  86. if s.err != nil {
  87. return nil, s.err
  88. }
  89. return s.resps[0].(*storagepb.BatchCreateReadSessionStreamsResponse), nil
  90. }
  91. func (s *mockBigQueryStorageServer) FinalizeStream(ctx context.Context, req *storagepb.FinalizeStreamRequest) (*emptypb.Empty, error) {
  92. md, _ := metadata.FromIncomingContext(ctx)
  93. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  94. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  95. }
  96. s.reqs = append(s.reqs, req)
  97. if s.err != nil {
  98. return nil, s.err
  99. }
  100. return s.resps[0].(*emptypb.Empty), nil
  101. }
  102. func (s *mockBigQueryStorageServer) SplitReadStream(ctx context.Context, req *storagepb.SplitReadStreamRequest) (*storagepb.SplitReadStreamResponse, error) {
  103. md, _ := metadata.FromIncomingContext(ctx)
  104. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  105. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  106. }
  107. s.reqs = append(s.reqs, req)
  108. if s.err != nil {
  109. return nil, s.err
  110. }
  111. return s.resps[0].(*storagepb.SplitReadStreamResponse), nil
  112. }
  113. // clientOpt is the option tests should use to connect to the test server.
  114. // It is initialized by TestMain.
  115. var clientOpt option.ClientOption
  116. var (
  117. mockBigQueryStorage mockBigQueryStorageServer
  118. )
  119. func TestMain(m *testing.M) {
  120. flag.Parse()
  121. serv := grpc.NewServer()
  122. storagepb.RegisterBigQueryStorageServer(serv, &mockBigQueryStorage)
  123. lis, err := net.Listen("tcp", "localhost:0")
  124. if err != nil {
  125. log.Fatal(err)
  126. }
  127. go serv.Serve(lis)
  128. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  129. if err != nil {
  130. log.Fatal(err)
  131. }
  132. clientOpt = option.WithGRPCConn(conn)
  133. os.Exit(m.Run())
  134. }
  135. func TestBigQueryStorageCreateReadSession(t *testing.T) {
  136. var name string = "name3373707"
  137. var expectedResponse = &storagepb.ReadSession{
  138. Name: name,
  139. }
  140. mockBigQueryStorage.err = nil
  141. mockBigQueryStorage.reqs = nil
  142. mockBigQueryStorage.resps = append(mockBigQueryStorage.resps[:0], expectedResponse)
  143. var tableReference *storagepb.TableReference = &storagepb.TableReference{}
  144. var parent string = "parent-995424086"
  145. var request = &storagepb.CreateReadSessionRequest{
  146. TableReference: tableReference,
  147. Parent: parent,
  148. }
  149. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  150. if err != nil {
  151. t.Fatal(err)
  152. }
  153. resp, err := c.CreateReadSession(context.Background(), request)
  154. if err != nil {
  155. t.Fatal(err)
  156. }
  157. if want, got := request, mockBigQueryStorage.reqs[0]; !proto.Equal(want, got) {
  158. t.Errorf("wrong request %q, want %q", got, want)
  159. }
  160. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  161. t.Errorf("wrong response %q, want %q)", got, want)
  162. }
  163. }
  164. func TestBigQueryStorageCreateReadSessionError(t *testing.T) {
  165. errCode := codes.PermissionDenied
  166. mockBigQueryStorage.err = gstatus.Error(errCode, "test error")
  167. var tableReference *storagepb.TableReference = &storagepb.TableReference{}
  168. var parent string = "parent-995424086"
  169. var request = &storagepb.CreateReadSessionRequest{
  170. TableReference: tableReference,
  171. Parent: parent,
  172. }
  173. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  174. if err != nil {
  175. t.Fatal(err)
  176. }
  177. resp, err := c.CreateReadSession(context.Background(), request)
  178. if st, ok := gstatus.FromError(err); !ok {
  179. t.Errorf("got error %v, expected grpc error", err)
  180. } else if c := st.Code(); c != errCode {
  181. t.Errorf("got error code %q, want %q", c, errCode)
  182. }
  183. _ = resp
  184. }
  185. func TestBigQueryStorageReadRows(t *testing.T) {
  186. var expectedResponse *storagepb.ReadRowsResponse = &storagepb.ReadRowsResponse{}
  187. mockBigQueryStorage.err = nil
  188. mockBigQueryStorage.reqs = nil
  189. mockBigQueryStorage.resps = append(mockBigQueryStorage.resps[:0], expectedResponse)
  190. var readPosition *storagepb.StreamPosition = &storagepb.StreamPosition{}
  191. var request = &storagepb.ReadRowsRequest{
  192. ReadPosition: readPosition,
  193. }
  194. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  195. if err != nil {
  196. t.Fatal(err)
  197. }
  198. stream, err := c.ReadRows(context.Background(), request)
  199. if err != nil {
  200. t.Fatal(err)
  201. }
  202. resp, err := stream.Recv()
  203. if err != nil {
  204. t.Fatal(err)
  205. }
  206. if want, got := request, mockBigQueryStorage.reqs[0]; !proto.Equal(want, got) {
  207. t.Errorf("wrong request %q, want %q", got, want)
  208. }
  209. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  210. t.Errorf("wrong response %q, want %q)", got, want)
  211. }
  212. }
  213. func TestBigQueryStorageReadRowsError(t *testing.T) {
  214. errCode := codes.PermissionDenied
  215. mockBigQueryStorage.err = gstatus.Error(errCode, "test error")
  216. var readPosition *storagepb.StreamPosition = &storagepb.StreamPosition{}
  217. var request = &storagepb.ReadRowsRequest{
  218. ReadPosition: readPosition,
  219. }
  220. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  221. if err != nil {
  222. t.Fatal(err)
  223. }
  224. stream, err := c.ReadRows(context.Background(), request)
  225. if err != nil {
  226. t.Fatal(err)
  227. }
  228. resp, err := stream.Recv()
  229. if st, ok := gstatus.FromError(err); !ok {
  230. t.Errorf("got error %v, expected grpc error", err)
  231. } else if c := st.Code(); c != errCode {
  232. t.Errorf("got error code %q, want %q", c, errCode)
  233. }
  234. _ = resp
  235. }
  236. func TestBigQueryStorageBatchCreateReadSessionStreams(t *testing.T) {
  237. var expectedResponse *storagepb.BatchCreateReadSessionStreamsResponse = &storagepb.BatchCreateReadSessionStreamsResponse{}
  238. mockBigQueryStorage.err = nil
  239. mockBigQueryStorage.reqs = nil
  240. mockBigQueryStorage.resps = append(mockBigQueryStorage.resps[:0], expectedResponse)
  241. var session *storagepb.ReadSession = &storagepb.ReadSession{}
  242. var requestedStreams int32 = 1017221410
  243. var request = &storagepb.BatchCreateReadSessionStreamsRequest{
  244. Session: session,
  245. RequestedStreams: requestedStreams,
  246. }
  247. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  248. if err != nil {
  249. t.Fatal(err)
  250. }
  251. resp, err := c.BatchCreateReadSessionStreams(context.Background(), request)
  252. if err != nil {
  253. t.Fatal(err)
  254. }
  255. if want, got := request, mockBigQueryStorage.reqs[0]; !proto.Equal(want, got) {
  256. t.Errorf("wrong request %q, want %q", got, want)
  257. }
  258. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  259. t.Errorf("wrong response %q, want %q)", got, want)
  260. }
  261. }
  262. func TestBigQueryStorageBatchCreateReadSessionStreamsError(t *testing.T) {
  263. errCode := codes.PermissionDenied
  264. mockBigQueryStorage.err = gstatus.Error(errCode, "test error")
  265. var session *storagepb.ReadSession = &storagepb.ReadSession{}
  266. var requestedStreams int32 = 1017221410
  267. var request = &storagepb.BatchCreateReadSessionStreamsRequest{
  268. Session: session,
  269. RequestedStreams: requestedStreams,
  270. }
  271. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  272. if err != nil {
  273. t.Fatal(err)
  274. }
  275. resp, err := c.BatchCreateReadSessionStreams(context.Background(), request)
  276. if st, ok := gstatus.FromError(err); !ok {
  277. t.Errorf("got error %v, expected grpc error", err)
  278. } else if c := st.Code(); c != errCode {
  279. t.Errorf("got error code %q, want %q", c, errCode)
  280. }
  281. _ = resp
  282. }
  283. func TestBigQueryStorageFinalizeStream(t *testing.T) {
  284. var expectedResponse *emptypb.Empty = &emptypb.Empty{}
  285. mockBigQueryStorage.err = nil
  286. mockBigQueryStorage.reqs = nil
  287. mockBigQueryStorage.resps = append(mockBigQueryStorage.resps[:0], expectedResponse)
  288. var stream *storagepb.Stream = &storagepb.Stream{}
  289. var request = &storagepb.FinalizeStreamRequest{
  290. Stream: stream,
  291. }
  292. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  293. if err != nil {
  294. t.Fatal(err)
  295. }
  296. err = c.FinalizeStream(context.Background(), request)
  297. if err != nil {
  298. t.Fatal(err)
  299. }
  300. if want, got := request, mockBigQueryStorage.reqs[0]; !proto.Equal(want, got) {
  301. t.Errorf("wrong request %q, want %q", got, want)
  302. }
  303. }
  304. func TestBigQueryStorageFinalizeStreamError(t *testing.T) {
  305. errCode := codes.PermissionDenied
  306. mockBigQueryStorage.err = gstatus.Error(errCode, "test error")
  307. var stream *storagepb.Stream = &storagepb.Stream{}
  308. var request = &storagepb.FinalizeStreamRequest{
  309. Stream: stream,
  310. }
  311. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  312. if err != nil {
  313. t.Fatal(err)
  314. }
  315. err = c.FinalizeStream(context.Background(), request)
  316. if st, ok := gstatus.FromError(err); !ok {
  317. t.Errorf("got error %v, expected grpc error", err)
  318. } else if c := st.Code(); c != errCode {
  319. t.Errorf("got error code %q, want %q", c, errCode)
  320. }
  321. }
  322. func TestBigQueryStorageSplitReadStream(t *testing.T) {
  323. var expectedResponse *storagepb.SplitReadStreamResponse = &storagepb.SplitReadStreamResponse{}
  324. mockBigQueryStorage.err = nil
  325. mockBigQueryStorage.reqs = nil
  326. mockBigQueryStorage.resps = append(mockBigQueryStorage.resps[:0], expectedResponse)
  327. var originalStream *storagepb.Stream = &storagepb.Stream{}
  328. var request = &storagepb.SplitReadStreamRequest{
  329. OriginalStream: originalStream,
  330. }
  331. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  332. if err != nil {
  333. t.Fatal(err)
  334. }
  335. resp, err := c.SplitReadStream(context.Background(), request)
  336. if err != nil {
  337. t.Fatal(err)
  338. }
  339. if want, got := request, mockBigQueryStorage.reqs[0]; !proto.Equal(want, got) {
  340. t.Errorf("wrong request %q, want %q", got, want)
  341. }
  342. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  343. t.Errorf("wrong response %q, want %q)", got, want)
  344. }
  345. }
  346. func TestBigQueryStorageSplitReadStreamError(t *testing.T) {
  347. errCode := codes.PermissionDenied
  348. mockBigQueryStorage.err = gstatus.Error(errCode, "test error")
  349. var originalStream *storagepb.Stream = &storagepb.Stream{}
  350. var request = &storagepb.SplitReadStreamRequest{
  351. OriginalStream: originalStream,
  352. }
  353. c, err := NewBigQueryStorageClient(context.Background(), clientOpt)
  354. if err != nil {
  355. t.Fatal(err)
  356. }
  357. resp, err := c.SplitReadStream(context.Background(), request)
  358. if st, ok := gstatus.FromError(err); !ok {
  359. t.Errorf("got error %v, expected grpc error", err)
  360. } else if c := st.Code(); c != errCode {
  361. t.Errorf("got error code %q, want %q", c, errCode)
  362. }
  363. _ = resp
  364. }