Example #1
0
def new_execute_redis_con(self, command, *args, encoding=_NOTSET):
    """Executes redis command and returns Future waiting for the answer.

    Raises:
    * TypeError if any of args can not be encoded as bytes.
    * ReplyError on redis '-ERR' responses.
    * ProtocolError when response can not be decoded meaning connection
      is broken.
    * ConnectionClosedError when either client or server has closed the
      connection.
    """
    try:
        command = command.encode()
    except AttributeError:
        pass

    try:
        command_run = self.__rsm[command.upper()]
    except KeyError:
        raise ValueError("You must setup RSM map before execute any command")

    if self._reader is None or self._reader.at_eof():
        msg = self._close_msg or "Connection closed or corrupted"
        raise ConnectionClosedError(msg)
    if command is None:
        raise TypeError("command must not be None")
    if None in args:
        raise TypeError("args must not contain None")
    command = command.upper().strip()
    is_pubsub = command in _PUBSUB_COMMANDS
    is_ping = command in ('PING', b'PING')
    if self._in_pubsub and not (is_pubsub or is_ping):
        raise RedisError("Connection in SUBSCRIBE mode")
    elif is_pubsub:
        logger.warning("Deprecated. Use `execute_pubsub` method directly")
        return self.execute_pubsub(command, *args)

    if command in ('SELECT', b'SELECT'):
        cb = partial(self._set_db, args=args)
    elif command in ('MULTI', b'MULTI'):
        cb = self._start_transaction
    elif command in ('EXEC', b'EXEC'):
        cb = partial(self._end_transaction, discard=False)
        encoding = None
    elif command in ('DISCARD', b'DISCARD'):
        cb = partial(self._end_transaction, discard=True)
    else:
        cb = None
    if encoding is _NOTSET:
        encoding = self._encoding

    command = command_run
    fut = get_event_loop().create_future()
    if self._pipeline_buffer is None:
        self._writer.write(encode_command(command, *args))
    else:
        encode_command(command, *args, buf=self._pipeline_buffer)
    self._waiters.append((fut, encoding, cb))
    return fut
Example #2
0
    def test_encode_bytes(self):
        res = encode_command(b'Hello')
        self.assertEqual(res, b'*1\r\n$5\r\nHello\r\n')

        res = encode_command(b'Hello', b'World')
        self.assertEqual(res, b'*2\r\n$5\r\nHello\r\n$5\r\nWorld\r\n')

        res = encode_command(b'\0')
        self.assertEqual(res, b'*1\r\n$1\r\n\0\r\n')

        res = encode_command(bytearray(b'Hello\r\n'))
        self.assertEqual(res, b'*1\r\n$7\r\nHello\r\n\r\n')
Example #3
0
def test_encode_bytes():
    res = encode_command(b'Hello')
    assert res == b'*1\r\n$5\r\nHello\r\n'

    res = encode_command(b'Hello', b'World')
    assert res == b'*2\r\n$5\r\nHello\r\n$5\r\nWorld\r\n'

    res = encode_command(b'\0')
    assert res == b'*1\r\n$1\r\n\0\r\n'

    res = encode_command(bytearray(b'Hello\r\n'))
    assert res == b'*1\r\n$7\r\nHello\r\n\r\n'
Example #4
0
    def test_encode_bytes(self):
        res = encode_command(b'Hello')
        self.assertEqual(res, b'*1\r\n$5\r\nHello\r\n')

        res = encode_command(b'Hello', b'World')
        self.assertEqual(res, b'*2\r\n$5\r\nHello\r\n$5\r\nWorld\r\n')

        res = encode_command(b'\0')
        self.assertEqual(res, b'*1\r\n$1\r\n\0\r\n')

        res = encode_command(bytearray(b'Hello\r\n'))
        self.assertEqual(res, b'*1\r\n$7\r\nHello\r\n\r\n')
def test_encode_bytes():
    res = encode_command(b"Hello")
    assert res == b"*1\r\n$5\r\nHello\r\n"

    res = encode_command(b"Hello", b"World")
    assert res == b"*2\r\n$5\r\nHello\r\n$5\r\nWorld\r\n"

    res = encode_command(b"\0")
    assert res == b"*1\r\n$1\r\n\0\r\n"

    res = encode_command(bytearray(b"Hello\r\n"))
    assert res == b"*1\r\n$7\r\nHello\r\n\r\n"
Example #6
0
 def test_encode_errors(self):
     with self.assertRaises(TypeError):
         encode_command(dict())
     with self.assertRaises(TypeError):
         encode_command(list())
     with self.assertRaises(TypeError):
         encode_command(None)
def test_encode_errors():
    with pytest.raises(TypeError):
        encode_command(dict())
    with pytest.raises(TypeError):
        encode_command(list())
    with pytest.raises(TypeError):
        encode_command(None)
def test_encode_errors():
    with pytest.raises(TypeError):
        encode_command(dict())
    with pytest.raises(TypeError):
        encode_command(list())
    with pytest.raises(TypeError):
        encode_command(None)
Example #9
0
 def test_encode_errors(self):
     with self.assertRaises(TypeError):
         encode_command(dict())
     with self.assertRaises(TypeError):
         encode_command(list())
     with self.assertRaises(TypeError):
         encode_command(None)
def test_encode_bytearray():
    res = encode_command(bytearray(b"Hello"))
    assert res == b"*1\r\n$5\r\nHello\r\n"

    res = encode_command(bytearray(b"Hello"), bytearray(b"world"))
    assert res == b"*2\r\n$5\r\nHello\r\n$5\r\nworld\r\n"
Example #11
0
    def test_encode_float(self):
        res = encode_command(1.0)
        self.assertEqual(res, b'*1\r\n$3\r\n1.0\r\n')

        res = encode_command(-1.0)
        self.assertEqual(res, b'*1\r\n$4\r\n-1.0\r\n')
Example #12
0
 def test_encode_empty(self):
     res = encode_command()
     self.assertEqual(res, b'*0\r\n')
Example #13
0
def test_encode_empty():
    res = encode_command()
    assert res == b'*0\r\n'
Example #14
0
    def test_encode_float(self):
        res = encode_command(1.0)
        self.assertEqual(res, b'*1\r\n$3\r\n1.0\r\n')

        res = encode_command(-1.0)
        self.assertEqual(res, b'*1\r\n$4\r\n-1.0\r\n')
def test_encode_float():
    res = encode_command(1.0)
    assert res == b"*1\r\n$3\r\n1.0\r\n"

    res = encode_command(-1.0)
    assert res == b"*1\r\n$4\r\n-1.0\r\n"
Example #16
0
    def test_encode_int(self):
        res = encode_command(1)
        self.assertEqual(res, b'*1\r\n$1\r\n1\r\n')

        res = encode_command(-1)
        self.assertEqual(res, b'*1\r\n$2\r\n-1\r\n')
def test_encode_empty():
    res = encode_command()
    assert res == b"*0\r\n"
Example #18
0
 def do(cmd, args):
     val = encode_command(cmd, *args)
     assert isinstance(val, bytearray)
Example #19
0
    def test_encode_str(self):
        res = encode_command('Hello')
        self.assertEqual(res, b'*1\r\n$5\r\nHello\r\n')

        res = encode_command('Hello', 'world')
        self.assertEqual(res, b'*2\r\n$5\r\nHello\r\n$5\r\nworld\r\n')
Example #20
0
 def test_encode_empty(self):
     res = encode_command()
     self.assertEqual(res, b'*0\r\n')
def test_encode_str():
    res = encode_command("Hello")
    assert res == b"*1\r\n$5\r\nHello\r\n"

    res = encode_command("Hello", "world")
    assert res == b"*2\r\n$5\r\nHello\r\n$5\r\nworld\r\n"
Example #22
0
def test_encode_int():
    res = encode_command(1)
    assert res == b'*1\r\n$1\r\n1\r\n'

    res = encode_command(-1)
    assert res == b'*1\r\n$2\r\n-1\r\n'
def test_encode_int():
    res = encode_command(1)
    assert res == b"*1\r\n$1\r\n1\r\n"

    res = encode_command(-1)
    assert res == b"*1\r\n$2\r\n-1\r\n"
Example #24
0
def test_encode_float():
    res = encode_command(1.0)
    assert res == b'*1\r\n$3\r\n1.0\r\n'

    res = encode_command(-1.0)
    assert res == b'*1\r\n$4\r\n-1.0\r\n'
Example #25
0
def test_encode_bytearray():
    res = encode_command(bytearray(b'Hello'))
    assert res == b'*1\r\n$5\r\nHello\r\n'

    res = encode_command(bytearray(b'Hello'), bytearray(b'world'))
    assert res == b'*2\r\n$5\r\nHello\r\n$5\r\nworld\r\n'
Example #26
0
    def test_encode_int(self):
        res = encode_command(1)
        self.assertEqual(res, b'*1\r\n$1\r\n1\r\n')

        res = encode_command(-1)
        self.assertEqual(res, b'*1\r\n$2\r\n-1\r\n')
Example #27
0
def test_encode_str():
    res = encode_command('Hello')
    assert res == b'*1\r\n$5\r\nHello\r\n'

    res = encode_command('Hello', 'world')
    assert res == b'*2\r\n$5\r\nHello\r\n$5\r\nworld\r\n'
Example #28
0
    def test_encode_str(self):
        res = encode_command('Hello')
        self.assertEqual(res, b'*1\r\n$5\r\nHello\r\n')

        res = encode_command('Hello', 'world')
        self.assertEqual(res, b'*2\r\n$5\r\nHello\r\n$5\r\nworld\r\n')