@Override
  public URIStatus getStatus(AlluxioURI path, GetStatusPOptions options)
      throws FileDoesNotExistException, IOException, AlluxioException {
    URIStatus status = mMetadataCache.get(path);
    if (status == null || !status.isCompleted()) {
      try {
        status = mDelegatedFileSystem.getStatus(path, options);
        mMetadataCache.put(path, status);
      } catch (FileDoesNotExistException e) {
        mMetadataCache.put(path, NOT_FOUND_STATUS);
        throw e;
      }
    } else if (status == NOT_FOUND_STATUS) {
      throw new FileDoesNotExistException("Path \"" + path.getPath() + "\" does not exist.");
    } else if (options.getUpdateTimestamps()) {
      // Asynchronously send an RPC to master to update the access time.
      // Otherwise, if we need to synchronously send RPC to master to do this,
      // caching the status does not bring any benefit.
      asyncUpdateFileAccessTime(path);
    }
    return status;
  }
@Test
  public void getStatus() throws Exception {
    mFs.getStatus(FILE);
    assertEquals(1, mRpcCountingFs.getStatusRpcCount(FILE));
    // The following getStatus gets from cache, so no RPC will be made.
    mFs.getStatus(FILE);
    assertEquals(1, mRpcCountingFs.getStatusRpcCount(FILE));
  }