summaryrefslogtreecommitdiff
path: root/tests/test_multiprocessing.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_multiprocessing.py')
-rw-r--r--tests/test_multiprocessing.py78
1 files changed, 40 insertions, 38 deletions
diff --git a/tests/test_multiprocessing.py b/tests/test_multiprocessing.py
index 5968b2b..32f5e23 100644
--- a/tests/test_multiprocessing.py
+++ b/tests/test_multiprocessing.py
@@ -1,6 +1,7 @@
-import pytest
-import multiprocessing
import contextlib
+import multiprocessing
+
+import pytest
import redis
from redis.connection import Connection, ConnectionPool
@@ -25,10 +26,7 @@ class TestMultiprocessing:
# actually fork/process-safe
@pytest.fixture()
def r(self, request):
- return _get_client(
- redis.Redis,
- request=request,
- single_connection_client=False)
+ return _get_client(redis.Redis, request=request, single_connection_client=False)
def test_close_connection_in_child(self, master_host):
"""
@@ -36,12 +34,12 @@ class TestMultiprocessing:
destroy the file descriptors so a parent can still use it.
"""
conn = Connection(host=master_host[0], port=master_host[1])
- conn.send_command('ping')
- assert conn.read_response() == b'PONG'
+ conn.send_command("ping")
+ assert conn.read_response() == b"PONG"
def target(conn):
- conn.send_command('ping')
- assert conn.read_response() == b'PONG'
+ conn.send_command("ping")
+ assert conn.read_response() == b"PONG"
conn.disconnect()
proc = multiprocessing.Process(target=target, args=(conn,))
@@ -53,8 +51,8 @@ class TestMultiprocessing:
# child. The child called socket.close() but did not call
# socket.shutdown() because it wasn't the "owning" process.
# Therefore the connection still works in the parent.
- conn.send_command('ping')
- assert conn.read_response() == b'PONG'
+ conn.send_command("ping")
+ assert conn.read_response() == b"PONG"
def test_close_connection_in_parent(self, master_host):
"""
@@ -62,8 +60,8 @@ class TestMultiprocessing:
(the owning process) closes the connection.
"""
conn = Connection(host=master_host[0], port=master_host[1])
- conn.send_command('ping')
- assert conn.read_response() == b'PONG'
+ conn.send_command("ping")
+ assert conn.read_response() == b"PONG"
def target(conn, ev):
ev.wait()
@@ -71,7 +69,7 @@ class TestMultiprocessing:
# connection, the connection is shutdown and the child
# cannot use it.
with pytest.raises(ConnectionError):
- conn.send_command('ping')
+ conn.send_command("ping")
ev = multiprocessing.Event()
proc = multiprocessing.Process(target=target, args=(conn, ev))
@@ -83,28 +81,30 @@ class TestMultiprocessing:
proc.join(3)
assert proc.exitcode == 0
- @pytest.mark.parametrize('max_connections', [1, 2, None])
+ @pytest.mark.parametrize("max_connections", [1, 2, None])
def test_pool(self, max_connections, master_host):
"""
A child will create its own connections when using a pool created
by a parent.
"""
- pool = ConnectionPool.from_url(f'redis://{master_host[0]}:{master_host[1]}',
- max_connections=max_connections)
+ pool = ConnectionPool.from_url(
+ f"redis://{master_host[0]}:{master_host[1]}",
+ max_connections=max_connections,
+ )
- conn = pool.get_connection('ping')
+ conn = pool.get_connection("ping")
main_conn_pid = conn.pid
with exit_callback(pool.release, conn):
- conn.send_command('ping')
- assert conn.read_response() == b'PONG'
+ conn.send_command("ping")
+ assert conn.read_response() == b"PONG"
def target(pool):
with exit_callback(pool.disconnect):
- conn = pool.get_connection('ping')
+ conn = pool.get_connection("ping")
assert conn.pid != main_conn_pid
with exit_callback(pool.release, conn):
- assert conn.send_command('ping') is None
- assert conn.read_response() == b'PONG'
+ assert conn.send_command("ping") is None
+ assert conn.read_response() == b"PONG"
proc = multiprocessing.Process(target=target, args=(pool,))
proc.start()
@@ -113,32 +113,34 @@ class TestMultiprocessing:
# Check that connection is still alive after fork process has exited
# and disconnected the connections in its pool
- conn = pool.get_connection('ping')
+ conn = pool.get_connection("ping")
with exit_callback(pool.release, conn):
- assert conn.send_command('ping') is None
- assert conn.read_response() == b'PONG'
+ assert conn.send_command("ping") is None
+ assert conn.read_response() == b"PONG"
- @pytest.mark.parametrize('max_connections', [1, 2, None])
+ @pytest.mark.parametrize("max_connections", [1, 2, None])
def test_close_pool_in_main(self, max_connections, master_host):
"""
A child process that uses the same pool as its parent isn't affected
when the parent disconnects all connections within the pool.
"""
- pool = ConnectionPool.from_url(f'redis://{master_host[0]}:{master_host[1]}',
- max_connections=max_connections)
+ pool = ConnectionPool.from_url(
+ f"redis://{master_host[0]}:{master_host[1]}",
+ max_connections=max_connections,
+ )
- conn = pool.get_connection('ping')
- assert conn.send_command('ping') is None
- assert conn.read_response() == b'PONG'
+ conn = pool.get_connection("ping")
+ assert conn.send_command("ping") is None
+ assert conn.read_response() == b"PONG"
def target(pool, disconnect_event):
- conn = pool.get_connection('ping')
+ conn = pool.get_connection("ping")
with exit_callback(pool.release, conn):
- assert conn.send_command('ping') is None
- assert conn.read_response() == b'PONG'
+ assert conn.send_command("ping") is None
+ assert conn.read_response() == b"PONG"
disconnect_event.wait()
- assert conn.send_command('ping') is None
- assert conn.read_response() == b'PONG'
+ assert conn.send_command("ping") is None
+ assert conn.read_response() == b"PONG"
ev = multiprocessing.Event()