RouterQuotaManager { public RouterQuotaUsage getQuotaUsage(String path) { readLock.lock(); try { RouterQuotaUsage quotaUsage = this.cache.get(path); if (quotaUsage != null && isQuotaSet(quotaUsage)) { return quotaUsage; } int pos = path.lastIndexOf(Path.SEPARATOR); if (pos != -1) { String parentPath = path.substring(0, pos); return getQuotaUsage(parentPath); } } finally { readLock.unlock(); } return null; } RouterQuotaManager(); Set<String> getAll(); RouterQuotaUsage getQuotaUsage(String path); Set<String> getPaths(String parentPath); void put(String path, RouterQuotaUsage quotaUsage); void updateQuota(String path, RouterQuotaUsage quota); void remove(String path); void clear(); static boolean isQuotaSet(QuotaUsage quota);  }
@Test public void testGetQuotaUsage() { RouterQuotaUsage quotaGet; quotaGet = manager.getQuotaUsage("/non-exist-path"); assertNull(quotaGet); RouterQuotaUsage.Builder quota = new RouterQuotaUsage.Builder() .quota(HdfsConstants.QUOTA_RESET) .spaceQuota(HdfsConstants.QUOTA_RESET); manager.put("/noQuotaSet", quota.build()); quotaGet = manager.getQuotaUsage("/noQuotaSet"); assertNull(quotaGet); quota.quota(1); quota.spaceQuota(HdfsConstants.QUOTA_RESET); manager.put("/hasQuotaSet", quota.build()); quotaGet = manager.getQuotaUsage("/hasQuotaSet"); assertEquals(1, quotaGet.getQuota()); assertEquals(HdfsConstants.QUOTA_RESET, quotaGet.getSpaceQuota()); quotaGet = manager.getQuotaUsage("/hasQuotaSet/file"); assertEquals(1, quotaGet.getQuota()); assertEquals(HdfsConstants.QUOTA_RESET, quotaGet.getSpaceQuota()); quota.quota(HdfsConstants.QUOTA_RESET); quota.spaceQuota(HdfsConstants.QUOTA_RESET); manager.put("/hasQuotaSet/noQuotaSet", quota.build()); quotaGet = manager.getQuotaUsage("/hasQuotaSet/noQuotaSet/file"); assertEquals(1, quotaGet.getQuota()); assertEquals(HdfsConstants.QUOTA_RESET, quotaGet.getSpaceQuota()); quota.quota(2); quota.spaceQuota(HdfsConstants.QUOTA_RESET); manager.put("/hasQuotaSet/hasQuotaSet", quota.build()); quotaGet = manager.getQuotaUsage("/hasQuotaSet/hasQuotaSet/file"); assertEquals(2, quotaGet.getQuota()); assertEquals(HdfsConstants.QUOTA_RESET, quotaGet.getSpaceQuota()); }