summaryrefslogtreecommitdiffstats
path: root/tests/Monolog/Handler/UdpSocketTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Monolog/Handler/UdpSocketTest.php')
-rw-r--r--tests/Monolog/Handler/UdpSocketTest.php66
1 files changed, 54 insertions, 12 deletions
diff --git a/tests/Monolog/Handler/UdpSocketTest.php b/tests/Monolog/Handler/UdpSocketTest.php
index de0f7fb..d8343fa 100644
--- a/tests/Monolog/Handler/UdpSocketTest.php
+++ b/tests/Monolog/Handler/UdpSocketTest.php
@@ -21,28 +21,28 @@ class UdpSocketTest extends TestCase
{
public function testWeDoNotTruncateShortMessages()
{
- $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', ['send'], ['lol', 'lol']);
-
- $socket->expects($this->at(0))
- ->method('send')
- ->with("HEADER: The quick brown fox jumps over the lazy dog");
+ $this->initSocket();
+ $socket = new UdpSocket('127.0.0.1', 51984);
$socket->write("The quick brown fox jumps over the lazy dog", "HEADER: ");
+
+ $this->closeSocket();
+ $this->assertEquals('HEADER: The quick brown fox jumps over the lazy dog', $this->socket->getOutput());
}
public function testLongMessagesAreTruncated()
{
- $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', ['send'], ['lol', 'lol']);
-
- $truncatedString = str_repeat("derp", 16254).'d';
+ $this->initSocket();
- $socket->expects($this->exactly(1))
- ->method('send')
- ->with("HEADER" . $truncatedString);
+ $socket = new UdpSocket('127.0.0.1', 51984);
$longString = str_repeat("derp", 20000);
-
$socket->write($longString, "HEADER");
+
+ $truncatedString = str_repeat("derp", 16254).'d';
+
+ $this->closeSocket();
+ $this->assertEquals('HEADER'.$truncatedString, $this->socket->getOutput());
}
public function testDoubleCloseDoesNotError()
@@ -61,4 +61,46 @@ class UdpSocketTest extends TestCase
$socket->close();
$socket->write('foo', "HEADER");
}
+
+ private function initSocket()
+ {
+ $tmpFile = sys_get_temp_dir().'/monolog-test-socket.php';
+ file_put_contents($tmpFile, <<<'SCRIPT'
+<?php
+
+$sock = socket_create(AF_INET, SOCK_DGRAM, getprotobyname('udp'));
+socket_bind($sock, '127.0.0.1', 51984);
+echo 'INIT';
+while (true) {
+ socket_recvfrom($sock, $read, 100*1024, 0, $ip, $port);
+ echo $read;
+}
+SCRIPT
+);
+
+ $this->socket = new \Symfony\Component\Process\Process(escapeshellarg(PHP_BINARY).' '.escapeshellarg($tmpFile));
+ $this->socket->start();
+ while (true) {
+ if ($this->socket->getOutput() === 'INIT') {
+ $this->socket->clearOutput();
+ break;
+ }
+ usleep(100);
+ }
+ }
+
+ private function closeSocket()
+ {
+ usleep(100);
+ $this->socket->stop();
+ }
+
+ public function tearDown()
+ {
+ if (isset($this->socket)) {
+ $this->closeSocket();
+ unset($this->socket);
+ }
+ }
+
}