Skip to content

Commit 2c329c8

Browse files
committed
clean up tests, log failure to marshal
1 parent 1b5a905 commit 2c329c8

2 files changed

Lines changed: 19 additions & 22 deletions

File tree

internal/transport/controlbuf.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"golang.org/x/net/http2/hpack"
3333
"google.golang.org/grpc/internal/grpclog"
3434
"google.golang.org/grpc/internal/grpcutil"
35+
"google.golang.org/grpc/internal/pretty"
3536
istatus "google.golang.org/grpc/internal/status"
3637
"google.golang.org/grpc/mem"
3738
"google.golang.org/grpc/status"
@@ -858,7 +859,9 @@ func (l *loopyWriter) earlyAbortStreamHandler(eas *earlyAbortStream) error {
858859

859860
if p := istatus.RawStatusProto(eas.status); len(p.GetDetails()) > 0 {
860861
stBytes, err := proto.Marshal(p)
861-
if err == nil {
862+
if err != nil {
863+
l.logger.Errorf("Failed to marshal rpc status: %s, error: %v", pretty.ToJSON(p), err)
864+
} else {
862865
headerFields = append(headerFields, hpack.HeaderField{Name: grpcStatusDetailsBinHeader, Value: encodeBinHeader(stBytes)})
863866
}
864867
}

test/end2end_test.go

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2155,44 +2155,38 @@ func testTap(t *testing.T, e env) {
21552155
}
21562156

21572157
func (s) TestTapStatusDetails(t *testing.T) {
2158-
wantDetails := &testpb.Empty{}
2159-
st := status.New(codes.ResourceExhausted, "rate limit exceeded")
2160-
st, err := st.WithDetails(wantDetails)
2161-
if err != nil {
2162-
t.Fatalf("status.WithDetails() failed: %v", err)
2163-
}
2164-
2165-
tapHandler := func(_ context.Context, _ *tap.Info) (context.Context, error) {
2158+
tapHandler := func(context.Context, *tap.Info) (context.Context, error) {
21662159
// Return error with details for all RPCs.
2160+
wantDetails := &testpb.Empty{}
2161+
st := status.New(codes.ResourceExhausted, "rate limit exceeded")
2162+
st, err := st.WithDetails(wantDetails)
2163+
if err != nil {
2164+
t.Fatalf("status.WithDetails() failed: %v", err)
2165+
}
21672166
return nil, st.Err()
21682167
}
21692168

2170-
ss := &stubserver.StubServer{
2171-
EmptyCallF: func(_ context.Context, _ *testpb.Empty) (*testpb.Empty, error) {
2172-
// This should never be called since TAP handler rejects the RPC.
2173-
return &testpb.Empty{}, nil
2174-
},
2175-
}
2176-
sopts := []grpc.ServerOption{grpc.InTapHandle(tapHandler)}
2177-
if err := ss.Start(sopts); err != nil {
2178-
t.Fatalf("Error starting server: %v", err)
2179-
}
2169+
ss := stubserver.StartTestService(t, nil, grpc.InTapHandle(tapHandler))
21802170
defer ss.Stop()
21812171

2172+
if err := ss.StartClient(); err != nil {
2173+
t.Fatalf("ss.StartClient() failed: %v", err)
2174+
}
2175+
21822176
ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
21832177
defer cancel()
21842178

2185-
_, err = ss.Client.EmptyCall(ctx, &testpb.Empty{})
2179+
_, err := ss.Client.EmptyCall(ctx, &testpb.Empty{})
21862180
if err == nil {
21872181
t.Fatal("EmptyCall() succeeded; want error")
21882182
}
21892183

21902184
gotStatus := status.Convert(err)
21912185
if gotStatus.Code() != codes.ResourceExhausted {
2192-
t.Fatalf("EmptyCall() returned code %v; want %v", gotStatus.Code(), codes.ResourceExhausted)
2186+
t.Errorf("EmptyCall() returned code %v; want %v", gotStatus.Code(), codes.ResourceExhausted)
21932187
}
21942188
if gotStatus.Message() != "rate limit exceeded" {
2195-
t.Fatalf("EmptyCall() returned message %q; want %q", gotStatus.Message(), "rate limit exceeded")
2189+
t.Errorf("EmptyCall() returned message %q; want %q", gotStatus.Message(), "rate limit exceeded")
21962190
}
21972191

21982192
details := gotStatus.Details()

0 commit comments

Comments
 (0)