public virtual void TestProcessEvictableResource() { FileSystem fs = Org.Mockito.Mockito.Mock <FileSystem>(); CleanerMetrics metrics = Org.Mockito.Mockito.Mock <CleanerMetrics>(); SCMStore store = Org.Mockito.Mockito.Mock <SCMStore>(); CleanerTask task = CreateSpiedTask(fs, store, metrics, new ReentrantLock()); // mock an evictable resource Org.Mockito.Mockito.When(store.IsResourceEvictable(Matchers.IsA <string>(), Matchers.IsA <FileStatus>())).ThenReturn(true); FileStatus status = Org.Mockito.Mockito.Mock <FileStatus>(); Org.Mockito.Mockito.When(status.GetPath()).ThenReturn(new Path(Root + "/a/b/c/abc" )); Org.Mockito.Mockito.When(store.RemoveResource(Matchers.IsA <string>())).ThenReturn (true); // rename succeeds Org.Mockito.Mockito.When(fs.Rename(Matchers.IsA <Path>(), Matchers.IsA <Path>())).ThenReturn (true); // delete returns true Org.Mockito.Mockito.When(fs.Delete(Matchers.IsA <Path>(), Matchers.AnyBoolean())). ThenReturn(true); // process the resource task.ProcessSingleResource(status); // the directory should be renamed Org.Mockito.Mockito.Verify(fs).Rename(Matchers.Eq(status.GetPath()), Matchers.IsA <Path>()); // metrics should record a deleted file Org.Mockito.Mockito.Verify(metrics).ReportAFileDelete(); Org.Mockito.Mockito.Verify(metrics, Org.Mockito.Mockito.Never()).ReportAFileProcess (); }
/// <summary>Execute an on-demand cleaner task.</summary> protected internal virtual void RunCleanerTask() { Runnable task = CleanerTask.Create(conf, store, metrics, cleanerTaskLock); // this is a non-blocking call (it simply submits the task to the executor // queue and returns) this.scheduledExecutor.Execute(task); }
public virtual void TestNonExistentRoot() { FileSystem fs = Org.Mockito.Mockito.Mock <FileSystem>(); CleanerMetrics metrics = Org.Mockito.Mockito.Mock <CleanerMetrics>(); SCMStore store = Org.Mockito.Mockito.Mock <SCMStore>(); CleanerTask task = CreateSpiedTask(fs, store, metrics, new ReentrantLock()); // the shared cache root does not exist Org.Mockito.Mockito.When(fs.Exists(task.GetRootPath())).ThenReturn(false); task.Run(); // process() should not be called Org.Mockito.Mockito.Verify(task, Org.Mockito.Mockito.Never()).Process(); }
/// <exception cref="System.Exception"/> protected override void ServiceStart() { if (!WriteGlobalCleanerPidFile()) { throw new YarnException("The global cleaner pid file already exists! " + "It appears there is another CleanerService running in the cluster" ); } this.metrics = CleanerMetrics.GetInstance(); // Start dependent services (i.e. AppChecker) base.ServiceStart(); Runnable task = CleanerTask.Create(conf, store, metrics, cleanerTaskLock); long periodInMinutes = GetPeriod(conf); scheduledExecutor.ScheduleAtFixedRate(task, GetInitialDelay(conf), periodInMinutes , TimeUnit.Minutes); Log.Info("Scheduled the shared cache cleaner task to run every " + periodInMinutes + " minutes."); }
public virtual void TestProcessFreshResource() { FileSystem fs = Org.Mockito.Mockito.Mock <FileSystem>(); CleanerMetrics metrics = Org.Mockito.Mockito.Mock <CleanerMetrics>(); SCMStore store = Org.Mockito.Mockito.Mock <SCMStore>(); CleanerTask task = CreateSpiedTask(fs, store, metrics, new ReentrantLock()); // mock a resource that is not evictable Org.Mockito.Mockito.When(store.IsResourceEvictable(Matchers.IsA <string>(), Matchers.IsA <FileStatus>())).ThenReturn(false); FileStatus status = Org.Mockito.Mockito.Mock <FileStatus>(); Org.Mockito.Mockito.When(status.GetPath()).ThenReturn(new Path(Root + "/a/b/c/abc" )); // process the resource task.ProcessSingleResource(status); // the directory should not be renamed Org.Mockito.Mockito.Verify(fs, Org.Mockito.Mockito.Never()).Rename(Matchers.Eq(status .GetPath()), Matchers.IsA <Path>()); // metrics should record a processed file (but not delete) Org.Mockito.Mockito.Verify(metrics).ReportAFileProcess(); Org.Mockito.Mockito.Verify(metrics, Org.Mockito.Mockito.Never()).ReportAFileDelete (); }
public virtual void TestResourceIsInUseHasAnActiveApp() { FileSystem fs = Org.Mockito.Mockito.Mock <FileSystem>(); CleanerMetrics metrics = Org.Mockito.Mockito.Mock <CleanerMetrics>(); SCMStore store = Org.Mockito.Mockito.Mock <SCMStore>(); FileStatus resource = Org.Mockito.Mockito.Mock <FileStatus>(); Org.Mockito.Mockito.When(resource.GetPath()).ThenReturn(new Path(Root + "/a/b/c/abc" )); // resource is stale Org.Mockito.Mockito.When(store.IsResourceEvictable(Matchers.IsA <string>(), Matchers.IsA <FileStatus>())).ThenReturn(true); // but still has appIds Org.Mockito.Mockito.When(store.RemoveResource(Matchers.IsA <string>())).ThenReturn (false); CleanerTask task = CreateSpiedTask(fs, store, metrics, new ReentrantLock()); // process the resource task.ProcessSingleResource(resource); // metrics should record a processed file (but not delete) Org.Mockito.Mockito.Verify(metrics).ReportAFileProcess(); Org.Mockito.Mockito.Verify(metrics, Org.Mockito.Mockito.Never()).ReportAFileDelete (); }