fakeAgentClient *fakeagentclient.FakeAgentClient getStateRetryable boshretry.Retryable ) BeforeEach(func() { fakeAgentClient = fakeagentclient.NewFakeAgentClient() getStateRetryable = NewGetStateRetryable(fakeAgentClient) }) Context("when get_state fails", func() { BeforeEach(func() { fakeAgentClient.SetGetStateBehavior(AgentState{}, errors.New("fake-get-state-error")) }) It("returns an error", func() { isRetryable, err := getStateRetryable.Attempt() Expect(err).To(HaveOccurred()) Expect(isRetryable).To(BeFalse()) Expect(err.Error()).To(ContainSubstring("fake-get-state-error")) Expect(fakeAgentClient.GetStateCalledTimes).To(Equal(1)) }) }) Context("when get_state returns state as pending", func() { BeforeEach(func() { fakeAgentClient.SetGetStateBehavior(AgentState{JobState: "pending"}, nil) }) It("returns retryable error", func() { isRetryable, err := getStateRetryable.Attempt() Expect(err).To(HaveOccurred())
BeforeEach(func() { cmdRunner = fakesys.NewFakeCmdRunner() monitRetryable = NewMonitRetryable(cmdRunner) }) Describe("Attempt", func() { Context("when starting monit fails", func() { BeforeEach(func() { cmdRunner.AddCmdResult("sv start monit", fakesys.FakeCmdResult{ ExitStatus: 255, Error: errors.New("fake-start-monit-error"), }) }) It("is retryable and returns err", func() { isRetryable, err := monitRetryable.Attempt() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-start-monit-error")) Expect(isRetryable).To(BeTrue()) Expect(len(cmdRunner.RunCommands)).To(Equal(1)) Expect(cmdRunner.RunCommands[0]).To(Equal([]string{"sv", "start", "monit"})) }) }) Context("when starting succeeds", func() { BeforeEach(func() { cmdRunner.AddCmdResult("sv start monit", fakesys.FakeCmdResult{ ExitStatus: 0, }) })
) var _ = Describe("PingRetryable", func() { Describe("Attempt", func() { var ( fakeAgentClient *fakeagentclient.FakeAgentClient pingRetryable boshretry.Retryable ) BeforeEach(func() { fakeAgentClient = fakeagentclient.NewFakeAgentClient() pingRetryable = NewPingRetryable(fakeAgentClient) }) It("tells the agent client to ping", func() { isRetryable, err := pingRetryable.Attempt() Expect(err).ToNot(HaveOccurred()) Expect(isRetryable).To(BeTrue()) Expect(fakeAgentClient.PingCalledCount).To(Equal(1)) }) Context("when pinging fails", func() { BeforeEach(func() { fakeAgentClient.SetPingBehavior("", errors.New("fake-agent-client-ping-error")) }) It("returns an error", func() { isRetryable, err := pingRetryable.Attempt() Expect(err).To(HaveOccurred()) Expect(isRetryable).To(BeTrue()) Expect(err.Error()).To(ContainSubstring("fake-agent-client-ping-error"))