@Override
  public List<String> getMountPoints(final String str) throws IOException {
    verifyMountTable();
    String path = RouterAdmin.normalizeFileSystemPath(str);
    if (isTrashPath(path)) {
      path = subtractTrashCurrentPath(path);
    }
    readLock.lock();
    try {
      String from = path;
      String to = path + Character.MAX_VALUE;
      SortedMap<String, MountTable> subMap = this.tree.subMap(from, to);
      return FileSubclusterResolver.getMountPoints(path, subMap.keySet());
    } finally {
      readLock.unlock();
    }
  }
@Test
  public void testSuccessiveSlashesInInputPath() throws IOException {
    // Check getting all mount points (virtual and real) beneath a path
    List<String> mounts = mountTable.getMountPoints("///");
    assertEquals(5, mounts.size());
    compareLists(mounts, new String[] {"tmp", "user", "usr",
        "readonly", "multi"});
    String path = "///user//";
    mounts = mountTable.getMountPoints(path);
    assertEquals(2, mounts.size());
    compareLists(mounts, new String[] {"a", "b"});
    path = "/user///a";
    mounts = mountTable.getMountPoints(path);
    assertEquals(1, mounts.size());
    compareLists(mounts, new String[] {"demo"});
  }