PrivateInstanceID: "id", PrivateInstanceIndex: "index", Port: 1111, StaleThresholdInSeconds: 120, Uris: []route.Uri{"test.example.com", "test2.example.com"}, Tags: map[string]string{"key": "value"}, } data, err := json.Marshal(msg) Expect(err).NotTo(HaveOccurred()) err = natsClient.Publish("router.register", data) Expect(err).ToNot(HaveOccurred()) Eventually(registry.RegisterCallCount).Should(Equal(2)) for i := 0; i < registry.RegisterCallCount(); i++ { uri, endpoint := registry.RegisterArgsForCall(i) Expect(msg.Uris).To(ContainElement(uri)) Expect(endpoint.ApplicationId).To(Equal(msg.App)) Expect(endpoint.Tags).To(Equal(msg.Tags)) Expect(endpoint.PrivateInstanceId).To(Equal(msg.PrivateInstanceID)) Expect(endpoint.PrivateInstanceIndex).To(Equal(msg.PrivateInstanceIndex)) Expect(endpoint.RouteServiceUrl).To(Equal(msg.RouteServiceURL)) Expect(endpoint.CanonicalAddr()).To(ContainSubstring(msg.Host)) } }) Context("when the message cannot be unmarshaled", func() { It("does not update the registry", func() { err := natsClient.Publish("router.register", []byte(` `))
0, ), } *response[0].TTL = 1 *response[1].TTL = 1 *response[2].TTL = 1 }) It("updates the route registry", func() { client.RoutesReturns(response, nil) err := fetcher.FetchRoutes() Expect(err).ToNot(HaveOccurred()) Expect(registry.RegisterCallCount()).To(Equal(3)) for i := 0; i < 3; i++ { expectedRoute := response[i] uri, endpoint := registry.RegisterArgsForCall(i) Expect(uri).To(Equal(route.Uri(expectedRoute.Route))) Expect(endpoint).To(Equal( route.NewEndpoint(expectedRoute.LogGuid, expectedRoute.IP, uint16(expectedRoute.Port), expectedRoute.LogGuid, "", nil, *expectedRoute.TTL, expectedRoute.RouteServiceUrl, expectedRoute.ModificationTag, )))