github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/worker/transport/stalled_worker_retryer_test.go (about)

     1  package transport_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/pf-qiu/concourse/v6/atc/worker/transport"
     7  	"github.com/concourse/retryhttp"
     8  	"github.com/concourse/retryhttp/retryhttpfakes"
     9  
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  )
    13  
    14  var _ = Describe("UnreachableWorkerRetryer", func() {
    15  	var (
    16  		retryer         retryhttp.Retryer
    17  		delegateRetryer *retryhttpfakes.FakeRetryer
    18  	)
    19  
    20  	BeforeEach(func() {
    21  		delegateRetryer = &retryhttpfakes.FakeRetryer{}
    22  
    23  		retryer = &transport.UnreachableWorkerRetryer{
    24  			DelegateRetryer: delegateRetryer,
    25  		}
    26  	})
    27  
    28  	Describe("IsRetryable", func() {
    29  		It("returns true when error is WorkerUnreachableError", func() {
    30  			err := transport.WorkerUnreachableError{
    31  				WorkerName:  "foo",
    32  				WorkerState: "stalled",
    33  			}
    34  
    35  			Expect(retryer.IsRetryable(err)).To(BeTrue())
    36  		})
    37  
    38  		It("delegates to DelegateRetryer if errors is not WorkerUnreachableError", func() {
    39  			err := errors.New("some-other-error")
    40  			delegateRetryer.IsRetryableReturns(true)
    41  			Expect(retryer.IsRetryable(err)).To(BeTrue())
    42  			Expect(delegateRetryer.IsRetryableCallCount()).To(Equal(1))
    43  		})
    44  	})
    45  })