OverflowHandlerTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php declare(strict_types=1);
  2. /*
  3. * This file is part of the Monolog package.
  4. *
  5. * (c) Jordi Boggiano <j.boggiano@seld.be>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Monolog\Handler;
  11. use Monolog\Level;
  12. /**
  13. * @author Kris Buist <krisbuist@gmail.com>
  14. * @covers \Monolog\Handler\OverflowHandler
  15. */
  16. class OverflowHandlerTest extends \Monolog\Test\MonologTestCase
  17. {
  18. public function testNotPassingRecordsBeneathLogLevel()
  19. {
  20. $testHandler = new TestHandler();
  21. $handler = new OverflowHandler($testHandler, [], Level::Info);
  22. $handler->handle($this->getRecord(Level::Debug));
  23. $this->assertFalse($testHandler->hasDebugRecords());
  24. }
  25. public function testPassThroughWithoutThreshold()
  26. {
  27. $testHandler = new TestHandler();
  28. $handler = new OverflowHandler($testHandler, [], Level::Info);
  29. $handler->handle($this->getRecord(Level::Info, 'Info 1'));
  30. $handler->handle($this->getRecord(Level::Info, 'Info 2'));
  31. $handler->handle($this->getRecord(Level::Warning, 'Warning 1'));
  32. $this->assertTrue($testHandler->hasInfoThatContains('Info 1'));
  33. $this->assertTrue($testHandler->hasInfoThatContains('Info 2'));
  34. $this->assertTrue($testHandler->hasWarningThatContains('Warning 1'));
  35. }
  36. /**
  37. * @test
  38. */
  39. public function testHoldingMessagesBeneathThreshold()
  40. {
  41. $testHandler = new TestHandler();
  42. $handler = new OverflowHandler($testHandler, [Level::Info->value => 3]);
  43. $handler->handle($this->getRecord(Level::Debug, 'debug 1'));
  44. $handler->handle($this->getRecord(Level::Debug, 'debug 2'));
  45. foreach (range(1, 3) as $i) {
  46. $handler->handle($this->getRecord(Level::Info, 'info ' . $i));
  47. }
  48. $this->assertTrue($testHandler->hasDebugThatContains('debug 1'));
  49. $this->assertTrue($testHandler->hasDebugThatContains('debug 2'));
  50. $this->assertFalse($testHandler->hasInfoRecords());
  51. $handler->handle($this->getRecord(Level::Info, 'info 4'));
  52. foreach (range(1, 4) as $i) {
  53. $this->assertTrue($testHandler->hasInfoThatContains('info ' . $i));
  54. }
  55. }
  56. /**
  57. * @test
  58. */
  59. public function testCombinedThresholds()
  60. {
  61. $testHandler = new TestHandler();
  62. $handler = new OverflowHandler($testHandler, [Level::Info->value => 5, Level::Warning->value => 10]);
  63. $handler->handle($this->getRecord(Level::Debug));
  64. foreach (range(1, 5) as $i) {
  65. $handler->handle($this->getRecord(Level::Info, 'info ' . $i));
  66. }
  67. foreach (range(1, 10) as $i) {
  68. $handler->handle($this->getRecord(Level::Warning, 'warning ' . $i));
  69. }
  70. // Only 1 DEBUG records
  71. $this->assertCount(1, $testHandler->getRecords());
  72. $handler->handle($this->getRecord(Level::Info, 'info final'));
  73. // 1 DEBUG + 5 buffered INFO + 1 new INFO
  74. $this->assertCount(7, $testHandler->getRecords());
  75. $handler->handle($this->getRecord(Level::Warning, 'warning final'));
  76. // 1 DEBUG + 6 INFO + 10 buffered WARNING + 1 new WARNING
  77. $this->assertCount(18, $testHandler->getRecords());
  78. $handler->handle($this->getRecord(Level::Info, 'Another info'));
  79. $handler->handle($this->getRecord(Level::Warning, 'Anther warning'));
  80. // 1 DEBUG + 6 INFO + 11 WARNING + 1 new INFO + 1 new WARNING
  81. $this->assertCount(20, $testHandler->getRecords());
  82. }
  83. }