mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-06 13:10:37 -04:00
34 lines
1.3 KiB
PHP
34 lines
1.3 KiB
PHP
<?php
|
|
|
|
use App\Services\FleetMetricsAggregator;
|
|
|
|
it('sums series by bucket timestamp and sorts ascending', function () {
|
|
$merged = FleetMetricsAggregator::sumSeriesByBucket([
|
|
[[2000, 5.0], [1000, 1.0]],
|
|
[[1000, 2.0], [3000, 9.0]],
|
|
], 'sum');
|
|
|
|
expect($merged)->toBe([[1000, 3.0], [2000, 5.0], [3000, 9.0]]);
|
|
});
|
|
|
|
it('averages series across servers per bucket', function () {
|
|
$merged = FleetMetricsAggregator::sumSeriesByBucket([
|
|
[[1000, 20.0]],
|
|
[[1000, 40.0]],
|
|
], 'avg');
|
|
|
|
expect($merged)->toBe([[1000, 30.0]]);
|
|
});
|
|
|
|
it('ranks containers by the selected metric and caps the list', function () {
|
|
$containers = [
|
|
['id' => 'a', 'cpu' => 10.0, 'memUsed' => 500, 'diskBytes' => 5, 'net' => 1.0],
|
|
['id' => 'b', 'cpu' => 90.0, 'memUsed' => 100, 'diskBytes' => 9, 'net' => 2.0],
|
|
['id' => 'c', 'cpu' => 50.0, 'memUsed' => 900, 'diskBytes' => 1, 'net' => 3.0],
|
|
];
|
|
|
|
expect(array_column(FleetMetricsAggregator::rankContainers($containers, 'cpu', 2), 'id'))->toBe(['b', 'c']);
|
|
expect(array_column(FleetMetricsAggregator::rankContainers($containers, 'memory'), 'id'))->toBe(['c', 'a', 'b']);
|
|
expect(array_column(FleetMetricsAggregator::rankContainers($containers, 'network'), 'id'))->toBe(['c', 'b', 'a']);
|
|
});
|