| 94 | } |
| 95 | |
| 96 | func TestGRPCParseTimeout(t *testing.T) { |
| 97 | t.Parallel() |
| 98 | _, err := grpcParseTimeout("") |
| 99 | assert.True(t, errors.Is(err, errNoTimeout)) |
| 100 | |
| 101 | _, err = grpcParseTimeout("foo") |
| 102 | assert.NotNil(t, err) |
| 103 | _, err = grpcParseTimeout("12xS") |
| 104 | assert.NotNil(t, err) |
| 105 | _, err = grpcParseTimeout("999999999n") // 9 digits |
| 106 | assert.NotNil(t, err) |
| 107 | assert.False(t, errors.Is(err, errNoTimeout)) |
| 108 | _, err = grpcParseTimeout("99999999H") // 8 digits but overflows time.Duration |
| 109 | assert.True(t, errors.Is(err, errNoTimeout)) |
| 110 | |
| 111 | duration, err := grpcParseTimeout("45S") |
| 112 | assert.Nil(t, err) |
| 113 | assert.Equal(t, duration, 45*time.Second) |
| 114 | |
| 115 | const long = "99999999S" |
| 116 | duration, err = grpcParseTimeout(long) // 8 digits, shouldn't overflow |
| 117 | assert.Nil(t, err) |
| 118 | assert.Equal(t, duration, 99999999*time.Second) |
| 119 | } |
| 120 | |
| 121 | func TestGRPCEncodeTimeout(t *testing.T) { |
| 122 | t.Parallel() |