MAPREDUCE-2034. TestSubmitJob triggers NPE instead of permissions error. Contributed by Todd Lipcon.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/mapreduce/trunk@1033668 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES.txt b/CHANGES.txt
index baf399a..0cb361d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -383,6 +383,9 @@
     MAPREDUCE-2179. Fix RaidBlockSender compilation failure. (Ramkumar Vadali
     via schen)
 
+    MAPREDUCE-2034. TestSubmitJob triggers NPE instead of permissions error.
+    (Todd Lipcon via tomwhite)
+
 Release 0.21.1 - Unreleased
 
   NEW FEATURES
diff --git a/src/test/mapred/org/apache/hadoop/mapred/TestSubmitJob.java b/src/test/mapred/org/apache/hadoop/mapred/TestSubmitJob.java
index 8ab0211..39a92ce 100644
--- a/src/test/mapred/org/apache/hadoop/mapred/TestSubmitJob.java
+++ b/src/test/mapred/org/apache/hadoop/mapred/TestSubmitJob.java
@@ -259,31 +259,30 @@
         getDFSClient(conf_other, user2);
 
       // try accessing mapred.system.dir/jobid/*
-      boolean failed = false;
       try {
-        Path path = new Path(new URI(jt.getSystemDir()).getPath());
+        String path = new URI(jt.getSystemDir()).getPath();
         LOG.info("Try listing the mapred-system-dir as the user (" 
                  + user2.getUserName() + ")");
-        client.getListing(
-            path.toString(), HdfsFileStatus.EMPTY_NAME, false);
+        client.getListing(path, HdfsFileStatus.EMPTY_NAME, false);
+        fail("JobTracker system dir is accessible to others");
       } catch (IOException ioe) {
-        failed = true;
+        assertTrue(ioe.toString(),
+          ioe.toString().contains("Permission denied"));
       }
-      assertTrue("JobTracker system dir is accessible to others", failed);
       // try accessing ~/.staging/jobid/*
-      failed = false;
       JobInProgress jip = jt.getJob(id);
       Path jobSubmitDirpath = 
         new Path(jip.getJobConf().get("mapreduce.job.dir"));
       try {
         LOG.info("Try accessing the job folder for job " + id + " as the user (" 
                  + user2.getUserName() + ")");
-        client.getListing(
-            jobSubmitDirpath.toString(), HdfsFileStatus.EMPTY_NAME, false);
+        client.getListing(jobSubmitDirpath.toUri().getPath(),
+          HdfsFileStatus.EMPTY_NAME, false);
+        fail("User's staging folder is accessible to others");
       } catch (IOException ioe) {
-        failed = true;
+        assertTrue(ioe.toString(),
+          ioe.toString().contains("Permission denied"));
       }
-      assertTrue("User's staging folder is accessible to others", failed);
       UtilsForTests.signalTasks(dfs, fs, true, mapSignalFile.toString(), 
       reduceSignalFile.toString());
       // wait for job to be done