github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/actor/v3action/application_with_process_summary_test.go (about) 1 package v3action_test 2 3 import ( 4 "errors" 5 6 . "code.cloudfoundry.org/cli/actor/v3action" 7 "code.cloudfoundry.org/cli/actor/v3action/v3actionfakes" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 10 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("Application with ProcessSummary Actions", func() { 16 var ( 17 actor *Actor 18 fakeCloudControllerClient *v3actionfakes.FakeCloudControllerClient 19 ) 20 21 BeforeEach(func() { 22 fakeCloudControllerClient = new(v3actionfakes.FakeCloudControllerClient) 23 actor = NewActor(fakeCloudControllerClient, nil, nil, nil) 24 }) 25 26 Describe("GetApplicationsWithProcessesBySpace", func() { 27 Context("when there are apps", func() { 28 BeforeEach(func() { 29 fakeCloudControllerClient.GetApplicationsReturns( 30 []ccv3.Application{ 31 { 32 Name: "some-app-name-1", 33 GUID: "some-app-guid-1", 34 State: constant.ApplicationStarted, 35 }, 36 { 37 Name: "some-app-name-2", 38 GUID: "some-app-guid-2", 39 State: constant.ApplicationStopped, 40 }, 41 }, 42 ccv3.Warnings{"some-warning"}, 43 nil, 44 ) 45 46 fakeCloudControllerClient.GetApplicationProcessesReturnsOnCall( 47 0, 48 []ccv3.Process{ 49 { 50 GUID: "some-process-guid-1", 51 Type: "some-process-type-1", 52 }, 53 { 54 GUID: "some-process-guid-2", 55 Type: "some-process-type-2", 56 }, 57 }, 58 ccv3.Warnings{"some-process-warning-1"}, 59 nil, 60 ) 61 fakeCloudControllerClient.GetApplicationProcessesReturnsOnCall( 62 1, 63 []ccv3.Process{ 64 { 65 GUID: "some-process-guid-3", 66 Type: "some-process-type-3", 67 }, 68 }, 69 ccv3.Warnings{"some-process-warning-2"}, 70 nil, 71 ) 72 73 fakeCloudControllerClient.GetProcessInstancesReturnsOnCall( 74 0, 75 []ccv3.ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceDown}, {State: constant.ProcessInstanceRunning}}, 76 ccv3.Warnings{"some-process-stats-warning-1"}, 77 nil, 78 ) 79 fakeCloudControllerClient.GetProcessInstancesReturnsOnCall( 80 1, 81 []ccv3.ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceRunning}}, 82 ccv3.Warnings{"some-process-stats-warning-2"}, 83 nil, 84 ) 85 fakeCloudControllerClient.GetProcessInstancesReturnsOnCall( 86 2, 87 []ccv3.ProcessInstance{{State: constant.ProcessInstanceDown}}, 88 ccv3.Warnings{"some-process-stats-warning-3"}, 89 nil, 90 ) 91 }) 92 93 It("returns app summaries and warnings", func() { 94 summaries, warnings, err := actor.GetApplicationsWithProcessesBySpace("some-space-guid") 95 Expect(err).ToNot(HaveOccurred()) 96 Expect(summaries).To(ConsistOf( 97 ApplicationWithProcessSummary{ 98 Application: Application{ 99 Name: "some-app-name-1", 100 GUID: "some-app-guid-1", 101 State: constant.ApplicationStarted, 102 }, 103 ProcessSummaries: []ProcessSummary{ 104 { 105 Process: Process{GUID: "some-process-guid-1", Type: "some-process-type-1"}, 106 InstanceDetails: []ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceDown}, {State: constant.ProcessInstanceRunning}}, 107 }, 108 { 109 Process: Process{GUID: "some-process-guid-2", Type: "some-process-type-2"}, 110 InstanceDetails: []ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceRunning}}, 111 }, 112 }, 113 }, 114 ApplicationWithProcessSummary{ 115 Application: Application{ 116 Name: "some-app-name-2", 117 GUID: "some-app-guid-2", 118 State: constant.ApplicationStopped, 119 }, 120 ProcessSummaries: []ProcessSummary{ 121 { 122 Process: Process{GUID: "some-process-guid-3", Type: "some-process-type-3"}, 123 InstanceDetails: []ProcessInstance{{State: constant.ProcessInstanceDown}}, 124 }, 125 }, 126 })) 127 Expect(warnings).To(ConsistOf("some-warning", "some-process-warning-1", "some-process-stats-warning-1", "some-process-stats-warning-2", "some-process-warning-2", "some-process-stats-warning-3")) 128 129 Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1)) 130 Expect(fakeCloudControllerClient.GetApplicationsArgsForCall(0)).To(ConsistOf( 131 ccv3.Query{Key: ccv3.SpaceGUIDFilter, Values: []string{"some-space-guid"}}, 132 ccv3.Query{Key: ccv3.OrderBy, Values: []string{ccv3.NameOrder}}, 133 )) 134 135 Expect(fakeCloudControllerClient.GetApplicationProcessesCallCount()).To(Equal(2)) 136 Expect(fakeCloudControllerClient.GetApplicationProcessesArgsForCall(0)).To(Equal("some-app-guid-1")) 137 Expect(fakeCloudControllerClient.GetApplicationProcessesArgsForCall(1)).To(Equal("some-app-guid-2")) 138 139 Expect(fakeCloudControllerClient.GetProcessInstancesCallCount()).To(Equal(3)) 140 Expect(fakeCloudControllerClient.GetProcessInstancesArgsForCall(0)).To(Equal("some-process-guid-1")) 141 Expect(fakeCloudControllerClient.GetProcessInstancesArgsForCall(1)).To(Equal("some-process-guid-2")) 142 Expect(fakeCloudControllerClient.GetProcessInstancesArgsForCall(2)).To(Equal("some-process-guid-3")) 143 }) 144 }) 145 146 Context("when getting the app processes returns an error", func() { 147 var expectedErr error 148 149 BeforeEach(func() { 150 fakeCloudControllerClient.GetApplicationsReturns( 151 []ccv3.Application{ 152 { 153 Name: "some-app-name", 154 GUID: "some-app-guid", 155 State: constant.ApplicationStarted, 156 }, 157 }, 158 ccv3.Warnings{"some-warning"}, 159 nil, 160 ) 161 162 expectedErr = errors.New("some error") 163 fakeCloudControllerClient.GetApplicationProcessesReturns( 164 []ccv3.Process{}, 165 ccv3.Warnings{"some-process-warning"}, 166 expectedErr, 167 ) 168 }) 169 170 It("returns the error", func() { 171 _, warnings, err := actor.GetApplicationsWithProcessesBySpace("some-space-guid") 172 Expect(err).To(Equal(expectedErr)) 173 Expect(warnings).To(Equal(Warnings{"some-warning", "some-process-warning"})) 174 }) 175 }) 176 177 Context("when getting the app process instances returns an error", func() { 178 var expectedErr error 179 180 BeforeEach(func() { 181 fakeCloudControllerClient.GetApplicationsReturns( 182 []ccv3.Application{ 183 { 184 Name: "some-app-name", 185 GUID: "some-app-guid", 186 State: constant.ApplicationStarted, 187 }, 188 }, 189 ccv3.Warnings{"some-warning"}, 190 nil, 191 ) 192 193 fakeCloudControllerClient.GetApplicationProcessesReturns( 194 []ccv3.Process{ 195 { 196 GUID: "some-process-guid", 197 Type: "some-type", 198 }, 199 }, 200 ccv3.Warnings{"some-process-warning"}, 201 nil, 202 ) 203 204 expectedErr = errors.New("some error") 205 fakeCloudControllerClient.GetProcessInstancesReturns( 206 []ccv3.ProcessInstance{}, 207 ccv3.Warnings{"some-process-stats-warning"}, 208 expectedErr, 209 ) 210 }) 211 212 It("returns the error", func() { 213 _, warnings, err := actor.GetApplicationsWithProcessesBySpace("some-space-guid") 214 Expect(err).To(Equal(expectedErr)) 215 Expect(warnings).To(Equal(Warnings{"some-warning", "some-process-warning", "some-process-stats-warning"})) 216 }) 217 }) 218 }) 219 })