It("polls for the app to start with correct number of instances, outputting logs while the app starts", func() { fakeDockerMetadataFetcher.FetchMetadataReturns(&docker_metadata_fetcher.ImageMetadata{}, nil) fakeAppExaminer.RunningAppInstancesInfoReturns(0, false, nil) args := []string{ "--instances=10", "cool-web-app", "superfun/app", "--", "/start-me-please", } doneChan := test_helpers.AsyncExecuteCommandWithArgs(createCommand, args) Eventually(outputBuffer).Should(test_helpers.SayLine("Creating App: cool-web-app")) Expect(fakeTailedLogsOutputter.OutputTailedLogsCallCount()).To(Equal(1)) Expect(fakeTailedLogsOutputter.OutputTailedLogsArgsForCall(0)).To(Equal("cool-web-app")) Expect(fakeAppExaminer.RunningAppInstancesInfoCallCount()).To(Equal(1)) Expect(fakeAppExaminer.RunningAppInstancesInfoArgsForCall(0)).To(Equal("cool-web-app")) fakeClock.IncrementBySeconds(1) Expect(fakeTailedLogsOutputter.StopOutputtingCallCount()).To(Equal(0)) fakeAppExaminer.RunningAppInstancesInfoReturns(9, false, nil) fakeClock.IncrementBySeconds(1) Expect(doneChan).ShouldNot(BeClosed()) Expect(fakeTailedLogsOutputter.StopOutputtingCallCount()).To(Equal(0)) fakeAppExaminer.RunningAppInstancesInfoReturns(10, false, nil) fakeClock.IncrementBySeconds(1)
doneChan := test_helpers.AsyncExecuteCommandWithArgs(logsCommand, []string{"task-guid"}) Eventually(fakeTailedLogsOutputter.OutputTailedLogsCallCount).Should(Equal(1)) Expect(fakeTailedLogsOutputter.OutputTailedLogsArgsForCall(0)).To(Equal("task-guid")) Consistently(doneChan).ShouldNot(BeClosed()) }) Context("when the receptor returns an error", func() { It("displays an error and exits", func() { appExaminer.AppExistsReturns(false, errors.New("can't log this")) test_helpers.ExecuteCommandWithArgs(logsCommand, []string{"non_existent_app"}) Expect(outputBuffer).To(test_helpers.Say("Error: can't log this")) Expect(fakeTailedLogsOutputter.OutputTailedLogsCallCount()).To(BeZero()) Expect(fakeExitHandler.ExitCalledWith).To(Equal([]int{exit_codes.CommandFailed})) }) }) }) Describe("DebugLogsCommand", func() { var debugLogsCommand cli.Command BeforeEach(func() { commandFactory := command_factory.NewLogsCommandFactory(appExaminer, taskExaminer, terminalUI, fakeTailedLogsOutputter, fakeExitHandler) debugLogsCommand = commandFactory.MakeDebugLogsCommand() }) It("tails logs from the lattice-debug stream", func() { doneChan := test_helpers.AsyncExecuteCommandWithArgs(debugLogsCommand, []string{})