Initial commit

This commit is contained in:
2018-04-15 16:41:46 +02:00
commit 86ff40274b
29 changed files with 1368 additions and 0 deletions

View File

@ -0,0 +1,85 @@
<?php
namespace NoccyLabs\Ipc\Signal;
class SignalHandlerTest extends \PhpUnit\Framework\TestCase
{
public function testSignalHandlerWithSingleHandlerInConstructor()
{
$callbacks = [
function () use (&$handler1) { $handler1 = true; }
];
$handler = new SignalHandler(SIGUSR1, $callbacks);
posix_kill(posix_getpid(), SIGUSR1);
usleep(1000);
$this->assertEquals(true, $handler1);
}
public function testSignalHandlerWithMultipleHandlersInConstructor()
{
$callbacks = [
function () use (&$handler1) { $handler1 = true; },
function () use (&$handler2) { $handler2 = true; },
function () use (&$handler3) { $handler3 = true; }
];
$handler = new SignalHandler(SIGUSR1, $callbacks);
posix_kill(posix_getpid(), SIGUSR1);
usleep(1000);
$this->assertEquals(true, $handler1);
$this->assertEquals(true, $handler2);
$this->assertEquals(true, $handler3);
}
public function testSignalHandlerWithAddedHandlers()
{
$callbacks = [
function () use (&$handler1) { $handler1 = true; },
function () use (&$handler2) { $handler2 = true; }
];
$handler = new SignalHandler(SIGUSR1, $callbacks);
$handler->addHandler(function () use (&$handler3) { $handler3 = true; });
posix_kill(posix_getpid(), SIGUSR1);
usleep(1000);
$this->assertEquals(true, $handler1);
$this->assertEquals(true, $handler2);
$this->assertEquals(true, $handler3);
}
public function testSignalHandlerWithBlockingHandler()
{
$callbacks = [
function () use (&$handler1) { $handler1 = true; return true; },
function () use (&$handler2) { $handler2 = true; },
function () use (&$handler3) { $handler3 = true; }
];
$handler = new SignalHandler(SIGUSR1, $callbacks);
posix_kill(posix_getpid(), SIGUSR1);
usleep(1000);
$this->assertEquals(true, $handler1);
$this->assertEquals(false, $handler2);
$this->assertEquals(false, $handler3);
}
}

View File

@ -0,0 +1,40 @@
<?php
namespace NoccyLabs\Ipc\Signal;
class SignalTest extends \PhpUnit\Framework\TestCase
{
public function testSimpleSignalHandler()
{
$callback = function () use (&$handler1) { $handler1 = true; };
$handler = new Signal(SIGUSR1);
$handler->setHandler($callback);
posix_kill(posix_getpid(), SIGUSR1);
usleep(1000);
$this->assertEquals(true, $handler1);
}
public function testSimpleSignalDispatcher()
{
$callback = function () use (&$handler1) { $handler1 = true; };
$handler = new Signal(SIGUSR1);
$handler->setHandler($callback);
$handler->dispatch(posix_getpid());
usleep(1000);
$this->assertEquals(true, $handler1);
}
}

View File

@ -0,0 +1,42 @@
<?php
namespace NoccyLabs\Ipc\Signal;
class SignalTrapTest extends \PhpUnit\Framework\TestCase
{
public function testSignalTrap()
{
$trap = new SignalTrap(SIGUSR1);
$this->assertEquals(false, $trap->isTrapped());
posix_kill(posix_getpid(), SIGUSR1);
usleep(1000);
$this->assertEquals(true, $trap->isTrapped());
$this->assertEquals(false, $trap->isTrapped());
}
public function testSignalTrapWithoutResetting()
{
$trap = new SignalTrap(SIGUSR1);
$this->assertEquals(false, $trap->isTrapped());
posix_kill(posix_getpid(), SIGUSR1);
usleep(1000);
$this->assertEquals(true, $trap->isTrapped(false));
$this->assertEquals(true, $trap->isTrapped());
}
}