desiredLRP, err = etcdDB.DesiredLRPByProcessGuid(logger, lrp.ProcessGuid) Expect(err).NotTo(HaveOccurred()) update = &models.DesiredLRPUpdate{} }) Context("When the updates are valid", func() { BeforeEach(func() { annotation := "new-annotation" instances := int32(16) rawMessage := json.RawMessage([]byte(`{"port":8080,"hosts":["new-route-1","new-route-2"]}`)) update.Routes = &models.Routes{ "router": &rawMessage, } update.Annotation = &annotation update.Instances = &instances }) It("updates an existing DesireLRP", func() { _, modelErr := etcdDB.UpdateDesiredLRP(logger, lrp.ProcessGuid, update) Expect(modelErr).NotTo(HaveOccurred()) updated, modelErr := etcdDB.DesiredLRPByProcessGuid(logger, lrp.ProcessGuid) Expect(modelErr).NotTo(HaveOccurred()) Expect(*updated.Routes).To(HaveKey("router")) json, err := (*update.Routes)["router"].MarshalJSON() Expect(err).NotTo(HaveOccurred()) updatedJson, err := (*updated.Routes)["router"].MarshalJSON() Expect(err).NotTo(HaveOccurred())
} desiredLRP.LegacyDownloadUser = "******" assertDesiredLRPValidationFailsWithMessage(desiredLRP, "value") }) }) }) }) var _ = Describe("DesiredLRPUpdate", func() { var desiredLRPUpdate models.DesiredLRPUpdate BeforeEach(func() { two := int32(2) someText := "some-text" desiredLRPUpdate.Instances = &two desiredLRPUpdate.Annotation = &someText }) Describe("Validate", func() { var assertDesiredLRPValidationFailsWithMessage = func(lrp models.DesiredLRPUpdate, substring string) { validationErr := lrp.Validate() Expect(validationErr).To(HaveOccurred()) Expect(validationErr.Error()).To(ContainSubstring(substring)) } It("requires a positive nonzero number of instances", func() { minusOne := int32(-1) desiredLRPUpdate.Instances = &minusOne assertDesiredLRPValidationFailsWithMessage(desiredLRPUpdate, "instances") zero := int32(0)