Skip to content

Commit 07c903e

Browse files
committed
add test for draining case
1 parent cd52d2c commit 07c903e

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

handlers/upload_droplet/upload_droplet_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http/httptest"
1010
"net/url"
1111
"sync"
12+
"sync/atomic"
1213
"time"
1314

1415
"code.cloudfoundry.org/cc-uploader/ccclient/fake_ccclient"
@@ -28,6 +29,7 @@ var _ = Describe("UploadDroplet", func() {
2829
var uploader fake_ccclient.FakeUploader
2930
var poller fake_ccclient.FakePoller
3031
var logger lager.Logger
32+
//var draining int32
3133

3234
BeforeEach(func() {
3335
outgoingResponse = httptest.NewRecorder()
@@ -179,6 +181,27 @@ var _ = Describe("UploadDroplet", func() {
179181
})
180182
})
181183

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+
182205
Context("when the requester (client) goes away", func() {
183206
var (
184207
cancel context.CancelFunc

0 commit comments

Comments
 (0)