Context("message expiry", func() {
		BeforeEach(func() {
			messageaggregator.MaxTTL = 0
		})

		It("does not send a combined event if the stop event doesn't arrive within the TTL", func() {
			messageAggregator.Write(createStartMessage(123, events.PeerType_Client))
			time.Sleep(1)
			messageAggregator.Write(createStopMessage(123, events.PeerType_Client))

			Consistently(func() int { return len(mockWriter.Events) }).Should(Equal(0))
		})
	})

	var metricValue = func(name string) interface{} {
		for _, metric := range messageAggregator.Emit().Metrics {
			if metric.Name == name {
				return metric.Value
			}
		}
		return nil
	}

	Context("metrics", func() {
		var eventuallyExpectMetric = func(name string, value uint64) {
			Eventually(func() interface{} {
				return metricValue(name)
			}).Should(Equal(value), fmt.Sprintf("Metric %s was incorrect", name))
		}

		It("emits a HTTP start counter", func() {