@Override
  public int read(String path, ByteBuffer buf, long size, long offset, FuseFileInfo fi) {
    final long fd = fi.fh.get();
    return AlluxioFuseUtils.call(LOG, () -> readInternal(path, buf, size, offset, fd),
        FuseConstants.FUSE_READ, "path=%s,fd=%d,size=%d,offset=%d",
        path, fd, size, offset);
  }
@Test
  @DoraTestTodoItem(action = DoraTestTodoItem.Action.FIX, owner = "LuQQiu")
  @Ignore
  public void read() throws Exception {
    // mocks set-up
    AlluxioURI expectedPath = BASE_EXPECTED_URI.join("/foo/bar");
    setUpOpenMock(expectedPath);

    FileInStream fakeInStream = mock(FileInStream.class);
    mFileSystem.getStatus(expectedPath).getFileInfo().setLength(4);
    when(fakeInStream.read(any(ByteBuffer.class),
        anyInt(), anyInt())).then((Answer<Integer>) invocationOnMock -> {
          ByteBuffer myDest = (ByteBuffer) invocationOnMock.getArguments()[0];
          for (byte i = 0; i < 4; i++) {
            myDest.put(i, i);
          }
          return 4;
        });

    when(mFileSystem.openFile(mFileSystem.getStatus(expectedPath),
        OpenFilePOptions.getDefaultInstance())).thenReturn(fakeInStream);
    mFileInfo.flags.set(O_RDONLY.intValue());

    // prepare something to read to it
    ByteBuffer ptr = ByteBuffer.allocateDirect(4);
    assertEquals(4, ptr.limit());

    // actual test
    mFuseFs.open("/foo/bar", mFileInfo);

    mFuseFs.read("/foo/bar", ptr, 4, 0, mFileInfo);
    final byte[] dst = new byte[4];
    ptr.get(dst, 0, 4);
    final byte[] expected = new byte[] {0, 1, 2, 3};

    assertArrayEquals("Source and dst data should be equal", expected, dst);
  }