}) It("returns the network error", func() { err := fakeEtcd.SaveRoute(route) Expect(err).To(HaveOccurred()) Expect(err).To(Equal(errors.New("some network error"))) Expect(fakeKeysAPI.GetCallCount()).To(Equal(1)) Expect(fakeKeysAPI.SetCallCount()).To(Equal(1)) }) }) }) }) Describe("WatchRouteChanges with http events", func() { It("does return an error when canceled", func() { _, errors, cancel := etcd.WatchRouteChanges(db.HTTP_ROUTE_BASE_KEY) cancel() Consistently(errors).ShouldNot(Receive()) Eventually(errors).Should(BeClosed()) }) Context("Cancel Watches", func() { It("cancels any in-flight watches", func() { results, err, _ := etcd.WatchRouteChanges(db.HTTP_ROUTE_BASE_KEY) results2, err2, _ := etcd.WatchRouteChanges(db.HTTP_ROUTE_BASE_KEY) etcd.CancelWatches() Eventually(err).Should(BeClosed()) Eventually(err2).Should(BeClosed()) Eventually(results).Should(BeClosed())
Expect(response.Node.TTL).To(Equal(int64(47))) Expect(response.Node.Value).To(MatchJSON(`{ "ip": "9.8.7.6", "route": "next-route", "port": 12345, "ttl": 47, "log_guid": "new-guid" }`)) }) }) }) Describe(".WatchRouteChanges", func() { Context("when a route is upserted", func() { It("should return an update watch event", func() { results, _, _ := etcd.WatchRouteChanges() err := etcd.SaveRoute(route) Expect(err).NotTo(HaveOccurred()) event := <-results Expect(event).NotTo(BeNil()) Expect(event.Type).To(Equal(storeadapter.UpdateEvent)) }) }) Context("when a route is deleted", func() { It("should return an delete watch event", func() { err := etcd.SaveRoute(route) Expect(err).NotTo(HaveOccurred())
Expect(node.TTL).To(Equal(uint64(47))) Expect(node.Value).To(MatchJSON(`{ "ip": "9.8.7.6", "route": "next-route", "port": 12345, "ttl": 47, "log_guid": "new-guid" }`)) }) }) }) Describe("WatchRouteChanges with http events", func() { Context("when a route is upserted", func() { It("should return an update watch event", func() { results, _, _ := etcd.WatchRouteChanges(db.HTTP_ROUTE_BASE_KEY) err := etcd.SaveRoute(route) Expect(err).NotTo(HaveOccurred()) event := <-results Expect(event).NotTo(BeNil()) Expect(event.Type).To(Equal(storeadapter.UpdateEvent)) By("when tcp route is upserted") err = etcd.SaveTcpRouteMapping(tcpRouteMapping1) Expect(err).NotTo(HaveOccurred()) Consistently(results).ShouldNot(Receive()) }) }) Context("when a route is deleted", func() {