Permalink
Browse files

Added unit test cases.

  • Loading branch information...
1 parent d0fd1de commit 40db7dc97794ca658c1f89862ae93d8b394d7be9 @nvie committed May 25, 2010
Showing with 314 additions and 0 deletions.
  1. +11 −0 drainers/buffered.py
  2. +2 −0 setup.cfg
  3. +261 −0 tests/fixtures/lipsum.txt
  4. +40 −0 tests/test_buffered.py
View
@@ -88,3 +88,14 @@ def _flush(self):
bufcopy = self._empty_buffer()
self._orig_read_event_cb(bufcopy)
+ def start(self):
+ # 1. Start the timer upfront
+ # 2. Invoke super(BufferedDrainer, self).start()
+ # 3. Stop/kill timer
+ # 4. Flush remaining buffer
+ # 4. Return return value from step 2
+
+ result = super(BufferedDrainer, self).start()
+ self._flush()
+ return result
+
View
@@ -0,0 +1,2 @@
+[nosetests]
+where = tests
View
@@ -0,0 +1,261 @@
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tincidunt lacus
+vitae nisl bibendum iaculis. Morbi tincidunt consectetur metus non feugiat. In
+velit lacus, auctor et tempor nec, interdum at magna. Praesent consectetur
+nulla eu diam volutpat egestas. Quisque nec mi dui, at tincidunt neque.
+Vivamus vehicula leo quis leo venenatis aliquam. Fusce sodales lectus ut eros
+tempus nec sollicitudin erat faucibus. Vivamus quis quam nunc. Nullam mollis,
+sem quis vehicula convallis, odio ante varius urna, et varius est magna ac
+sem. Morbi pellentesque varius purus at varius. Nam pretium consequat
+suscipit. Ut iaculis, metus sit amet consequat porta, tortor orci aliquam
+erat, nec sagittis quam ipsum vitae tortor. Suspendisse lobortis lacus eget
+leo feugiat dignissim. In lacus nisl, condimentum eu suscipit in, rhoncus nec
+neque. Fusce consequat gravida nunc et porta.
+
+Curabitur consectetur turpis ut nulla consectetur dignissim sed nec diam.
+Donec sollicitudin, tortor at varius gravida, lacus orci sagittis turpis, sit
+amet suscipit nunc elit a tellus. Nullam augue mi, laoreet at viverra vitae,
+commodo quis est. Morbi at massa ac mi sagittis elementum et nec mauris.
+Phasellus non varius massa. Donec ac sapien in diam tristique tempus ac eget
+diam. Phasellus et mauris vitae lectus malesuada gravida. Cras accumsan
+aliquam urna, a vehicula nunc varius eu. Cras porttitor volutpat nulla id
+ultricies. Maecenas aliquam erat et ante lacinia id iaculis augue blandit.
+Donec turpis tellus, aliquet tempor scelerisque id, lobortis vitae nibh.
+Nullam quam neque, congue sed dignissim sit amet, rutrum id mauris. Duis
+congue arcu ut est consectetur pellentesque. Nulla nunc diam, porttitor congue
+consequat at, consectetur vitae erat.
+
+Vestibulum commodo orci nec mauris feugiat sed tincidunt mauris cursus.
+Curabitur dictum mauris et magna dapibus quis fringilla risus porta. Vivamus
+euismod iaculis mattis. Nullam non augue augue. Nullam congue feugiat
+scelerisque. Duis rhoncus tempus orci eu posuere. Fusce euismod rhoncus dolor,
+nec mattis quam luctus in. Aliquam erat volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Nulla ultricies enim at velit blandit eu
+fringilla felis imperdiet. Vestibulum ante ipsum primis in faucibus orci
+luctus et ultrices posuere cubilia Curae; Cras augue libero, congue a rhoncus
+in, lobortis vel ligula. Sed dui turpis, mollis nec consectetur sit amet,
+cursus eu risus. Proin in consectetur leo. Aenean blandit lorem vel diam
+ultrices adipiscing. Vivamus pulvinar euismod malesuada. Cras ut fermentum
+felis. Quisque malesuada blandit sem, nec porttitor lorem tempus sit amet. Sed
+id sapien et justo ultrices aliquam eu in sem. Vivamus bibendum rhoncus
+scelerisque.
+
+Aenean rhoncus vestibulum purus eu mattis. In hac habitasse platea dictumst.
+Maecenas sagittis porttitor elementum. Vestibulum nec ante vestibulum odio
+consectetur porta at non tortor. Aliquam non tellus porta velit commodo
+dapibus. Vivamus eu lacus mauris. Pellentesque imperdiet imperdiet est eu
+tempor. Vivamus condimentum eros in mauris eleifend pretium. Suspendisse sem
+nibh, dignissim consequat interdum sit amet, fringilla at augue. Nulla
+suscipit lorem fringilla est mollis in ultricies tortor tempus. Suspendisse
+vestibulum dignissim sodales.
+
+Praesent velit libero, sagittis eget luctus vel, fringilla at lectus.
+Pellentesque adipiscing nisl quis urna interdum ut egestas quam gravida.
+Curabitur quis arcu vitae nisl elementum vehicula. Donec id luctus urna. Sed
+massa metus, vestibulum a bibendum id, fermentum vel arcu. Etiam pellentesque,
+nisl a cursus interdum, turpis dolor interdum libero, sed tincidunt justo elit
+ac tortor. Nam vitae sodales orci. Vivamus sagittis nibh nec mauris rhoncus
+scelerisque. Duis adipiscing convallis quam, nec condimentum justo convallis
+vel. Nam a eros nec diam volutpat sollicitudin nec quis magna. Morbi mollis
+leo ac nunc rhoncus dictum. Praesent lorem massa, pharetra quis consectetur
+nec, hendrerit quis lacus. In hac habitasse platea dictumst. Phasellus vitae
+sapien sit amet leo tristique consectetur. Sed pulvinar neque nec lacus
+malesuada et pellentesque odio vulputate. Aenean nec orci quis urna imperdiet
+ornare nec mattis mi. In sollicitudin mauris dolor, nec mollis ante. Nullam ut
+lorem ut enim facilisis condimentum sit amet id turpis. Suspendisse vulputate
+turpis sit amet mauris sagittis ut rhoncus lectus euismod.
+
+Quisque dolor est, ullamcorper id ullamcorper nec, tincidunt fringilla purus.
+Proin nec justo nibh, id malesuada est. Aenean lobortis risus eu quam
+vestibulum cursus. Morbi eget venenatis risus. Morbi nisi turpis, consequat
+vel porttitor sed, venenatis mattis risus. Vivamus purus metus, pellentesque
+in dictum ut, gravida venenatis metus. Nullam ultrices magna sed metus
+facilisis vel volutpat justo semper. Curabitur eu felis felis, sed luctus leo.
+Ut rutrum justo a velit pharetra tristique. Donec vel tincidunt tellus.
+Phasellus eget felis nisi. Morbi vel molestie est. Vestibulum dapibus sodales
+leo blandit varius. Quisque at quam odio. Suspendisse potenti.
+
+Proin rhoncus venenatis velit, at auctor purus placerat lobortis. Fusce
+bibendum dui at ipsum lacinia lacinia fringilla eros tincidunt. Donec vehicula
+ante tellus, at auctor justo. Sed at nisl diam. Nullam a tellus id elit
+aliquam fermentum. Pellentesque sem lectus, sollicitudin eget pellentesque
+suscipit, vulputate non arcu. Duis non ultrices tortor. Sed euismod feugiat
+massa quis iaculis. Morbi nisi leo, euismod quis faucibus sit amet, mattis
+eget ipsum. Pellentesque in purus tortor, sit amet malesuada odio. Duis
+sagittis euismod ultricies. Duis consequat turpis in eros ullamcorper eu
+aliquam lorem placerat. Sed lacinia lacus non nulla fringilla eget volutpat
+lectus semper. Sed sagittis, lacus non placerat ullamcorper, magna nulla
+mattis arcu, non pharetra sapien risus id nibh. Maecenas eu augue elit, ac
+ultricies erat. Donec ut mi id urna rhoncus sagittis. Maecenas suscipit justo
+nec justo porta sed varius mauris lobortis. Proin felis massa, vestibulum eu
+sagittis hendrerit, fringilla at elit.
+
+Sed ornare euismod lorem, vel vehicula erat tincidunt in. Quisque consequat
+tellus non nibh blandit scelerisque. Praesent sagittis sapien eu magna viverra
+imperdiet. Nullam a mauris non nibh congue convallis at eget velit. Integer
+egestas ipsum vitae massa sagittis ut dignissim nunc tincidunt. Curabitur
+tortor velit, ullamcorper ac ultricies euismod, posuere nec sem. Pellentesque
+semper quam eu nunc eleifend dignissim. Aenean consequat tincidunt nibh eget
+pellentesque. In ultricies iaculis mi sed faucibus. Integer rhoncus, ante non
+vestibulum lacinia, nisi magna egestas velit, at malesuada nulla ante et est.
+Aliquam a erat ac mi tempor rutrum id ut urna. Mauris a sapien lorem, rutrum
+convallis nulla. Maecenas eget felis sapien. Nunc quis diam metus, non
+elementum est. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Cras sagittis venenatis leo, a aliquam urna
+scelerisque in.
+
+Morbi quis risus sapien. Nunc nec egestas nisi. Curabitur luctus libero luctus
+eros molestie id congue nulla gravida. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Quisque erat lorem,
+luctus vitae ornare in, volutpat id est. Morbi nec lectus quis elit viverra
+rutrum pellentesque pretium ipsum. Nullam posuere, felis et congue tincidunt,
+augue mi placerat nunc, non porta augue nunc sed lorem. Integer at erat mi, ac
+euismod dui. Duis tortor turpis, aliquam non egestas aliquet, rutrum vitae
+nulla. Praesent sit amet justo vel nisi molestie tempus at eget tellus. Ut non
+sem eget tellus imperdiet faucibus. Sed bibendum placerat dictum. Suspendisse
+urna lorem, venenatis id venenatis ac, sollicitudin in turpis. Nullam a
+dapibus massa. Praesent eu est libero. Pellentesque id luctus sem. Nunc
+feugiat, justo vel rutrum tempus, ipsum eros sagittis lorem, ac dictum diam
+leo lobortis velit. Suspendisse sed quam non lacus auctor bibendum.
+
+Integer suscipit erat felis, sed luctus ante. Curabitur lacinia lacus id erat
+imperdiet adipiscing et vitae lacus. Integer sed odio ligula. Sed tortor ante,
+iaculis eu lobortis vitae, tincidunt semper nunc. Curabitur egestas augue
+pretium lectus vulputate bibendum. Morbi pharetra nunc et augue tempor nec
+fermentum velit commodo. Ut risus odio, commodo nec ornare quis, rhoncus sed
+velit. Vivamus mattis blandit massa. Pellentesque dictum ullamcorper euismod.
+Donec est diam, sollicitudin nec eleifend in, rutrum at libero. Integer
+convallis varius ullamcorper. In hac habitasse platea dictumst. Aliquam
+sollicitudin gravida erat, quis dignissim nunc mattis facilisis. Mauris
+imperdiet, velit vel accumsan placerat, augue felis varius erat, eget posuere
+ligula nisi ut arcu. Suspendisse nec diam ac risus congue condimentum. Nulla
+rhoncus turpis lacus, at scelerisque tortor. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Praesent eu ligula nec
+dui semper fringilla id ut nisi. Mauris tristique tellus sit amet lorem
+interdum a convallis leo blandit.
+
+Duis lobortis arcu vel felis convallis non blandit eros fermentum. Vestibulum
+vitae leo urna, sit amet egestas justo. Pellentesque vel libero in enim
+fringilla sodales a non ante. Maecenas hendrerit, quam consectetur consequat
+interdum, ligula augue molestie orci, nec ornare est massa sit amet dolor.
+Morbi sed nibh lacus. Fusce vel sodales est. Nulla a nisl nulla, in malesuada
+eros. Quisque ac turpis augue, ac aliquet felis. Nam ut tortor mauris,
+porttitor aliquet nunc. Aenean id mi sit amet purus commodo pellentesque
+volutpat sed risus. Aliquam leo nisl, ultricies vitae scelerisque tempor,
+semper et sapien. Nulla neque risus, sagittis vel consectetur a, placerat sed
+magna. Aliquam a ipsum in arcu porta porta. Pellentesque ut metus sed orci
+pulvinar sagittis vitae nec enim. Vivamus ultricies viverra leo at bibendum.
+Aliquam malesuada cursus bibendum. Phasellus fringilla, dui non scelerisque
+congue, diam sem volutpat nisi, ac pellentesque nisl arcu vitae justo. Cras
+pulvinar dictum lacus, vitae gravida arcu dignissim ut. Praesent elementum
+felis a libero congue lobortis.
+
+Curabitur leo mi, posuere sit amet viverra eu, sollicitudin sed neque. Nulla
+ornare nulla sed risus interdum eget placerat dolor rhoncus. Etiam dapibus
+tellus id dui luctus accumsan. Mauris at eros tellus. Vivamus eget nibh vel
+arcu ornare iaculis. Phasellus vel lacus neque. Nam id mauris neque, eu
+sagittis ligula. Curabitur magna sapien, vulputate quis dictum aliquam,
+dapibus sit amet arcu. Nulla aliquet, dolor id consectetur vehicula, nisi
+ipsum laoreet sem, at laoreet sapien nisl ac felis. Aliquam a blandit enim.
+
+Aliquam id massa nec metus hendrerit cursus nec ultricies ipsum. Curabitur
+sagittis ultrices laoreet. Pellentesque risus mi, vehicula in aliquet id,
+mollis a felis. Nunc posuere urna eget risus sodales placerat. Vivamus nec
+tempor eros. Curabitur ullamcorper eros ac enim aliquam id convallis urna
+congue. Nullam sem ligula, scelerisque at lobortis eget, congue ac ipsum. Duis
+porttitor tincidunt sapien nec laoreet. Integer feugiat consequat porta. Cras
+justo felis, ornare eget suscipit non, sollicitudin a leo.
+
+Nulla ac enim id sapien eleifend accumsan tincidunt sit amet elit. Curabitur a
+semper felis. Fusce ac commodo sem. Proin tempus purus velit, et fermentum
+nibh. Nulla mollis eleifend tincidunt. Cum sociis natoque penatibus et magnis
+dis parturient montes, nascetur ridiculus mus. Etiam non nunc id dui blandit
+iaculis. Quisque libero odio, vestibulum at tempor ac, suscipit id justo.
+Praesent metus orci, ullamcorper a aliquam id, rutrum et justo. Nulla sit amet
+libero et magna dictum porta. Morbi non libero eget mi euismod varius. Nullam
+suscipit, purus ut consequat porttitor, odio enim bibendum libero, et
+tristique sapien nulla a augue. Donec semper nunc sit amet nulla auctor
+tincidunt. Curabitur nibh nisi, aliquam sit amet placerat id, pharetra eu
+nunc. Pellentesque volutpat neque a lorem accumsan tempus.
+
+Nulla facilisi. Nunc magna metus, ultricies nec semper nec, ultrices eget
+justo. Vestibulum ut ipsum in justo laoreet convallis. Morbi vel augue id
+massa iaculis malesuada ac id ipsum. In hac habitasse platea dictumst.
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac
+turpis egestas. Mauris suscipit lacus et orci pharetra sodales. Nunc tristique
+erat sit amet leo condimentum eleifend. Etiam porttitor blandit dapibus.
+Suspendisse potenti. Quisque eu placerat dolor. Proin vitae neque nec ipsum
+ullamcorper aliquam. Quisque quis sapien elit. Cras a porttitor est. Duis
+feugiat, nibh sit amet eleifend vulputate, ligula turpis accumsan neque, vitae
+viverra justo quam sollicitudin massa. Nunc at lacus sed nulla vehicula
+imperdiet at sed lorem. Sed dapibus cursus feugiat. Duis in sem odio, in
+hendrerit nibh. Phasellus facilisis consequat pharetra. Suspendisse potenti.
+
+In consectetur porttitor lorem, non condimentum ante pharetra sit amet. Mauris
+quis tristique tellus. Integer ac nibh nulla. Nunc ultricies, erat quis dictum
+ornare, massa lacus tempus arcu, id viverra purus quam at quam. Nulla
+facilisi. Phasellus felis nisi, convallis nec posuere vel, consequat eu
+turpis. Proin vel molestie ipsum. Duis nibh nisl, luctus imperdiet condimentum
+nec, tristique id velit. Nulla facilisi. Proin in neque enim. Fusce vehicula
+varius bibendum. Nulla consequat purus id felis pharetra faucibus.
+Pellentesque scelerisque commodo enim congue facilisis. Duis luctus
+pellentesque erat, congue venenatis tellus dictum non. Donec consequat, est
+sit amet euismod gravida, tellus est porta ligula, aliquet aliquam ligula dui
+quis metus. Praesent malesuada dictum odio, id laoreet nisl blandit quis.
+
+Nunc sollicitudin faucibus ultricies. Morbi augue tortor, hendrerit vitae
+facilisis egestas, rutrum feugiat metus. Duis dictum arcu in ligula accumsan
+eget lacinia nibh eleifend. Proin et est ligula, malesuada blandit ligula.
+Duis quis condimentum tortor. Praesent lacinia sapien ut libero rutrum
+dignissim. Duis ac ipsum neque, non dapibus sapien. Vivamus aliquet, ligula eu
+vulputate dapibus, dolor elit fringilla mauris, vitae tempor arcu massa vel
+metus. Ut ac metus ipsum, vel venenatis tortor. Fusce venenatis condimentum
+lacus. Aliquam eleifend volutpat mauris, quis suscipit lectus feugiat et.
+Mauris rhoncus tortor nec tortor rhoncus quis lacinia odio venenatis.
+Suspendisse eu risus at mi cursus pellentesque. Nam condimentum sollicitudin
+congue.
+
+In hac habitasse platea dictumst. Mauris dignissim dignissim augue cursus
+feugiat. Praesent iaculis dui mauris. Suspendisse ipsum enim, gravida vel
+posuere vel, interdum ut arcu. Praesent mi justo, accumsan in imperdiet in,
+vehicula nec nibh. Aenean vel mattis justo. Integer faucibus auctor magna, non
+pellentesque ligula sagittis a. Etiam dictum nisi in justo vehicula vel
+scelerisque lorem ultrices. Morbi id gravida sem. Pellentesque dictum leo
+hendrerit metus malesuada eget sodales massa convallis. Mauris eget mi metus,
+vel semper magna. Donec condimentum nisl sit amet neque ullamcorper nec porta
+lorem euismod. Ut quis consequat est. Phasellus volutpat tristique massa sed
+aliquet. Pellentesque feugiat mi vel sem elementum at malesuada dui aliquam.
+Sed nisl nibh, rhoncus sed venenatis sit amet, consectetur eu leo. Nulla nulla
+nisl, hendrerit vitae ullamcorper nec, ullamcorper id nulla. Quisque gravida
+vulputate sem id porttitor. Integer quis nulla et odio rutrum vulputate sed
+luctus ligula.
+
+Cras placerat, nunc et consectetur gravida, enim elit euismod velit, at
+convallis elit sem ac orci. Nullam venenatis, nisi at rhoncus congue, lectus
+tortor imperdiet augue, a dictum elit est at dolor. Ut viverra nisi non nulla
+ornare sed eleifend purus tempus. Suspendisse turpis neque, sagittis ac
+bibendum ac, posuere vitae lacus. Sed ac arcu mi. Phasellus facilisis
+dignissim malesuada. Aliquam vehicula nibh in orci commodo vestibulum non sit
+amet neque. Aenean ipsum est, adipiscing nec accumsan pulvinar, suscipit eu
+neque. In hac habitasse platea dictumst. Quisque arcu libero, tincidunt sit
+amet egestas eget, faucibus eu elit. Duis massa ipsum, tristique vitae
+placerat et, porttitor at nisi. Mauris vitae est nunc. Curabitur sit amet
+sapien nibh, eu ullamcorper tellus. Nam tellus turpis, consequat vitae mattis
+sed, fringilla in arcu. In vestibulum malesuada mauris, vitae consequat ipsum
+egestas adipiscing. Fusce aliquam tincidunt neque, eget tempus velit fermentum
+vitae. Ut porttitor, nunc nec euismod laoreet, lorem augue feugiat risus, at
+sodales massa risus quis dolor. Suspendisse sagittis nisl vel quam pretium
+sagittis. Morbi ultricies sem eu ipsum facilisis a vestibulum mi scelerisque.
+Phasellus libero nibh, gravida sit amet tristique eu, vehicula non magna.
+
+Donec varius convallis lacus non vestibulum. Duis ac vestibulum ligula. Morbi
+et dictum tortor. Ut quam quam, fringilla et bibendum ac, bibendum eu felis.
+Proin nec tellus non nisl dignissim lacinia in eu nunc. Vivamus et mi vel enim
+porta feugiat. In feugiat gravida nisl feugiat rutrum. Sed orci diam, pulvinar
+id dictum at, pellentesque in ligula. In non nunc tortor. Duis posuere
+accumsan sapien, nec accumsan turpis iaculis at. Donec nec lacus quis libero
+feugiat pretium. Etiam dignissim neque sit amet lectus hendrerit aliquam.
+Nullam aliquam nisl nec neque interdum non dignissim ante laoreet. Donec et
+mauris lectus. Nam erat risus, iaculis ac dictum quis, fermentum id libero.
+Pellentesque lobortis est eu odio bibendum lobortis. Sed a tincidunt turpis.
+Vivamus at quam neque, vitae interdum ipsum. Ut eu quam vel massa vehicula
+suscipit. Suspendisse dui quam, luctus a congue eget, consequat iaculis metus.
View
@@ -0,0 +1,40 @@
+import unittest
+from drainers import BufferedDrainer
+
+class TestBufferedDrainer(unittest.TestCase):
+
+ def setUp(self):
+ self.callback_invoked = 0
+ self.chunks = []
+
+ def tearDown(self):
+ # Set free memory
+ self.callback_invoked = None
+ self.chunks = None
+
+ def collect(self, lines):
+ self.callback_invoked += 1
+ self.chunks.append(lines)
+
+ 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 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)

0 comments on commit 40db7dc

Please sign in to comment.