var parallelNode, parallelTotal int BeforeEach(func() { ranB = false parallelNode, parallelTotal = 1, 3 }) Context("as the first node, it runs A", func() { var expectedState types.RemoteBeforeSuiteData BeforeEach(func() { parallelNode, parallelTotal = 1, 3 }) JustBeforeEach(func() { server.AppendHandlers(ghttp.CombineHandlers( ghttp.VerifyRequest("POST", "/BeforeSuiteState"), ghttp.VerifyJSONRepresenting(expectedState), )) outcome = node.Run(parallelNode, parallelTotal, server.URL()) }) Context("when A succeeds", func() { BeforeEach(func() { expectedState = types.RemoteBeforeSuiteData{[]byte("my data"), types.RemoteBeforeSuiteStatePassed} node = newNode(func() []byte { return []byte("my data") }, func([]byte) { ranB = true }) })
}) }) Context("when running in parallel", func() { Context("as the first node", func() { BeforeEach(func() { server.AppendHandlers(ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/RemoteAfterSuiteData"), func(writer http.ResponseWriter, request *http.Request) { ranThing("Request1") }, ghttp.RespondWithJSONEncoded(200, types.RemoteAfterSuiteData{false}), ), ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/RemoteAfterSuiteData"), func(writer http.ResponseWriter, request *http.Request) { ranThing("Request2") }, ghttp.RespondWithJSONEncoded(200, types.RemoteAfterSuiteData{false}), ), ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/RemoteAfterSuiteData"), func(writer http.ResponseWriter, request *http.Request) { ranThing("Request3") }, ghttp.RespondWithJSONEncoded(200, types.RemoteAfterSuiteData{true}), )) node = newNode(func() { ranThing("A") }, func() { ranThing("B") })
GinkgoWriter, GinkgoWriter, ) Expect(err).NotTo(HaveOccurred()) return session } setupFakeDockerRegistry := func() { fakeDockerRegistry.AppendHandlers( ghttp.VerifyRequest("GET", "/v1/_ping"), ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/v1/repositories/some-repo/images"), http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { w.Header().Set("X-Docker-Token", "token-1,token-2") w.Write([]byte(`[ {"id": "id-1", "checksum": "sha-1"}, {"id": "id-2", "checksum": "sha-2"}, {"id": "id-3", "checksum": "sha-3"} ]`)) }), ), ) fakeDockerRegistry.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/v1/repositories/library/some-repo/tags"), http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { w.Write([]byte(`{ "latest": "id-1", "some-other-tag": "id-2" }`))
"github.com/cloudfoundry-incubator/docker_app_lifecycle/Godeps/_workspace/src/github.com/onsi/gomega/ghttp" "github.com/cloudfoundry-incubator/docker_app_lifecycle/helpers" "github.com/cloudfoundry-incubator/docker_app_lifecycle/protocol" ) var _ = Describe("Builder helpers", func() { var ( server *ghttp.Server endpoint1 *ghttp.Server endpoint2 *ghttp.Server ) setupPingableRegistry := func() { server.AllowUnhandledRequests = true server.AppendHandlers( ghttp.VerifyRequest("GET", "/v1/_ping"), ) } setupRegistry := func() { server.AppendHandlers( ghttp.VerifyRequest("GET", "/v1/_ping"), ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/v1/repositories/some_user/some_repo/images"), http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { w.Header().Set("X-Docker-Token", "token-1,token-2") w.Header().Add("X-Docker-Endpoints", endpoint1.HTTPTestServer.Listener.Addr().String()) w.Header().Add("X-Docker-Endpoints", endpoint2.HTTPTestServer.Listener.Addr().String()) w.Write([]byte(`[ {"id": "id-1", "checksum": "sha-1"}, {"id": "id-2", "checksum": "sha-2"},
unixSocketServer = ghttp.NewUnstartedServer() unixSocketServer.HTTPTestServer = &httptest.Server{ Listener: unixSocketListener, Config: &http.Server{Handler: unixSocketServer}, } unixSocketServer.Start() client = http.Client{Transport: New(socket)} }) Context("when a simple GET request is sent", func() { BeforeEach(func() { unixSocketServer.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("GET", "/_ping"), ghttp.RespondWith(http.StatusOK, "true"), ), ) resp, err = client.Get("unix://" + socket + "/_ping") }) It("responds with correct status", func() { Expect(err).NotTo(HaveOccurred()) Expect(resp.StatusCode).To(Equal(http.StatusOK)) }) It("responds with correct body", func() { bytes, err := ioutil.ReadAll(resp.Body) Expect(err).NotTo(HaveOccurred())