Exemple #1
0
 def test_data_error(self):
     # case where we do not know how to unpack gibson data type
     data = b'\x06\x00\x05\x03\x00\x00\x00bar'
     parser = Reader()
     parser.feed(data)
     with self.assertRaises(errors.ProtocolError):
         parser.gets()
Exemple #2
0
    def test_kv(self):
        data = b'\x07\x00\x007\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00' \
               b'foo1\x00\x04\x00\x00\x00bar1\x04\x00\x00\x00' \
               b'foo2\x00\x04\x00\x00\x00bar2\x04\x00\x00\x00f' \
               b'oo3\x00\x04\x00\x00\x00bar3'

        parser = Reader()
        parser.feed(data)
        obj = parser.gets()
        expected = [b'foo1', b'bar1', b'foo2', b'bar2', b'foo3', b'bar3']
        self.assertEqual(obj, expected)
Exemple #3
0
    def test_kv(self):
        data = b'\x07\x00\x007\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00' \
               b'foo1\x00\x04\x00\x00\x00bar1\x04\x00\x00\x00' \
               b'foo2\x00\x04\x00\x00\x00bar2\x04\x00\x00\x00f' \
               b'oo3\x00\x04\x00\x00\x00bar3'

        parser = Reader()
        parser.feed(data)
        obj = parser.gets()
        expected = [b'foo1', b'bar1', b'foo2', b'bar2', b'foo3', b'bar3']
        self.assertEqual(obj, expected)
Exemple #4
0
    def test_chunked_read(self):
        parser = Reader()
        data = [b'\x06\x00', b'\x00', b'\x03', b'\x00\x00', b'\x00', b'bar']
        parser.feed(b'')
        for i, b in enumerate(data):
            parser.feed(b)
            obj = parser.gets()
            if i == len(data) - 1:
                self.assertEqual(obj, b'bar')
            else:
                self.assertEqual(obj, False)

        data2 = [b'\x06\x00', b'\x00', b'\x03', b'\x00\x00', b'\x00', b'zap']
        for i, b in enumerate(data2):
            parser.feed(b)
            obj = parser.gets()
            if i == len(data2) - 1:
                self.assertEqual(obj, b'zap')
            else:
                self.assertEqual(obj, False)
Exemple #5
0
 def test_data_error(self):
     # case where we do not know how to unpack gibson data type
     data = b'\x06\x00\x05\x03\x00\x00\x00bar'
     parser = Reader()
     parser.feed(data)
     with self.assertRaises(errors.ProtocolError):
         parser.gets()
Exemple #6
0
    def test_chunked_read(self):
        parser = Reader()
        data = [b'\x06\x00', b'\x00', b'\x03', b'\x00\x00', b'\x00', b'bar']
        parser.feed(b'')
        for i, b in enumerate(data):
            parser.feed(b)
            obj = parser.gets()
            if i == len(data)-1:
                self.assertEqual(obj, b'bar')
            else:
                self.assertEqual(obj, False)

        data2 = [b'\x06\x00', b'\x00', b'\x03', b'\x00\x00', b'\x00', b'zap']
        for i, b in enumerate(data2):
            parser.feed(b)
            obj = parser.gets()
            if i == len(data2) - 1:
                self.assertEqual(obj, b'zap')
            else:
                self.assertEqual(obj, False)
Exemple #7
0
 def test_val(self):
     data = b'\x06\x00\x00\x03\x00\x00\x00bar'
     parser = Reader()
     parser.feed(data)
     resp = parser.gets()
     self.assertEqual(resp, b'bar')
Exemple #8
0
 def test_val(self):
     data = b'\x06\x00\x00\x03\x00\x00\x00bar'
     parser = Reader()
     parser.feed(data)
     resp = parser.gets()
     self.assertEqual(resp, b'bar')
Exemple #9
0
 def test_ok(self):
     data = b'\x05\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertEqual(obj, True)
Exemple #10
0
 def test_err_mem(self):
     data = b'\x03\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.MemoryLimitError)
Exemple #11
0
 def test_err_generic(self):
     data = b'\x00\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.GibsonError)
Exemple #12
0
 def test_err_mem(self):
     data = b'\x03\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.MemoryLimitError)
Exemple #13
0
 def test_not_found(self):
     data = b'\x01\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertEqual(obj, None)
Exemple #14
0
 def test_err_nan(self):
     data = b'\x02\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.ExpectedANumber)
Exemple #15
0
 def test_err_generic(self):
     data = b'\x00\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.GibsonError)
Exemple #16
0
 def test_err_locked(self):
     data = b'\x04\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.KeyLockedError)
Exemple #17
0
 def test_not_found(self):
     data = b'\x01\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertEqual(obj, None)
Exemple #18
0
 def test_ok(self):
     data = b'\x05\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertEqual(obj, True)
Exemple #19
0
 def test_err_nan(self):
     data = b'\x02\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.ExpectedANumber)
Exemple #20
0
 def test_protocol_error(self):
     data = b'\x09\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     with self.assertRaises(errors.ProtocolError):
         parser.gets()
Exemple #21
0
 def test_err_locked(self):
     data = b'\x04\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertIsInstance(obj, errors.KeyLockedError)
Exemple #22
0
 def test_gb_encoding(self):
     data = b'\x06\x00\x02\x08\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertEqual(obj, 77)
Exemple #23
0
 def test_protocol_error(self):
     data = b'\x09\x00\x00\x01\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     with self.assertRaises(errors.ProtocolError):
         parser.gets()
Exemple #24
0
 def test_gb_encoding(self):
     data = b'\x06\x00\x02\x08\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00'
     parser = Reader()
     parser.feed(data)
     obj = parser.gets()
     self.assertEqual(obj, 77)