MCPcopy
hub / github.com/grpc/grpc-go / startServer

Method startServer

binarylog/binarylog_end2end_test.go:180–279  ·  view source on GitHub ↗

startServer starts a gRPC server listening. Callers should defer a call to te.tearDown to clean up.

()

Source from the content-addressed store, hash-verified

178// startServer starts a gRPC server listening. Callers should defer a
179// call to te.tearDown to clean up.
180func (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)

Callers 1

runRPCsFunction · 0.45

Calls 15

FromIncomingContextFunction · 0.92
SendHeaderFunction · 0.92
ErrorfFunction · 0.92
CodeFunction · 0.92
SetTrailerFunction · 0.92
payloadToIDFunction · 0.70
FatalfMethod · 0.65
ErrorfMethod · 0.65
ContextMethod · 0.65
SendHeaderMethod · 0.65
SetTrailerMethod · 0.65
RecvMethod · 0.65

Tested by

no test coverage detected