9
9
"net/http/httptest"
10
10
"net/url"
11
11
"sync"
12
+ "sync/atomic"
12
13
"time"
13
14
14
15
"code.cloudfoundry.org/cc-uploader/ccclient/fake_ccclient"
@@ -28,6 +29,7 @@ var _ = Describe("UploadDroplet", func() {
28
29
var uploader fake_ccclient.FakeUploader
29
30
var poller fake_ccclient.FakePoller
30
31
var logger lager.Logger
32
+ //var draining int32
31
33
32
34
BeforeEach (func () {
33
35
outgoingResponse = httptest .NewRecorder ()
@@ -179,6 +181,27 @@ var _ = Describe("UploadDroplet", func() {
179
181
})
180
182
})
181
183
184
+ Context ("when the system is draining" , func () {
185
+ var dropletUploadHandler http.Handler
186
+ var draining int32
187
+ var responseWriter * httptest.ResponseRecorder
188
+ BeforeEach (func () {
189
+ atomic .StoreInt32 (& draining , 1 )
190
+ responseWriter = httptest .NewRecorder ()
191
+ var err error
192
+ incomingRequest , err = http .NewRequest ("POST" , "http://example.com?cc_droplet_upload_uri=http://some-uri" , nil )
193
+ Expect (err ).NotTo (HaveOccurred ())
194
+
195
+ dropletUploadHandler = upload_droplet .New (& uploader , & poller , lager .NewLogger ("fake-logger" ), & sync.WaitGroup {}, & draining )
196
+ })
197
+
198
+ It ("returns 503" , func () {
199
+ dropletUploadHandler .ServeHTTP (responseWriter , incomingRequest )
200
+ Expect (responseWriter .Code ).To (Equal (http .StatusServiceUnavailable ))
201
+ Expect (responseWriter .Body .String ()).To (ContainSubstring ("Service is draining" ))
202
+ })
203
+ })
204
+
182
205
Context ("when the requester (client) goes away" , func () {
183
206
var (
184
207
cancel context.CancelFunc
0 commit comments