Passed
Push — master ( f67228...ea1bad )
by Matthew
08:44
created

RunManagerTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 5
dl 0
loc 65
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Dtc\QueueBundle\Tests\ODM;
4
5
use Dtc\QueueBundle\Document\RunArchive;
6
use PHPUnit\Framework\TestCase;
7
8
class RunManagerTest extends TestCase
9
{
10
    public function testPruneArchivedRuns()
11
    {
12
        JobManagerTest::setUpBeforeClass();
13
        $jobManager = JobManagerTest::$jobManager;
14
        $runClass = \Dtc\QueueBundle\Document\Run::class;
15
        $runManager = new \Dtc\QueueBundle\ODM\RunManager($jobManager->getObjectManager(), $runClass, RunArchive::class);
16
        $objectManager = $runManager->getObjectManager();
17
        $runRepository = $objectManager->getRepository($runClass);
18
        self::assertEmpty($runRepository->findAll());
19
        $runArchiveRepository = $objectManager->getRepository(RunArchive::class);
20
        self::assertEmpty($runArchiveRepository->findAll());
21
22
        $run = new $runClass();
23
        $time = time() - 86400;
24
25
        $run->setStartedAt(new \DateTime("@$time"));
26
        $objectManager->persist($run);
27
        $objectManager->flush($run);
28
        self::assertCount(1, $runRepository->findAll());
29
30
        $run->setEndedAt(new \DateTime("@$time"));
31
        $objectManager->remove($run);
32
        $objectManager->flush();
33
34
        self::assertEmpty($runRepository->findAll());
35
        self::assertCount(1, $runArchiveRepository->findAll());
36
37
        $time1 = $time + 1;
38
        $runManager->pruneArchivedRuns(new \DateTime("@$time1"));
39
        self::assertEmpty($runArchiveRepository->findAll());
40
        self::assertEmpty($runRepository->findAll());
41
    }
42
43
    public function testPruneStaleRuns()
44
    {
45
        JobManagerTest::setUpBeforeClass();
46
        $jobManager = JobManagerTest::$jobManager;
47
        $runClass = \Dtc\QueueBundle\Document\Run::class;
48
        $runArchiveClass = \Dtc\QueueBundle\Document\RunArchive::class;
49
        $runManager = new \Dtc\QueueBundle\ODM\RunManager($jobManager->getObjectManager(), $runClass, RunArchive::class);
50
        $objectManager = $runManager->getObjectManager();
51
        $runRepository = $objectManager->getRepository($runClass);
52
        self::assertEmpty($runRepository->findAll());
53
        $runArchiveRepository = $objectManager->getRepository($runArchiveClass);
54
        self::assertEmpty($runArchiveRepository->findAll());
55
56
        $run = new $runClass();
57
        $time = time() - 96400;
58
        $date = new \DateTime("@$time");
59
60
        $run->setStartedAt($date);
61
        $run->setLastHeartbeatAt($date);
62
        $objectManager->persist($run);
63
        $objectManager->flush($run);
64
        self::assertCount(1, $runRepository->findAll());
65
66
        $count = $runManager->pruneStalledRuns();
67
        self::assertEquals(1, $count);
68
        self::assertEmpty($runRepository->findAll());
69
        $count = $runManager->pruneStalledRuns();
70
        self::assertEquals(0, $count);
71
    }
72
}
73