Пример #1
0
 def test_set_get(self):
     """
     Set and then get key
     :return:
     """
     data = RedisEncoder.encodeArray(['set', '1', 'one'])
     self.proto.dataReceived(data)
     self.assertEqual(b'+OK\r\n', self.tr.value())
     self.tr.clear()
     data = RedisEncoder.encodeArray(['get', '1'])
     self.proto.dataReceived(data)
     self.assertEqual(b'$3\r\none\r\n', self.tr.value())
     self.tr.clear()
Пример #2
0
 def test_lrange_None(self):
     """
     Get array that is not set
     :return:
     """
     data = RedisEncoder.encodeArray(['lrange', 'nonset', '0', '1'])
     self.proto.dataReceived(data)
     self.assertEqual(b'*-1\r\n', self.tr.value())
     self.tr.clear()
Пример #3
0
 def test_get_None(self):
     """
     Get key that is not set
     :return:
     """
     data = RedisEncoder.encodeArray(['get', 'nonset'])
     self.proto.dataReceived(data)
     self.assertEqual(b'$-1\r\n', self.tr.value())
     self.tr.clear()
Пример #4
0
    def test_send_receive(self):
        """
        Test sending and receiving data
        """
        with patch('builtins.input', self.fake_input):
            with patch('builtins.print', self.fake_print):
                self.proto = self.factory.buildProtocol(self.addr)

                self.input = 'set 1 one'
                self.proto.makeConnection(self.tr)
                command = RedisEncoder.encodeArray(['set', '1', 'one'])
                self.assertEqual(command, self.tr.value())
                self.tr.clear()

                self.input = 'get 1'
                self.proto.dataReceived(b'+OK\r\n')
                self.assertEqual('OK', self.output)
                command = RedisEncoder.encodeArray(['get', '1'])
                self.assertEqual(command, self.tr.value())
Пример #5
0
 def test_wrong_first_byte(self):
     """
     Receive data with wrong first byte,
     then receive normal data.
     :return:
     """
     with patch('builtins.print', self.fake_print):
         data = b'abc'
         self.proto.dataReceived(data)
         self.assertEqual(b'', self.tr.value())
         self.assertEqual(b'', self.proto._data_buffer)
         data = RedisEncoder.encodeArray(['set', '1', 'one'])
         self.proto.dataReceived(data)
         self.assertEqual(b'+OK\r\n', self.tr.value())
         self.tr.clear()
Пример #6
0
    def test_disconnect_on_garbage(self):
        """
        Test disconnecting when garbage received (no first bit in data)
        """
        with patch('builtins.input', self.fake_input):
            with patch('builtins.print', self.fake_print):
                self.proto = self.factory.buildProtocol(self.addr)

                self.input = 'set 1 one'
                self.proto.makeConnection(self.tr)
                command = RedisEncoder.encodeArray(['set', '1', 'one'])
                self.assertEqual(command, self.tr.value())
                self.tr.clear()

                self.proto.dataReceived(b'OK\r\n')
                self.assertEqual(True, self.tr.disconnecting)
Пример #7
0
 def _encodeResult(self, result):
     """
     Method for encoding result as bytes according
     to Redis protocol
     :return:
     """
     if result is BulkStringNone:
         ans = RedisEncoder.encodeBulkString(None)
     elif result is ArrayNone:
         ans = RedisEncoder.encodeArray(None)
     elif result is CommandParserSuccess:
         ans = RedisEncoder.encodeString('OK')
     elif isinstance(result, Exception):
         ans = RedisEncoder.encodeError(result)
     elif isinstance(result, list):
         ans = RedisEncoder.encodeArray(result)
     elif isinstance(result, int):
         ans = RedisEncoder.encodeInt(result)
     elif isinstance(result, str):
         ans = RedisEncoder.encodeBulkString(result)
     else:
         raise UnidentifiedParserResult(
             f"Don't know to encode result of type {type(result)}.")
     return ans
Пример #8
0
 def test_simple_string(self):
     self.assertEqual(b'+OK\r\n', RedisEncoder.encodeString('OK'))
Пример #9
0
 def test_array_none(self):
     self.assertEqual(b'*-1\r\n', RedisEncoder.encodeArray(None))
Пример #10
0
 def test_array(self):
     self.assertEqual(b'*2\r\n$2\r\nHi\r\n$2\r\nHo\r\n',
                      RedisEncoder.encodeArray(['Hi', 'Ho']))
     self.assertEqual(b'*3\r\n$2\r\nHi\r\n:1\r\n*2\r\n:1\r\n:2\r\n',
                      RedisEncoder.encodeArray(['Hi', 1, [1, 2]]))
Пример #11
0
 def test_int(self):
     self.assertEqual(b':123\r\n', RedisEncoder.encodeInt(123))
Пример #12
0
 def test_bulk_string_none(self):
     self.assertEqual(b'$-1\r\n', RedisEncoder.encodeBulkString(None))
Пример #13
0
 def test_bulk_string(self):
     self.assertEqual(b'$2\r\nHi\r\n', RedisEncoder.encodeBulkString('Hi'))