From 07e67881b55a3aad72d7c7d9d862d7a114eb998a Mon Sep 17 00:00:00 2001 From: DemigodCode Date: Fri, 14 Feb 2025 23:53:43 +0100 Subject: [PATCH] fix integration tests --- .github/workflows/integration-tests.yml | 21 ++++-- .../PredisRedisReplicationAdapterTest.php | 2 +- .../Adapter/PredisReplicationAdapterTest.php | 18 ++++- .../PredisTagAwareReplicationAdapterTest.php | 37 ----------- .../Adapter/RedisReplicationAdapterTest.php | 65 ------------------- 5 files changed, 33 insertions(+), 110 deletions(-) delete mode 100644 src/Symfony/Component/Cache/Tests/Adapter/PredisTagAwareReplicationAdapterTest.php delete mode 100644 src/Symfony/Component/Cache/Tests/Adapter/RedisReplicationAdapterTest.php diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 5c2839d74f818..9ea7e0992d939 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -82,16 +82,25 @@ jobs: REDIS_MASTER_SET: redis_sentinel REDIS_SENTINEL_QUORUM: 1 redis-primary: - image: redis:latest - hostname: redis-primary + image: bitnami/redis:latest ports: - 16381:6379 - + env: + ALLOW_EMPTY_PASSWORD: "yes" + REDIS_REPLICATION_MODE: "master" + options: >- + --name=redis-primary redis-replica: - image: redis:latest + image: bitnami/redis:latest ports: - 16382:6379 - command: redis-server --slaveof redis-primary 6379 + env: + ALLOW_EMPTY_PASSWORD: "yes" + REDIS_REPLICATION_MODE: "slave" + REDIS_MASTER_HOST: redis-primary + REDIS_MASTER_PORT_NUMBER: "6379" + options: >- + --name=redis-replica memcached: image: memcached:1.6.5 ports: @@ -250,7 +259,7 @@ jobs: REDIS_CLUSTER_HOSTS: 'localhost:7000 localhost:7001 localhost:7002 localhost:7003 localhost:7004 localhost:7005' REDIS_SENTINEL_HOSTS: 'unreachable-host:26379 localhost:26379 localhost:26379' REDIS_SENTINEL_SERVICE: redis_sentinel - REDIS_REPLICATION_HOSTS: 'localhost:16381 localhost:16382' + REDIS_REPLICATION_HOSTS: 'localhost:16382 localhost:16381' MESSENGER_REDIS_DSN: redis://127.0.0.1:7006/messages MESSENGER_AMQP_DSN: amqp://localhost/%2f/messages MESSENGER_SQS_DSN: "sqs://localhost:4566/messages?sslmode=disable&poll_timeout=0.01" diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PredisRedisReplicationAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PredisRedisReplicationAdapterTest.php index 552727740c18b..cda92af8c7a6c 100644 --- a/src/Symfony/Component/Cache/Tests/Adapter/PredisRedisReplicationAdapterTest.php +++ b/src/Symfony/Component/Cache/Tests/Adapter/PredisRedisReplicationAdapterTest.php @@ -24,6 +24,6 @@ public static function setUpBeforeClass(): void self::markTestSkipped('REDIS_REPLICATION_HOSTS env var is not defined.'); } - self::$redis = RedisAdapter::createConnection('redis:?host['.str_replace(' ', ']&host[', $hosts).'][alias]=master', ['class' => \Predis\Client::class, 'prefix' => 'prefix_']); + self::$redis = RedisAdapter::createConnection('redis:?host['.str_replace(' ', ']&host[', $hosts).'][role]=master', ['replication' => 'predis', 'class' => \Predis\Client::class, 'prefix' => 'prefix_']); } } diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php index 4add9d5f18c4a..28af1b5b4e27e 100644 --- a/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php +++ b/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php @@ -19,6 +19,22 @@ class PredisReplicationAdapterTest extends AbstractRedisAdapterTestCase public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); - self::$redis = new \Predis\Client(array_combine(['host', 'port'], explode(':', getenv('REDIS_HOST')) + [1 => 6379]), ['prefix' => 'prefix_']); + + if (!$hosts = getenv('REDIS_REPLICATION_HOSTS')) { + self::markTestSkipped('REDIS_REPLICATION_HOSTS env var is not defined.'); + } + + $hosts = explode(' ', getenv('REDIS_REPLICATION_HOSTS')); + $lastArrayKey = array_key_last($hosts); + $hostTable = []; + foreach($hosts as $key => $host) { + $hostInformation = array_combine(['host', 'port'], explode(':', $host)); + if($lastArrayKey === $key) { + $hostInformation['role'] = 'master'; + } + $hostTable[] = $hostInformation; + } + + self::$redis = new \Predis\Client($hostTable, ['replication' => 'predis', 'prefix' => 'prefix_']); } } diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PredisTagAwareReplicationAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PredisTagAwareReplicationAdapterTest.php deleted file mode 100644 index 4d8651ce4ceb6..0000000000000 --- a/src/Symfony/Component/Cache/Tests/Adapter/PredisTagAwareReplicationAdapterTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Cache\Tests\Adapter; - -use Psr\Cache\CacheItemPoolInterface; -use Symfony\Component\Cache\Adapter\RedisTagAwareAdapter; - -/** - * @group integration - */ -class PredisTagAwareReplicationAdapterTest extends PredisReplicationAdapterTest -{ - use TagAwareTestTrait; - - protected function setUp(): void - { - parent::setUp(); - $this->skippedTests['testTagItemExpiry'] = 'Testing expiration slows down the test suite'; - } - - public function createCachePool(int $defaultLifetime = 0, ?string $testMethod = null): CacheItemPoolInterface - { - $this->assertInstanceOf(\Predis\Client::class, self::$redis); - $adapter = new RedisTagAwareAdapter(self::$redis, str_replace('\\', '.', __CLASS__), $defaultLifetime); - - return $adapter; - } -} diff --git a/src/Symfony/Component/Cache/Tests/Adapter/RedisReplicationAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/RedisReplicationAdapterTest.php deleted file mode 100644 index e41745057f141..0000000000000 --- a/src/Symfony/Component/Cache/Tests/Adapter/RedisReplicationAdapterTest.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Cache\Tests\Adapter; - -use Psr\Cache\CacheItemPoolInterface; -use Symfony\Component\Cache\Adapter\AbstractAdapter; -use Symfony\Component\Cache\Adapter\RedisAdapter; -use Symfony\Component\Cache\Exception\InvalidArgumentException; -use Symfony\Component\Cache\Traits\RedisClusterProxy; - -/** - * @group integration - */ -class RedisReplicationAdapterTest extends AbstractRedisAdapterTestCase -{ - public static function setUpBeforeClass(): void - { - if (!$hosts = getenv('REDIS_REPLICATION_HOSTS')) { - self::markTestSkipped('REDIS_REPLICATION_HOSTS env var is not defined.'); - } - - self::$redis = AbstractAdapter::createConnection('redis:?host['.str_replace(' ', ']&host[', $hosts).'][alias]=master', ['lazy' => true]); - self::$redis->setOption(\Redis::OPT_PREFIX, 'prefix_'); - } - - public function createCachePool(int $defaultLifetime = 0, ?string $testMethod = null): CacheItemPoolInterface - { - if ('testClearWithPrefix' === $testMethod && \defined('Redis::SCAN_PREFIX')) { - self::$redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_PREFIX); - } - - $this->assertInstanceOf(RedisClusterProxy::class, self::$redis); - $adapter = new RedisAdapter(self::$redis, str_replace('\\', '.', __CLASS__), $defaultLifetime); - - return $adapter; - } - - /** - * @dataProvider provideFailedCreateConnection - */ - public function testFailedCreateConnection(string $dsn) - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Redis connection '); - RedisAdapter::createConnection($dsn); - } - - public static function provideFailedCreateConnection(): array - { - return [ - ['redis://localhost:1234'], - ['redis://foo@localhost?role=master'], - ['redis://localhost/123?role=master'], - ]; - } -} pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy