func makeAppWithRoute(appName string) models.Application { application := models.Application{} application.Name = appName application.Guid = "app-guid" domain := models.DomainFields{} domain.Name = "example.com" route := models.RouteSummary{Host: "foo", Domain: domain} secondRoute := models.RouteSummary{Host: appName, Domain: domain} application.State = "started" application.InstanceCount = 2 application.RunningInstances = 2 application.Memory = 256 application.Routes = []models.RouteSummary{route, secondRoute} return application }
reqFactory := &testreq.FakeReqFactory{Application: app} ui := callStop(args, reqFactory, appRepo) testassert.SliceContains(ui.Outputs, testassert.Lines{ {"Stopping", "my-app"}, {"FAILED"}, {"Error updating app."}, }) Expect(appRepo.UpdateAppGuid).To(Equal("my-app-guid")) }) It("TestStopApplicationIsAlreadyStopped", func() { app := models.Application{} app.Name = "my-app" app.Guid = "my-app-guid" app.State = "stopped" appRepo := &testapi.FakeApplicationRepository{ReadApp: app} args := []string{"my-app"} reqFactory := &testreq.FakeReqFactory{Application: app} ui := callStop(args, reqFactory, appRepo) testassert.SliceContains(ui.Outputs, testassert.Lines{ {"my-app", "is already stopped"}, }) Expect(appRepo.UpdateAppGuid).To(Equal("")) }) It("TestApplicationStopReturnsUpdatedApp", func() { appToStop := models.Application{} appToStop.Name = "my-app" appToStop.Guid = "my-app-guid"
route2.Domain = domain2 app1Routes := []models.RouteSummary{route1, route2} domain3 := models.DomainFields{} domain3.Name = "cfapps.io" route3 := models.RouteSummary{} route3.Host = "app2" route3.Domain = domain3 app2Routes := []models.RouteSummary{route3} app := models.Application{} app.Name = "Application-1" app.State = "started" app.RunningInstances = 1 app.InstanceCount = 1 app.Memory = 512 app.DiskQuota = 1024 app.Routes = app1Routes app2 := models.Application{} app2.Name = "Application-2" app2.State = "started" app2.RunningInstances = 1 app2.InstanceCount = 2 app2.Memory = 256 app2.DiskQuota = 1024 app2.Routes = app2Routes
Expect(updatedAppEnvVars["FOO"]).To(Equal("baz")) Expect(updatedAppEnvVars["foo"]).To(Equal("manchu")) Expect(updatedAppEnvVars["PATH"]).To(Equal("/u/apps/my-app/bin")) }) It("stops the app, achieving a full-downtime deploy!", func() { appRepo.UpdateAppResult = existingApp callPush("existing-app") Expect(stopper.AppToStop.Guid).To(Equal(existingApp.Guid)) Expect(appBitsRepo.UploadedAppGuid).To(Equal(existingApp.Guid)) }) It("does not stop the app when it is already stopped", func() { existingApp.State = "stopped" appRepo.ReadReturns.App = existingApp appRepo.UpdateAppResult = existingApp callPush("existing-app") Expect(stopper.AppToStop.Guid).To(Equal("")) }) It("updates the app", func() { existingRoute := models.RouteSummary{} existingRoute.Host = "existing-app" existingApp.Routes = []models.RouteSummary{existingRoute} appRepo.ReadReturns.App = existingApp appRepo.UpdateAppResult = existingApp
testassert.SliceContains(ui.Outputs, testassert.Lines{ {"my-app"}, {"FAILED"}, {"Error updating app."}, }) Expect(appRepo.UpdateAppGuid).To(Equal("my-app-guid")) }) It("TestStartApplicationIsAlreadyStarted", func() { displayApp := &testcmd.FakeAppDisplayer{} config := testconfig.NewRepository() app := models.Application{} app.Name = "my-app" app.Guid = "my-app-guid" app.State = "started" appRepo := &testapi.FakeApplicationRepository{ReadApp: app} appInstancesRepo := &testapi.FakeAppInstancesRepo{} logRepo := &testapi.FakeLogsRepository{} reqFactory := &testreq.FakeReqFactory{Application: app} args := []string{"my-app"} ui := callStart(args, config, reqFactory, displayApp, appRepo, appInstancesRepo, logRepo) testassert.SliceContains(ui.Outputs, testassert.Lines{ {"my-app", "is already started"}, }) Expect(appRepo.UpdateAppGuid).To(Equal("")) })
route1 := models.RouteSummary{} route1.Host = "my-app" domain := models.DomainFields{} domain.Name = "example.com" route1.Domain = domain route2 := models.RouteSummary{} route2.Host = "foo" domain2 := models.DomainFields{} domain2.Name = "example.com" route2.Domain = domain2 application := models.Application{} application.State = "started" application.InstanceCount = 2 application.RunningInstances = 2 application.Memory = 256 application.Routes = []models.RouteSummary{route1, route2} time1, err := time.Parse("Mon Jan 2 15:04:05 -0700 MST 2006", "Mon Jan 2 15:04:05 -0700 MST 2012") Expect(err).NotTo(HaveOccurred()) time2, err := time.Parse("Mon Jan 2 15:04:05 -0700 MST 2006", "Mon Apr 1 15:04:05 -0700 MST 2012") Expect(err).NotTo(HaveOccurred()) appInstance := models.AppInstanceFields{} appInstance.State = models.InstanceRunning appInstance.Since = time1 appInstance.CpuUsage = 1.0
{"state", "started"}, {"instances", "2/2"}, {"usage", "256M x 2 instances"}, {"urls", "my-app.example.com", "foo.example.com"}, {"#0", "running", "2012-01-02 03:04:05 PM", "100.0%", "13 of 64M", "32M of 1G"}, {"#1", "down", "2012-04-01 03:04:05 PM", "0%", "0 of 0", "0 of 0"}, }) }) }) Describe("when the app is not running", func() { BeforeEach(func() { application := models.Application{} application.Name = "my-app" application.Guid = "my-app-guid" application.State = "stopped" application.InstanceCount = 2 application.RunningInstances = 0 application.Memory = 256 appSummaryRepo.GetSummarySummary = application requirementsFactory.Application = application }) It("displays nice output when the app is stopped", func() { appSummaryRepo.GetSummaryErrorCode = errors.APP_STOPPED runCommand("my-app") Expect(appSummaryRepo.GetSummaryAppGuid).To(Equal("my-app-guid")) Expect(appInstancesRepo.GetInstancesAppGuid).To(Equal("my-app-guid"))