Add configurable health check settings for standalone databases and apply them to generated Docker Compose services. Allow disabling health checks and cover the behavior with feature tests.
45 lines
1.4 KiB
PHP
45 lines
1.4 KiB
PHP
<?php
|
|
|
|
use App\Models\StandalonePostgresql;
|
|
|
|
it('defaults to an enabled healthcheck when nothing is configured', function () {
|
|
$database = new StandalonePostgresql;
|
|
|
|
expect($database->isHealthcheckEnabled())->toBeTrue();
|
|
});
|
|
|
|
it('builds the compose healthcheck block from the model timing fields', function () {
|
|
$database = new StandalonePostgresql([
|
|
'health_check_interval' => 30,
|
|
'health_check_timeout' => 7,
|
|
'health_check_retries' => 4,
|
|
'health_check_start_period' => 12,
|
|
]);
|
|
|
|
$config = $database->healthCheckConfiguration(['CMD', 'pg_isready']);
|
|
|
|
expect($config)->toBe([
|
|
'test' => ['CMD', 'pg_isready'],
|
|
'interval' => '30s',
|
|
'timeout' => '7s',
|
|
'retries' => 4,
|
|
'start_period' => '12s',
|
|
]);
|
|
});
|
|
|
|
it('falls back to safe defaults when timing fields are missing', function () {
|
|
$database = new StandalonePostgresql;
|
|
|
|
$config = $database->healthCheckConfiguration(['CMD', 'pg_isready']);
|
|
|
|
expect($config['interval'])->toBe('15s')
|
|
->and($config['timeout'])->toBe('5s')
|
|
->and($config['retries'])->toBe(5)
|
|
->and($config['start_period'])->toBe('5s');
|
|
});
|
|
|
|
it('reports the healthcheck as disabled when the flag is false', function () {
|
|
$database = new StandalonePostgresql(['health_check_enabled' => false]);
|
|
|
|
expect($database->isHealthcheckEnabled())->toBeFalse();
|
|
});
|