"BOSH_JOB_NEXT_STATE": "{\"persistent_disk\":42}", }, } Expect(len(runner.RunComplexCommands)).To(Equal(1)) Expect(runner.RunComplexCommands[0]).To(Equal(expectedCmd)) }) It("sleeps when script returns a positive integer", func() { runner.AddProcess("/fake/script job_unchanged hash_unchanged bar foo", &fakesys.FakeProcess{WaitResult: boshsys.Result{Stdout: "12"}}) err := script.Run() Expect(err).ToNot(HaveOccurred()) Expect(fakeClock.SleepCallCount()).To(Equal(1)) Expect(fakeClock.SleepArgsForCall(0)).To(Equal(12 * time.Second)) }) It("sleeps then calls the script again as long as script returns a negative integer", func() { runner.AddProcess("/fake/script job_unchanged hash_unchanged bar foo", &fakesys.FakeProcess{WaitResult: boshsys.Result{Stdout: "-5"}}) runner.AddProcess("/fake/script job_check_status hash_unchanged", &fakesys.FakeProcess{WaitResult: boshsys.Result{Stdout: "-5"}}) runner.AddProcess("/fake/script job_check_status hash_unchanged", &fakesys.FakeProcess{WaitResult: boshsys.Result{Stdout: "-5"}}) runner.AddProcess("/fake/script job_check_status hash_unchanged", &fakesys.FakeProcess{WaitResult: boshsys.Result{Stdout: "0"}}) err := script.Run() Expect(err).ToNot(HaveOccurred())