@Override
  public int chown(String path, long uid, long gid) {
    return AlluxioFuseUtils.call(LOG, () -> chownInternal(path, uid, gid),
        FuseConstants.FUSE_CHOWN, "path=%s,uid=%d,gid=%d", path, uid, gid);
  }
@Test
  @DoraTestTodoItem(action = DoraTestTodoItem.Action.FIX, owner = "LuQQiu",
      comment = "waiting on security metadata to be implemented in Dora")
  @Ignore
  public void chownWithoutValidGid() throws Exception {
    Optional<Long> uid = AlluxioFuseUtils.getUid(System.getProperty("user.name"));
    assertTrue(uid.isPresent());
    long gid = AlluxioFuseUtils.ID_NOT_SET_VALUE;
    URIStatus status = mock(URIStatus.class);
    when(status.getOwner()).thenReturn("user");
    when(status.getGroup()).thenReturn("group");
    when(mFileSystem.getStatus(any(AlluxioURI.class))).thenReturn(status);
    mFuseFs.chown("/foo/bar", uid.get(), gid);
    String userName = System.getProperty("user.name");
    Optional<String> groupName = AlluxioFuseUtils.getGroupName(userName);
    assertTrue(groupName.isPresent());
    AlluxioURI expectedPath = BASE_EXPECTED_URI.join("/foo/bar");
    // invalid gid will not be contained in options
    SetAttributePOptions options =
        SetAttributePOptions.newBuilder().setOwner(userName).build();
    verify(mFileSystem).setAttribute(expectedPath, options);

    gid = AlluxioFuseUtils.ID_NOT_SET_VALUE_UNSIGNED;
    mFuseFs.chown("/foo/bar", uid.get(), gid);
    verify(mFileSystem, times(2)).setAttribute(expectedPath, options);
  }