TestDecompress tests the decompress function behaves correctly for following scenarios decompress successfully when message is <= maxReceiveMessageSize errors when message > maxReceiveMessageSize decompress successfully when maxReceiveMessageSize is MaxInt errors when the decompressed message has an
(t *testing.T)
| 462 | // errors when the decompressed message has an invalid format |
| 463 | // errors when the decompressed message exceeds the maxReceiveMessageSize. |
| 464 | func (s) TestDecompress(t *testing.T) { |
| 465 | compressor := encoding.GetCompressor("gzip") |
| 466 | validDecompressor := &MockDecompressor{ShouldError: false} |
| 467 | invalidFormatDecompressor := &MockDecompressor{ShouldError: true} |
| 468 | |
| 469 | testCases := []struct { |
| 470 | name string |
| 471 | input mem.BufferSlice |
| 472 | dc Decompressor |
| 473 | maxReceiveMessageSize int |
| 474 | want []byte |
| 475 | wantErr error |
| 476 | }{ |
| 477 | { |
| 478 | name: "Decompresses successfully with sufficient buffer size", |
| 479 | input: mustCompress(t, []byte("decompressed data")), |
| 480 | dc: nil, |
| 481 | maxReceiveMessageSize: 50, |
| 482 | want: []byte("decompressed data"), |
| 483 | wantErr: nil, |
| 484 | }, |
| 485 | { |
| 486 | name: "Fails due to exceeding maxReceiveMessageSize", |
| 487 | input: mustCompress(t, []byte("message that is too large")), |
| 488 | dc: nil, |
| 489 | maxReceiveMessageSize: len("message that is too large") - 1, |
| 490 | want: nil, |
| 491 | wantErr: status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max %d", len("message that is too large")-1), |
| 492 | }, |
| 493 | { |
| 494 | name: "Decompresses to exactly maxReceiveMessageSize", |
| 495 | input: mustCompress(t, []byte("exact size message")), |
| 496 | dc: nil, |
| 497 | maxReceiveMessageSize: len("exact size message"), |
| 498 | want: []byte("exact size message"), |
| 499 | wantErr: nil, |
| 500 | }, |
| 501 | { |
| 502 | name: "Decompresses successfully with maxReceiveMessageSize MaxInt", |
| 503 | input: mustCompress(t, []byte("large message")), |
| 504 | dc: nil, |
| 505 | maxReceiveMessageSize: math.MaxInt, |
| 506 | want: []byte("large message"), |
| 507 | wantErr: nil, |
| 508 | }, |
| 509 | { |
| 510 | name: "Fails with decompression error due to invalid format", |
| 511 | input: mustCompress(t, []byte("invalid compressed data")), |
| 512 | dc: invalidFormatDecompressor, |
| 513 | maxReceiveMessageSize: 50, |
| 514 | want: nil, |
| 515 | wantErr: status.Errorf(codes.Internal, "grpc: failed to decompress the received message: %v", errors.New(decompressionErrorMsg)), |
| 516 | }, |
| 517 | { |
| 518 | name: "Fails with resourceExhausted error when decompressed message exceeds maxReceiveMessageSize", |
| 519 | input: mustCompress(t, []byte("large compressed data")), |
| 520 | dc: validDecompressor, |
| 521 | maxReceiveMessageSize: 20, |
nothing calls this directly
no test coverage detected