Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 12
ProviderAbstract
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
42
0.00% covered (danger)
0.00%
0 / 12
 mustScaleUp
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 4
 mustScaleDown
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 4
 stats
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 4
 getStats
n/a
0 / 0
0
n/a
0 / 0
1<?php
2
3namespace Qmp\Laravel\DockerScale\Scaler\Providers;
4
5use Illuminate\Support\Facades\Log;
6use Qmp\Laravel\DockerScale\Models\DockerScalerConfig;
7
8abstract class ProviderAbstract
9{
10    protected static $stat = [];
11
12    public static function mustScaleUp(DockerScalerConfig $config): bool
13    {
14        $actualReplicas = $config->service->total_replicas;
15
16        if ($actualReplicas < $config->max_replicas) {
17            return $config->alert_up <= self::stats($config);
18        }
19
20        return false;
21    }
22
23    public static function mustScaleDown(DockerScalerConfig $config): bool
24    {
25        $actualReplicas = $config->service->total_replicas;
26
27        if ($actualReplicas > $config->min_replicas) {
28            return $config->alert_down >= self::stats($config);
29        }
30
31        return false;
32    }
33
34    protected static function stats(DockerScalerConfig $config): float
35    {
36        if (!isset(self::$stat[$config->id . $config->type])) {
37            $stat = self::$stat[$config->id . $config->type] = static::getStats($config);
38            Log::debug("stats:{$config->id}-{$config->service->name}-{$config->type}:{$stat}(min:{$config->alert_down},max:{$config->alert_up})[rep:{$config->service->total_replicas}({$config->min_replicas}|{$config->max_replicas})]");
39        }
40
41        return self::$stat[$config->id . $config->type];
42    }
43
44    abstract protected static function getStats(DockerScalerConfig $config): float;
45}