var _ = Describe("GetStateRetryable", func() { Describe("Attempt", func() { var ( fakeAgentClient *fakeagentclient.FakeAgentClient getStateRetryable boshretry.Retryable ) BeforeEach(func() { fakeAgentClient = &fakeagentclient.FakeAgentClient{} getStateRetryable = NewGetStateRetryable(fakeAgentClient) }) Context("when get_state fails", func() { BeforeEach(func() { fakeAgentClient.GetStateReturns(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.GetStateCallCount()).To(Equal(1)) }) }) Context("when get_state returns state as pending", func() { BeforeEach(func() { fakeAgentClient.GetStateReturns(AgentState{JobState: "pending"}, nil) })
err := vm.MigrateDisk() Expect(err).ToNot(HaveOccurred()) Expect(fakeAgentClient.MigrateDiskCallCount()).To(Equal(1)) }) Context("when migrating disk fails", func() { BeforeEach(func() { fakeAgentClient.MigrateDiskReturns(errors.New("fake-migrate-error")) }) It("returns an error", func() { err := vm.MigrateDisk() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-migrate-error")) }) }) }) Describe("GetState", func() { BeforeEach(func() { fakeAgentClient.GetStateReturns(biagentclient.AgentState{JobState: "testing"}, nil) }) It("sends get_state to the agent", func() { agentState, err := vm.GetState() Expect(err).ToNot(HaveOccurred()) Expect(agentState).To(Equal(biagentclient.AgentState{JobState: "testing"})) }) }) })