func (h *DesiredLRPHandler) RemoveDesiredLRP(logger lager.Logger, w http.ResponseWriter, req *http.Request) { logger = logger.Session("remove-desired-lrp") request := &models.RemoveDesiredLRPRequest{} response := &models.DesiredLRPLifecycleResponse{} defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }() defer writeResponse(w, response) err := parseRequest(logger, req, request) if err != nil { response.Error = models.ConvertError(err) return } logger = logger.WithData(lager.Data{"process_guid": request.ProcessGuid}) desiredLRP, err := h.desiredLRPDB.DesiredLRPByProcessGuid(logger.Session("fetch-desired"), request.ProcessGuid) if err != nil { response.Error = models.ConvertError(err) return } err = h.desiredLRPDB.RemoveDesiredLRP(logger.Session("remove-desired"), request.ProcessGuid) if err != nil { response.Error = models.ConvertError(err) return } go h.desiredHub.Emit(models.NewDesiredLRPRemovedEvent(desiredLRP)) h.stopInstancesFrom(logger, request.ProcessGuid, 0) }
It("returns the event", func() { event, err := eventSource.Next() Expect(err).NotTo(HaveOccurred()) desiredLRPChangeEvent, ok := event.(*models.DesiredLRPChangedEvent) Expect(ok).To(BeTrue()) Expect(desiredLRPChangeEvent).To(Equal(expectedEvent)) }) }) Context("when receiving a DesiredLRPRemovedEvent", func() { var expectedEvent *models.DesiredLRPRemovedEvent BeforeEach(func() { expectedEvent = models.NewDesiredLRPRemovedEvent(desiredLRP) payload, err := proto.Marshal(expectedEvent) Expect(err).NotTo(HaveOccurred()) payload = []byte(base64.StdEncoding.EncodeToString(payload)) fakeRawEventSource.NextReturns( sse.Event{ ID: "sup", Name: string(expectedEvent.EventType()), Data: payload, }, nil, ) }) It("returns the event", func() {