Example #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()
Example #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)
Example #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)
Example #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)
Example #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()
Example #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)
Example #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')
Example #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')
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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()
Example #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)
Example #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)
Example #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()
Example #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)