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 15// Code generated by gapic-generator. DO NOT EDIT. 16 17package trace 18 19import ( 20 "context" 21 "flag" 22 "fmt" 23 "io" 24 "log" 25 "net" 26 "os" 27 "strings" 28 "testing" 29 30 "github.com/golang/protobuf/proto" 31 "github.com/golang/protobuf/ptypes" 32 emptypb "github.com/golang/protobuf/ptypes/empty" 33 "google.golang.org/api/option" 34 cloudtracepb "google.golang.org/genproto/googleapis/devtools/cloudtrace/v1" 35 36 status "google.golang.org/genproto/googleapis/rpc/status" 37 "google.golang.org/grpc" 38 "google.golang.org/grpc/codes" 39 "google.golang.org/grpc/metadata" 40 41 gstatus "google.golang.org/grpc/status" 42) 43 44var _ = io.EOF 45var _ = ptypes.MarshalAny 46var _ status.Status 47 48type mockTraceServer struct { 49 // Embed for forward compatibility. 50 // Tests will keep working if more methods are added 51 // in the future. 52 cloudtracepb.TraceServiceServer 53 54 reqs []proto.Message 55 56 // If set, all calls return this error. 57 err error 58 59 // responses to return if err == nil 60 resps []proto.Message 61} 62 63func (s *mockTraceServer) ListTraces(ctx context.Context, req *cloudtracepb.ListTracesRequest) (*cloudtracepb.ListTracesResponse, error) { 64 md, _ := metadata.FromIncomingContext(ctx) 65 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 66 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 67 } 68 s.reqs = append(s.reqs, req) 69 if s.err != nil { 70 return nil, s.err 71 } 72 return s.resps[0].(*cloudtracepb.ListTracesResponse), nil 73} 74 75func (s *mockTraceServer) GetTrace(ctx context.Context, req *cloudtracepb.GetTraceRequest) (*cloudtracepb.Trace, error) { 76 md, _ := metadata.FromIncomingContext(ctx) 77 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 78 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 79 } 80 s.reqs = append(s.reqs, req) 81 if s.err != nil { 82 return nil, s.err 83 } 84 return s.resps[0].(*cloudtracepb.Trace), nil 85} 86 87func (s *mockTraceServer) PatchTraces(ctx context.Context, req *cloudtracepb.PatchTracesRequest) (*emptypb.Empty, error) { 88 md, _ := metadata.FromIncomingContext(ctx) 89 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 90 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 91 } 92 s.reqs = append(s.reqs, req) 93 if s.err != nil { 94 return nil, s.err 95 } 96 return s.resps[0].(*emptypb.Empty), nil 97} 98 99// clientOpt is the option tests should use to connect to the test server. 100// It is initialized by TestMain. 101var clientOpt option.ClientOption 102 103var ( 104 mockTrace mockTraceServer 105) 106 107func TestMain(m *testing.M) { 108 flag.Parse() 109 110 serv := grpc.NewServer() 111 cloudtracepb.RegisterTraceServiceServer(serv, &mockTrace) 112 113 lis, err := net.Listen("tcp", "localhost:0") 114 if err != nil { 115 log.Fatal(err) 116 } 117 go serv.Serve(lis) 118 119 conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure()) 120 if err != nil { 121 log.Fatal(err) 122 } 123 clientOpt = option.WithGRPCConn(conn) 124 125 os.Exit(m.Run()) 126} 127 128func TestTraceServicePatchTraces(t *testing.T) { 129 var expectedResponse *emptypb.Empty = &emptypb.Empty{} 130 131 mockTrace.err = nil 132 mockTrace.reqs = nil 133 134 mockTrace.resps = append(mockTrace.resps[:0], expectedResponse) 135 136 var projectId string = "projectId-1969970175" 137 var traces *cloudtracepb.Traces = &cloudtracepb.Traces{} 138 var request = &cloudtracepb.PatchTracesRequest{ 139 ProjectId: projectId, 140 Traces: traces, 141 } 142 143 c, err := NewClient(context.Background(), clientOpt) 144 if err != nil { 145 t.Fatal(err) 146 } 147 148 err = c.PatchTraces(context.Background(), request) 149 150 if err != nil { 151 t.Fatal(err) 152 } 153 154 if want, got := request, mockTrace.reqs[0]; !proto.Equal(want, got) { 155 t.Errorf("wrong request %q, want %q", got, want) 156 } 157 158} 159 160func TestTraceServicePatchTracesError(t *testing.T) { 161 errCode := codes.PermissionDenied 162 mockTrace.err = gstatus.Error(errCode, "test error") 163 164 var projectId string = "projectId-1969970175" 165 var traces *cloudtracepb.Traces = &cloudtracepb.Traces{} 166 var request = &cloudtracepb.PatchTracesRequest{ 167 ProjectId: projectId, 168 Traces: traces, 169 } 170 171 c, err := NewClient(context.Background(), clientOpt) 172 if err != nil { 173 t.Fatal(err) 174 } 175 176 err = c.PatchTraces(context.Background(), request) 177 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} 184func TestTraceServiceGetTrace(t *testing.T) { 185 var projectId2 string = "projectId2939242356" 186 var traceId2 string = "traceId2987826376" 187 var expectedResponse = &cloudtracepb.Trace{ 188 ProjectId: projectId2, 189 TraceId: traceId2, 190 } 191 192 mockTrace.err = nil 193 mockTrace.reqs = nil 194 195 mockTrace.resps = append(mockTrace.resps[:0], expectedResponse) 196 197 var projectId string = "projectId-1969970175" 198 var traceId string = "traceId1270300245" 199 var request = &cloudtracepb.GetTraceRequest{ 200 ProjectId: projectId, 201 TraceId: traceId, 202 } 203 204 c, err := NewClient(context.Background(), clientOpt) 205 if err != nil { 206 t.Fatal(err) 207 } 208 209 resp, err := c.GetTrace(context.Background(), request) 210 211 if err != nil { 212 t.Fatal(err) 213 } 214 215 if want, got := request, mockTrace.reqs[0]; !proto.Equal(want, got) { 216 t.Errorf("wrong request %q, want %q", got, want) 217 } 218 219 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 220 t.Errorf("wrong response %q, want %q)", got, want) 221 } 222} 223 224func TestTraceServiceGetTraceError(t *testing.T) { 225 errCode := codes.PermissionDenied 226 mockTrace.err = gstatus.Error(errCode, "test error") 227 228 var projectId string = "projectId-1969970175" 229 var traceId string = "traceId1270300245" 230 var request = &cloudtracepb.GetTraceRequest{ 231 ProjectId: projectId, 232 TraceId: traceId, 233 } 234 235 c, err := NewClient(context.Background(), clientOpt) 236 if err != nil { 237 t.Fatal(err) 238 } 239 240 resp, err := c.GetTrace(context.Background(), request) 241 242 if st, ok := gstatus.FromError(err); !ok { 243 t.Errorf("got error %v, expected grpc error", err) 244 } else if c := st.Code(); c != errCode { 245 t.Errorf("got error code %q, want %q", c, errCode) 246 } 247 _ = resp 248} 249func TestTraceServiceListTraces(t *testing.T) { 250 var nextPageToken string = "" 251 var tracesElement *cloudtracepb.Trace = &cloudtracepb.Trace{} 252 var traces = []*cloudtracepb.Trace{tracesElement} 253 var expectedResponse = &cloudtracepb.ListTracesResponse{ 254 NextPageToken: nextPageToken, 255 Traces: traces, 256 } 257 258 mockTrace.err = nil 259 mockTrace.reqs = nil 260 261 mockTrace.resps = append(mockTrace.resps[:0], expectedResponse) 262 263 var projectId string = "projectId-1969970175" 264 var request = &cloudtracepb.ListTracesRequest{ 265 ProjectId: projectId, 266 } 267 268 c, err := NewClient(context.Background(), clientOpt) 269 if err != nil { 270 t.Fatal(err) 271 } 272 273 resp, err := c.ListTraces(context.Background(), request).Next() 274 275 if err != nil { 276 t.Fatal(err) 277 } 278 279 if want, got := request, mockTrace.reqs[0]; !proto.Equal(want, got) { 280 t.Errorf("wrong request %q, want %q", got, want) 281 } 282 283 want := (interface{})(expectedResponse.Traces[0]) 284 got := (interface{})(resp) 285 var ok bool 286 287 switch want := (want).(type) { 288 case proto.Message: 289 ok = proto.Equal(want, got.(proto.Message)) 290 default: 291 ok = want == got 292 } 293 if !ok { 294 t.Errorf("wrong response %q, want %q)", got, want) 295 } 296} 297 298func TestTraceServiceListTracesError(t *testing.T) { 299 errCode := codes.PermissionDenied 300 mockTrace.err = gstatus.Error(errCode, "test error") 301 302 var projectId string = "projectId-1969970175" 303 var request = &cloudtracepb.ListTracesRequest{ 304 ProjectId: projectId, 305 } 306 307 c, err := NewClient(context.Background(), clientOpt) 308 if err != nil { 309 t.Fatal(err) 310 } 311 312 resp, err := c.ListTraces(context.Background(), request).Next() 313 314 if st, ok := gstatus.FromError(err); !ok { 315 t.Errorf("got error %v, expected grpc error", err) 316 } else if c := st.Code(); c != errCode { 317 t.Errorf("got error code %q, want %q", c, errCode) 318 } 319 _ = resp 320} 321