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.
 
 
 

255 line
6.8 KiB

  1. // Copyright 2018 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. // AUTO-GENERATED CODE. DO NOT EDIT.
  15. package vision
  16. import (
  17. visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
  18. longrunningpb "google.golang.org/genproto/googleapis/longrunning"
  19. )
  20. import (
  21. "flag"
  22. "fmt"
  23. "io"
  24. "log"
  25. "net"
  26. "os"
  27. "strings"
  28. "testing"
  29. "github.com/golang/protobuf/proto"
  30. "github.com/golang/protobuf/ptypes"
  31. "golang.org/x/net/context"
  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 mockImageAnnotatorServer struct {
  43. // Embed for forward compatibility.
  44. // Tests will keep working if more methods are added
  45. // in the future.
  46. visionpb.ImageAnnotatorServer
  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 *mockImageAnnotatorServer) BatchAnnotateImages(ctx context.Context, req *visionpb.BatchAnnotateImagesRequest) (*visionpb.BatchAnnotateImagesResponse, 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].(*visionpb.BatchAnnotateImagesResponse), nil
  63. }
  64. func (s *mockImageAnnotatorServer) AsyncBatchAnnotateFiles(ctx context.Context, req *visionpb.AsyncBatchAnnotateFilesRequest) (*longrunningpb.Operation, error) {
  65. md, _ := metadata.FromIncomingContext(ctx)
  66. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  67. return nil, 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 nil, s.err
  72. }
  73. return s.resps[0].(*longrunningpb.Operation), nil
  74. }
  75. // clientOpt is the option tests should use to connect to the test server.
  76. // It is initialized by TestMain.
  77. var clientOpt option.ClientOption
  78. var (
  79. mockImageAnnotator mockImageAnnotatorServer
  80. )
  81. func TestMain(m *testing.M) {
  82. flag.Parse()
  83. serv := grpc.NewServer()
  84. visionpb.RegisterImageAnnotatorServer(serv, &mockImageAnnotator)
  85. lis, err := net.Listen("tcp", "localhost:0")
  86. if err != nil {
  87. log.Fatal(err)
  88. }
  89. go serv.Serve(lis)
  90. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  91. if err != nil {
  92. log.Fatal(err)
  93. }
  94. clientOpt = option.WithGRPCConn(conn)
  95. os.Exit(m.Run())
  96. }
  97. func TestImageAnnotatorBatchAnnotateImages(t *testing.T) {
  98. var expectedResponse *visionpb.BatchAnnotateImagesResponse = &visionpb.BatchAnnotateImagesResponse{}
  99. mockImageAnnotator.err = nil
  100. mockImageAnnotator.reqs = nil
  101. mockImageAnnotator.resps = append(mockImageAnnotator.resps[:0], expectedResponse)
  102. var requests []*visionpb.AnnotateImageRequest = nil
  103. var request = &visionpb.BatchAnnotateImagesRequest{
  104. Requests: requests,
  105. }
  106. c, err := NewImageAnnotatorClient(context.Background(), clientOpt)
  107. if err != nil {
  108. t.Fatal(err)
  109. }
  110. resp, err := c.BatchAnnotateImages(context.Background(), request)
  111. if err != nil {
  112. t.Fatal(err)
  113. }
  114. if want, got := request, mockImageAnnotator.reqs[0]; !proto.Equal(want, got) {
  115. t.Errorf("wrong request %q, want %q", got, want)
  116. }
  117. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  118. t.Errorf("wrong response %q, want %q)", got, want)
  119. }
  120. }
  121. func TestImageAnnotatorBatchAnnotateImagesError(t *testing.T) {
  122. errCode := codes.PermissionDenied
  123. mockImageAnnotator.err = gstatus.Error(errCode, "test error")
  124. var requests []*visionpb.AnnotateImageRequest = nil
  125. var request = &visionpb.BatchAnnotateImagesRequest{
  126. Requests: requests,
  127. }
  128. c, err := NewImageAnnotatorClient(context.Background(), clientOpt)
  129. if err != nil {
  130. t.Fatal(err)
  131. }
  132. resp, err := c.BatchAnnotateImages(context.Background(), request)
  133. if st, ok := gstatus.FromError(err); !ok {
  134. t.Errorf("got error %v, expected grpc error", err)
  135. } else if c := st.Code(); c != errCode {
  136. t.Errorf("got error code %q, want %q", c, errCode)
  137. }
  138. _ = resp
  139. }
  140. func TestImageAnnotatorAsyncBatchAnnotateFiles(t *testing.T) {
  141. var expectedResponse *visionpb.AsyncBatchAnnotateFilesResponse = &visionpb.AsyncBatchAnnotateFilesResponse{}
  142. mockImageAnnotator.err = nil
  143. mockImageAnnotator.reqs = nil
  144. any, err := ptypes.MarshalAny(expectedResponse)
  145. if err != nil {
  146. t.Fatal(err)
  147. }
  148. mockImageAnnotator.resps = append(mockImageAnnotator.resps[:0], &longrunningpb.Operation{
  149. Name: "longrunning-test",
  150. Done: true,
  151. Result: &longrunningpb.Operation_Response{Response: any},
  152. })
  153. var requests []*visionpb.AsyncAnnotateFileRequest = nil
  154. var request = &visionpb.AsyncBatchAnnotateFilesRequest{
  155. Requests: requests,
  156. }
  157. c, err := NewImageAnnotatorClient(context.Background(), clientOpt)
  158. if err != nil {
  159. t.Fatal(err)
  160. }
  161. respLRO, err := c.AsyncBatchAnnotateFiles(context.Background(), request)
  162. if err != nil {
  163. t.Fatal(err)
  164. }
  165. resp, err := respLRO.Wait(context.Background())
  166. if err != nil {
  167. t.Fatal(err)
  168. }
  169. if want, got := request, mockImageAnnotator.reqs[0]; !proto.Equal(want, got) {
  170. t.Errorf("wrong request %q, want %q", got, want)
  171. }
  172. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  173. t.Errorf("wrong response %q, want %q)", got, want)
  174. }
  175. }
  176. func TestImageAnnotatorAsyncBatchAnnotateFilesError(t *testing.T) {
  177. errCode := codes.PermissionDenied
  178. mockImageAnnotator.err = nil
  179. mockImageAnnotator.resps = append(mockImageAnnotator.resps[:0], &longrunningpb.Operation{
  180. Name: "longrunning-test",
  181. Done: true,
  182. Result: &longrunningpb.Operation_Error{
  183. Error: &status.Status{
  184. Code: int32(errCode),
  185. Message: "test error",
  186. },
  187. },
  188. })
  189. var requests []*visionpb.AsyncAnnotateFileRequest = nil
  190. var request = &visionpb.AsyncBatchAnnotateFilesRequest{
  191. Requests: requests,
  192. }
  193. c, err := NewImageAnnotatorClient(context.Background(), clientOpt)
  194. if err != nil {
  195. t.Fatal(err)
  196. }
  197. respLRO, err := c.AsyncBatchAnnotateFiles(context.Background(), request)
  198. if err != nil {
  199. t.Fatal(err)
  200. }
  201. resp, err := respLRO.Wait(context.Background())
  202. if st, ok := gstatus.FromError(err); !ok {
  203. t.Errorf("got error %v, expected grpc error", err)
  204. } else if c := st.Code(); c != errCode {
  205. t.Errorf("got error code %q, want %q", c, errCode)
  206. }
  207. _ = resp
  208. }