Passed
Push — main ( 6230b7...ae23f2 )
by Chema
04:12
created

FileCacheBench::gacelaBootstrapWithCache()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 20
nc 1
nop 1
dl 0
loc 26
rs 9.6
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Benchmark\FileCache;
6
7
use Gacela\Framework\Bootstrap\GacelaConfig;
8
use Gacela\Framework\ClassResolver\Cache\ClassNamePhpCache;
9
use Gacela\Framework\ClassResolver\Cache\CustomServicesPhpCache;
10
use Gacela\Framework\Gacela;
11
use GacelaTest\Fixtures\StringValue;
12
use GacelaTest\Fixtures\StringValueInterface;
13
14
/**
15
 * @BeforeClassMethods("removeFiles")
16
 */
17
final class FileCacheBench
18
{
19
    public static function removeFiles(): void
20
    {
21
        $removeFile = static function (string $filename): void {
22
            $filenameFullPath = __DIR__ . '/.gacela/cache/' . $filename;
23
            if (file_exists($filenameFullPath)) {
24
                unlink($filenameFullPath);
25
            }
26
        };
27
        $removeFile(ClassNamePhpCache::FILENAME);
28
        $removeFile(CustomServicesPhpCache::FILENAME);
29
    }
30
31
    public function bench_without_cache(): void
32
    {
33
        $this->gacelaBootstrapWithCache(false);
34
        $this->loadAllModules();
35
    }
36
37
    public function bench_with_cache(): void
38
    {
39
        $this->gacelaBootstrapWithCache(true);
40
        $this->loadAllModules();
41
    }
42
43
    private function gacelaBootstrapWithCache(bool $cacheEnabled): void
44
    {
45
        Gacela::bootstrap(__DIR__, static function (GacelaConfig $config) use ($cacheEnabled): void {
46
            $config->resetInMemoryCache();
47
            $config->addAppConfig('config/*.php');
48
            $config->setFileCache($cacheEnabled);
49
50
            $config->addBinding(StringValueInterface::class, new StringValue('testing-string'));
51
52
            $config->addSuffixTypeFactory('FactoryA');
53
            $config->addSuffixTypeFactory('FactoryB');
54
            $config->addSuffixTypeFactory('FactoryC');
55
            $config->addSuffixTypeFactory('FactoryD');
56
            $config->addSuffixTypeFactory('FactoryE');
57
58
            $config->addSuffixTypeConfig('ConfigA');
59
            $config->addSuffixTypeConfig('ConfigB');
60
            $config->addSuffixTypeConfig('ConfigC');
61
            $config->addSuffixTypeConfig('ConfigD');
62
            $config->addSuffixTypeConfig('ConfigE');
63
64
            $config->addSuffixTypeProvider('DepProvA');
65
            $config->addSuffixTypeProvider('DepProvB');
66
            $config->addSuffixTypeProvider('DepProvC');
67
            $config->addSuffixTypeProvider('DepProvD');
68
            $config->addSuffixTypeProvider('DepProvE');
69
        });
70
    }
71
72
    private function loadAllModules(): void
73
    {
74
        (new ModuleA\Facade())->loadGacelaCacheFile();
75
        (new ModuleB\Facade())->loadGacelaCacheFile();
76
        (new ModuleC\Facade())->loadGacelaCacheFile();
77
        (new ModuleD\Facade())->loadGacelaCacheFile();
78
        (new ModuleE\Facade())->loadGacelaCacheFile();
79
        (new ModuleF\Facade())->loadGacelaCacheFile();
80
        (new ModuleG\ModuleGFacade())->loadGacelaCacheFile();
81
    }
82
}
83