From 95fe49e7e045f85b855a06e20d722686e1455377 Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 6 May 2015 09:18:15 -0700 Subject: [PATCH] Add specs for AWS Backoff --- awsbackoff_test.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 awsbackoff_test.go diff --git a/awsbackoff_test.go b/awsbackoff_test.go new file mode 100644 index 0000000..5f52a2e --- /dev/null +++ b/awsbackoff_test.go @@ -0,0 +1,35 @@ +package connector + +import ( + "fmt" + "net" + "testing" + + "github.com/lib/pq" + "github.com/sendgridlabs/go-kinesis" +) + +func Test_isRecoverableError(t *testing.T) { + testCases := []struct { + err error + isRecoverable bool + }{ + {err: &kinesis.Error{Code: "ProvisionedThroughputExceededException"}, isRecoverable: true}, + {err: &kinesis.Error{Code: "Throttling"}, isRecoverable: true}, + {err: &kinesis.Error{Code: "ServiceUnavailable"}, isRecoverable: true}, + {err: &kinesis.Error{Code: "ExpiredIteratorException"}, isRecoverable: false}, + {err: &net.OpError{Err: fmt.Errorf("connection reset by peer")}, isRecoverable: true}, + {err: &net.OpError{Err: fmt.Errorf("unexpected error")}, isRecoverable: false}, + {err: fmt.Errorf("an arbitrary error"), isRecoverable: false}, + {err: pq.Error{Message: "The specified S3 prefix 'somefilethatismissing' does not exist"}, isRecoverable: true}, + {err: pq.Error{Message: "Some other pq error"}, isRecoverable: false}, + } + + for idx, tc := range testCases { + isRecoverable := isRecoverableError(tc.err) + + if isRecoverable != tc.isRecoverable { + t.Errorf("test case %d: isRecoverable expected %t, actual %t, for error %+v", idx, tc.isRecoverable, isRecoverable, tc.err) + } + } +}