@@ -43,6 +43,32 @@ func newLocalListener() net.Listener {
4343 return l
4444}
4545
46+ func TestStoreErrorHandlingOnTimeout (t * testing.T ) {
47+ listener := newLocalListener ()
48+ grpcServer := grpc .NewServer ()
49+ monitoring .RegisterMetricServiceServer (grpcServer , & metricServiceServer {nil })
50+ go grpcServer .Serve (listener )
51+ defer grpcServer .Stop ()
52+
53+ serverURL , err := url .Parse ("https://" + listener .Addr ().String () + "?auth=false" )
54+ if err != nil {
55+ t .Fatal (err )
56+ }
57+
58+ c := NewClient (& ClientConfig {
59+ URL : serverURL ,
60+ Timeout : 0 , // Immeditate Timeout.
61+ })
62+ err = c .Store (& monitoring.CreateTimeSeriesRequest {
63+ TimeSeries : []* monitoring.TimeSeries {
64+ & monitoring.TimeSeries {},
65+ },
66+ })
67+ if _ , recoverable := err .(recoverableError ); ! recoverable {
68+ t .Errorf ("expected recoverableError in error %v" , err )
69+ }
70+ }
71+
4672func TestStoreErrorHandling (t * testing.T ) {
4773 tests := []struct {
4874 status * status.Status
@@ -59,6 +85,10 @@ func TestStoreErrorHandling(t *testing.T) {
5985 status : status .New (codes .Unavailable , longErrMessage ),
6086 recoverable : true ,
6187 },
88+ {
89+ status : status .New (codes .DeadlineExceeded , longErrMessage ),
90+ recoverable : true ,
91+ },
6292 }
6393
6494 for i , test := range tests {
0 commit comments