redis-py icon indicating copy to clipboard operation
redis-py copied to clipboard

4.2.2: pytest is failing in +100 units and pytest warnings

Open kloczek opened this issue 3 years ago • 8 comments

Version: pytest test suite is failing Platform: Linux x86/63, python 3.8.12 Description: I'm trying to package your module as an rpm package. So I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

  • python3 -sBm build -w --no-isolation
  • because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
  • install .whl file in </install/prefix>
  • run pytest with PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>

kloczek avatar Apr 14 '22 15:04 kloczek

Here is pytest output:

+ cd redis-py-4.2.2
+ redis-server &
+ SETUPTOOLS_SCM_PRETEND_VERSION=4.2.2
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-redis-4.2.2-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-redis-4.2.2-2.fc3
+ /usr/bin/pytest -ra --ignore tests/test_commands.py
591714:C 14 Apr 2022 15:33:59.679 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
591714:C 14 Apr 2022 15:33:59.679 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=591714, just started
591714:C 14 Apr 2022 15:33:59.679 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
591714:M 14 Apr 2022 15:33:59.680 * Increased maximum number of open files to 10032 (it was originally set to 1024).
591714:M 14 Apr 2022 15:33:59.680 * monotonic clock: POSIX clock_gettime
591714:M 14 Apr 2022 15:33:59.681 * Running mode=standalone, port=6379.
591714:M 14 Apr 2022 15:33:59.681 # Server initialized
591714:M 14 Apr 2022 15:33:59.681 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory
591714:M 14 Apr 2022 15:33:59.682 * Ready to accept connections
============================= test session starts ==============================
platform linux -- Python 3.8.13, pytest-7.1.1, pluggy-1.0.0
rootdir: /home/tkloczko/rpmbuild/BUILD/redis-py-4.2.2, configfile: tox.ini
plugins: asyncio-0.18.2
asyncio: mode=legacy
collected 1367 items

tests/test_bloom.py EEEEEEEEEEEEEEEEE
tests/test_cluster.py ....FFFFFFFFFF.F.FF...FFFFFF.FF.FFFFFFFFF..FFFsFF.sFFFFFFFFFFFFFFs..591714:M 14 Apr 2022 15:34:08.968 * Background saving started by pid 591721
591721:C 14 Apr 2022 15:34:08.972 * DB saved on disk
591721:C 14 Apr 2022 15:34:08.973 * RDB: 0 MB of memory used by copy-on-write
591714:M 14 Apr 2022 15:34:09.039 * Background saving terminated with success
591714:M 14 Apr 2022 15:34:09.269 * Background saving started by pid 591722
.591722:C 14 Apr 2022 15:34:09.272 * DB saved on disk
591722:C 14 Apr 2022 15:34:09.273 * RDB: 0 MB of memory used by copy-on-write
591714:M 14 Apr 2022 15:34:09.342 * Background saving terminated with success
FEEEF..F..FF.FFF.FFFFF..............................................F.FF.FFF.........FFFFFFFFF.FFFF.FFFFFFFFFFFF..FFF.FFFFFFFF591714:M 14 Apr 2022 15:34:19.173 * DB saved o
.
tests/test_command_parser.py ...s.
tests/test_connection.py .E......
tests/test_connection_pool.py ..................................................................
tests/test_encoding.py ............
tests/test_function.py ssssssss
tests/test_graph.py EEEEEEEEEEEEEEEEEEEEE
tests/test_helpers.py .......
tests/test_json.py EEEEEEEsEEEsEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.EEE
tests/test_lock.py ..........................
tests/test_monitor.py ......s
tests/test_multiprocessing.py .........
tests/test_pipeline.py .........................
tests/test_pubsub.py ......................................
tests/test_pubsub.py ......................................
tests/test_retry.py .................................................................
tests/test_scripting.py .....s..F...s......
tests/test_search.py EsEEEEEEsEEEEEEEEsEEEEEEEEEsEEEEEsEEEEEsssssEEsssEEsssssEss
tests/test_sentinel.py ...............
tests/test_ssl.py .F.FF.sssssss
tests/test_timeseries.py EsEsEsEEEsEssEssEEEsEEE
tests/test_asyncio/test_connection.py ..ssE..ss..ss
tests/test_asyncio/test_connection_pool.py ..ss..ss..ss....ssss....ssss................................................ss..ss..ss..ss....ss..ss.591714:M 14 Apr 2022 15:34:5
.591714:M 14 Apr 2022 15:34:52.652 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.663 * DB saved on disk
.591714:M 14 Apr 2022 15:34:52.670 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.678 * DB saved on disk
.591714:M 14 Apr 2022 15:34:52.685 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.695 * DB saved on disk
.591714:M 14 Apr 2022 15:34:52.702 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.714 * DB saved on disk
.591714:M 14 Apr 2022 15:34:52.722 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.734 * DB saved on disk
.591714:M 14 Apr 2022 15:34:52.743 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.756 * DB saved on disk
.591714:M 14 Apr 2022 15:34:52.766 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.789 * DB saved on disk
.591714:M 14 Apr 2022 15:34:52.813 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:52.955 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.110 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:53.363 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.612 * DB saved on disk
ss
tests/test_asyncio/test_encoding.py .591714:M 14 Apr 2022 15:34:53.635 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.652 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:53.674 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.691 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:53.713 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.730 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:53.749 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.763 * DB saved on disk
ss.591714:M 14 Apr 2022 15:34:53.781 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.795 * DB saved on disk
ss..ss..ss..ss.591714:M 14 Apr 2022 15:34:53.872 * DB saved on disk
.591714:M 14 Apr 2022 15:34:53.883 * DB saved on disk
ss..ss..ss..ss
tests/test_asyncio/test_lock.py ..ss..ss..ss..ss..ss.591714:M 14 Apr 2022 15:34:54.035 * DB saved on disk
.591714:M 14 Apr 2022 15:34:54.049 * DB saved on disk
ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss
tests/test_asyncio/test_monitor.py ..ss..ss..ss..ss..ss..ssssss
tests/test_asyncio/test_pipeline.py ..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss
tests/test_asyncio/test_pubsub.py ..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..
tests/test_asyncio/test_retry.py ..................................
tests/test_asyncio/test_scripting.py ..ss..ss..ss..ss..ss..ss..ss..ss
tests/test_asyncio/test_sentinel.py ...............
tests/test_graph_utils/test_edge.py ....
tests/test_graph_utils/test_node.py ...
tests/test_graph_utils/test_path.py .....

==================================== ERRORS ====================================
________________________ ERROR at setup of test_create _________________________

self = Connection<host=localhost,port=36379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

redis/connection.py:614:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <redis.retry.Retry object at 0x7f80e75d4160>
do = <function Connection.connect.<locals>.<lambda> at 0x7f80e77b43a0>
fail = <function Connection.connect.<locals>.<lambda> at 0x7f80e734b8b0>

    def call_with_retry(self, do, fail):
        """
        Execute an operation that might fail and returns its result, or
        raise the exception that was thrown depending on the `Backoff` object.
        `do`: the operation to call. Expects no argument.
        `fail`: the failure handler, expects the last error that was thrown
        """
        self._backoff.reset()
        failures = 0
        while True:
            try:
>               return do()

redis/retry.py:45:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>       lambda: self._connect(), lambda error: self.disconnect(error)
    )

redis/connection.py:615:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

[..]

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
redis/commands/core.py:1053: in ping
    return self.execute_command("PING", **kwargs)
redis/client.py:1215: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
redis/connection.py:1386: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = SSLConnection<host=localhost,port=6666,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6666. Connection refused.

redis/connection.py:620: ConnectionError
=============================== warnings summary ===============================
../../../../../usr/lib/python3.8/site-packages/pytest_asyncio/plugin.py:191
  /usr/lib/python3.8/site-packages/pytest_asyncio/plugin.py:191: DeprecationWarning: The 'asyncio_mode' default value will change to 'strict' in future, please explicitly use 'asyncio_mode=strict' or 'asyncio_mode=auto' in pytest configuration file.
    config.issue_config_time_warning(LEGACY_MODE, stacklevel=2)

tests/test_pubsub.py:602
  /home/tkloczko/rpmbuild/BUILD/redis-py-4.2.2/tests/test_pubsub.py:602: PytestUnknownMarkWarning: Unknown pytest.mark.timeout - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.timeout(30, method="thread")

tests/test_asyncio/test_connection_pool.py::TestConnectionPool::test_repr_contains_db_info_tcp
  tests/test_asyncio/test_connection_pool.py:163: PytestWarning: The test <Function test_repr_contains_db_info_tcp> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_repr_contains_db_info_tcp(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPool::test_repr_contains_db_info_unix
  tests/test_asyncio/test_connection_pool.py:179: PytestWarning: The test <Function test_repr_contains_db_info_unix> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_repr_contains_db_info_unix(self):

tests/test_asyncio/test_connection_pool.py::TestBlockingConnectionPool::test_repr_contains_db_info_tcp
  tests/test_asyncio/test_connection_pool.py:276: PytestWarning: The test <Function test_repr_contains_db_info_tcp> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_repr_contains_db_info_tcp(self):

tests/test_asyncio/test_connection_pool.py::TestBlockingConnectionPool::test_repr_contains_db_info_unix
  tests/test_asyncio/test_connection_pool.py:286: PytestWarning: The test <Function test_repr_contains_db_info_unix> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_repr_contains_db_info_unix(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_hostname
  tests/test_asyncio/test_connection_pool.py:301: PytestWarning: The test <Function test_hostname> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_hostname(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_quoted_hostname
  tests/test_asyncio/test_connection_pool.py:308: PytestWarning: The test <Function test_quoted_hostname> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_quoted_hostname(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_port
  tests/test_asyncio/test_connection_pool.py:315: PytestWarning: The test <Function test_port> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_port(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_username
  tests/test_asyncio/test_connection_pool.py:323: PytestWarning: The test <Function test_username> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    @skip_if_server_version_lt("6.0.0")

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_quoted_username
  tests/test_asyncio/test_connection_pool.py:332: PytestWarning: The test <Function test_quoted_username> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    @skip_if_server_version_lt("6.0.0")

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_password
  tests/test_asyncio/test_connection_pool.py:343: PytestWarning: The test <Function test_password> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_password(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_quoted_password
  tests/test_asyncio/test_connection_pool.py:351: PytestWarning: The test <Function test_quoted_password> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_quoted_password(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_username_and_password
  tests/test_asyncio/test_connection_pool.py:361: PytestWarning: The test <Function test_username_and_password> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    @skip_if_server_version_lt("6.0.0")

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_db_as_argument
  tests/test_asyncio/test_connection_pool.py:371: PytestWarning: The test <Function test_db_as_argument> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_db_as_argument(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_db_in_path
  tests/test_asyncio/test_connection_pool.py:379: PytestWarning: The test <Function test_db_in_path> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_db_in_path(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_db_in_querystring
  tests/test_asyncio/test_connection_pool.py:387: PytestWarning: The test <Function test_db_in_querystring> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_db_in_querystring(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_extra_typed_querystring_options
  tests/test_asyncio/test_connection_pool.py:395: PytestWarning: The test <Function test_extra_typed_querystring_options> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_extra_typed_querystring_options(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_boolean_parsing
  tests/test_asyncio/test_connection_pool.py:411: PytestWarning: The test <Function test_boolean_parsing> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_boolean_parsing(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_client_name_in_querystring
  tests/test_asyncio/test_connection_pool.py:431: PytestWarning: The test <Function test_client_name_in_querystring> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_client_name_in_querystring(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_invalid_extra_typed_querystring_options
  tests/test_asyncio/test_connection_pool.py:435: PytestWarning: The test <Function test_invalid_extra_typed_querystring_options> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_invalid_extra_typed_querystring_options(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_extra_querystring_options
  tests/test_asyncio/test_connection_pool.py:441: PytestWarning: The test <Function test_extra_querystring_options> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_extra_querystring_options(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_calling_from_subclass_returns_correct_instance
  tests/test_asyncio/test_connection_pool.py:446: PytestWarning: The test <Function test_calling_from_subclass_returns_correct_instance> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_calling_from_subclass_returns_correct_instance(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_client_creates_connection_pool
  tests/test_asyncio/test_connection_pool.py:450: PytestWarning: The test <Function test_client_creates_connection_pool> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_client_creates_connection_pool(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolURLParsing::test_invalid_scheme_raises_error
  tests/test_asyncio/test_connection_pool.py:457: PytestWarning: The test <Function test_invalid_scheme_raises_error> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_invalid_scheme_raises_error(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_defaults
  tests/test_asyncio/test_connection_pool.py:468: PytestWarning: The test <Function test_defaults> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_defaults(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_username
  tests/test_asyncio/test_connection_pool.py:475: PytestWarning: The test <Function test_username> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    @skip_if_server_version_lt("6.0.0")

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_quoted_username
  tests/test_asyncio/test_connection_pool.py:484: PytestWarning: The test <Function test_quoted_username> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    @skip_if_server_version_lt("6.0.0")

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_password
  tests/test_asyncio/test_connection_pool.py:495: PytestWarning: The test <Function test_password> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_password(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_quoted_password
  tests/test_asyncio/test_connection_pool.py:503: PytestWarning: The test <Function test_quoted_password> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_quoted_password(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_quoted_path
  tests/test_asyncio/test_connection_pool.py:513: PytestWarning: The test <Function test_quoted_path> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_quoted_path(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_db_as_argument
  tests/test_asyncio/test_connection_pool.py:523: PytestWarning: The test <Function test_db_as_argument> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_db_as_argument(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_db_in_querystring
  tests/test_asyncio/test_connection_pool.py:531: PytestWarning: The test <Function test_db_in_querystring> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_db_in_querystring(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_client_name_in_querystring
  tests/test_asyncio/test_connection_pool.py:539: PytestWarning: The test <Function test_client_name_in_querystring> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_client_name_in_querystring(self):

tests/test_asyncio/test_connection_pool.py::TestConnectionPoolUnixSocketURLParsing::test_extra_querystring_options
  tests/test_asyncio/test_connection_pool.py:543: PytestWarning: The test <Function test_extra_querystring_options> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_extra_querystring_options(self):

tests/test_asyncio/test_connection_pool.py::TestSSLConnectionURLParsing::test_host
  tests/test_asyncio/test_connection_pool.py:551: PytestWarning: The test <Function test_host> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_host(self):

tests/test_asyncio/test_connection_pool.py::TestSSLConnectionURLParsing::test_cert_reqs_options
  tests/test_asyncio/test_connection_pool.py:558: PytestWarning: The test <Function test_cert_reqs_options> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_cert_reqs_options(self):

tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_from_url_tcp
  tests/test_asyncio/test_connection_pool.py:653: PytestWarning: The test <Function test_connect_from_url_tcp> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_connect_from_url_tcp(self):

tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_from_url_unix
  tests/test_asyncio/test_connection_pool.py:663: PytestWarning: The test <Function test_connect_from_url_unix> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_connect_from_url_unix(self):

tests/test_asyncio/test_lock.py::TestLockClassSelection::test_lock_class_argument[single-python-parser]
  tests/test_asyncio/test_lock.py:235: PytestWarning: The test <Function test_lock_class_argument[single-python-parser]> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_lock_class_argument(self, r):

tests/test_asyncio/test_lock.py::TestLockClassSelection::test_lock_class_argument[pool-python-parser]
  tests/test_asyncio/test_lock.py:235: PytestWarning: The test <Function test_lock_class_argument[pool-python-parser]> is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove asyncio marker. If the test is not marked explicitly, check for global markers applied via 'pytestmark'.
    def test_lock_class_argument(self, r):

tests/test_asyncio/test_monitor.py: 12 warnings
tests/test_asyncio/test_pipeline.py: 4 warnings
  /home/tkloczko/rpmbuild/BUILD/redis-py-4.2.2/tests/test_asyncio/conftest.py:195: RuntimeWarning: coroutine 'Redis.execute_command' was never awaited
    id_str = str(client.client_id())
  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_cluster.py:865: Redis version required >= 7.0.0
SKIPPED [1] tests/test_cluster.py:906: Redis version required >= 7.0.0
SKIPPED [1] tests/test_cluster.py:1094: Redis version required >= 7.0.0
SKIPPED [1] tests/test_command_parser.py:75: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:21: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:29: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:39: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:48: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:67: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:91: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:99: Redis version required >= 7.0.0
SKIPPED [1] tests/test_function.py:106: Redis version required >= 7.0.0
SKIPPED [1] tests/test_json.py:85: Redis server does not have modules
SKIPPED [1] tests/test_json.py:118: Redis server does not have modules
SKIPPED [1] tests/test_monitor.py:61: Not running in redis enterprise
SKIPPED [1] tests/test_scripting.py:68: Redis version required >= 7.0.0
SKIPPED [1] tests/test_scripting.py:158: Redis version required >= 7.0.0
SKIPPED [1] tests/test_search.py:214: Redis server does not have modules
SKIPPED [1] tests/test_search.py:353: Redis server does not have modules
SKIPPED [1] tests/test_search.py:572: Redis server does not have modules
SKIPPED [1] tests/test_search.py:842: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1117: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1229: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1247: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1265: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1285: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1307: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1385: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1417: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1444: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1535: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1558: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1572: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1590: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1609: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1647: Redis server does not have modules
SKIPPED [1] tests/test_search.py:1658: Redis server does not have modules
SKIPPED [1] tests/test_ssl.py:108: No cryptography dependency
SKIPPED [1] tests/test_ssl.py:122: No cryptography dependency
SKIPPED [1] tests/test_ssl.py:134: No cryptography dependency
SKIPPED [1] tests/test_ssl.py:147: No cryptography dependency
SKIPPED [1] tests/test_ssl.py:159: No cryptography dependency
SKIPPED [1] tests/test_ssl.py:172: No cryptography dependency
SKIPPED [1] tests/test_ssl.py:186: No cryptography dependency
SKIPPED [1] tests/test_timeseries.py:31: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:54: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:85: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:179: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:209: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:234: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:296: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:353: Redis server does not have modules
SKIPPED [1] tests/test_timeseries.py:477: Redis server does not have modules
SKIPPED [2] tests/test_asyncio/test_connection.py:16: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection.py:54: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection.py:61: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:48: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:55: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:68: hiredis is not installed
SKIPPED [4] tests/test_asyncio/test_connection_pool.py:78: hiredis is not installed
SKIPPED [4] tests/test_asyncio/test_connection_pool.py:85: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:598: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:611: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:629: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:646: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:673: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:684: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:714: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:720: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:733: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:740: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:750: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:761: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:772: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:796: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:815: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_connection_pool.py:855: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:30: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:37: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:44: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:53: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:61: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:70: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:78: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:89: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:107: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:112: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:116: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_encoding.py:120: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:29: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:37: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:41: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:54: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:80: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:83: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:86: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:96: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:102: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:108: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:120: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:127: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:133: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:146: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:151: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:161: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:169: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:177: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:185: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:190: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:197: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:204: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:213: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:218: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:225: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_lock.py:235: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_monitor.py:12: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_monitor.py:18: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_monitor.py:30: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_monitor.py:36: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_monitor.py:43: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_monitor.py:50: hiredis is not installed
SKIPPED [4] tests/test_asyncio/test_monitor.py:61: Not running in redis enterprise
SKIPPED [2] tests/test_asyncio/test_pipeline.py:13: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:18: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:37: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:45: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:58: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:67: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:78: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:95: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:124: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:138: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:153: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:168: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:183: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:200: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:218: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:233: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:247: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:260: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:281: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:296: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:321: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:330: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:345: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:360: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:378: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pipeline.py:384: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:90: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:94: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:133: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:137: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:188: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:192: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:197: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:214: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:232: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:236: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:255: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:259: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:289: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:299: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:322: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:330: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:338: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:349: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:360: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:370: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:385: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:418: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:430: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:442: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:453: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:465: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:482: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:503: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:515: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:524: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:534: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:552: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:563: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:572: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:584: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:598: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:620: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_pubsub.py:642: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:38: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:45: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:65: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:72: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:81: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:90: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:107: hiredis is not installed
SKIPPED [2] tests/test_asyncio/test_scripting.py:137: hiredis is not installed
ERROR tests/test_bloom.py::test_create - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_tdigest_create - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_bf_add - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_bf_insert - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_bf_scandump_and_loadchunk - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_bf_info - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_cf_add_and_insert - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_cf_exists_and_del - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_cms - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_cms_merge - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_topk - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_topk_incrby - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_tdigest_reset - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_tdigest_merge - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_tdigest_min_and_max - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_tdigest_quantile - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_bloom.py::test_tdigest_cdf - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_cluster.py::TestClusterRedisCommands::test_slowlog_get - AttributeError: 'Redis' object has no attribute 'get_primaries'
ERROR tests/test_cluster.py::TestClusterRedisCommands::test_slowlog_get_limit - AttributeError: 'Redis' object has no attribute 'get_primaries'
ERROR tests/test_cluster.py::TestClusterRedisCommands::test_slowlog_length - AttributeError: 'Redis' object has no attribute 'get_primaries'
ERROR tests/test_connection.py::test_loading_external_modules - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_bulk - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_graph_creation - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_array_functions - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_path - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_param - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_map - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_point - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_index_response - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_stringify_query_result - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_optional_match - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_cached_execution - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_slowlog - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_query_timeout - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_read_only_query - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_profile - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_config - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_list_keys - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_multi_label - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_cache_sync - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_execution_plan - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_graph.py::test_explain - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_json_setbinarykey - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_json_setgetdeleteforget - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_jsonget - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_json_get_jset - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_nonascii_setgetdelete - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_jsonsetexistentialmodifiersshouldsucceed - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_mgetshouldsucceed - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_type - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_numincrby - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_nummultby - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_strappend - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_strlen - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrappend - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrindex - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrinsert - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrlen - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrpop - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrtrim - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_resp - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_objkeys - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_objlen - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_json_commands_in_pipeline - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_json_delete_with_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_json_forget_with_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_json_mget_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_numby_commands_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_strappend_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_strlen_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrappend_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrinsert_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrlen_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrpop_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrtrim_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_objkeys_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_objlen_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_type_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_clear_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_toggle_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_resp_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_arrindex_dollar - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_custom_decoder - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_set_file - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_json.py::test_set_path - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_client - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_scores - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_replace - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_stopwords - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_filters - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_payloads_with_no_content - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_sort_by - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_example - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_auto_complete - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_no_index - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_partial - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_no_create - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_explain - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_explaincli - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_summarize - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_alias_basic - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_tags - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_textfield_sortable_nostem - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_alter_schema_add - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_spell_check - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_dict_operations - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_phonetic_matcher - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_scorer - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_get - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_aggregations_groupby - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_aggregations_sort_by_and_limit - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_aggregations_load - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_aggregations_apply - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_aggregations_filter - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::testExpire - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::testSkipInitialScan - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::testSummarizeDisabled_nooffset - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::testSummarizeDisabled_nohl - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::testMaxTextFields - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_synupdate - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_syndump - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_profile - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_profile_limited - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_search.py::test_search_commands_in_pipeline - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_create - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_alter - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_add - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_madd - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_incrby_decrby - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_create_and_delete_rule - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_range - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::testMultiRange - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_get - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_mget - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_info - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_query_index - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_pipeline - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_timeseries.py::test_uncompressed - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
ERROR tests/test_asyncio/test_connection.py::test_loading_external_modules - redis.exceptions.ConnectionError: Error 111 connecting to localhost:36379. Connection refused.
FAILED tests/test_cluster.py::TestRedisClusterObj::test_execute_command_errors - redis.exceptions.ResponseError: wrong number of arguments for 'get' command
FAILED tests/test_cluster.py::TestRedisClusterObj::test_execute_command_node_flag_primaries - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_execute_command_node_flag_replicas - AttributeError: 'Redis' object has no attribute 'get_replicas'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_execute_command_node_flag_all_nodes - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_execute_command_node_flag_random - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_execute_command_default_node - AttributeError: 'Redis' object has no attribute 'get_default_node'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_ask_redirection - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_moved_redirection - redis.exceptions.RedisClusterException: RedisCluster requires at least one node to discover t...
FAILED tests/test_cluster.py::TestRedisClusterObj::test_moved_redirection_after_failover - redis.exceptions.RedisClusterException: RedisCluster requires at least one nod...
FAILED tests/test_cluster.py::TestRedisClusterObj::test_refresh_using_specific_nodes - redis.exceptions.RedisClusterException: RedisCluster requires at least one node to...
FAILED tests/test_cluster.py::TestRedisClusterObj::test_keyslot - AttributeError: 'Redis' object has no attribute 'keyslot'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_all_nodes - AttributeError: 'Redis' object has no attribute 'nodes_manager'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_all_nodes_masters - AttributeError: 'Redis' object has no attribute 'nodes_manager'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_user_on_connect_function - redis.exceptions.RedisClusterException: RedisCluster requires at least one node to dis...
FAILED tests/test_cluster.py::TestRedisClusterObj::test_set_default_node_success - AttributeError: 'Redis' object has no attribute 'get_default_node'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_set_default_node_failure - AttributeError: 'Redis' object has no attribute 'get_default_node'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_get_node_from_key - AttributeError: 'Redis' object has no attribute 'keyslot'
FAILED tests/test_cluster.py::TestRedisClusterObj::test_not_require_full_coverage_cluster_down_error - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_case_insensitive_command_names - AttributeError: 'Redis' object has no attribute 'cluster_response_callbacks'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_mget_nonatomic - AttributeError: 'Redis' object has no attribute 'mget_nonatomic'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_mset_nonatomic - AttributeError: 'Redis' object has no attribute 'mset_nonatomic'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_config_resetstat - TypeError: <lambda>() got an unexpected keyword argument 'target_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_setname - AttributeError: 'Redis' object has no attribute 'get_random_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_exists - AttributeError: 'Redis' object has no attribute 'mset_nonatomic'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_delete - AttributeError: 'Redis' object has no attribute 'mset_nonatomic'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_touch - AttributeError: 'Redis' object has no attribute 'mset_nonatomic'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_unlink - AttributeError: 'Redis' object has no attribute 'mset_nonatomic'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_pubsub_channels_merge_results - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_pubsub_numsub_merge_results - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_pubsub_numpat_merge_results - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_myid - AttributeError: 'Redis' object has no attribute 'get_random_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_slots - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_addslots - AttributeError: 'Redis' object has no attribute 'get_random_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_countkeysinslot - AttributeError: 'Redis' object has no attribute 'nodes_manager'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_count_failure_report - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_failover - AttributeError: 'Redis' object has no attribute 'get_random_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_info - AttributeError: 'Redis' object has no attribute 'cluster_info'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_keyslot - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_meet - AttributeError: 'Redis' object has no attribute 'get_default_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_nodes - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_nodes_importing_migrating - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_replicate - AttributeError: 'Redis' object has no attribute 'get_random_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_reset - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_save_config - AttributeError: 'Redis' object has no attribute 'get_random_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_get_keys_in_slot - AttributeError: 'Redis' object has no attribute 'nodes_manager'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_set_config_epoch - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_setslot - AttributeError: 'Redis' object has no attribute 'get_random_node'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_setslot_stable - AttributeError: 'Redis' object has no attribute 'nodes_manager'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_replicas - AttributeError: 'Redis' object has no attribute 'get_nodes'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_info - AttributeError: 'Redis' object has no attribute 'keyslot'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_time - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_memory_stats - AttributeError: 'Redis' object has no attribute 'nodes_manager'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_lastsave - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_echo - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_config_resetstat - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_trackinginfo - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_pause - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_id - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_unblock - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_getredir - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_info - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_client_kill - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_dbsize - AttributeError: 'Redis' object has no attribute 'mset_nonatomic'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_scan - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_scan_type - AttributeError: 'Redis' object has no attribute 'get_primaries'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_cluster_randomkey - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterRedisCommands::test_acl_log - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestNodesManager::test_load_balancer - AttributeError: 'Redis' object has no attribute 'nodes_manager'
FAILED tests/test_cluster.py::TestClusterPubSubObject::test_init_pubsub_with_host_and_port - AttributeError: 'Redis' object has no attribute 'get_default_node'
FAILED tests/test_cluster.py::TestClusterPubSubObject::test_init_pubsub_with_node - AttributeError: 'Redis' object has no attribute 'get_default_node'
FAILED tests/test_cluster.py::TestClusterPubSubObject::test_init_pubusub_without_specifying_node - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterPubSubObject::test_init_pubsub_with_a_non_existent_node - TypeError: pubsub() takes 1 positional argument but 2 were given
FAILED tests/test_cluster.py::TestClusterPubSubObject::test_init_pubsub_with_a_non_existent_host_port - TypeError: __init__() got an unexpected keyword argument 'host'
FAILED tests/test_cluster.py::TestClusterPubSubObject::test_init_pubsub_host_or_port - TypeError: __init__() got an unexpected keyword argument 'host'
FAILED tests/test_cluster.py::TestClusterPubSubObject::test_get_redis_connection - AttributeError: 'Redis' object has no attribute 'get_default_node'
FAILED tests/test_cluster.py::TestClusterPipeline::test_blocked_methods - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_cluster.py::TestClusterPipeline::test_blocked_arguments - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_cluster.py::TestClusterPipeline::test_mget_disabled - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_cluster.py::TestClusterPipeline::test_mset_disabled - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_cluster.py::TestClusterPipeline::test_rename_disabled - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_cluster.py::TestClusterPipeline::test_renamenx_disabled - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_cluster.py::TestClusterPipeline::test_multi_delete_unsupported - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_cluster.py::TestClusterPipeline::test_brpoplpush_disabled - TypeError: brpoplpush() missing 2 required positional arguments: 'src' and 'dst'
FAILED tests/test_cluster.py::TestClusterPipeline::test_rpoplpush_disabled - TypeError: rpoplpush() missing 2 required positional arguments: 'src' and 'dst'
FAILED tests/test_cluster.py::TestClusterPipeline::test_sort_disabled - TypeError: sort() missing 1 required positional argument: 'name'
FAILED tests/test_cluster.py::TestClusterPipeline::test_sdiff_disabled - TypeError: sdiff() missing 1 required positional argument: 'keys'
FAILED tests/test_cluster.py::TestClusterPipeline::test_sdiffstore_disabled - TypeError: sdiffstore() missing 2 required positional arguments: 'dest' and 'keys'
FAILED tests/test_cluster.py::TestClusterPipeline::test_sinter_disabled - TypeError: sinter() missing 1 required positional argument: 'keys'
FAILED tests/test_cluster.py::TestClusterPipeline::test_sinterstore_disabled - TypeError: sinterstore() missing 2 required positional arguments: 'dest' and 'keys'
FAILED tests/test_cluster.py::TestClusterPipeline::test_smove_disabled - TypeError: smove() missing 3 required positional arguments: 'src', 'dst', and 'value'
FAILED tests/test_cluster.py::TestClusterPipeline::test_sunion_disabled - TypeError: sunion() missing 1 required positional argument: 'keys'
FAILED tests/test_cluster.py::TestClusterPipeline::test_sunionstore_disabled - TypeError: sunionstore() missing 2 required positional arguments: 'dest' and 'keys'
FAILED tests/test_cluster.py::TestClusterPipeline::test_spfmerge_disabled - TypeError: pfmerge() missing 1 required positional argument: 'dest'
FAILED tests/test_cluster.py::TestClusterPipeline::test_connection_error_not_raised - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterPipeline::test_connection_error_raised - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterPipeline::test_asking_error - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestReadOnlyPipeline::test_pipeline_readonly - redis.exceptions.ResponseError: This instance has cluster support disabled
FAILED tests/test_cluster.py::TestReadOnlyPipeline::test_moved_redirection_on_slave_with_default - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestReadOnlyPipeline::test_readonly_pipeline_from_readonly_client - redis.exceptions.RedisClusterException: RedisCluster requires at least ...
FAILED tests/test_cluster.py::TestClusterMonitor::test_wait_command_not_found - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterMonitor::test_response_values - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterMonitor::test_command_with_quoted_key - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterMonitor::test_command_with_binary_data - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_cluster.py::TestClusterMonitor::test_command_with_escaped_data - AttributeError: 'Redis' object has no attribute 'get_node_from_key'
FAILED tests/test_scripting.py::TestScripting::test_eval_crossslot - Failed: DID NOT RAISE <class 'redis.exceptions.RedisClusterException'>
FAILED tests/test_ssl.py::TestSSL::test_ssl_connection - redis.exceptions.ConnectionError: Error 111 connecting to localhost:6666. Connection refused.
FAILED tests/test_ssl.py::TestSSL::test_validating_self_signed_certificate - redis.exceptions.ConnectionError: Error 111 connecting to localhost:6666. Connection refused.
FAILED tests/test_ssl.py::TestSSL::test_validating_self_signed_string_certificate - redis.exceptions.ConnectionError: Error 111 connecting to localhost:6666. Connection ...
============================================= 108 failed, 779 passed, 341 skipped, 57 warnings, 139 errors in 64.52s (0:01:04) =============================================

Please let me know if you want full outpyt of the pytest (it is quite long)

kloczek avatar Apr 14 '22 15:04 kloczek

Here is list of modules installed in build env

Package         Version
--------------- --------------
async-timeout   4.0.2
attrs           21.4.0
build           0.7.0
codespell       2.1.0
cycler          0.11.0
Deprecated      1.2.13
distro          1.7.0
extras          1.0.0
fixtures        3.0.0
fonttools       4.32.0
gpg             1.17.1-unknown
iniconfig       1.1.1
kiwisolver      1.3.2
libcomps        0.1.18
matplotlib      3.5.1
mock            4.0.3
numpy           1.22.3
olefile         0.46
packaging       21.3
pbr             5.8.1
pep517          0.12.0
Pillow          9.1.0
pip             22.0.4
pluggy          1.0.0
py              1.11.0
PyGObject       3.42.0
pyparsing       3.0.8
pytest          7.1.1
pytest-asyncio  0.18.2
python-dateutil 2.8.2
rpm             4.17.0
setuptools      62.0.0
six             1.16.0
testtools       2.5.0
tomli           2.0.1
wheel           0.37.1
wrapt           1.14.0

kloczek avatar Apr 14 '22 15:04 kloczek

The tests require a number of different Redis server instances running. The project uses this script to install and test as part of their CI https://github.com/redis/redis-py/blob/e5e265de87dfe7ef8cc5cad8c247d067c74fa44d/.github/workflows/install_and_test.sh

ipmb avatar Apr 22 '22 00:04 ipmb

I'm curious is would be possible to start and stop redis server(s) as part of the test suite? I many test suites I saw started http/ftp services. There are even pytest extensions which provides such in-pytest-session services written entirely in python. Issue is that as long as pytest may fail or will be interrupted those processes will be still running disturbing next tries of test suite executions.

kloczek avatar Apr 22 '22 01:04 kloczek

@ipmb That script isn't used to start and stop redis instances - it's the wrapper used in the github actions, to get around specific pain points. It's used as part of the workflow to run tests against the pre-built pip packages, so that we can ensure redis-py is always in an installable state (having been testing)/

For the actual testing, tox currently starts and stops the various docker images we need. Invoke (see tasks.py) provides a 'more user friendly' interface to tox.

Now, there are warnings and the like, which we need to clean up! But the outputs of this particular script are limited to github actions.

chayim avatar May 08 '22 12:05 chayim

For the actual testing, tox currently starts and stops the various docker images we need. Invoke (see tasks.py) provides a 'more user friendly' interface to tox.

For me tox is not ann optionas it doanloads .whl archives over betwork (I'm buiukding my packages in cut of from pub network build env) and it tests modules with fixed set modules. With pytest I'm able perioducally performa additional test with using test builds wheher in build env are installed additional pytest extenxions like pytest-cov. pytest-black, pytest-randomly and using those results to form packlages metrics showing modules code quality. This is why in my spec files I have

[tkloczko@devel-g2v SPECS]$ grep ^%pytest python-* -l | wc -l; grep ^%tox python-* -l | wc -l; ls -1 python-* -l | wc -l
814
2
920

As you see 8/9 of all those packages are tested usiong pytest (~1/9 has no at all test suite or still is tested using setyp.py test) In case of my builds I'm fully controlling what is installed in build env so using tox venv does not make any ense (it is just pute waste of time and resources).

kloczek avatar May 08 '22 14:05 kloczek

Hi,

is this related?

[  133s] tests/test_asyncio/test_pubsub.py::TestPubSubSubcommands::test_pubsub_numsub[pool-python-parser] FAILED

[  134s] =================================== FAILURES ===================================
[  134s] _________ TestPubSubSubcommands.test_pubsub_numsub[pool-python-parser] _________
[  134s] 
[  134s] self = <tests.test_asyncio.test_pubsub.TestPubSubSubcommands object at 0x7f330f60f280>
[  134s] r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
[  134s] 
[  134s]     @pytest.mark.onlynoncluster
[  134s]     @skip_if_server_version_lt("2.8.0")
[  134s]     async def test_pubsub_numsub(self, r: redis.Redis):
[  134s]         p1 = r.pubsub()
[  134s]         await p1.subscribe("foo", "bar", "baz")
[  134s]         for i in range(3):
[  134s]             assert (await wait_for_message(p1))["type"] == "subscribe"
[  134s]         p2 = r.pubsub()
[  134s]         await p2.subscribe("bar", "baz")
[  134s]         for i in range(2):
[  134s]             assert (await wait_for_message(p2))["type"] == "subscribe"
[  134s]         p3 = r.pubsub()
[  134s]         await p3.subscribe("baz")
[  134s] >       assert (await wait_for_message(p3))["type"] == "subscribe"
[  134s] E       TypeError: 'NoneType' object is not subscriptable
[  134s] 
[  134s] tests/test_asyncio/test_pubsub.py:559: TypeError

tacerus avatar Aug 28 '22 12:08 tacerus

is this related?

I have no idea. Do you have any suggestions about how can I try to diagnose that? 🤔

kloczek avatar Aug 28 '22 19:08 kloczek

@dvora-h let's see if @shacharPash can help us reduce warnings!

chayim avatar Dec 13 '22 11:12 chayim

If you want I can drop updated pytest output with latest version.

kloczek avatar Dec 13 '22 12:12 kloczek

@kloczek That will be great! thanks.

dvora-h avatar Dec 13 '22 12:12 dvora-h

So .. on packaginf I'm using below procedure (part of my rpm spec file):

redis-server &
%pytest -m "not onlycluster" \
        --ignore tests/test_commands.py
kill %1

Here is list of installed modules in build env

Package                       Version
----------------------------- -----------------
alabaster                     0.7.12
appdirs                       1.4.4
asn1crypto                    1.5.1
async-timeout                 4.0.2
attrs                         22.1.0
Babel                         2.11.0
bcrypt                        3.2.2
Brlapi                        0.8.3
build                         0.9.0
cffi                          1.15.1
charset-normalizer            3.0.1
contourpy                     1.0.6
cryptography                  38.0.4
cssselect                     1.1.0
cycler                        0.11.0
Deprecated                    1.2.13
distro                        1.8.0
dnspython                     2.2.1
docutils                      0.19
exceptiongroup                1.0.0
extras                        1.0.0
fixtures                      4.0.0
fonttools                     4.38.0
gpg                           1.18.0-unknown
idna                          3.4
imagesize                     1.4.1
importlib-metadata            5.1.0
iniconfig                     1.1.1
Jinja2                        3.1.2
kiwisolver                    1.4.4
libcomps                      0.1.19
louis                         3.24.0
lxml                          4.9.1
Mako                          1.2.4.dev0
MarkupSafe                    2.1.1
matplotlib                    3.6.2
mock                          4.0.3
numpy                         1.23.1
olefile                       0.46
packaging                     21.3
pbr                           5.9.0
pep517                        0.13.0
Pillow                        9.3.0
pip                           22.3.1
pluggy                        1.0.0
ply                           3.11
pyasn1                        0.4.8
pyasn1-modules                0.2.8
pycparser                     2.21
Pygments                      2.13.0
PyGObject                     3.42.2
pyparsing                     3.0.9
pytest                        7.2.0
pytest-asyncio                0.20.3
python-dateutil               2.8.2
pytz                          2022.4
PyYAML                        6.0
requests                      2.28.1
rpm                           4.17.0
scour                         0.38.2
setuptools                    65.6.3
six                           1.16.0
snowballstemmer               2.2.0
Sphinx                        5.3.0
sphinx_autodoc_typehints      1.19.4
sphinx-gallery                0.11.1
sphinxcontrib-applehelp       1.0.2.dev20221204
sphinxcontrib-devhelp         1.0.2.dev20221204
sphinxcontrib-htmlhelp        2.0.0
sphinxcontrib-jsmath          1.0.1.dev20221204
sphinxcontrib-qthelp          1.0.3.dev20221204
sphinxcontrib-serializinghtml 1.1.5
testtools                     2.5.0
tomli                         2.0.1
tpm2-pkcs11-tools             1.33.7
tpm2-pytss                    1.1.0
urllib3                       1.26.12
wheel                         0.38.4
wrapt                         1.14.1
zipp                          3.11.0

kloczek avatar Dec 13 '22 12:12 kloczek

Here is pytest output python-redis-pytest.txt I had disabled running test suite and looks like somethiong has changed in meantime and now more units are failing 🤔

kloczek avatar Dec 13 '22 13:12 kloczek

The tests require a number of different Redis server instances running. The project uses this script to install and test as part of their CI https://github.com/redis/redis-py/blob/e5e265de87dfe7ef8cc5cad8c247d067c74fa44d/.github/workflows/install_and_test.sh

Hello, I see this script installs the dependencies and configure environment variable, but I fail to see how it starts the redis servers; in my attempt to update python-redis to 4.5.1 in GNU Guix and running the test suite with pytest -vv -m "not onlycluster and not redismod and not ssl", I get 35 failures:

[...]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=9>, disable_decoding = False
timeout = None

    async def read_response(
        self,
        disable_decoding: bool = False,
        timeout: Optional[float] = None,
    ):
        """Read the response from a previously sent command"""
        read_timeout = timeout if timeout is not None else self.socket_timeout
        try:
            if read_timeout is not None:
                async with async_timeout.timeout(read_timeout):
                    response = await self._parser.read_response(
                        disable_decoding=disable_decoding
                    )
            else:
                response = await self._parser.read_response(
                    disable_decoding=disable_decoding
                )
        except asyncio.TimeoutError:
            if timeout is not None:
                # user requested timeout, return None
                return None
            # it was a self.socket_timeout error.
            await self.disconnect(nowait=True)
            raise TimeoutError(f"Timeout reading from {self.host}:{self.port}")
        except OSError as e:
            await self.disconnect(nowait=True)
            raise ConnectionError(
                f"Error while reading from {self.host}:{self.port} : {e.args}"
            )
        except asyncio.CancelledError:
            # need this check for 3.7, where CancelledError
            # is subclass of Exception, not BaseException
            raise
        except Exception:
            await self.disconnect(nowait=True)
            raise
    
        if self.health_check_interval:
            next_time = asyncio.get_running_loop().time() + self.health_check_interval
            self.next_health_check = next_time
    
        if isinstance(response, ResponseError):
>           raise response from None
E           redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server.

redis/asyncio/connection.py:864: ResponseError
=============================== warnings summary ===============================
tests/test_asyncio/test_connection.py::test_connection_disconect_race[HiredisParser]
  /tmp/guix-build-python-redis-4.5.1.drv-0/source/redis/asyncio/connection.py:732: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
    self._writer.close()  # type: ignore[union-attr]

-- Docs: https://docs.pytest.org/en/stable/warnings.html
=========================== short test summary info ============================
FAILED tests/test_commands.py::TestRedisCommands::test_xautoclaim - Assertion...
FAILED tests/test_commands.py::TestRedisCommands::test_module - redis.excepti...
FAILED tests/test_commands.py::TestRedisCommands::test_module_loadex - redis....
FAILED tests/test_commands.py::TestRedisCommands::test_sync - redis.exception...
FAILED tests/test_commands.py::TestRedisCommands::test_psync - redis.exceptio...
FAILED tests/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket
FAILED tests/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command
FAILED tests/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline
FAILED tests/test_connection_pool.py::TestConnection::test_read_only_error - ...
FAILED tests/test_connection_pool.py::TestConnection::test_connect_no_auth_configured
FAILED tests/test_connection_pool.py::TestConnection::test_connect_invalid_auth_credentials_supplied
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket[single-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket[pool-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket[single-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket[pool-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command[single-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command[pool-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command[single-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command[pool-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline[single-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline[pool-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline[single-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline[pool-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_read_only_error[single-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_read_only_error[pool-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_read_only_error[single-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_read_only_error[pool-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_no_auth_supplied_when_required[single-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_no_auth_supplied_when_required[pool-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_no_auth_supplied_when_required[single-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_no_auth_supplied_when_required[pool-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_invalid_password_supplied[single-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_invalid_password_supplied[pool-python-parser]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_invalid_password_supplied[single-hiredis]
FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_invalid_password_supplied[pool-hiredis]
= 35 failed, 2610 passed, 29 skipped, 1557 deselected, 1 xfailed, 1 warning in 93.62s (0:01:33) =
error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "/gnu/store/7frqm5ijy66f81hr8i1j6791k84lds9w-python-pytest-6.2.5/bin/pytest" arguments: ("-vv" "-m" "not onlycluster and not redismod and not ssl") exit-status: 1 term-signal: #f stop-signal: #f> 
phase `check' failed after 94.3 seconds

apteryks avatar Mar 19 '23 19:03 apteryks

OK, after starting the redis server with "redis-server" "--daemonize" "yes" "--protected-mode" "no" "--enable-debug-command" "yes", it's down to 5 failures:

=================================== FAILURES ===================================
______________________ TestRedisCommands.test_xautoclaim _______________________

self = <tests.test_commands.TestRedisCommands object at 0x7ffff4c1cd90>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @skip_if_server_version_lt("6.2.0")
    def test_xautoclaim(self, r):
        stream = "stream"
        group = "group"
        consumer1 = "consumer1"
        consumer2 = "consumer2"
    
        message_id1 = r.xadd(stream, {"john": "wick"})
        message_id2 = r.xadd(stream, {"johny": "deff"})
        message = get_stream_message(r, stream, message_id1)
        r.xgroup_create(stream, group, 0)
    
        # trying to claim a message that isn't already pending doesn't
        # do anything
        response = r.xautoclaim(stream, group, consumer2, min_idle_time=0)
>       assert response == [b"0-0", []]
E       AssertionError: assert [b'0-0', [], []] == [b'0-0', []]
E         Left contains one more item: []
E         Full diff:
E         - [b'0-0', []]
E         + [b'0-0', [], []]
E         ?          ++++

tests/test_commands.py:3819: AssertionError
________________________ TestRedisCommands.test_module _________________________

self = <tests.test_commands.TestRedisCommands object at 0x7ffff5058370>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @pytest.mark.onlynoncluster
    @skip_if_server_version_lt("4.0.0")
    @skip_if_redis_enterprise()
    def test_module(self, r):
        with pytest.raises(redis.exceptions.ModuleError) as excinfo:
>           r.module_load("/some/fake/path")

tests/test_commands.py:4629: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
redis/commands/core.py:5709: in module_load
    return self.execute_command("MODULE LOAD", path, *args)
redis/client.py:1258: in execute_command
    return conn.retry.call_with_retry(
redis/retry.py:46: in call_with_retry
    return do()
redis/client.py:1259: in <lambda>
    lambda: self._send_command_parse_response(
redis/client.py:1235: in _send_command_parse_response
    return self.parse_response(conn, command_name, **options)
redis/client.py:1275: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=9>, disable_decoding = False

    def read_response(self, disable_decoding=False):
        """Read the response from a previously sent command"""
    
        host_error = self._host_error()
    
        try:
            response = self._parser.read_response(disable_decoding=disable_decoding)
        except socket.timeout:
            self.disconnect()
            raise TimeoutError(f"Timeout reading from {host_error}")
        except OSError as e:
            self.disconnect()
            raise ConnectionError(
                f"Error while reading from {host_error}" f" : {e.args}"
            )
        except Exception:
            self.disconnect()
            raise
    
        if self.health_check_interval:
            self.next_health_check = time() + self.health_check_interval
    
        if isinstance(response, ResponseError):
>           raise response
E           redis.exceptions.ResponseError: MODULE command not allowed. If the enable-module-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server.

redis/connection.py:957: ResponseError
_____________________ TestRedisCommands.test_module_loadex _____________________

self = <tests.test_commands.TestRedisCommands object at 0x7ffff3be6b20>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @pytest.mark.onlynoncluster
    @skip_if_server_version_lt("7.0.0")
    @skip_if_redis_enterprise()
    def test_module_loadex(self, r: redis.Redis):
        with pytest.raises(redis.exceptions.ModuleError) as excinfo:
>           r.module_loadex("/some/fake/path")

tests/test_commands.py:4641: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
redis/commands/core.py:5730: in module_loadex
    return self.execute_command("MODULE LOADEX", path, *pieces)
redis/client.py:1258: in execute_command
    return conn.retry.call_with_retry(
redis/retry.py:46: in call_with_retry
    return do()
redis/client.py:1259: in <lambda>
    lambda: self._send_command_parse_response(
redis/client.py:1235: in _send_command_parse_response
    return self.parse_response(conn, command_name, **options)
redis/client.py:1275: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=9>, disable_decoding = False

    def read_response(self, disable_decoding=False):
        """Read the response from a previously sent command"""
    
        host_error = self._host_error()
    
        try:
            response = self._parser.read_response(disable_decoding=disable_decoding)
        except socket.timeout:
            self.disconnect()
            raise TimeoutError(f"Timeout reading from {host_error}")
        except OSError as e:
            self.disconnect()
            raise ConnectionError(
                f"Error while reading from {host_error}" f" : {e.args}"
            )
        except Exception:
            self.disconnect()
            raise
    
        if self.health_check_interval:
            self.next_health_check = time() + self.health_check_interval
    
        if isinstance(response, ResponseError):
>           raise response
E           redis.exceptions.ResponseError: MODULE command not allowed. If the enable-module-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server.

redis/connection.py:957: ResponseError
_________________________ TestRedisCommands.test_sync __________________________

self = Connection<host=localhost,port=6380,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

redis/connection.py:715: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <redis.retry.Retry object at 0x7ffff4661fd0>
do = <function Connection.connect.<locals>.<lambda> at 0x7ffff528ab80>
fail = <function Connection.connect.<locals>.<lambda> at 0x7ffff2e24160>

    def call_with_retry(self, do, fail):
        """
        Execute an operation that might fail and returns its result, or
        raise the exception that was thrown depending on the `Backoff` object.
        `do`: the operation to call. Expects no argument.
        `fail`: the failure handler, expects the last error that was thrown
        """
        self._backoff.reset()
        failures = 0
        while True:
            try:
>               return do()

redis/retry.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>       lambda: self._connect(), lambda error: self.disconnect(error)
    )

redis/connection.py:716: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6380,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
                sock.connect(socket_address)
    
                # set the socket_timeout now that we're connected
                sock.settimeout(self.socket_timeout)
                return sock
    
            except OSError as _:
                err = _
                if sock is not None:
                    sock.close()
    
        if err is not None:
>           raise err

redis/connection.py:781: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6380,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

redis/connection.py:769: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <tests.test_commands.TestRedisCommands object at 0x7ffff2e00160>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @pytest.mark.replica
    @skip_if_server_version_lt("2.8.0")
    @skip_if_redis_enterprise()
    def test_sync(self, r):
        r2 = redis.Redis(port=6380, decode_responses=False)
>       res = r2.sync()

tests/test_commands.py:4718: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
redis/commands/core.py:935: in sync
    return self.execute_command("SYNC", **options)
redis/client.py:1255: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
redis/connection.py:1481: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6380,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6380. Connection refused.

redis/connection.py:721: ConnectionError
_________________________ TestRedisCommands.test_psync _________________________

self = Connection<host=localhost,port=6380,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

redis/connection.py:715: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <redis.retry.Retry object at 0x7ffff4527160>
do = <function Connection.connect.<locals>.<lambda> at 0x7ffff2e243a0>
fail = <function Connection.connect.<locals>.<lambda> at 0x7ffff2ecfb80>

    def call_with_retry(self, do, fail):
        """
        Execute an operation that might fail and returns its result, or
        raise the exception that was thrown depending on the `Backoff` object.
        `do`: the operation to call. Expects no argument.
        `fail`: the failure handler, expects the last error that was thrown
        """
        self._backoff.reset()
        failures = 0
        while True:
            try:
>               return do()

redis/retry.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>       lambda: self._connect(), lambda error: self.disconnect(error)
    )

redis/connection.py:716: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6380,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
                sock.connect(socket_address)
    
                # set the socket_timeout now that we're connected
                sock.settimeout(self.socket_timeout)
                return sock
    
            except OSError as _:
                err = _
                if sock is not None:
                    sock.close()
    
        if err is not None:
>           raise err

redis/connection.py:781: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6380,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

redis/connection.py:769: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <tests.test_commands.TestRedisCommands object at 0x7ffff45279a0>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @pytest.mark.replica
    @skip_if_server_version_lt("2.8.0")
    @skip_if_redis_enterprise()
    def test_psync(self, r):
        r2 = redis.Redis(port=6380, decode_responses=False)
>       res = r2.psync(r2.client_id(), 1)

tests/test_commands.py:4726: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
redis/commands/core.py:586: in client_id
    return self.execute_command("CLIENT ID", **kwargs)
redis/client.py:1255: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
redis/connection.py:1481: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6380,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6380. Connection refused.

redis/connection.py:721: ConnectionError
=============================== warnings summary ===============================
tests/test_asyncio/test_connection.py::test_connection_disconect_race[HiredisParser]
  /tmp/guix-build-python-redis-4.5.1.drv-0/source/redis/asyncio/connection.py:732: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
    self._writer.close()  # type: ignore[union-attr]

-- Docs: https://docs.pytest.org/en/stable/warnings.html
=========================== short test summary info ============================
FAILED tests/test_commands.py::TestRedisCommands::test_xautoclaim - Assertion...
FAILED tests/test_commands.py::TestRedisCommands::test_module - redis.excepti...
FAILED tests/test_commands.py::TestRedisCommands::test_module_loadex - redis....
FAILED tests/test_commands.py::TestRedisCommands::test_sync - redis.exception...
FAILED tests/test_commands.py::TestRedisCommands::test_psync - redis.exceptio...
= 5 failed, 2640 passed, 29 skipped, 1557 deselected, 1 xfailed, 1 warning in 90.82s (0:01:30) =
error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "/gnu/store/7frqm5ijy66f81hr8i1j6791k84lds9w-python-pytest-6.2.5/bin/pytest" arguments: ("-vv" "-m" "not onlycluster and not redismod and not ssl ") exit-status: 1 term-signal: #f stop-signal: #f> 
phase `check' failed after 91.5 seconds

apteryks avatar Mar 20 '23 02:03 apteryks

Down to 3 failures with:

          (add-before 'check 'start-redis
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (invoke "redis-server" "--daemonize" "yes"
                        "--enable-debug-command" "yes"
                        "--enable-module-command" "local"))))
FAILED tests/test_commands.py::TestRedisCommands::test_xautoclaim - Assertion...
FAILED tests/test_commands.py::TestRedisCommands::test_sync - redis.exception...
FAILED tests/test_commands.py::TestRedisCommands::test_psync - redis.exceptio...
= 3 failed, 2642 passed, 29 skipped, 1557 deselected, 1 xfailed, 1 warning in 89.81s (0:01:29) =

apteryks avatar Mar 20 '23 02:03 apteryks

Not relevant anymore

dvora-h avatar Jan 10 '24 23:01 dvora-h

Down to 3 failures with:

          (add-before 'check 'start-redis
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (invoke "redis-server" "--daemonize" "yes"
                        "--enable-debug-command" "yes"
                        "--enable-module-command" "local"))))
FAILED tests/test_commands.py::TestRedisCommands::test_xautoclaim - Assertion...
FAILED tests/test_commands.py::TestRedisCommands::test_sync - redis.exception...
FAILED tests/test_commands.py::TestRedisCommands::test_psync - redis.exceptio...
= 3 failed, 2642 passed, 29 skipped, 1557 deselected, 1 xfailed, 1 warning in 89.81s (0:01:29) =

Why those instances are not executed as part of the pytest session? 🤔 https://docs.pytest.org/en/6.2.x/fixture.html#scope-sharing-fixtures-across-classes-modules-packages-or-session

kloczek avatar Jan 11 '24 08:01 kloczek