BeforeEach(func() {
		sender = fake.NewFakeMetricSender()
		metrics.Initialize(sender, metricbatcher.New(sender, time.Millisecond*10))

		client = &fakeclient.FakeClient{}
		clientPool = &fakes.FakeClientPool{}
		clientPool.RandomClientReturns(client, nil)

		logger = loggertesthelper.Logger()
		loggertesthelper.TestLoggerSink.Clear()

		bufferSize = 10
		forwarder = dopplerforwarder.New(clientPool, sharedSecret, bufferSize, logger)
		doneChan = make(chan struct{})
		go func() {
			forwarder.Run()
			close(doneChan)
		}()
		envelope = &events.Envelope{
			Origin:     proto.String("fake-origin-1"),
			EventType:  events.Envelope_LogMessage.Enum(),
			LogMessage: factories.NewLogMessage(events.LogMessage_OUT, "message", "appid", "sourceType"),
		}
	})

	AfterEach(func() {
		forwarder.Stop()
		<-doneChan
	})

	Context("client selection", func() {