kinesis-consumer/awsbackoff_test.go.bk

34 lines
1.1 KiB
Text
Raw Normal View History

2015-05-06 16:18:15 +00:00
package connector
import (
"fmt"
"net"
"testing"
"github.com/bmizerany/assert"
2015-05-06 16:18:15 +00:00
"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 _, tc := range testCases {
2015-05-06 16:18:15 +00:00
isRecoverable := isRecoverableError(tc.err)
assert.Equal(t, isRecoverable, tc.isRecoverable)
2015-05-06 16:18:15 +00:00
}
}