@Test
public void testIncrementFileCountForPath() {

  YarnConfiguration conf = new YarnConfiguration();
  conf.setInt(YarnConfiguration.NM_LOCAL_CACHE_MAX_FILES_PER_DIRECTORY,
      LocalCacheDirectoryManager.DIRECTORIES_PER_LEVEL + 2);
  LocalCacheDirectoryManager mgr = new LocalCacheDirectoryManager(conf);
  final String rootPath = "";
  mgr.incrementFileCountForPath(rootPath);
  Assert.assertEquals(rootPath, mgr.getRelativePathForLocalization());
  Assert.assertFalse("root dir should be full",
      rootPath.equals(mgr.getRelativePathForLocalization()));
  // finish filling the other directory
  mgr.getRelativePathForLocalization();
  // free up space in the root dir
  mgr.decrementFileCountForPath(rootPath);
  mgr.decrementFileCountForPath(rootPath);
  Assert.assertEquals(rootPath, mgr.getRelativePathForLocalization());
  Assert.assertEquals(rootPath, mgr.getRelativePathForLocalization());
  String otherDir = mgr.getRelativePathForLocalization();
  Assert.assertFalse("root dir should be full", otherDir.equals(rootPath));
  final String deepDir0 = "d/e/e/p/0";
  final String deepDir1 = "d/e/e/p/1";
  final String deepDir2 = "d/e/e/p/2";
  final String deepDir3 = "d/e/e/p/3";
  mgr.incrementFileCountForPath(deepDir0);
  Assert.assertEquals(otherDir, mgr.getRelativePathForLocalization());
  Assert.assertEquals(deepDir0, mgr.getRelativePathForLocalization());
  Assert.assertEquals("total dir count incorrect after increment",
      deepDir1, mgr.getRelativePathForLocalization());
  mgr.incrementFileCountForPath(deepDir2);
  mgr.incrementFileCountForPath(deepDir1);
  mgr.incrementFileCountForPath(deepDir2);
  Assert.assertEquals(deepDir3, mgr.getRelativePathForLocalization());
}