public virtual void TestNoDelete() { Random r = new Random(); long seed = r.NextLong(); r.SetSeed(seed); System.Console.Out.WriteLine("SEED: " + seed); IList <Path> dirs = BuildDirs(r, @base, 20); CreateDirs(new Path("."), dirs); TestDeletionService.FakeDefaultContainerExecutor exec = new TestDeletionService.FakeDefaultContainerExecutor (); Configuration conf = new Configuration(); conf.SetInt(YarnConfiguration.DebugNmDeleteDelaySec, -1); exec.SetConf(conf); DeletionService del = new DeletionService(exec); try { del.Init(conf); del.Start(); foreach (Path p in dirs) { del.Delete((long.Parse(p.GetName()) % 2) == 0 ? null : "dingo", p, null); } int msecToWait = 20 * 1000; foreach (Path p_1 in dirs) { while (msecToWait > 0 && lfs.Util().Exists(p_1)) { Sharpen.Thread.Sleep(100); msecToWait -= 100; } NUnit.Framework.Assert.IsTrue(lfs.Util().Exists(p_1)); } } finally { del.Stop(); } }
/// <exception cref="System.Exception"/> public virtual void TestFileDeletionTaskDependency() { TestDeletionService.FakeDefaultContainerExecutor exec = new TestDeletionService.FakeDefaultContainerExecutor (); Configuration conf = new Configuration(); exec.SetConf(conf); DeletionService del = new DeletionService(exec); del.Init(conf); del.Start(); try { Random r = new Random(); long seed = r.NextLong(); r.SetSeed(seed); System.Console.Out.WriteLine("SEED: " + seed); IList <Path> dirs = BuildDirs(r, @base, 2); CreateDirs(new Path("."), dirs); // first we will try to delete sub directories which are present. This // should then trigger parent directory to be deleted. IList <Path> subDirs = BuildDirs(r, dirs[0], 2); DeletionService.FileDeletionTask dependentDeletionTask = del.CreateFileDeletionTask (null, dirs[0], new Path[] { }); IList <DeletionService.FileDeletionTask> deletionTasks = new AList <DeletionService.FileDeletionTask >(); foreach (Path subDir in subDirs) { DeletionService.FileDeletionTask deletionTask = del.CreateFileDeletionTask(null, null, new Path[] { subDir }); deletionTask.AddFileDeletionTaskDependency(dependentDeletionTask); deletionTasks.AddItem(deletionTask); } foreach (DeletionService.FileDeletionTask task in deletionTasks) { del.ScheduleFileDeletionTask(task); } int msecToWait = 20 * 1000; while (msecToWait > 0 && (lfs.Util().Exists(dirs[0]))) { Sharpen.Thread.Sleep(100); msecToWait -= 100; } NUnit.Framework.Assert.IsFalse(lfs.Util().Exists(dirs[0])); // Now we will try to delete sub directories; one of the deletion task we // will mark as failure and then parent directory should not be deleted. subDirs = BuildDirs(r, dirs[1], 2); subDirs.AddItem(new Path(dirs[1], "absentFile")); dependentDeletionTask = del.CreateFileDeletionTask(null, dirs[1], new Path[] { } ); deletionTasks = new AList <DeletionService.FileDeletionTask>(); foreach (Path subDir_1 in subDirs) { DeletionService.FileDeletionTask deletionTask = del.CreateFileDeletionTask(null, null, new Path[] { subDir_1 }); deletionTask.AddFileDeletionTaskDependency(dependentDeletionTask); deletionTasks.AddItem(deletionTask); } // marking one of the tasks as a failure. deletionTasks[2].SetSuccess(false); foreach (DeletionService.FileDeletionTask task_1 in deletionTasks) { del.ScheduleFileDeletionTask(task_1); } msecToWait = 20 * 1000; while (msecToWait > 0 && (lfs.Util().Exists(subDirs[0]) || lfs.Util().Exists(subDirs [1]))) { Sharpen.Thread.Sleep(100); msecToWait -= 100; } NUnit.Framework.Assert.IsTrue(lfs.Util().Exists(dirs[1])); } finally { del.Stop(); } }