Ejemplo n.º 1
0
 def _split_datagrams(value):
   sio = StringIO.StringIO(value)
   while sio.pos < sio.len:
     size_prefix, _ = varint.read_uvarint(sio)
     data = sio.read(size_prefix)
     if len(data) != size_prefix:
       raise ValueError('Expected %d bytes, but only got %d' % (
           size_prefix, len(data)))
     yield data
Ejemplo n.º 2
0
 def interpret(self):
   data = StringIO.StringIO(self.buffer.getvalue())
   magic = data.read(len(stream.BUTLER_MAGIC))
   if magic != stream.BUTLER_MAGIC:
     raise ValueError('Invalid magic value ([%s] != [%s])' % (
         magic, stream.BUTLER_MAGIC))
   length, _ = varint.read_uvarint(data)
   header = data.read(length)
   return json.loads(header), data.read()
Ejemplo n.º 3
0
  def testVarintEncodeDecode(self):
    seed = (b'\x00', b'\x01', b'\x55', b'\x7F', b'\x80', b'\x81', b'\xff')
    for perm in itertools.permutations(seed):
      perm = ''.join(perm).encode('hex')

      while len(perm) > 0:
        exp = int(perm.encode('hex'), 16)

        sio = StringIO.StringIO()
        count = varint.write_uvarint(sio, exp)
        sio.seek(0)
        act, count = varint.read_uvarint(sio)

        self.assertEqual(act, exp,
            "Decoded %r (%d) doesn't match expected (%d)" % (
                sio.getvalue().encode('hex'), act, exp))
        self.assertEqual(count, len(sio.getvalue()),
            "Decoded length (%d) doesn't match expected (%d)" % (
                count, len(sio.getvalue())))

        if perm == 0:
          break
        perm = perm[1:]