Beispiel #1
0
  def test_pipe_stream(self):
    block_sizes = list(4**i for i in range(0, 12))
    data_blocks = list(os.urandom(size) for size in block_sizes)
    expected = b''.join(data_blocks)

    buffer_sizes = [100001, 512 * 1024, 1024 * 1024]

    for buffer_size in buffer_sizes:
      parent_conn, child_conn = multiprocessing.Pipe()
      stream = filesystemio.PipeStream(child_conn)
      child_thread = threading.Thread(
          target=self._read_and_verify, args=(stream, expected, buffer_size))
      child_thread.start()
      for data in data_blocks:
        parent_conn.send_bytes(data)
      parent_conn.close()
      child_thread.join()
Beispiel #2
0
  def test_pipe_stream(self):
    block_sizes = list(4**i for i in range(0, 12))
    data_blocks = list(os.urandom(size) for size in block_sizes)
    expected = b''.join(data_blocks)

    buffer_sizes = [100001, 512 * 1024, 1024 * 1024]

    for buffer_size in buffer_sizes:
      for target in [self._read_and_verify, self._read_and_seek]:
        _LOGGER.info('buffer_size=%s, target=%s' % (buffer_size, target))
        parent_conn, child_conn = multiprocessing.Pipe()
        stream = filesystemio.PipeStream(child_conn)
        success = [False]
        child_thread = threading.Thread(
            target=target, args=(stream, expected, buffer_size, success))
        child_thread.start()
        for data in data_blocks:
          parent_conn.send_bytes(data)
        parent_conn.close()
        child_thread.join()
        self.assertTrue(success[0], 'error in test thread')
    def test_pipe_stream_rewind_buffer(self):
        buffer_size = 512
        data = os.urandom(buffer_size)

        parent_conn, child_conn = multiprocessing.Pipe()
        parent_conn.send_bytes(data)
        parent_conn.close()
        stream = filesystemio.PipeStream(child_conn)

        # Regular read.
        read_data = stream.read(buffer_size)
        self.assertEqual(data, read_data)

        # Rewind buffer_size bytes.
        stream.seek(0)
        read_data = stream.read(buffer_size)
        self.assertEqual(data, read_data)

        # Read 0 bytes. Rewind buffer still points to offset 0.
        read_data = stream.read(buffer_size)
        self.assertFalse(read_data)
        stream.seek(0)
        read_data = stream.read(buffer_size)
        self.assertEqual(data, read_data)