Skip to content

Commit 1bf99b3

Browse files
committed
tests(scheduler): improvements
1 parent 7b1c8b5 commit 1bf99b3

File tree

5 files changed

+80
-114
lines changed

5 files changed

+80
-114
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tests\SchedulerBundle;
6+
7+
use DateTimeZone;
8+
use Exception;
9+
use PHPUnit\Framework\TestCase;
10+
use SchedulerBundle\Scheduler;
11+
use SchedulerBundle\SchedulerInterface;
12+
use SchedulerBundle\Task\NullTask;
13+
use Throwable;
14+
15+
/**
16+
* @author Guillaume Loulier <[email protected]>
17+
*/
18+
abstract class AbstractSchedulerTestCase extends TestCase
19+
{
20+
abstract protected function buildScheduler(): SchedulerInterface;
21+
22+
/**
23+
* @throws Exception {@see Scheduler::__construct()}
24+
* @throws Throwable {@see SchedulerInterface::schedule()}
25+
*/
26+
public function testSchedulerCanScheduleTasks(): void
27+
{
28+
$scheduler = $this->buildScheduler();
29+
30+
$scheduler->schedule(new NullTask('foo'));
31+
self::assertCount(1, $scheduler->getTasks());
32+
}
33+
34+
/**
35+
* @throws Exception {@see Scheduler::__construct()}
36+
* @throws Throwable {@see SchedulerInterface::schedule()}
37+
*/
38+
public function testSchedulerCanScheduleTasksWithCustomTimezone(): void
39+
{
40+
$scheduler = $this->buildScheduler();
41+
42+
$scheduler->schedule(new NullTask('foo', [
43+
'timezone' => new DateTimeZone('Europe/Paris'),
44+
]));
45+
46+
$tasks = $scheduler->getTasks();
47+
self::assertCount(1, $tasks);
48+
self::assertSame('Europe/Paris', $tasks->get('foo')->getTimezone()->getName());
49+
}
50+
51+
/**
52+
* @throws Exception {@see Scheduler::__construct()}
53+
* @throws Throwable {@see SchedulerInterface::getPoolConfiguration()}
54+
*/
55+
public function testSchedulerPoolConfigurationIsAvailable(): void
56+
{
57+
$scheduler = $this->buildScheduler();
58+
59+
$poolConfiguration = $scheduler->getPoolConfiguration();
60+
self::assertSame('UTC', $poolConfiguration->getTimezone()->getName());
61+
self::assertArrayNotHasKey('foo', $poolConfiguration->getDueTasks());
62+
self::assertCount(0, $poolConfiguration->getDueTasks());
63+
}
64+
}

tests/FiberSchedulerTest.php

Lines changed: 3 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use DateTimeZone;
99
use Exception;
1010
use PDO;
11-
use PHPUnit\Framework\TestCase;
1211
use Psr\Log\LoggerInterface;
1312
use SchedulerBundle\Event\TaskScheduledEvent;
1413
use SchedulerBundle\Event\TaskUnscheduledEvent;
@@ -88,42 +87,15 @@
8887
*
8988
* @author Guillaume Loulier <[email protected]>
9089
*/
91-
final class FiberSchedulerTest extends TestCase
90+
final class FiberSchedulerTest extends AbstractSchedulerTestCase
9291
{
93-
/**
94-
* @throws Exception {@see Scheduler::__construct()}
95-
* @throws Throwable {@see SchedulerInterface::schedule()}
96-
*/
97-
public function testSchedulerCanScheduleTasks(): void
98-
{
99-
$scheduler = new FiberScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration([
100-
'execution_mode' => 'first_in_first_out',
101-
]), new SchedulePolicyOrchestrator([
102-
new FirstInFirstOutPolicy(),
103-
])), new SchedulerMiddlewareStack(), new EventDispatcher()));
104-
105-
$scheduler->schedule(new NullTask('foo'));
106-
self::assertCount(1, $scheduler->getTasks());
107-
}
108-
109-
/**
110-
* @throws Exception {@see Scheduler::__construct()}
111-
* @throws Throwable {@see SchedulerInterface::schedule()}
112-
*/
113-
public function testSchedulerCanScheduleTasksWithCustomTimezone(): void
92+
protected function buildScheduler(): SchedulerInterface
11493
{
115-
$task = new NullTask('foo', [
116-
'timezone' => new DateTimeZone('Europe/Paris'),
117-
]);
118-
119-
$scheduler = new FiberScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration([
94+
return new FiberScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration([
12095
'execution_mode' => 'first_in_first_out',
12196
]), new SchedulePolicyOrchestrator([
12297
new FirstInFirstOutPolicy(),
12398
])), new SchedulerMiddlewareStack(), new EventDispatcher()));
124-
125-
$scheduler->schedule($task);
126-
self::assertCount(1, $scheduler->getTasks());
12799
}
128100

129101
/**
@@ -1737,22 +1709,6 @@ public function testSchedulerCanReturnTheTimezone(): void
17371709
self::assertSame('UTC', $timezone->getName());
17381710
}
17391711

1740-
/**
1741-
* @throws Exception {@see Scheduler::__construct()}
1742-
* @throws Throwable {@see FiberScheduler::getPoolConfiguration()}
1743-
*/
1744-
public function testSchedulerPoolConfigurationIsAvailable(): void
1745-
{
1746-
$scheduler = new FiberScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([
1747-
new FirstInFirstOutPolicy(),
1748-
])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher()));
1749-
1750-
$poolConfiguration = $scheduler->getPoolConfiguration();
1751-
self::assertSame('UTC', $poolConfiguration->getTimezone()->getName());
1752-
self::assertArrayNotHasKey('foo', $poolConfiguration->getDueTasks());
1753-
self::assertCount(0, $poolConfiguration->getDueTasks());
1754-
}
1755-
17561712
/**
17571713
* @return Generator<array<int, ShellTask>>
17581714
*/

tests/LazySchedulerTest.php

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use DateTimeImmutable;
88
use Exception;
99
use Generator;
10-
use PHPUnit\Framework\TestCase;
1110
use Psr\Log\LoggerInterface;
1211
use SchedulerBundle\Exception\InvalidArgumentException;
1312
use SchedulerBundle\Exception\RuntimeException;
@@ -56,8 +55,15 @@
5655
/**
5756
* @author Guillaume Loulier <[email protected]>
5857
*/
59-
final class LazySchedulerTest extends TestCase
58+
final class LazySchedulerTest extends AbstractSchedulerTestCase
6059
{
60+
protected function buildScheduler(): SchedulerInterface
61+
{
62+
return new LazyScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([
63+
new FirstInFirstOutPolicy(),
64+
])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher()));
65+
}
66+
6167
/**
6268
* @throws Exception {@see Scheduler::__construct()}
6369
* @throws Throwable {@see SchedulerInterface::getTasks()}
@@ -846,22 +852,6 @@ public function testSchedulerCanReturnTheTimezone(): void
846852
self::assertTrue($scheduler->isInitialized());
847853
}
848854

849-
/**
850-
* @throws Exception {@see Scheduler::__construct()}
851-
* @throws Throwable {@see SchedulerInterface::getDueTasks()}
852-
*/
853-
public function testSchedulerPoolConfigurationIsAvailable(): void
854-
{
855-
$scheduler = new LazyScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([
856-
new FirstInFirstOutPolicy(),
857-
])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher()));
858-
859-
$poolConfiguration = $scheduler->getPoolConfiguration();
860-
861-
self::assertSame('UTC', $poolConfiguration->getTimezone()->getName());
862-
self::assertCount(0, $poolConfiguration->getDueTasks());
863-
}
864-
865855
/**
866856
* @return Generator<array<int, ShellTask>>
867857
*/

tests/SchedulerTest.php

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use Exception;
1010
use Generator;
1111
use PDO;
12-
use PHPUnit\Framework\TestCase;
1312
use Psr\Log\LoggerInterface;
1413
use SchedulerBundle\Event\TaskScheduledEvent;
1514
use SchedulerBundle\Event\TaskUnscheduledEvent;
@@ -85,44 +84,15 @@
8584
/**
8685
* @author Guillaume Loulier <[email protected]>
8786
*/
88-
final class SchedulerTest extends TestCase
87+
final class SchedulerTest extends AbstractSchedulerTestCase
8988
{
90-
/**
91-
* @throws Exception {@see Scheduler::__construct()}
92-
* @throws Throwable {@see SchedulerInterface::schedule()}
93-
*/
94-
public function testSchedulerCanScheduleTasks(): void
95-
{
96-
$task = new NullTask('foo');
97-
98-
$scheduler = new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration([
99-
'execution_mode' => 'first_in_first_out',
100-
]), new SchedulePolicyOrchestrator([
101-
new FirstInFirstOutPolicy(),
102-
])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher());
103-
104-
$scheduler->schedule($task);
105-
self::assertCount(1, $scheduler->getTasks());
106-
}
107-
108-
/**
109-
* @throws Exception {@see Scheduler::__construct()}
110-
* @throws Throwable {@see SchedulerInterface::schedule()}
111-
*/
112-
public function testSchedulerCanScheduleTasksWithCustomTimezone(): void
89+
protected function buildScheduler(): SchedulerInterface
11390
{
114-
$task = new NullTask('foo', [
115-
'timezone' => new DateTimeZone('Europe/Paris'),
116-
]);
117-
118-
$scheduler = new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration([
91+
return new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration([
11992
'execution_mode' => 'first_in_first_out',
12093
]), new SchedulePolicyOrchestrator([
12194
new FirstInFirstOutPolicy(),
12295
])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher());
123-
124-
$scheduler->schedule($task);
125-
self::assertCount(1, $scheduler->getTasks());
12696
}
12797

12898
/**
@@ -1740,22 +1710,6 @@ public function testSchedulerCanReturnTheTimezone(): void
17401710
self::assertSame('UTC', $timezone->getName());
17411711
}
17421712

1743-
/**
1744-
* @throws Exception {@see Scheduler::__construct()}
1745-
* @throws Throwable {@see SchedulerInterface::getPoolConfiguration()}
1746-
*/
1747-
public function testSchedulerPoolConfigurationIsAvailable(): void
1748-
{
1749-
$scheduler = new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([
1750-
new FirstInFirstOutPolicy(),
1751-
])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher());
1752-
1753-
$poolConfiguration = $scheduler->getPoolConfiguration();
1754-
self::assertSame('UTC', $poolConfiguration->getTimezone()->getName());
1755-
self::assertArrayNotHasKey('foo', $poolConfiguration->getDueTasks());
1756-
self::assertCount(0, $poolConfiguration->getDueTasks());
1757-
}
1758-
17591713
/**
17601714
* @return Generator<array<int, ShellTask>>
17611715
*/

tests/Worker/WorkerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,13 +1829,15 @@ public function testWorkerCanExecuteProbeTasksWithDelay(): void
18291829
]));
18301830

18311831
$scheduler = new Scheduler('UTC', $transport, new SchedulerMiddlewareStack(), new EventDispatcher());
1832+
$scheduler->schedule(new NullTask('random'));
18321833
$scheduler->schedule(new ProbeTask('foo', 'https://foo.com', false, 10));
18331834
$scheduler->schedule(new ProbeTask('bar', 'https://foo.com', false, 50));
18341835

18351836
$lockFactory = new LockFactory(new InMemoryStore());
18361837

18371838
$worker = new Worker($scheduler, new RunnerRegistry([
18381839
new ProbeTaskRunner($mockedHttpClient),
1840+
new NullTaskRunner(),
18391841
]), new ExecutionPolicyRegistry([
18401842
new DefaultPolicy(),
18411843
]), $tracker, new WorkerMiddlewareStack([

0 commit comments

Comments
 (0)