Merge pull request #65 from Amit-PivotalLabs/ccc

Add CloseClientConnections function to ghttp
diff --git a/ghttp/test_server.go b/ghttp/test_server.go
index 2748fea..71cd341 100644
--- a/ghttp/test_server.go
+++ b/ghttp/test_server.go
@@ -172,6 +172,9 @@
 
 //Close() should be called at the end of each test.  It spins down and cleans up the test server.
 func (s *Server) Close() {
+	s.writeLock.Lock()
+	defer s.writeLock.Unlock()
+
 	server := s.HTTPTestServer
 	s.HTTPTestServer = nil
 	server.Close()
@@ -305,3 +308,10 @@
 	existingHandler := s.GetHandler(index)
 	s.SetHandler(index, CombineHandlers(existingHandler, handler))
 }
+
+func (s *Server) CloseClientConnections() {
+	s.writeLock.Lock()
+	defer s.writeLock.Unlock()
+
+	s.HTTPTestServer.CloseClientConnections()
+}
diff --git a/ghttp/test_server_test.go b/ghttp/test_server_test.go
index d992fb4..68ff0d4 100644
--- a/ghttp/test_server_test.go
+++ b/ghttp/test_server_test.go
@@ -5,6 +5,7 @@
 	"io/ioutil"
 	"net/http"
 	"regexp"
+
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 	. "github.com/onsi/gomega/ghttp"
@@ -25,6 +26,32 @@
 		s.Close()
 	})
 
+	Describe("closing client connections", func() {
+		It("closes", func() {
+			s.AppendHandlers(
+				func(w http.ResponseWriter, req *http.Request) {
+					w.Write([]byte("hello"))
+				},
+				func(w http.ResponseWriter, req *http.Request) {
+					s.CloseClientConnections()
+				},
+			)
+
+			resp, err := http.Get(s.URL())
+			Ω(err).ShouldNot(HaveOccurred())
+			Ω(resp.StatusCode).Should(Equal(200))
+
+			body, err := ioutil.ReadAll(resp.Body)
+			resp.Body.Close()
+			Ω(err).ShouldNot(HaveOccurred())
+			Ω(body).Should(Equal([]byte("hello")))
+
+			resp, err = http.Get(s.URL())
+			Ω(err).Should(HaveOccurred())
+			Ω(resp).Should(BeNil())
+		})
+	})
+
 	Describe("allowing unhandled requests", func() {
 		Context("when true", func() {
 			BeforeEach(func() {