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