• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

fractalzombie / frzb-metrics-power / 8449409028

27 Mar 2024 09:21AM UTC coverage: 77.725% (+8.1%) from 69.668%
8449409028

push

github

fractalzombie
[MetricsPower] Added unit and feature tests

23 of 25 new or added lines in 11 files covered. (92.0%)

5 existing lines in 3 files now uncovered.

164 of 211 relevant lines covered (77.73%)

5.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.0
/Factory/PrometheusStorageAdapterFactory.php
1
<?php
2

3
declare(strict_types=1);
4

5
/**
6
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
7
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
9
 *
10
 * Copyright (c) 2024 Mykhailo Shtanko fractalzombie@gmail.com
11
 *
12
 * For the full copyright and license information, please view the LICENSE.MD
13
 * file that was distributed with this source code.
14
 */
15

16
namespace FRZB\Component\MetricsPower\Factory;
17

18
use FRZB\Component\MetricsPower\DependencyInjection\Configuration;
19
use FRZB\Component\MetricsPower\Enum\StorageType;
20
use FRZB\Component\MetricsPower\Factory\Exception\NoRedisConfigurationProvidedException;
21
use FRZB\Component\MetricsPower\Factory\Exception\NotSupportedStorageAdapterException;
22
use Prometheus\Storage\Adapter;
23
use Prometheus\Storage\APC;
24
use Prometheus\Storage\APCng;
25
use Prometheus\Storage\InMemory;
26
use Prometheus\Storage\Redis;
27
use Prometheus\Storage\RedisNg;
28

29
final class PrometheusStorageAdapterFactory implements PrometheusStorageAdapterFactoryInterface
30
{
31
    public static function createStorageAdapter(array $configuration): Adapter
32
    {
33
        return match (self::getStorageType($configuration)) {
3✔
34
            StorageType::Apc => new APC(),
3✔
35
            StorageType::ApcNg => new APCng(),
3✔
36
            StorageType::Redis => new Redis(self::getRedisConfiguration($configuration)),
3✔
37
            StorageType::RedisNg => new RedisNg(self::getRedisConfiguration($configuration)),
3✔
38
            StorageType::InMemory => new InMemory(),
3✔
39
        };
3✔
40
    }
41

42
    /** @throws NotSupportedStorageAdapterException */
43
    private static function getStorageType(array $configuration): StorageType
44
    {
45
        $storage = $configuration['storage'] ?? StorageType::InMemory->value;
3✔
46

47
        return StorageType::tryFrom($storage) ?? throw NotSupportedStorageAdapterException::fromStorageType($storage);
3✔
48
    }
49

50
    /** @throws NoRedisConfigurationProvidedException */
51
    private static function getRedisConfiguration(array $configuration): array
52
    {
UNCOV
53
        return $configuration[Configuration::PROMETHEUS_REDIS] ?? throw NoRedisConfigurationProvidedException::create();
×
54
    }
55
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc