Use CallableProvider in tests
This commit is contained in:
parent
dd48e20b8f
commit
a6a993db3e
@ -8,10 +8,13 @@ use React\EventLoop\LoopInterface;
|
|||||||
use React\EventLoop\Timer\Timer;
|
use React\EventLoop\Timer\Timer;
|
||||||
use Toalett\Multiprocessing\Concurrency;
|
use Toalett\Multiprocessing\Concurrency;
|
||||||
use Toalett\Multiprocessing\Context;
|
use Toalett\Multiprocessing\Context;
|
||||||
|
use Toalett\Multiprocessing\Tests\Tools\CallableProvider;
|
||||||
use Toalett\Multiprocessing\Workers;
|
use Toalett\Multiprocessing\Workers;
|
||||||
|
|
||||||
class ContextTest extends TestCase
|
class ContextTest extends TestCase
|
||||||
{
|
{
|
||||||
|
use CallableProvider;
|
||||||
|
|
||||||
public function testItEmitsAnEventWhenBooted(): void
|
public function testItEmitsAnEventWhenBooted(): void
|
||||||
{
|
{
|
||||||
$concurrency = $this->createMock(Concurrency::class);
|
$concurrency = $this->createMock(Concurrency::class);
|
||||||
@ -52,7 +55,7 @@ class ContextTest extends TestCase
|
|||||||
self::assertFalse($congestionRelievedEventHasTakenPlace);
|
self::assertFalse($congestionRelievedEventHasTakenPlace);
|
||||||
|
|
||||||
$loop->futureTick(fn() => $context->stop());
|
$loop->futureTick(fn() => $context->stop());
|
||||||
$context->submit(static fn() => null);
|
$context->submit(self::emptyCallable());
|
||||||
$context->run();
|
$context->run();
|
||||||
|
|
||||||
self::assertTrue($congestionEventHasTakenPlace);
|
self::assertTrue($congestionEventHasTakenPlace);
|
||||||
@ -68,9 +71,7 @@ class ContextTest extends TestCase
|
|||||||
$concurrency->method('isReachedBy')->willReturn(false);
|
$concurrency->method('isReachedBy')->willReturn(false);
|
||||||
$loop->expects(self::once())
|
$loop->expects(self::once())
|
||||||
->method('futureTick')
|
->method('futureTick')
|
||||||
->withConsecutive([
|
->with(self::emptyCallable());
|
||||||
static fn() => null,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$context->submit(static fn() => null);
|
$context->submit(static fn() => null);
|
||||||
}
|
}
|
||||||
@ -83,11 +84,11 @@ class ContextTest extends TestCase
|
|||||||
$loop->expects(self::exactly(2))
|
$loop->expects(self::exactly(2))
|
||||||
->method('addPeriodicTimer')
|
->method('addPeriodicTimer')
|
||||||
->withConsecutive(
|
->withConsecutive(
|
||||||
[Context::INTERVAL_CLEANUP, static fn() => null],
|
[Context::INTERVAL_CLEANUP, self::emptyCallable()],
|
||||||
[Context::INTERVAL_GC, static fn() => null]
|
[Context::INTERVAL_GC, self::emptyCallable()]
|
||||||
)->willReturnOnConsecutiveCalls(
|
)->willReturnOnConsecutiveCalls(
|
||||||
new Timer(Context::INTERVAL_CLEANUP, static fn() => null),
|
new Timer(Context::INTERVAL_CLEANUP, self::emptyCallable()),
|
||||||
new Timer(Context::INTERVAL_GC, static fn() => null),
|
new Timer(Context::INTERVAL_GC, self::emptyCallable()),
|
||||||
);
|
);
|
||||||
|
|
||||||
$context = new Context($loop, $concurrency);
|
$context = new Context($loop, $concurrency);
|
||||||
@ -103,9 +104,9 @@ class ContextTest extends TestCase
|
|||||||
$workers->expects(self::exactly(3))
|
$workers->expects(self::exactly(3))
|
||||||
->method('on')
|
->method('on')
|
||||||
->withConsecutive(
|
->withConsecutive(
|
||||||
['worker_started', static fn() => null],
|
['worker_started', self::emptyCallable()],
|
||||||
['worker_stopped', static fn() => null],
|
['worker_stopped', self::emptyCallable()],
|
||||||
['no_workers_remaining', static fn() => null]
|
['no_workers_remaining', self::emptyCallable()]
|
||||||
);
|
);
|
||||||
|
|
||||||
new Context($loop, $concurrency, $workers);
|
new Context($loop, $concurrency, $workers);
|
||||||
|
@ -8,9 +8,12 @@ use React\EventLoop\LoopInterface;
|
|||||||
use React\EventLoop\Timer\Timer;
|
use React\EventLoop\Timer\Timer;
|
||||||
use Toalett\Multiprocessing\Task\Interval;
|
use Toalett\Multiprocessing\Task\Interval;
|
||||||
use Toalett\Multiprocessing\Task\RepeatedTask;
|
use Toalett\Multiprocessing\Task\RepeatedTask;
|
||||||
|
use Toalett\Multiprocessing\Tests\Tools\CallableProvider;
|
||||||
|
|
||||||
class RepeatedTaskTest extends TestCase
|
class RepeatedTaskTest extends TestCase
|
||||||
{
|
{
|
||||||
|
use CallableProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $interval
|
* @param $interval
|
||||||
* @dataProvider dataProvider
|
* @dataProvider dataProvider
|
||||||
@ -20,10 +23,10 @@ class RepeatedTaskTest extends TestCase
|
|||||||
$loop = $this->createMock(LoopInterface::class);
|
$loop = $this->createMock(LoopInterface::class);
|
||||||
$loop->expects(self::once())
|
$loop->expects(self::once())
|
||||||
->method('addPeriodicTimer')
|
->method('addPeriodicTimer')
|
||||||
->with($interval->asFloat(), static fn() => null)
|
->with($interval->asFloat(), self::emptyCallable())
|
||||||
->willReturn(new Timer($interval->asFloat(), static fn() => null, true));
|
->willReturn(new Timer($interval->asFloat(), self::emptyCallable(), true));
|
||||||
|
|
||||||
$task = new RepeatedTask($interval, static fn() => null);
|
$task = new RepeatedTask($interval, self::emptyCallable());
|
||||||
$task->enable($loop);
|
$task->enable($loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,10 +7,13 @@ use ReflectionObject;
|
|||||||
use Toalett\Multiprocessing\ProcessControl\Fork;
|
use Toalett\Multiprocessing\ProcessControl\Fork;
|
||||||
use Toalett\Multiprocessing\ProcessControl\ProcessControl;
|
use Toalett\Multiprocessing\ProcessControl\ProcessControl;
|
||||||
use Toalett\Multiprocessing\ProcessControl\Wait;
|
use Toalett\Multiprocessing\ProcessControl\Wait;
|
||||||
|
use Toalett\Multiprocessing\Tests\Tools\CallableProvider;
|
||||||
use Toalett\Multiprocessing\Workers;
|
use Toalett\Multiprocessing\Workers;
|
||||||
|
|
||||||
class WorkersTest extends TestCase
|
class WorkersTest extends TestCase
|
||||||
{
|
{
|
||||||
|
use CallableProvider;
|
||||||
|
|
||||||
public function testItSaysItIsEmptyWhenNoWorkers(): void
|
public function testItSaysItIsEmptyWhenNoWorkers(): void
|
||||||
{
|
{
|
||||||
$processControl = $this->createMock(ProcessControl::class);
|
$processControl = $this->createMock(ProcessControl::class);
|
||||||
@ -22,7 +25,7 @@ class WorkersTest extends TestCase
|
|||||||
{
|
{
|
||||||
$workers = new Workers();
|
$workers = new Workers();
|
||||||
|
|
||||||
$workers->createWorkerFor(fn() => exit(0), []);
|
$workers->createWorkerFor(self::emptyCallable(), []);
|
||||||
self::assertCount(1, $workers);
|
self::assertCount(1, $workers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,11 +33,11 @@ class WorkersTest extends TestCase
|
|||||||
{
|
{
|
||||||
$workers = new Workers();
|
$workers = new Workers();
|
||||||
|
|
||||||
$workers->createWorkerFor(fn() => exit(0), []);
|
$workers->createWorkerFor(self::emptyCallable(), []);
|
||||||
$workers->createWorkerFor(fn() => exit(0), []);
|
$workers->createWorkerFor(self::emptyCallable(), []);
|
||||||
self::assertCount(2, $workers);
|
self::assertCount(2, $workers);
|
||||||
|
|
||||||
$workers->createWorkerFor(fn() => exit(0), []);
|
$workers->createWorkerFor(self::emptyCallable(), []);
|
||||||
self::assertCount(3, $workers);
|
self::assertCount(3, $workers);
|
||||||
|
|
||||||
$workers->stop();
|
$workers->stop();
|
||||||
@ -51,7 +54,7 @@ class WorkersTest extends TestCase
|
|||||||
});
|
});
|
||||||
|
|
||||||
self::assertFalse($workerStartedEventHasTakenPlace);
|
self::assertFalse($workerStartedEventHasTakenPlace);
|
||||||
$workers->createWorkerFor(fn() => exit(0), []);
|
$workers->createWorkerFor(self::emptyCallable(), []);
|
||||||
self::assertTrue($workerStartedEventHasTakenPlace);
|
self::assertTrue($workerStartedEventHasTakenPlace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,8 +62,8 @@ class WorkersTest extends TestCase
|
|||||||
{
|
{
|
||||||
$workers = new Workers();
|
$workers = new Workers();
|
||||||
$reflector = new ReflectionObject($workers);
|
$reflector = new ReflectionObject($workers);
|
||||||
$method = $reflector->getMethod('remove');
|
$remove = $reflector->getMethod('remove');
|
||||||
$method->setAccessible(true);
|
$remove->setAccessible(true);
|
||||||
|
|
||||||
$workerStoppedEventHasTakenPlace = false;
|
$workerStoppedEventHasTakenPlace = false;
|
||||||
$workers->on('worker_stopped', function () use (&$workerStoppedEventHasTakenPlace) {
|
$workers->on('worker_stopped', function () use (&$workerStoppedEventHasTakenPlace) {
|
||||||
@ -68,7 +71,7 @@ class WorkersTest extends TestCase
|
|||||||
});
|
});
|
||||||
|
|
||||||
self::assertFalse($workerStoppedEventHasTakenPlace);
|
self::assertFalse($workerStoppedEventHasTakenPlace);
|
||||||
$method->invoke($workers, 0);
|
$remove->invoke($workers, 0);
|
||||||
self::assertTrue($workerStoppedEventHasTakenPlace);
|
self::assertTrue($workerStoppedEventHasTakenPlace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +97,7 @@ class WorkersTest extends TestCase
|
|||||||
->willReturn(new Fork(1));
|
->willReturn(new Fork(1));
|
||||||
|
|
||||||
$workers = new Workers($processControl);
|
$workers = new Workers($processControl);
|
||||||
$workers->createWorkerFor(fn() => []);
|
$workers->createWorkerFor(self::emptyCallable());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItCallsNonBlockingWaitOnProcessControlWhenPerformingCleanup(): void
|
public function testItCallsNonBlockingWaitOnProcessControlWhenPerformingCleanup(): void
|
||||||
|
Loading…
Reference in New Issue
Block a user