func (c *client) subscribeToEvents(route string) (events.EventSource, error) { eventSource, err := sse.Connect(c.streamingHTTPClient, time.Second, func() *http.Request { request, err := c.reqGen.CreateRequest(route, nil, nil) if err != nil { panic(err) // totally shouldn't happen } return request }) if err != nil { return nil, err } return events.NewEventSource(eventSource), nil }
"code.cloudfoundry.org/bbs/events" "code.cloudfoundry.org/bbs/events/eventfakes" "code.cloudfoundry.org/bbs/models" "github.com/gogo/protobuf/proto" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/vito/go-sse/sse" ) var _ = Describe("EventSource", func() { var eventSource events.EventSource var fakeRawEventSource *eventfakes.FakeRawEventSource BeforeEach(func() { fakeRawEventSource = new(eventfakes.FakeRawEventSource) eventSource = events.NewEventSource(fakeRawEventSource) }) Describe("Next", func() { Describe("Desired LRP events", func() { var desiredLRP *models.DesiredLRP BeforeEach(func() { desiredLRP = &models.DesiredLRP{ ProcessGuid: "some-guid", Domain: "some-domain", RootFs: "some-rootfs", Action: models.WrapAction(&models.RunAction{ Path: "true", User: "******", }),
Describe("Subscribe to Desired Events", func() { ItStreamsEventsFromHub(&desiredHub) It("migrates desired lrps down to v0", func() { response, err := http.Get(server.URL) Expect(err).NotTo(HaveOccurred()) reader := sse.NewReadCloser(response.Body) desiredLRP := model_helpers.NewValidDesiredLRP("guid") event := models.NewDesiredLRPCreatedEvent(desiredLRP) migratedLRP := desiredLRP.VersionDownTo(format.V0) Expect(migratedLRP).NotTo(Equal(desiredLRP)) migratedEvent := models.NewDesiredLRPCreatedEvent(migratedLRP) desiredHub.Emit(event) events := events.NewEventSource(reader) actualEvent, err := events.Next() Expect(err).NotTo(HaveOccurred()) Expect(actualEvent).To(Equal(migratedEvent)) }) }) Describe("Subscribe to Actual Events", func() { ItStreamsEventsFromHub(&actualHub) }) }) })