To test header metadata is sent when sending status.
(t *testing.T, e env)
| 2916 | |
| 2917 | // To test header metadata is sent when sending status. |
| 2918 | func testMultipleSetHeaderStreamingRPCError(t *testing.T, e env) { |
| 2919 | te := newTest(t, e) |
| 2920 | te.startServer(&testServer{security: e.security, setHeaderOnly: true}) |
| 2921 | defer te.tearDown() |
| 2922 | tc := testgrpc.NewTestServiceClient(te.clientConn()) |
| 2923 | |
| 2924 | const ( |
| 2925 | argSize = 1 |
| 2926 | respSize = -1 |
| 2927 | ) |
| 2928 | ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout) |
| 2929 | defer cancel() |
| 2930 | ctx = metadata.NewOutgoingContext(ctx, testMetadata) |
| 2931 | stream, err := tc.FullDuplexCall(ctx) |
| 2932 | if err != nil { |
| 2933 | t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) |
| 2934 | } |
| 2935 | |
| 2936 | payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) |
| 2937 | if err != nil { |
| 2938 | t.Fatal(err) |
| 2939 | } |
| 2940 | |
| 2941 | req := &testpb.StreamingOutputCallRequest{ |
| 2942 | ResponseType: testpb.PayloadType_COMPRESSABLE, |
| 2943 | ResponseParameters: []*testpb.ResponseParameters{ |
| 2944 | {Size: respSize}, |
| 2945 | }, |
| 2946 | Payload: payload, |
| 2947 | } |
| 2948 | if err := stream.Send(req); err != nil { |
| 2949 | t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) |
| 2950 | } |
| 2951 | if _, err := stream.Recv(); err == nil { |
| 2952 | t.Fatalf("%v.Recv() = %v, want <non-nil>", stream, err) |
| 2953 | } |
| 2954 | |
| 2955 | header, err := stream.Header() |
| 2956 | if err != nil { |
| 2957 | t.Fatalf("%v.Header() = _, %v, want _, <nil>", stream, err) |
| 2958 | } |
| 2959 | delete(header, "user-agent") |
| 2960 | delete(header, "content-type") |
| 2961 | delete(header, "grpc-accept-encoding") |
| 2962 | expectedHeader := metadata.Join(testMetadata, testMetadata2) |
| 2963 | if !reflect.DeepEqual(header, expectedHeader) { |
| 2964 | t.Fatalf("Received header metadata %v, want %v", header, expectedHeader) |
| 2965 | } |
| 2966 | if err := stream.CloseSend(); err != nil { |
| 2967 | t.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) |
| 2968 | } |
| 2969 | } |
| 2970 | |
| 2971 | // TestMalformedHTTP2Metadata verifies the returned error when the client |
| 2972 | // sends an illegal metadata. |
no test coverage detected