public virtual void SetUp() { AppContext context = Org.Mockito.Mockito.Mock <AppContext>(); Org.Mockito.Mockito.When(context.GetApplicationID()).ThenReturn(ApplicationId.NewInstance (0, 0)); Org.Mockito.Mockito.When(context.GetApplicationName()).ThenReturn("AppName"); Org.Mockito.Mockito.When(context.GetUser()).ThenReturn("User"); Org.Mockito.Mockito.When(context.GetStartTime()).ThenReturn(Runtime.CurrentTimeMillis ()); job = Org.Mockito.Mockito.Mock <Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job>(); Task task = Org.Mockito.Mockito.Mock <Task>(); Org.Mockito.Mockito.When(job.GetTask(Any <TaskId>())).ThenReturn(task); JobId jobID = MRApps.ToJobID("job_01_01"); Org.Mockito.Mockito.When(context.GetJob(jobID)).ThenReturn(job); Org.Mockito.Mockito.When(job.CheckAccess(Any <UserGroupInformation>(), Any <JobACL> ())).ThenReturn(true); Org.Apache.Hadoop.Mapreduce.V2.App.Webapp.App app = new Org.Apache.Hadoop.Mapreduce.V2.App.Webapp.App (context); Configuration configuration = new Configuration(); ctx = Org.Mockito.Mockito.Mock <Controller.RequestContext>(); appController = new AppControllerForTest(app, configuration, ctx); appController.GetProperty()[AMParams.JobId] = "job_01_01"; appController.GetProperty()[AMParams.TaskId] = "task_01_01_m01_01"; }
private bool HasAccess(Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job job, HttpServletRequest request) { string remoteUser = request.GetRemoteUser(); if (remoteUser != null) { return(job.CheckAccess(UserGroupInformation.CreateRemoteUser(remoteUser), JobACL. ViewJob)); } return(true); }
/// <exception cref="System.IO.IOException"/> private void CheckAccess(Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job job, JobACL jobOperation ) { UserGroupInformation callerUGI; callerUGI = UserGroupInformation.GetCurrentUser(); if (!job.CheckAccess(callerUGI, jobOperation)) { throw new IOException(new AccessControlException("User " + callerUGI.GetShortUserName () + " cannot perform operation " + jobOperation.ToString() + " on " + job.GetID ())); } }
internal virtual bool HasAccess(Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job job, HttpServletRequest request) { string remoteUser = request.GetRemoteUser(); UserGroupInformation callerUGI = null; if (remoteUser != null) { callerUGI = UserGroupInformation.CreateRemoteUser(remoteUser); } if (callerUGI != null && !job.CheckAccess(callerUGI, JobACL.ViewJob)) { return(false); } return(true); }
public virtual void TestGetJob() { Org.Mockito.Mockito.When(job.CheckAccess(Any <UserGroupInformation>(), Any <JobACL> ())).ThenReturn(false); appController.Job(); Org.Mockito.Mockito.Verify(appController.Response()).SetContentType(MimeType.Text ); NUnit.Framework.Assert.AreEqual("Access denied: User user does not have permission to view job job_01_01" , appController.GetData()); Org.Mockito.Mockito.When(job.CheckAccess(Any <UserGroupInformation>(), Any <JobACL> ())).ThenReturn(true); Sharpen.Collections.Remove(appController.GetProperty(), AMParams.JobId); appController.Job(); NUnit.Framework.Assert.AreEqual("Access denied: User user does not have permission to view job job_01_01Bad Request: Missing job ID" , appController.GetData()); appController.GetProperty()[AMParams.JobId] = "job_01_01"; appController.Job(); NUnit.Framework.Assert.AreEqual(typeof(JobPage), appController.GetClazz()); }
/// <exception cref="System.IO.IOException"/> private Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job VerifyAndGetJob(JobId jobID, JobACL accessType, bool exceptionThrow) { Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job job = this._enclosing.appContext.GetJob (jobID); if (job == null && exceptionThrow) { throw new IOException("Unknown Job " + jobID); } UserGroupInformation ugi = UserGroupInformation.GetCurrentUser(); if (job != null && !job.CheckAccess(ugi, accessType)) { throw new AccessControlException("User " + ugi.GetShortUserName() + " cannot perform operation " + accessType.ToString() + " on " + jobID); } return(job); }
public virtual void TestViewAclOnlyCannotModify() { TestMRClientService.MRAppWithClientService app = new TestMRClientService.MRAppWithClientService (this, 1, 0, false); Configuration conf = new Configuration(); conf.SetBoolean(MRConfig.MrAclsEnabled, true); conf.Set(MRJobConfig.JobAclViewJob, "viewonlyuser"); Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job job = app.Submit(conf); app.WaitForState(job, JobState.Running); NUnit.Framework.Assert.AreEqual("Num tasks not correct", 1, job.GetTasks().Count); IEnumerator <Task> it = job.GetTasks().Values.GetEnumerator(); Task task = it.Next(); app.WaitForState(task, TaskState.Running); TaskAttempt attempt = task.GetAttempts().Values.GetEnumerator().Next(); app.WaitForState(attempt, TaskAttemptState.Running); UserGroupInformation viewOnlyUser = UserGroupInformation.CreateUserForTesting("viewonlyuser" , new string[] { }); NUnit.Framework.Assert.IsTrue("viewonlyuser cannot view job", job.CheckAccess(viewOnlyUser , JobACL.ViewJob)); NUnit.Framework.Assert.IsFalse("viewonlyuser can modify job", job.CheckAccess(viewOnlyUser , JobACL.ModifyJob)); MRClientProtocol client = viewOnlyUser.DoAs(new _PrivilegedExceptionAction_223(conf , app)); KillJobRequest killJobRequest = recordFactory.NewRecordInstance <KillJobRequest>(); killJobRequest.SetJobId(app.GetJobId()); try { client.KillJob(killJobRequest); NUnit.Framework.Assert.Fail("viewonlyuser killed job"); } catch (AccessControlException) { } // pass KillTaskRequest killTaskRequest = recordFactory.NewRecordInstance <KillTaskRequest >(); killTaskRequest.SetTaskId(task.GetID()); try { client.KillTask(killTaskRequest); NUnit.Framework.Assert.Fail("viewonlyuser killed task"); } catch (AccessControlException) { } // pass KillTaskAttemptRequest killTaskAttemptRequest = recordFactory.NewRecordInstance <KillTaskAttemptRequest >(); killTaskAttemptRequest.SetTaskAttemptId(attempt.GetID()); try { client.KillTaskAttempt(killTaskAttemptRequest); NUnit.Framework.Assert.Fail("viewonlyuser killed task attempt"); } catch (AccessControlException) { } // pass FailTaskAttemptRequest failTaskAttemptRequest = recordFactory.NewRecordInstance <FailTaskAttemptRequest >(); failTaskAttemptRequest.SetTaskAttemptId(attempt.GetID()); try { client.FailTaskAttempt(failTaskAttemptRequest); NUnit.Framework.Assert.Fail("viewonlyuser killed task attempt"); } catch (AccessControlException) { } }
public override bool CheckAccess(UserGroupInformation callerUGI, JobACL jobOperation ) { return(job.CheckAccess(callerUGI, jobOperation)); }
public virtual void TestHsController() { AppContext ctx = Org.Mockito.Mockito.Mock <AppContext>(); ApplicationId appId = ApplicationIdPBImpl.NewInstance(0, 5); Org.Mockito.Mockito.When(ctx.GetApplicationID()).ThenReturn(appId); AppForTest app = new AppForTest(ctx); Configuration config = new Configuration(); Controller.RequestContext requestCtx = Org.Mockito.Mockito.Mock <Controller.RequestContext >(); TestBlocks.HsControllerForTest controller = new TestBlocks.HsControllerForTest(app , config, requestCtx); controller.Index(); NUnit.Framework.Assert.AreEqual("JobHistory", controller.Get(Params.Title, string.Empty )); NUnit.Framework.Assert.AreEqual(typeof(HsJobPage), controller.JobPage()); NUnit.Framework.Assert.AreEqual(typeof(HsCountersPage), controller.CountersPage() ); NUnit.Framework.Assert.AreEqual(typeof(HsTasksPage), controller.TasksPage()); NUnit.Framework.Assert.AreEqual(typeof(HsTaskPage), controller.TaskPage()); NUnit.Framework.Assert.AreEqual(typeof(HsAttemptsPage), controller.AttemptsPage() ); controller.Set(AMParams.JobId, "job_01_01"); controller.Set(AMParams.TaskId, "task_01_01_m01_01"); controller.Set(AMParams.TaskType, "m"); controller.Set(AMParams.AttemptState, "State"); Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job job = Org.Mockito.Mockito.Mock <Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job >(); Task task = Org.Mockito.Mockito.Mock <Task>(); Org.Mockito.Mockito.When(job.GetTask(Matchers.Any <TaskId>())).ThenReturn(task); JobId jobID = MRApps.ToJobID("job_01_01"); Org.Mockito.Mockito.When(ctx.GetJob(jobID)).ThenReturn(job); Org.Mockito.Mockito.When(job.CheckAccess(Matchers.Any <UserGroupInformation>(), Matchers.Any <JobACL>())).ThenReturn(true); controller.Job(); NUnit.Framework.Assert.AreEqual(typeof(HsJobPage), controller.GetClazz()); controller.JobCounters(); NUnit.Framework.Assert.AreEqual(typeof(HsCountersPage), controller.GetClazz()); controller.TaskCounters(); NUnit.Framework.Assert.AreEqual(typeof(HsCountersPage), controller.GetClazz()); controller.Tasks(); NUnit.Framework.Assert.AreEqual(typeof(HsTasksPage), controller.GetClazz()); controller.Task(); NUnit.Framework.Assert.AreEqual(typeof(HsTaskPage), controller.GetClazz()); controller.Attempts(); NUnit.Framework.Assert.AreEqual(typeof(HsAttemptsPage), controller.GetClazz()); NUnit.Framework.Assert.AreEqual(typeof(HsConfPage), controller.ConfPage()); NUnit.Framework.Assert.AreEqual(typeof(HsAboutPage), controller.AboutPage()); controller.About(); NUnit.Framework.Assert.AreEqual(typeof(HsAboutPage), controller.GetClazz()); controller.Logs(); NUnit.Framework.Assert.AreEqual(typeof(HsLogsPage), controller.GetClazz()); controller.Nmlogs(); NUnit.Framework.Assert.AreEqual(typeof(AggregatedLogsPage), controller.GetClazz() ); NUnit.Framework.Assert.AreEqual(typeof(HsSingleCounterPage), controller.SingleCounterPage ()); controller.SingleJobCounter(); NUnit.Framework.Assert.AreEqual(typeof(HsSingleCounterPage), controller.GetClazz( )); controller.SingleTaskCounter(); NUnit.Framework.Assert.AreEqual(typeof(HsSingleCounterPage), controller.GetClazz( )); }