def testVanillaBufferedDrainer(self): b = BufferedDrainer(['cat', 'fixtures/lipsum.txt'], read_event_cb=self.collect) b.start() self.assertEquals(self.callback_invoked, 261) self.assertEquals(len(self.chunks), 261) for chunk in self.chunks: self.assertEquals(len(chunk), 1)
def testTimerBasedLargerTimeout(self): b = BufferedDrainer(['sh', 'fixtures/counter.sh'], read_event_cb=self.collect, flush_timeout=2.5) b.start() self.assertEquals(self.callback_invoked, 2) self.assertEquals(self.triggered_by_chunk_size_exceeded, 0) self.assertEquals(self.triggered_by_timer, 1) self.assertEquals(self.triggered_otherwise, 1) self.assertEquals(len(self.chunks), 2) self.assertChunksCountUpTo30()
def testChunkSize20(self): b = BufferedDrainer(['cat', 'fixtures/lipsum.txt'], read_event_cb=self.collect, chunk_size=20) b.start() # lipsum.txt contains 261 lines, so we expect: # 13 chunks of 20 lines # 1 chunk of 1 line self.assertEquals(self.callback_invoked, 14) self.assertEquals(len(self.chunks[:-1]), 13) for chunk in self.chunks[:-1]: self.assertEquals(len(chunk), 20) self.assertEquals(len(chunk), 20)
def testWhenCombinedLikeThisTheTimerNeverFires(self): b = BufferedDrainer(['sh', 'fixtures/counter.sh'], read_event_cb=self.collect, chunk_size=10, flush_timeout=2.5) b.start() self.assertEquals(self.callback_invoked, 3) self.assertEquals(self.triggered_by_timer, 0) self.assertEquals(self.triggered_by_chunk_size_exceeded, 3) self.assertEquals(self.triggered_otherwise, 0) self.assertEquals(len(self.chunks), 3) self.assertChunksCountUpTo30()