Fixes in WaitForHealthCheck params and legacy tests

This commit is contained in:
Sergei Shitikov
2024-09-29 18:48:46 +02:00
parent 90edcd48f4
commit 49031990a2
3 changed files with 25 additions and 9 deletions
+3
View File
@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Testcontainers\Container;
use Testcontainers\Utils\PortGenerator\FixedPortGenerator;
/**
* Added for backward compatibility.
* @deprecated Use GenericContainer instead.
@@ -52,6 +54,7 @@ class Container extends GenericContainer
*/
public function withPort(string $localPort, string $containerPort): self
{
$this->withPortGenerator(new FixedPortGenerator([(int)$localPort]));
return $this->withExposedPorts($containerPort);
}
+13 -6
View File
@@ -123,12 +123,19 @@ class GenericContainer implements TestContainer
return $this;
}
public function withHealthCheckCommand(string $command, int $healthCheckIntervalInMS = 1000): static
{
$this->healthConfig = new HealthConfig([
'Test' => ['CMD', $command],
'Interval' => $healthCheckIntervalInMS,
]);
public function withHealthCheckCommand(
string $command,
int $intervalInMilliseconds = 1000,
int $timeoutInMilliseconds = 3000,
int $retries = 3,
int $startPeriodInMilliseconds = 0
): static {
$this->healthConfig = new HealthConfig();
$this->healthConfig->setTest(['CMD-SHELL', $command]);
$this->healthConfig->setInterval($intervalInMilliseconds * 1_000_000);
$this->healthConfig->setTimeout($timeoutInMilliseconds * 1_000_000);
$this->healthConfig->setRetries($retries);
$this->healthConfig->setStartPeriod($startPeriodInMilliseconds * 1_000_000);
return $this;
}
@@ -8,7 +8,8 @@ use PHPUnit\Framework\TestCase;
use Predis\Client;
use Predis\Connection\ConnectionException;
use Testcontainers\Container\Container;
use Testcontainers\Exception\ContainerNotReadyException;
use Testcontainers\Container\MySQLContainer;
use Testcontainers\Container\RedisContainer;
use Testcontainers\Wait\WaitForExec;
use Testcontainers\Wait\WaitForHealthCheck;
use Testcontainers\Wait\WaitForHttp;
@@ -28,7 +29,7 @@ class WaitStrategyTest extends TestCase
public function testWaitForExec(): void
{
$container = Container::make('mysql')
$container = MySQLContainer::make()
->withEnvironment('MYSQL_ROOT_PASSWORD', 'root')
->withWait(
new WaitForExec([
@@ -52,11 +53,13 @@ class WaitStrategyTest extends TestCase
$version = $query->fetchColumn();
$this->assertNotEmpty($version);
$container->stop();
}
public function testWaitForLog(): void
{
$container = Container::make('redis:6.2.5')
$container = RedisContainer::make()
->withWait(new WaitForLog('Ready to accept connections'));
$container->run();
@@ -138,6 +141,7 @@ class WaitStrategyTest extends TestCase
{
$container = Container::make('nginx')
->withHealthCheckCommand('curl --fail http://localhost')
->withPort('80', '80')
->withWait(new WaitForHealthCheck());
$container->run();
@@ -153,5 +157,7 @@ class WaitStrategyTest extends TestCase
$this->assertIsString($response);
$this->assertStringContainsString('Welcome to nginx!', $response);
$container->stop();
}
}