chore: pull helio and add ipv6 replication test (#2889)

* chore: pull helio and add ipv6 replication test

---------

Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
This commit is contained in:
Vladislav 2024-04-15 15:37:22 +03:00 committed by GitHub
parent 86559a29db
commit 468942ccbb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 21 additions and 4 deletions

View file

@ -55,7 +55,7 @@ jobs:
image: ghcr.io/romange/${{ matrix.container }} image: ghcr.io/romange/${{ matrix.container }}
volumes: volumes:
- /:/hostroot - /:/hostroot
options: --sysctl "net.ipv6.conf.all.disable_ipv6=0"
credentials: credentials:
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}

View file

@ -17,6 +17,8 @@ jobs:
container: container:
image: ghcr.io/romange/${{ matrix.container }} image: ghcr.io/romange/${{ matrix.container }}
options: --sysctl "net.ipv6.conf.all.disable_ipv6=0"
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:

2
helio

@ -1 +1 @@
Subproject commit d819bf4f1bc61e72d9fbe0c37b2ce40354d9689d Subproject commit 499a3f5736935ea11a0c531bb10c60dc6c101657

View file

@ -90,7 +90,8 @@ class DflyInstance:
assert self.proc == None assert self.proc == None
def client(self, *args, **kwargs) -> RedisClient: def client(self, *args, **kwargs) -> RedisClient:
return RedisClient(port=self.port, decode_responses=True, *args, **kwargs) host = "localhost" if self["bind"] is None else self["bind"]
return RedisClient(host=host, port=self.port, decode_responses=True, *args, **kwargs)
def admin_client(self, *args, **kwargs) -> RedisClient: def admin_client(self, *args, **kwargs) -> RedisClient:
return RedisClient( return RedisClient(

View file

@ -1471,6 +1471,20 @@ async def test_tls_replication(
await proxy.close(proxy_task) await proxy.close(proxy_task)
async def test_ipv6_replication(df_local_factory: DflyInstanceFactory):
"""Test that IPV6 addresses work for replication, ::1 is 127.0.0.1 localhost"""
master = df_local_factory.create(proactor_threads=1, bind="::1", port=1111)
replica = df_local_factory.create(proactor_threads=1, bind="::1", port=1112)
df_local_factory.start_all([master, replica])
c_master = master.client()
c_replica = replica.client()
assert await c_master.ping()
assert await c_replica.ping()
assert await c_replica.execute_command("REPLICAOF", master["bind"], master["port"]) == "OK"
# busy wait for 'replica' instance to have replication status 'status' # busy wait for 'replica' instance to have replication status 'status'
async def wait_for_replica_status( async def wait_for_replica_status(
replica: aioredis.Redis, status: str, wait_for_seconds=0.01, timeout=20 replica: aioredis.Redis, status: str, wait_for_seconds=0.01, timeout=20
@ -1629,7 +1643,7 @@ async def test_df_crash_on_memcached_error(df_local_factory):
await wait_for_replica_status(c_replica, status="up") await wait_for_replica_status(c_replica, status="up")
await c_replica.close() await c_replica.close()
memcached_client = pymemcache.Client(f"localhost:{replica.mc_port}") memcached_client = pymemcache.Client(f"127.0.0.1:{replica.mc_port}")
with pytest.raises(pymemcache.exceptions.MemcacheServerError): with pytest.raises(pymemcache.exceptions.MemcacheServerError):
memcached_client.set("key", "data", noreply=False) memcached_client.set("key", "data", noreply=False)