45 lines
1.8 KiB
PHP
45 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Tests\Docker;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use Symfony\Component\Yaml\Yaml;
|
|
|
|
final class ComposeHealthcheckTest extends TestCase
|
|
{
|
|
public function testServicesDeclareHealthchecks(): void
|
|
{
|
|
$compose = Yaml::parseFile(__DIR__.'/../../compose.yaml');
|
|
|
|
self::assertSame(
|
|
[
|
|
'CMD-SHELL',
|
|
'php -r \'exit(@fsockopen("127.0.0.1", 9000) ? 0 : 1);\'',
|
|
],
|
|
$compose['services']['app']['healthcheck']['test'] ?? null
|
|
);
|
|
self::assertSame('10s', $compose['services']['app']['healthcheck']['interval'] ?? null);
|
|
self::assertSame('3s', $compose['services']['app']['healthcheck']['timeout'] ?? null);
|
|
self::assertSame(3, $compose['services']['app']['healthcheck']['retries'] ?? null);
|
|
self::assertSame('20s', $compose['services']['app']['healthcheck']['start_period'] ?? null);
|
|
|
|
self::assertSame(
|
|
['CMD-SHELL', 'wget -q --spider http://127.0.0.1/ || exit 1'],
|
|
$compose['services']['nginx']['healthcheck']['test'] ?? null
|
|
);
|
|
self::assertSame('10s', $compose['services']['nginx']['healthcheck']['interval'] ?? null);
|
|
self::assertSame('3s', $compose['services']['nginx']['healthcheck']['timeout'] ?? null);
|
|
self::assertSame(3, $compose['services']['nginx']['healthcheck']['retries'] ?? null);
|
|
self::assertSame('20s', $compose['services']['nginx']['healthcheck']['start_period'] ?? null);
|
|
}
|
|
|
|
public function testNginxWaitsForHealthyApp(): void
|
|
{
|
|
$compose = Yaml::parseFile(__DIR__.'/../../compose.yaml');
|
|
|
|
self::assertSame(
|
|
['app' => ['condition' => 'service_healthy']],
|
|
$compose['services']['nginx']['depends_on'] ?? null
|
|
);
|
|
}
|
|
}
|