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

Function testMetadataStreamingRPC

test/end2end_test.go:3278–3349  ·  view source on GitHub ↗
(t *testing.T, e env)

Source from the content-addressed store, hash-verified

3276}
3277
3278func testMetadataStreamingRPC(t *testing.T, e env) {
3279 te := newTest(t, e)
3280 te.startServer(&testServer{security: e.security})
3281 defer te.tearDown()
3282 tc := testgrpc.NewTestServiceClient(te.clientConn())
3283
3284 ctx := metadata.NewOutgoingContext(te.ctx, testMetadata)
3285 stream, err := tc.FullDuplexCall(ctx)
3286 if err != nil {
3287 t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err)
3288 }
3289 go func() {
3290 headerMD, err := stream.Header()
3291 if e.security == "tls" {
3292 delete(headerMD, "transport_security_type")
3293 }
3294 delete(headerMD, "trailer") // ignore if present
3295 delete(headerMD, "user-agent")
3296 delete(headerMD, "content-type")
3297 delete(headerMD, "grpc-accept-encoding")
3298 if err != nil || !reflect.DeepEqual(testMetadata, headerMD) {
3299 t.Errorf("#1 %v.Header() = %v, %v, want %v, <nil>", stream, headerMD, err, testMetadata)
3300 }
3301 // test the cached value.
3302 headerMD, err = stream.Header()
3303 delete(headerMD, "trailer") // ignore if present
3304 delete(headerMD, "user-agent")
3305 delete(headerMD, "content-type")
3306 delete(headerMD, "grpc-accept-encoding")
3307 if err != nil || !reflect.DeepEqual(testMetadata, headerMD) {
3308 t.Errorf("#2 %v.Header() = %v, %v, want %v, <nil>", stream, headerMD, err, testMetadata)
3309 }
3310 err = func() error {
3311 for index := 0; index < len(reqSizes); index++ {
3312 respParam := []*testpb.ResponseParameters{
3313 {
3314 Size: int32(respSizes[index]),
3315 },
3316 }
3317
3318 payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(reqSizes[index]))
3319 if err != nil {
3320 return err
3321 }
3322
3323 req := &testpb.StreamingOutputCallRequest{
3324 ResponseType: testpb.PayloadType_COMPRESSABLE,
3325 ResponseParameters: respParam,
3326 Payload: payload,
3327 }
3328 if err := stream.Send(req); err != nil {
3329 return fmt.Errorf("%v.Send(%v) = %v, want <nil>", stream, req, err)
3330 }
3331 }
3332 return nil
3333 }()
3334 // Tell the server we're done sending args.
3335 stream.CloseSend()

Callers 1

Calls 15

FullDuplexCallMethod · 0.95
NewOutgoingContextFunction · 0.92
newPayloadFunction · 0.85
newTestFunction · 0.70
FatalfMethod · 0.65
HeaderMethod · 0.65
ErrorfMethod · 0.65
SendMethod · 0.65
CloseSendMethod · 0.65
ErrorMethod · 0.65
RecvMethod · 0.65
TrailerMethod · 0.65

Tested by

no test coverage detected