Вход Регистрация
Файл: gapps/vendor/monolog/monolog/tests/Monolog/Handler/BufferHandlerTest.php
Строк: 200
<?php

/*
 * This file is part of the Monolog package.
 *
 * (c) Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace MonologHandler;

use 
MonologTestCase;
use 
MonologLogger;

class 
BufferHandlerTest extends TestCase
{
    private 
$shutdownCheckHandler;

    
/**
     * @covers MonologHandlerBufferHandler::__construct
     * @covers MonologHandlerBufferHandler::handle
     * @covers MonologHandlerBufferHandler::close
     */
    
public function testHandleBuffers()
    {
        
$test = new TestHandler();
        
$handler = new BufferHandler($test);
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::INFO));
        
$this->assertFalse($test->hasDebugRecords());
        
$this->assertFalse($test->hasInfoRecords());
        
$handler->close();
        
$this->assertTrue($test->hasInfoRecords());
        
$this->assertTrue(count($test->getRecords()) === 2);
    }

    
/**
     * @covers MonologHandlerBufferHandler::close
     * @covers MonologHandlerBufferHandler::flush
     */
    
public function testPropagatesRecordsAtEndOfRequest()
    {
        
$test = new TestHandler();
        
$handler = new BufferHandler($test);
        
$handler->handle($this->getRecord(Logger::WARNING));
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$this->shutdownCheckHandler $test;
        
register_shutdown_function(array($this'checkPropagation'));
    }

    public function 
checkPropagation()
    {
        if (!
$this->shutdownCheckHandler->hasWarningRecords() || !$this->shutdownCheckHandler->hasDebugRecords()) {
            echo 
'!!! BufferHandlerTest::testPropagatesRecordsAtEndOfRequest failed to verify that the messages have been propagated' PHP_EOL;
            exit(
1);
        }
    }

    
/**
     * @covers MonologHandlerBufferHandler::handle
     */
    
public function testHandleBufferLimit()
    {
        
$test = new TestHandler();
        
$handler = new BufferHandler($test2);
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::INFO));
        
$handler->handle($this->getRecord(Logger::WARNING));
        
$handler->close();
        
$this->assertTrue($test->hasWarningRecords());
        
$this->assertTrue($test->hasInfoRecords());
        
$this->assertFalse($test->hasDebugRecords());
    }

    
/**
     * @covers MonologHandlerBufferHandler::handle
     */
    
public function testHandleBufferLimitWithFlushOnOverflow()
    {
        
$test = new TestHandler();
        
$handler = new BufferHandler($test3Logger::DEBUGtruetrue);

        
// send two records
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$this->assertFalse($test->hasDebugRecords());
        
$this->assertCount(0$test->getRecords());

        
// overflow
        
$handler->handle($this->getRecord(Logger::INFO));
        
$this->assertTrue($test->hasDebugRecords());
        
$this->assertCount(3$test->getRecords());

        
// should buffer again
        
$handler->handle($this->getRecord(Logger::WARNING));
        
$this->assertCount(3$test->getRecords());

        
$handler->close();
        
$this->assertCount(5$test->getRecords());
        
$this->assertTrue($test->hasWarningRecords());
        
$this->assertTrue($test->hasInfoRecords());
    }

    
/**
     * @covers MonologHandlerBufferHandler::handle
     */
    
public function testHandleLevel()
    {
        
$test = new TestHandler();
        
$handler = new BufferHandler($test0Logger::INFO);
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::INFO));
        
$handler->handle($this->getRecord(Logger::WARNING));
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->close();
        
$this->assertTrue($test->hasWarningRecords());
        
$this->assertTrue($test->hasInfoRecords());
        
$this->assertFalse($test->hasDebugRecords());
    }

    
/**
     * @covers MonologHandlerBufferHandler::flush
     */
    
public function testFlush()
    {
        
$test = new TestHandler();
        
$handler = new BufferHandler($test0);
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::INFO));
        
$handler->flush();
        
$this->assertTrue($test->hasInfoRecords());
        
$this->assertTrue($test->hasDebugRecords());
        
$this->assertFalse($test->hasWarningRecords());
    }

    
/**
     * @covers MonologHandlerBufferHandler::handle
     */
    
public function testHandleUsesProcessors()
    {
        
$test = new TestHandler();
        
$handler = new BufferHandler($test);
        
$handler->pushProcessor(function ($record) {
            
$record['extra']['foo'] = true;

            return 
$record;
        });
        
$handler->handle($this->getRecord(Logger::WARNING));
        
$handler->flush();
        
$this->assertTrue($test->hasWarningRecords());
        
$records $test->getRecords();
        
$this->assertTrue($records[0]['extra']['foo']);
    }
}
Онлайн: 1
Реклама