writer = mockWriter{} params = writestrategies.BurstParameters{ Minimum: 10, Maximum: 100, Frequency: 900 * time.Millisecond, } }) JustBeforeEach(func() { writeStrategy = writestrategies.NewBurstWriteStrategy(&mockGenerator{}, &writer, params) }) It("writes messages in bursts", func() { go writeStrategy.StartWriter() defer writeStrategy.Stop() writes := func() uint32 { return atomic.LoadUint32(&writer.count) } Eventually(writes).Should(BeNumerically(">=", params.Minimum)) Eventually(writes).Should(BeNumerically("<=", params.Maximum)) }) It("stops writing after the stoChan is closed", func() { go writeStrategy.StartWriter() writes := func() uint32 { return atomic.LoadUint32(&writer.count) } Eventually(writes).Should(BeNumerically(">=", params.Minimum))