1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111:
<?php
namespace Guzzle\Tests\Plugin\Backoff;
use Guzzle\Common\Event;
use Guzzle\Log\ClosureLogAdapter;
use Guzzle\Http\Curl\CurlHandle;
use Guzzle\Plugin\Backoff\BackoffLogger;
use Guzzle\Http\Message\Response;
use Guzzle\Http\Message\RequestFactory;
class BackoffLoggerTest extends \Guzzle\Tests\GuzzleTestCase
{
public $message;
public function setUp()
{
$this->message = '';
}
public function testHasEventList()
{
$this->assertEquals(1, count(BackoffLogger::getSubscribedEvents()));
}
public function testLogsEvents()
{
list($logPlugin, $request, $response) = $this->getMocks();
$response = $this->getMockBuilder('Guzzle\Http\Message\Response')
->setConstructorArgs(array(503))
->setMethods(array('getInfo'))
->getMock();
$response->expects($this->any())
->method('getInfo')
->will($this->returnValue(2));
$handle = $this->getMockHandle();
$event = new Event(array(
'request' => $request,
'response' => $response,
'retries' => 1,
'delay' => 3,
'handle' => $handle
));
$logPlugin->onRequestRetry($event);
$this->assertContains(
'] PUT http://www.example.com - 503 Service Unavailable - Retries: 1, Delay: 3, Time: 2, 2, cURL: 30 Foo',
$this->message
);
}
public function testCanSetTemplate()
{
$l = new BackoffLogger(new ClosureLogAdapter(function () {}));
$l->setTemplate('foo');
$t = $this->readAttribute($l, 'formatter');
$this->assertEquals('foo', $this->readAttribute($t, 'template'));
}
protected function getMocks()
{
$that = $this;
$logger = new ClosureLogAdapter(function ($message) use ($that) {
$that->message .= $message . "\n";
});
$logPlugin = new BackoffLogger($logger);
$response = new Response(503);
$request = RequestFactory::getInstance()->create('PUT', 'http://www.example.com', array(
'Content-Length' => 3,
'Foo' => 'Bar'
));
return array($logPlugin, $request, $response);
}
protected function getMockHandle()
{
$handle = $this->getMockBuilder('Guzzle\Http\Curl\CurlHandle')
->disableOriginalConstructor()
->setMethods(array('getError', 'getErrorNo', 'getInfo'))
->getMock();
$handle->expects($this->once())
->method('getError')
->will($this->returnValue('Foo'));
$handle->expects($this->once())
->method('getErrorNo')
->will($this->returnValue(30));
$handle->expects($this->any())
->method('getInfo')
->will($this->returnValue(2));
return $handle;
}
}