diff options
Diffstat (limited to 'tests/test_multiprocessing.py')
| -rw-r--r-- | tests/test_multiprocessing.py | 78 | 
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()  | 
