Source: redis, python-redis
Control: found -1 redis/5:7.0.2-2
Control: found -1 python-redis/3.5.3-2
Severity: serious
Tags: sid bookworm
User: debian...@lists.debian.org
Usertags: breaks needs-update

Dear maintainer(s),

With a recent upload of redis the autopkgtest of python-redis fails in testing when that autopkgtest is run with the binary packages of redis from unstable. It passes when run with only packages from testing. In tabular form:

                       pass            fail
redis                  from testing    5:7.0.2-2
python-redis           from testing    3.5.3-2
all others             from testing    from testing

I copied some of the output at the bottom of this report.

Currently this regression is blocking the migration of redis to testing [1]. Due to the nature of this issue, I filed this bug report against both packages. Can you please investigate the situation and reassign the bug to the right package?

More information about this bug and the reason for filing it can be found on
https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation

Paul

[1] https://qa.debian.org/excuses.php?package=redis

https://ci.debian.net/data/autopkgtest/testing/amd64/p/python-redis/23173373/log.gz

=================================== FAILURES =================================== __________________ TestRedisCommands.test_acl_getuser_setuser __________________

self = <tests.test_commands.TestRedisCommands object at 0x7fe1f02f2400>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
request = <FixtureRequest for <Function test_acl_getuser_setuser>>

    @skip_if_server_version_lt(REDIS_6_VERSION)
    def test_acl_getuser_setuser(self, r, request):
        username = 'redis-py-user'
            def teardown():
            r.acl_deluser(username)
        request.addfinalizer(teardown)
            # test enabled=False
        assert r.acl_setuser(username, enabled=False, reset=True)
      assert r.acl_getuser(username) == {
            'categories': ['-@all'],
            'commands': [],
            'enabled': False,
            'flags': ['off'],
            'keys': [],
            'passwords': [],
        }
E AssertionError: assert {'categories'...': False, ...} == {'categories'... ['off'], ...}
E         Omitting 4 identical items, use -vv to show
E         Differing items:
E         {'keys': b''} != {'keys': []}
E         {'flags': ['off', 'sanitize-payload']} != {'flags': ['off']}
E         Left contains 2 more items:
E         {'channels': b'', 'selectors': []}
E         Use -v to get the full diff

tests/test_commands.py:108: AssertionError
_______________________ TestRedisCommands.test_acl_list ________________________

self = <tests.test_commands.TestRedisCommands object at 0x7fe1f02eb970>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
request = <FixtureRequest for <Function test_acl_list>>

    @skip_if_server_version_lt(REDIS_6_VERSION)
    def test_acl_list(self, r, request):
        username = 'redis-py-user'
            def teardown():
            r.acl_deluser(username)
        request.addfinalizer(teardown)
            assert r.acl_setuser(username, enabled=False, reset=True)
        users = r.acl_list()
      assert 'user %s off -@all' % username in users
E AssertionError: assert ('user %s off -@all' % 'redis-py-user') in ['user default on nopass ~* &* +@all', 'user redis-py-user off sanitize-payload resetchannels -@all']

tests/test_commands.py:196: AssertionError
______________________ TestRedisCommands.test_config_set _______________________

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

    def test_config_set(self, r):
        data = r.config_get()
        rdbname = data['dbfilename']
        try:
          assert r.config_set('dbfilename', 'redis_py_test.rdb')

tests/test_commands.py:379: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
name = 'dbfilename', value = 'redis_py_test.rdb'

    def config_set(self, name, value):
        "Set config item ``name`` with ``value``"
      return self.execute_command('CONFIG SET', name, value)

redis/client.py:1243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
args = ('CONFIG SET', 'dbfilename', 'redis_py_test.rdb'), options = {}
pool = ConnectionPool<Connection<host=localhost,port=6379,db=9>>
command_name = 'CONFIG SET', conn = Connection<host=localhost,port=6379,db=9>

    def execute_command(self, *args, **options):
        "Execute a command and return a parsed response"
        pool = self.connection_pool
        command_name = args[0]
conn = self.connection or pool.get_connection(command_name, **options)
        try:
            conn.send_command(*args)
          return self.parse_response(conn, command_name, **options)

redis/client.py:901: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
connection = Connection<host=localhost,port=6379,db=9>
command_name = 'CONFIG SET', options = {}

    def parse_response(self, connection, command_name, **options):
        "Parses a response from the Redis server"
        try:
          response = connection.read_response()

redis/client.py:915: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: CONFIG SET failed (possibly related to argument 'dbfilename') - can't set protected config

redis/connection.py:756: ResponseError

During handling of the above exception, another exception occurred:

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

    def test_config_set(self, r):
        data = r.config_get()
        rdbname = data['dbfilename']
        try:
            assert r.config_set('dbfilename', 'redis_py_test.rdb')
            assert r.config_get()['dbfilename'] == 'redis_py_test.rdb'
        finally:
          assert r.config_set('dbfilename', rdbname)

tests/test_commands.py:382: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:1243: in config_set
    return self.execute_command('CONFIG SET', name, value)
redis/client.py:901: in execute_command
    return self.parse_response(conn, command_name, **options)
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: CONFIG SET failed (possibly related to argument 'dbfilename') - can't set protected config

redis/connection.py:756: ResponseError
_______________________ TestRedisCommands.test_readwrite _______________________

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

    @skip_if_server_version_lt('3.0.0')
    def test_readwrite(self, r):
      assert r.readwrite()

tests/test_commands.py:1881: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:1231: in readwrite
    return self.execute_command('READWRITE')
redis/client.py:901: in execute_command
    return self.parse_response(conn, command_name, **options)
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: This instance has cluster support disabled

redis/connection.py:756: ResponseError
____________________ TestRedisCommands.test_xclaim_trimmed _____________________

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

    @skip_if_server_version_lt('5.0.0')
    def test_xclaim_trimmed(self, r):
        # xclaim should not raise an exception if the item is not there
        stream = 'stream'
        group = 'group'
            r.xgroup_create(stream, group, id="$", mkstream=True)
            # add a couple of new items
        sid1 = r.xadd(stream, {"item": 0})
        sid2 = r.xadd(stream, {"item": 0})
            # read them from consumer1
        r.xreadgroup(group, 'consumer1', {stream: ">"})
            # add a 3rd and trim the stream down to 2 items
        r.xadd(stream, {"item": 3}, maxlen=2, approximate=False)
            # xclaim them from consumer2
        # the item that is still in the stream should be returned
        item = r.xclaim(stream, group, 'consumer2', 0, [sid1, sid2])
      assert len(item) == 2
E       AssertionError: assert 1 == 2
E        +  where 1 = len([(b'1656465151154-1', {b'item': b'0'})])

tests/test_commands.py:2165: AssertionError
_____________________ TestRedisCommands.test_xgroup_create _____________________

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

    @skip_if_server_version_lt('5.0.0')
    def test_xgroup_create(self, r):
        # tests xgroup_create and xinfo_groups
        stream = 'stream'
        group = 'group'
        r.xadd(stream, {'foo': 'bar'})
            # no group is setup yet, no info to obtain
        assert r.xinfo_groups(stream) == []
            assert r.xgroup_create(stream, group, 0)
        expected = [{
            'name': group.encode(),
            'consumers': 0,
            'pending': 0,
            'last-delivered-id': b'0-0'
        }]
      assert r.xinfo_groups(stream) == expected
E AssertionError: assert [{'consumers'... b'0-0', ...}] == [{'consumers'...'pending': 0}] E At index 0 diff: {'name': b'group', 'consumers': 0, 'pending': 0, 'last-delivered-id': b'0-0', 'entries-read': None, 'lag': 1} != {'name': b'group', 'consumers': 0, 'pending': 0, 'last-delivered-id': b'0-0'}
E         Use -v to get the full diff

tests/test_commands.py:2201: AssertionError
________________ TestRedisCommands.test_xgroup_create_mkstream _________________

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

    @skip_if_server_version_lt('5.0.0')
    def test_xgroup_create_mkstream(self, r):
        # tests xgroup_create and xinfo_groups
        stream = 'stream'
        group = 'group'
            # an error is raised if a group is created on a stream that
        # doesn't already exist
        with pytest.raises(exceptions.ResponseError):
            r.xgroup_create(stream, group, 0)
            # however, with mkstream=True, the underlying stream is created
        # automatically
        assert r.xgroup_create(stream, group, 0, mkstream=True)
        expected = [{
            'name': group.encode(),
            'consumers': 0,
            'pending': 0,
            'last-delivered-id': b'0-0'
        }]
      assert r.xinfo_groups(stream) == expected
E AssertionError: assert [{'consumers'... b'0-0', ...}] == [{'consumers'...'pending': 0}] E At index 0 diff: {'name': b'group', 'consumers': 0, 'pending': 0, 'last-delivered-id': b'0-0', 'entries-read': None, 'lag': 0} != {'name': b'group', 'consumers': 0, 'pending': 0, 'last-delivered-id': b'0-0'}
E         Use -v to get the full diff

tests/test_commands.py:2223: AssertionError
_____________________ TestRedisCommands.test_xgroup_setid ______________________

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

    @skip_if_server_version_lt('5.0.0')
    def test_xgroup_setid(self, r):
        stream = 'stream'
        group = 'group'
        message_id = r.xadd(stream, {'foo': 'bar'})
            r.xgroup_create(stream, group, 0)
        # advance the last_delivered_id to the message_id
        r.xgroup_setid(stream, group, message_id)
        expected = [{
            'name': group.encode(),
            'consumers': 0,
            'pending': 0,
            'last-delivered-id': message_id
        }]
      assert r.xinfo_groups(stream) == expected
E AssertionError: assert [{'consumers'...1316-0', ...}] == [{'consumers'...'pending': 0}] E At index 0 diff: {'name': b'group', 'consumers': 0, 'pending': 0, 'last-delivered-id': b'1656465151316-0', 'entries-read': None, 'lag': 0} != {'name': b'group', 'consumers': 0, 'pending': 0, 'last-delivered-id': b'1656465151316-0'}
E         Use -v to get the full diff

tests/test_commands.py:2270: AssertionError
_____________ TestConnection.test_busy_loading_disconnects_socket ______________

self = <tests.test_connection_pool.TestConnection object at 0x7fe1f11dc250>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @skip_if_server_version_lt('2.8.8')
    def test_busy_loading_disconnects_socket(self, r):
        """
        If Redis raises a LOADING error, the connection should be
        disconnected and a BusyLoadingError raised
        """
        with pytest.raises(redis.BusyLoadingError):
          r.execute_command('DEBUG', 'ERROR', 'LOADING fake message')

tests/test_connection_pool.py:577: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:901: in execute_command
    return self.parse_response(conn, command_name, **options)
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: 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/connection.py:756: ResponseError
_______ TestConnection.test_busy_loading_from_pipeline_immediate_command _______

self = <tests.test_connection_pool.TestConnection object at 0x7fe1f0160a00>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @skip_if_server_version_lt('2.8.8')
    def test_busy_loading_from_pipeline_immediate_command(self, r):
        """
        BusyLoadingErrors should raise from Pipelines that execute a
        command immediately, like WATCH does.
        """
        pipe = r.pipeline()
        with pytest.raises(redis.BusyLoadingError):
          pipe.immediate_execute_command('DEBUG', 'ERROR',
                                           'LOADING fake message')

tests/test_connection_pool.py:588: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:3841: in immediate_execute_command
    return self.parse_response(conn, command_name, **options)
redis/client.py:3977: in parse_response
    result = Redis.parse_response(
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: 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/connection.py:756: ResponseError
________________ TestConnection.test_busy_loading_from_pipeline ________________

self = Pipeline<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
connection = Connection<host=localhost,port=6379,db=9>
commands = [(('DEBUG', 'ERROR', 'LOADING fake message'), {})]
raise_on_error = True

    def _execute_transaction(self, connection, commands, raise_on_error):
        cmds = chain([(('MULTI', ), {})], commands, [(('EXEC', ), {})])
        all_cmds = connection.pack_commands([args for args, options in cmds
if EMPTY_RESPONSE not in options])
        connection.send_packed_command(all_cmds)
        errors = []
            # parse off the response for MULTI
        # NOTE: we need to handle ResponseErrors here and continue
        # so that we read all the additional command messages from
        # the socket
        try:
            self.parse_response(connection, '_')
        except ResponseError as e:
            errors.append((0, e))
            # and all the other commands
        for i, command in enumerate(commands):
            if EMPTY_RESPONSE in command[1]:
                errors.append((i, command[1][EMPTY_RESPONSE]))
            else:
                try:
                    self.parse_response(connection, '_')
                except ResponseError as e:
                    self.annotate_exception(e, i + 1, command[0])
                    errors.append((i, e))
            # parse the EXEC.
        try:
          response = self.parse_response(connection, '_')

redis/client.py:3911: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Pipeline<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
connection = Connection<host=localhost,port=6379,db=9>, command_name = '_'
options = {}

    def parse_response(self, connection, command_name, **options):
      result = Redis.parse_response(
            self, connection, command_name, **options)

redis/client.py:3977: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Pipeline<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>
connection = Connection<host=localhost,port=6379,db=9>, command_name = '_'
options = {}

    def parse_response(self, connection, command_name, **options):
        "Parses a response from the Redis server"
        try:
          response = connection.read_response()

redis/client.py:915: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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.ExecAbortError: Transaction discarded because of previous errors.

redis/connection.py:756: ExecAbortError

During handling of the above exception, another exception occurred:

self = <tests.test_connection_pool.TestConnection object at 0x7fe1f02f2ca0>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @skip_if_server_version_lt('2.8.8')
    def test_busy_loading_from_pipeline(self, r):
        """
        BusyLoadingErrors should be raised from a pipeline execution
        regardless of the raise_on_error flag.
        """
        pipe = r.pipeline()
        pipe.execute_command('DEBUG', 'ERROR', 'LOADING fake message')
        with pytest.raises(redis.BusyLoadingError):
          pipe.execute()

tests/test_connection_pool.py:604: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:4019: in execute
    return execute(conn, stack, raise_on_error)
redis/client.py:3914: in _execute_transaction
    raise errors[0][1]
redis/client.py:3904: in _execute_transaction
    self.parse_response(connection, '_')
redis/client.py:3977: in parse_response
    result = Redis.parse_response(
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: Command # 1 (DEBUG ERROR LOADING fake message) of pipeline caused error: 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/connection.py:756: ResponseError
_____________________ TestConnection.test_read_only_error ______________________

self = <tests.test_connection_pool.TestConnection object at 0x7fe1f03a4700>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    @skip_if_server_version_lt('2.8.8')
    def test_read_only_error(self, r):
        "READONLY errors get turned in ReadOnlyError exceptions"
        with pytest.raises(redis.ReadOnlyError):
          r.execute_command('DEBUG', 'ERROR', 'READONLY blah blah')

tests/test_connection_pool.py:614: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:901: in execute_command
    return self.parse_response(conn, command_name, **options)
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: 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/connection.py:756: ResponseError
__________ TestConnection.test_connect_no_auth_supplied_when_required __________

self = <tests.test_connection_pool.TestConnection object at 0x7fe1f0c0cb20>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    def test_connect_no_auth_supplied_when_required(self, r):
        """
        AuthenticationError should be raised when the server requires a
        password but one isn't supplied.
        """
        with pytest.raises(redis.AuthenticationError):
          r.execute_command('DEBUG', 'ERROR',
'ERR Client sent AUTH, but no password is set')

tests/test_connection_pool.py:642: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:901: in execute_command
    return self.parse_response(conn, command_name, **options)
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: 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/connection.py:756: ResponseError
____________ TestConnection.test_connect_invalid_password_supplied _____________

self = <tests.test_connection_pool.TestConnection object at 0x7fe1f1676d90>
r = Redis<ConnectionPool<Connection<host=localhost,port=6379,db=9>>>

    def test_connect_invalid_password_supplied(self, r):
"AuthenticationError should be raised when sending the wrong password"
        with pytest.raises(redis.AuthenticationError):
          r.execute_command('DEBUG', 'ERROR', 'ERR invalid password')

tests/test_connection_pool.py:648: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:901: in execute_command
    return self.parse_response(conn, command_name, **options)
redis/client.py:915: in parse_response
    response = connection.read_response()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Connection<host=localhost,port=6379,db=9>

    def read_response(self):
        "Read the response from a previously sent command"
        try:
            response = self._parser.read_response()
        except socket.timeout:
            self.disconnect()
            raise TimeoutError("Timeout reading from %s:%s" %
                               (self.host, self.port))
        except socket.error as e:
            self.disconnect()
            raise ConnectionError("Error while reading from %s:%s : %s" %
                                  (self.host, self.port, e.args))
        except BaseException:
            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: 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/connection.py:756: ResponseError
=========================== short test summary info ============================ FAILED tests/test_commands.py::TestRedisCommands::test_acl_getuser_setuser - ... FAILED tests/test_commands.py::TestRedisCommands::test_acl_list - AssertionEr... FAILED tests/test_commands.py::TestRedisCommands::test_config_set - redis.exc... FAILED tests/test_commands.py::TestRedisCommands::test_readwrite - redis.exce... FAILED tests/test_commands.py::TestRedisCommands::test_xclaim_trimmed - Asser... FAILED tests/test_commands.py::TestRedisCommands::test_xgroup_create - Assert... FAILED tests/test_commands.py::TestRedisCommands::test_xgroup_create_mkstream FAILED tests/test_commands.py::TestRedisCommands::test_xgroup_setid - Asserti... 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_supplied_when_required FAILED tests/test_connection_pool.py::TestConnection::test_connect_invalid_password_supplied ================== 14 failed, 460 passed, 1 skipped in 11.89s ==================
autopkgtest [01:12:35]: test 0002-python3

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to