示例#1
0
		BeforeEach(func() {
			database = &fake_db.FakeDB{}
			stats = &fake_statsd.FakePartialStatsdClient{}

			tickChan = make(chan time.Time, 1)
			reporter = NewMetricsReporter(database, stats, &time.Ticker{C: tickChan})

			sigChan = make(chan os.Signal, 1)
			readyChan = make(chan struct{}, 1)
			resultsChan = make(chan storeadapter.WatchEvent, 1)
			database.WatchRouteChangesReturns(resultsChan, nil, nil)
			database.ReadRoutesReturns([]db.Route{
				db.Route{},
				db.Route{},
				db.Route{},
				db.Route{},
				db.Route{},
			}, nil)
		})

		JustBeforeEach(func() {
			go reporter.Run(sigChan, readyChan)
		})

		AfterEach(func() {
			sigChan <- nil
		})

		It("emits total_subscriptions on start", func() {
			Eventually(stats.GaugeCallCount).Should(Equal(1))
			It("returns an Unauthorized status code", func() {
				request = handlers.NewTestRequest("")
				routesHandler.List(responseRecorder, request)
				Expect(responseRecorder.Code).To(Equal(http.StatusUnauthorized))
			})
		})

		Context("when the database is empty", func() {
			var (
				routes []db.Route
			)

			BeforeEach(func() {
				routes = []db.Route{}

				database.ReadRoutesReturns(routes, nil)
			})

			It("returns an empty set", func() {
				request = handlers.NewTestRequest("")

				routesHandler.List(responseRecorder, request)

				Expect(responseRecorder.Body.String()).To(MatchJSON("[]"))
			})
		})

		Context("when the database has one route", func() {
			var (
				routes []db.Route
			)
示例#3
0
			sigChan = make(chan os.Signal, 1)
			readyChan = make(chan struct{}, 1)
			resultsChan = make(chan db.Event, 1)
			tcpResultsChan = make(chan db.Event, 1)
			database.WatchRouteChangesStub = func(filter string) (<-chan db.Event, <-chan error, context.CancelFunc) {
				if filter == db.HTTP_ROUTE_BASE_KEY {
					return resultsChan, nil, nil
				} else {
					return tcpResultsChan, nil, nil
				}
			}
			database.ReadRoutesReturns([]models.Route{
				models.Route{},
				models.Route{},
				models.Route{},
				models.Route{},
				models.Route{},
			}, nil)

			database.ReadTcpRouteMappingsReturns([]models.TcpRouteMapping{
				models.TcpRouteMapping{},
				models.TcpRouteMapping{},
				models.TcpRouteMapping{},
			}, nil)
		})

		JustBeforeEach(func() {
			go reporter.Run(sigChan, readyChan)
		})