startServer starts a gRPC server listening. Callers should defer a call to te.tearDown to clean up.
()
| 178 | // startServer starts a gRPC server listening. Callers should defer a |
| 179 | // call to te.tearDown to clean up. |
| 180 | func (te *test) startServer() { |
| 181 | lis, err := net.Listen("tcp", "localhost:0") |
| 182 | |
| 183 | lis = &listenerWrapper{ |
| 184 | Listener: lis, |
| 185 | te: te, |
| 186 | } |
| 187 | |
| 188 | if err != nil { |
| 189 | te.t.Fatalf("Failed to listen: %v", err) |
| 190 | } |
| 191 | |
| 192 | te.ss = &stubserver.StubServer{ |
| 193 | Listener: lis, |
| 194 | UnaryCallF: func(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { |
| 195 | md, ok := metadata.FromIncomingContext(ctx) |
| 196 | if ok { |
| 197 | if err := grpc.SendHeader(ctx, md); err != nil { |
| 198 | return nil, status.Errorf(status.Code(err), "grpc.SendHeader(_, %v) = %v, want <nil>", md, err) |
| 199 | } |
| 200 | if err := grpc.SetTrailer(ctx, testTrailerMetadata); err != nil { |
| 201 | return nil, status.Errorf(status.Code(err), "grpc.SetTrailer(_, %v) = %v, want <nil>", testTrailerMetadata, err) |
| 202 | } |
| 203 | } |
| 204 | if id := payloadToID(in.Payload); id == errorID { |
| 205 | return nil, fmt.Errorf("got error id: %v", id) |
| 206 | } |
| 207 | return &testpb.SimpleResponse{Payload: in.Payload}, nil |
| 208 | }, |
| 209 | FullDuplexCallF: func(stream testgrpc.TestService_FullDuplexCallServer) error { |
| 210 | md, ok := metadata.FromIncomingContext(stream.Context()) |
| 211 | if ok { |
| 212 | if err := stream.SendHeader(md); err != nil { |
| 213 | return status.Errorf(status.Code(err), "stream.SendHeader(%v) = %v, want %v", md, err, nil) |
| 214 | } |
| 215 | stream.SetTrailer(testTrailerMetadata) |
| 216 | } |
| 217 | for { |
| 218 | in, err := stream.Recv() |
| 219 | if err == io.EOF { |
| 220 | return nil |
| 221 | } |
| 222 | if err != nil { |
| 223 | return err |
| 224 | } |
| 225 | if id := payloadToID(in.Payload); id == errorID { |
| 226 | return fmt.Errorf("got error id: %v", id) |
| 227 | } |
| 228 | if err := stream.Send(&testpb.StreamingOutputCallResponse{Payload: in.Payload}); err != nil { |
| 229 | return err |
| 230 | } |
| 231 | } |
| 232 | }, |
| 233 | StreamingInputCallF: func(stream testgrpc.TestService_StreamingInputCallServer) error { |
| 234 | md, ok := metadata.FromIncomingContext(stream.Context()) |
| 235 | if ok { |
| 236 | if err := stream.SendHeader(md); err != nil { |
| 237 | return status.Errorf(status.Code(err), "stream.SendHeader(%v) = %v, want %v", md, err, nil) |
no test coverage detected