test_buffer.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # Copyright (c) Twisted Matrix Laboratories.
  2. # See LICENSE for details.
  3. """
  4. Test cases for L{twisted.logger._buffer}.
  5. """
  6. from zope.interface.verify import verifyObject, BrokenMethodImplementation
  7. from twisted.trial import unittest
  8. from .._observer import ILogObserver
  9. from .._buffer import LimitedHistoryLogObserver
  10. class LimitedHistoryLogObserverTests(unittest.TestCase):
  11. """
  12. Tests for L{LimitedHistoryLogObserver}.
  13. """
  14. def test_interface(self):
  15. """
  16. L{LimitedHistoryLogObserver} provides L{ILogObserver}.
  17. """
  18. observer = LimitedHistoryLogObserver(0)
  19. try:
  20. verifyObject(ILogObserver, observer)
  21. except BrokenMethodImplementation as e:
  22. self.fail(e)
  23. def test_order(self):
  24. """
  25. L{LimitedHistoryLogObserver} saves history in the order it is received.
  26. """
  27. size = 4
  28. events = [dict(n=n) for n in range(size//2)]
  29. observer = LimitedHistoryLogObserver(size)
  30. for event in events:
  31. observer(event)
  32. outEvents = []
  33. observer.replayTo(outEvents.append)
  34. self.assertEqual(events, outEvents)
  35. def test_limit(self):
  36. """
  37. When more events than a L{LimitedHistoryLogObserver}'s maximum size are
  38. buffered, older events will be dropped.
  39. """
  40. size = 4
  41. events = [dict(n=n) for n in range(size*2)]
  42. observer = LimitedHistoryLogObserver(size)
  43. for event in events:
  44. observer(event)
  45. outEvents = []
  46. observer.replayTo(outEvents.append)
  47. self.assertEqual(events[-size:], outEvents)