. "github.com/cloudfoundry/bosh-utils/internal/github.com/onsi/ginkgo" . "github.com/cloudfoundry/bosh-utils/internal/github.com/onsi/gomega" "github.com/cloudfoundry/bosh-utils/internal/github.com/pivotal-golang/clock/fakeclock" ) var _ = Describe("FakeClock", func() { const Δ time.Duration = 10 * time.Millisecond var ( fakeClock *fakeclock.FakeClock initialTime time.Time ) BeforeEach(func() { initialTime = time.Date(2014, 1, 1, 3, 0, 30, 0, time.UTC) fakeClock = fakeclock.NewFakeClock(initialTime) }) Describe("Now", func() { It("returns the current time, w/o race conditions", func() { go fakeClock.Increment(time.Minute) Eventually(fakeClock.Now).Should(Equal(initialTime.Add(time.Minute))) }) }) Describe("Sleep", func() { It("blocks until the given interval elapses", func() { doneSleeping := make(chan struct{}) go func() { fakeClock.Sleep(10 * time.Second) close(doneSleeping)
. "github.com/cloudfoundry/bosh-utils/internal/github.com/onsi/gomega" "github.com/cloudfoundry/bosh-utils/internal/github.com/pivotal-golang/clock/fakeclock" boshlog "github.com/cloudfoundry/bosh-utils/logger" . "github.com/cloudfoundry/bosh-utils/retrystrategy" ) var _ = Describe("TimeoutRetryStrategy", func() { var ( fakeTimeService *fakeclock.FakeClock logger boshlog.Logger ) BeforeEach(func() { fakeTimeService = fakeclock.NewFakeClock(time.Now()) logger = boshlog.NewLogger(boshlog.LevelNone) }) Describe("Try", func() { Context("when there are errors during a try", func() { It("retries until the timeout", func() { retryable := newSimpleRetryable([]attemptOutput{ { IsRetryable: true, AttemptErr: errors.New("first-error"), }, { IsRetryable: true, AttemptErr: errors.New("second-error"), },