(t *testing.T)
| 5647 | } |
| 5648 | |
| 5649 | func (s) TestInterceptorCanAccessCallOptions(t *testing.T) { |
| 5650 | e := tcpClearRREnv |
| 5651 | te := newTest(t, e) |
| 5652 | te.startServer(&testServer{security: e.security}) |
| 5653 | defer te.tearDown() |
| 5654 | |
| 5655 | type observedOptions struct { |
| 5656 | headers []*metadata.MD |
| 5657 | trailers []*metadata.MD |
| 5658 | peer []*peer.Peer |
| 5659 | creds []credentials.PerRPCCredentials |
| 5660 | failFast []bool |
| 5661 | maxRecvSize []int |
| 5662 | maxSendSize []int |
| 5663 | compressor []string |
| 5664 | subtype []string |
| 5665 | } |
| 5666 | var observedOpts observedOptions |
| 5667 | populateOpts := func(opts []grpc.CallOption) { |
| 5668 | for _, o := range opts { |
| 5669 | switch o := o.(type) { |
| 5670 | case grpc.HeaderCallOption: |
| 5671 | observedOpts.headers = append(observedOpts.headers, o.HeaderAddr) |
| 5672 | case grpc.TrailerCallOption: |
| 5673 | observedOpts.trailers = append(observedOpts.trailers, o.TrailerAddr) |
| 5674 | case grpc.PeerCallOption: |
| 5675 | observedOpts.peer = append(observedOpts.peer, o.PeerAddr) |
| 5676 | case grpc.PerRPCCredsCallOption: |
| 5677 | observedOpts.creds = append(observedOpts.creds, o.Creds) |
| 5678 | case grpc.FailFastCallOption: |
| 5679 | observedOpts.failFast = append(observedOpts.failFast, o.FailFast) |
| 5680 | case grpc.MaxRecvMsgSizeCallOption: |
| 5681 | observedOpts.maxRecvSize = append(observedOpts.maxRecvSize, o.MaxRecvMsgSize) |
| 5682 | case grpc.MaxSendMsgSizeCallOption: |
| 5683 | observedOpts.maxSendSize = append(observedOpts.maxSendSize, o.MaxSendMsgSize) |
| 5684 | case grpc.CompressorCallOption: |
| 5685 | observedOpts.compressor = append(observedOpts.compressor, o.CompressorType) |
| 5686 | case grpc.ContentSubtypeCallOption: |
| 5687 | observedOpts.subtype = append(observedOpts.subtype, o.ContentSubtype) |
| 5688 | } |
| 5689 | } |
| 5690 | } |
| 5691 | |
| 5692 | te.unaryClientInt = func(_ context.Context, _ string, _, _ any, _ *grpc.ClientConn, _ grpc.UnaryInvoker, opts ...grpc.CallOption) error { |
| 5693 | populateOpts(opts) |
| 5694 | return nil |
| 5695 | } |
| 5696 | te.streamClientInt = func(_ context.Context, _ *grpc.StreamDesc, _ *grpc.ClientConn, _ string, _ grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) { |
| 5697 | populateOpts(opts) |
| 5698 | return nil, nil |
| 5699 | } |
| 5700 | |
| 5701 | defaults := []grpc.CallOption{ |
| 5702 | grpc.WaitForReady(true), |
| 5703 | grpc.MaxCallRecvMsgSize(1010), |
| 5704 | } |
| 5705 | tc := testgrpc.NewTestServiceClient(te.clientConn(grpc.WithDefaultCallOptions(defaults...))) |
| 5706 |
nothing calls this directly
no test coverage detected