Context("PruneEndpoints", func() { defaultThreshold := 1 * time.Minute Context("when an endpoint has a custom stale time", func() { Context("when custom stale threshold is greater than default threshold", func() { It("prunes the endpoint", func() { customThreshold := int(defaultThreshold.Seconds()) + 20 e1 := route.NewEndpoint("", "1.2.3.4", 5678, "", nil, customThreshold, "", modTag) pool.Put(e1) updateTime, _ := time.ParseDuration(fmt.Sprintf("%ds", customThreshold-10)) pool.MarkUpdated(time.Now().Add(-updateTime)) Expect(pool.IsEmpty()).To(Equal(false)) prunedEndpoints := pool.PruneEndpoints(defaultThreshold) Expect(pool.IsEmpty()).To(Equal(true)) Expect(prunedEndpoints).To(ConsistOf(e1)) }) }) Context("and it has passed the stale threshold", func() { It("prunes the endpoint", func() { e1 := route.NewEndpoint("", "1.2.3.4", 5678, "", nil, 20, "", modTag) pool.Put(e1) pool.MarkUpdated(time.Now().Add(-25 * time.Second)) Expect(pool.IsEmpty()).To(Equal(false)) prunedEndpoints := pool.PruneEndpoints(defaultThreshold) Expect(pool.IsEmpty()).To(Equal(true))
Context("PruneEndpoints", func() { defaultThreshold := 1 * time.Minute Context("when an endpoint has a custom stale time", func() { Context("when custom stale threshold is greater than default threshold", func() { It("prunes the endpoint", func() { customThreshold := int(defaultThreshold.Seconds()) + 20 e1 := route.NewEndpoint("", "1.2.3.4", 5678, "", nil, customThreshold, "") pool.Put(e1) updateTime, _ := time.ParseDuration(fmt.Sprintf("%ds", customThreshold-10)) pool.MarkUpdated(time.Now().Add(-updateTime)) Expect(pool.IsEmpty()).To(Equal(false)) pool.PruneEndpoints(defaultThreshold) Expect(pool.IsEmpty()).To(Equal(true)) }) }) Context("and it has passed the stale threshold", func() { It("prunes the endpoint", func() { e1 := route.NewEndpoint("", "1.2.3.4", 5678, "", nil, 20, "") pool.Put(e1) pool.MarkUpdated(time.Now().Add(-25 * time.Second)) Expect(pool.IsEmpty()).To(Equal(false)) pool.PruneEndpoints(defaultThreshold) Expect(pool.IsEmpty()).To(Equal(true)) })