diff options
Diffstat (limited to 'tests/Monolog/Handler/LogEntriesHandlerTest.php')
-rw-r--r-- | tests/Monolog/Handler/LogEntriesHandlerTest.php | 71 |
1 files changed, 44 insertions, 27 deletions
diff --git a/tests/Monolog/Handler/LogEntriesHandlerTest.php b/tests/Monolog/Handler/LogEntriesHandlerTest.php index b6d2924..56c25dc 100644 --- a/tests/Monolog/Handler/LogEntriesHandlerTest.php +++ b/tests/Monolog/Handler/LogEntriesHandlerTest.php @@ -31,12 +31,10 @@ class LogEntriesHandlerTest extends TestCase public function testWriteContent() { - $this->createHandler(); + $this->initHandlerAndSocket(); $this->handler->handle($this->getRecord(Logger::CRITICAL, 'Critical write test')); - fseek($this->res, 0); - $content = fread($this->res, 1024); - + $content = $this->closeSocket(); $this->assertRegexp('/testToken \[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}\+00:00\] test.CRITICAL: Critical write test/', $content); } @@ -47,38 +45,57 @@ class LogEntriesHandlerTest extends TestCase $this->getRecord(), $this->getRecord(), ]; - $this->createHandler(); + $this->initHandlerAndSocket(); $this->handler->handleBatch($records); - fseek($this->res, 0); - $content = fread($this->res, 1024); - + $content = $this->closeSocket(); $this->assertRegexp('/(testToken \[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}\+00:00\] .* \[\] \[\]\n){3}/', $content); } - private function createHandler() + private function initHandlerAndSocket() { + $tmpFile = sys_get_temp_dir().'/monolog-test-socket.php'; + file_put_contents($tmpFile, <<<'SCRIPT' +<?php + +$sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')); +socket_bind($sock, '127.0.0.1', 51984); +socket_listen($sock); + +while (true) { + $res = socket_accept($sock); + socket_set_option($res, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 0, "usec" => 500)); + while ($read = socket_read($res, 1024)) { + echo $read; + } + socket_close($res); +} +SCRIPT +); + + $this->socket = new \Symfony\Component\Process\Process(escapeshellarg(PHP_BINARY).' '.escapeshellarg($tmpFile)); + $this->socket->start(); + $useSSL = extension_loaded('openssl'); - $args = ['testToken', $useSSL, Logger::DEBUG, true]; - $this->res = fopen('php://memory', 'a'); - $this->handler = $this->getMock( - '\Monolog\Handler\LogEntriesHandler', - ['fsockopen', 'streamSetTimeout', 'closeSocket'], - $args - ); + $this->handler = new LogEntriesHandler('testToken', $useSSL, Logger::DEBUG, true); $reflectionProperty = new \ReflectionProperty('\Monolog\Handler\SocketHandler', 'connectionString'); $reflectionProperty->setAccessible(true); - $reflectionProperty->setValue($this->handler, 'localhost:1234'); - - $this->handler->expects($this->any()) - ->method('fsockopen') - ->will($this->returnValue($this->res)); - $this->handler->expects($this->any()) - ->method('streamSetTimeout') - ->will($this->returnValue(true)); - $this->handler->expects($this->any()) - ->method('closeSocket') - ->will($this->returnValue(true)); + $reflectionProperty->setValue($this->handler, '127.0.0.1:51984'); + } + + private function closeSocket() + { + $this->socket->stop(); + + return $this->socket->getOutput(); + } + + public function tearDown() + { + if (isset($this->socket)) { + $this->closeSocket(); + unset($this->socket); + } } } |