@Override
  public GetQueueUserAclsInfoResponse getQueueUserAcls(
      GetQueueUserAclsInfoRequest request) throws YarnException, IOException {
    if(request == null){
      routerMetrics.incrQueueUserAclsFailedRetrieved();
      String msg = "Missing getQueueUserAcls request.";
      RouterAuditLogger.logFailure(user.getShortUserName(), GET_QUEUE_USER_ACLS, UNKNOWN,
          TARGET_CLIENT_RM_SERVICE, msg);
      RouterServerUtil.logAndThrowException(msg);
    }
    long startTime = clock.getTime();
    ClientMethod remoteMethod = new ClientMethod("getQueueUserAcls",
        new Class[] {GetQueueUserAclsInfoRequest.class}, new Object[] {request});
    Collection<GetQueueUserAclsInfoResponse> queueUserAcls = null;
    try {
      queueUserAcls = invokeConcurrent(remoteMethod, GetQueueUserAclsInfoResponse.class);
    } catch (Exception ex) {
      routerMetrics.incrQueueUserAclsFailedRetrieved();
      String msg = "Unable to get queue user Acls due to exception.";
      RouterAuditLogger.logFailure(user.getShortUserName(), GET_QUEUE_USER_ACLS, UNKNOWN,
          TARGET_CLIENT_RM_SERVICE, msg);
      RouterServerUtil.logAndThrowException(msg, ex);
    }
    long stopTime = clock.getTime();
    routerMetrics.succeededGetQueueUserAclsRetrieved(stopTime - startTime);
    RouterAuditLogger.logSuccess(user.getShortUserName(), GET_QUEUE_USER_ACLS,
        TARGET_CLIENT_RM_SERVICE);
    // Merge the QueueUserAclsInfoResponse
    return RouterYarnClientUtils.mergeQueueUserAcls(queueUserAcls);
  }
@Test
  public void testGetQueueUserAcls() throws Exception {
    LOG.info("Test FederationClientInterceptor : Get QueueUserAcls request.");

    // null request
    LambdaTestUtils.intercept(YarnException.class, "Missing getQueueUserAcls request.",
        () -> interceptor.getQueueUserAcls(null));

    // normal request
    GetQueueUserAclsInfoResponse response = interceptor.getQueueUserAcls(
        GetQueueUserAclsInfoRequest.newInstance());

    Assert.assertNotNull(response);

    List<QueueACL> submitAndAdministerAcl = new ArrayList<>();
    submitAndAdministerAcl.add(QueueACL.SUBMIT_APPLICATIONS);
    submitAndAdministerAcl.add(QueueACL.ADMINISTER_QUEUE);

    QueueUserACLInfo exceptRootQueueACLInfo = QueueUserACLInfo.newInstance("root",
        submitAndAdministerAcl);

    QueueUserACLInfo queueRootQueueACLInfo = response.getUserAclsInfoList().stream().
        filter(acl->acl.getQueueName().equals("root")).
        collect(Collectors.toList()).get(0);

    Assert.assertEquals(exceptRootQueueACLInfo, queueRootQueueACLInfo);
  }