mirror of
https://github.com/Seldaek/monolog.git
synced 2025-02-21 13:33:52 +01:00
128 lines
3.8 KiB
PHP
128 lines
3.8 KiB
PHP
<?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 Monolog\Handler;
|
|
|
|
use Monolog\TestCase;
|
|
use Monolog\Logger;
|
|
use Monolog\Formatter\LineFormatter;
|
|
|
|
class RedisHandlerTest extends TestCase
|
|
{
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
public function testConstructorShouldThrowExceptionForInvalidRedis()
|
|
{
|
|
new RedisHandler(new \stdClass(), 'key');
|
|
}
|
|
|
|
public function testConstructorShouldWorkWithPredis()
|
|
{
|
|
$redis = $this->getMock('Predis\Client');
|
|
$this->assertInstanceof('Monolog\Handler\RedisHandler', new RedisHandler($redis, 'key'));
|
|
}
|
|
|
|
public function testConstructorShouldWorkWithRedis()
|
|
{
|
|
$redis = $this->getMock('Redis');
|
|
$this->assertInstanceof('Monolog\Handler\RedisHandler', new RedisHandler($redis, 'key'));
|
|
}
|
|
|
|
public function testPredisHandle()
|
|
{
|
|
$redis = $this->getMock('Predis\Client', array('rpush'));
|
|
|
|
// Predis\Client uses rpush
|
|
$redis->expects($this->once())
|
|
->method('rpush')
|
|
->with('key', 'test');
|
|
|
|
$record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
|
|
|
|
$handler = new RedisHandler($redis, 'key');
|
|
$handler->setFormatter(new LineFormatter("%message%"));
|
|
$handler->handle($record);
|
|
}
|
|
|
|
public function testRedisHandle()
|
|
{
|
|
$redis = $this->getMock('Redis', array('rpush'));
|
|
|
|
// Redis uses rPush
|
|
$redis->expects($this->once())
|
|
->method('rPush')
|
|
->with('key', 'test');
|
|
|
|
$record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
|
|
|
|
$handler = new RedisHandler($redis, 'key');
|
|
$handler->setFormatter(new LineFormatter("%message%"));
|
|
$handler->handle($record);
|
|
}
|
|
|
|
public function testRedisHandleCapped()
|
|
{
|
|
$redis = $this->getMock('Redis', array('multi', 'rpush', 'ltrim', 'execute'));
|
|
|
|
// Redis uses multi
|
|
$redis->expects($this->once())
|
|
->method('multi')
|
|
->will($this->returnSelf());
|
|
|
|
$redis->expects($this->once())
|
|
->method('rpush')
|
|
->will($this->returnSelf());
|
|
|
|
$redis->expects($this->once())
|
|
->method('ltrim')
|
|
->will($this->returnSelf());
|
|
|
|
$redis->expects($this->once())
|
|
->method('execute')
|
|
->will($this->returnSelf());
|
|
|
|
$record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
|
|
|
|
$handler = new RedisHandler($redis, 'key', Logger::DEBUG, true, 10);
|
|
$handler->setFormatter(new LineFormatter("%message%"));
|
|
$handler->handle($record);
|
|
}
|
|
|
|
public function testPredisHandleCapped()
|
|
{
|
|
$redis = $this->getMock('Predis\Client', array('transaction'));
|
|
|
|
$redisTransaction = $this->getMock('Predis\Client', array('rpush', 'ltrim'));
|
|
|
|
$redisTransaction->expects($this->once())
|
|
->method('rpush')
|
|
->will($this->returnSelf());
|
|
|
|
$redisTransaction->expects($this->once())
|
|
->method('ltrim')
|
|
->will($this->returnSelf());
|
|
|
|
// Redis uses multi
|
|
$redis->expects($this->once())
|
|
->method('transaction')
|
|
->will($this->returnCallback(function ($cb) use ($redisTransaction) {
|
|
$cb($redisTransaction);
|
|
}));
|
|
|
|
$record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
|
|
|
|
$handler = new RedisHandler($redis, 'key', Logger::DEBUG, true, 10);
|
|
$handler->setFormatter(new LineFormatter("%message%"));
|
|
$handler->handle($record);
|
|
}
|
|
}
|