Beispiel #1
0
        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
                ();
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        /// <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.");
        }
Beispiel #5
0
        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
                ();
        }
Beispiel #6
0
        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
                ();
        }