You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ma...@apache.org on 2011/12/13 00:11:38 UTC

svn commit: r1213493 - in /hadoop/common/branches/branch-0.23/hadoop-mapreduce-project: ./ hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/ hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/o...

Author: mahadev
Date: Mon Dec 12 23:11:38 2011
New Revision: 1213493

URL: http://svn.apache.org/viewvc?rev=1213493&view=rev
Log:
MAPREDUCE-3518. mapred queue -info <queue> -showJobs throws NPE. (Jonathan Eagles via mahadev) - Merging r1213464 from trunk

Modified:
    hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt
    hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java
    hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java
    hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/src/test/mapred/org/apache/hadoop/mapred/JobClientUnitTest.java

Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt?rev=1213493&r1=1213492&r2=1213493&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt Mon Dec 12 23:11:38 2011
@@ -75,6 +75,9 @@ Release 0.23.1 - Unreleased
     MAPREDUCE-3369. Migrate MR1 tests to run on MR2 using the new interfaces
     introduced in MAPREDUCE-3169. (Ahmed Radwan via tomwhite)
 
+    MAPREDUCE-3518. mapred queue -info <queue> -showJobs throws NPE. 
+    (Jonathan Eagles via mahadev)
+
   OPTIMIZATIONS
 
   BUG FIXES

Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java?rev=1213493&r1=1213492&r2=1213493&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java (original)
+++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java Mon Dec 12 23:11:38 2011
@@ -432,7 +432,6 @@ public class JobClient extends CLI {
 
   }
 
-  Cluster cluster;
   /**
    * Ugi of the client. We store this ugi when the client is created and 
    * then make sure that the same ugi is used to run the various protocols.

Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java?rev=1213493&r1=1213492&r2=1213493&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java (original)
+++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java Mon Dec 12 23:11:38 2011
@@ -55,7 +55,7 @@ import org.apache.hadoop.yarn.logaggrega
 @InterfaceStability.Stable
 public class CLI extends Configured implements Tool {
   private static final Log LOG = LogFactory.getLog(CLI.class);
-  private Cluster cluster;
+  protected Cluster cluster;
 
   public CLI() {
   }

Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/src/test/mapred/org/apache/hadoop/mapred/JobClientUnitTest.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/src/test/mapred/org/apache/hadoop/mapred/JobClientUnitTest.java?rev=1213493&r1=1213492&r2=1213493&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/src/test/mapred/org/apache/hadoop/mapred/JobClientUnitTest.java (original)
+++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/src/test/mapred/org/apache/hadoop/mapred/JobClientUnitTest.java Mon Dec 12 23:11:38 2011
@@ -19,21 +19,41 @@
 package org.apache.hadoop.mapred;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.isA;
+import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.io.IOException;
+import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapreduce.Cluster;
+import org.apache.hadoop.mapreduce.Job;
+import org.apache.hadoop.mapreduce.JobPriority;
+import org.apache.hadoop.mapreduce.JobStatus;
+import org.apache.hadoop.mapreduce.TaskType;
+import org.apache.hadoop.mapreduce.TaskReport;
 import org.junit.Test;
 
 public class JobClientUnitTest {
   
+  public class TestJobClient extends JobClient {
+
+    TestJobClient(JobConf jobConf) throws IOException {
+      super(jobConf);
+    }
+
+    void setCluster(Cluster cluster) {
+      this.cluster = cluster;
+    }
+  }
+
   @SuppressWarnings("deprecation")
   @Test
   public void testMapTaskReportsWithNullJob() throws Exception {
-    JobClient client = new JobClient();
+    TestJobClient client = new TestJobClient(new JobConf());
     Cluster mockCluster = mock(Cluster.class);
-    client.cluster = mockCluster;
+    client.setCluster(mockCluster);
     JobID id = new JobID("test",0);
     
     when(mockCluster.getJob(id)).thenReturn(null);
@@ -47,9 +67,9 @@ public class JobClientUnitTest {
   @SuppressWarnings("deprecation")
   @Test
   public void testReduceTaskReportsWithNullJob() throws Exception {
-    JobClient client = new JobClient();
+    TestJobClient client = new TestJobClient(new JobConf());
     Cluster mockCluster = mock(Cluster.class);
-    client.cluster = mockCluster;
+    client.setCluster(mockCluster);
     JobID id = new JobID("test",0);
     
     when(mockCluster.getJob(id)).thenReturn(null);
@@ -63,9 +83,9 @@ public class JobClientUnitTest {
   @SuppressWarnings("deprecation")
   @Test
   public void testSetupTaskReportsWithNullJob() throws Exception {
-    JobClient client = new JobClient();
+    TestJobClient client = new TestJobClient(new JobConf());
     Cluster mockCluster = mock(Cluster.class);
-    client.cluster = mockCluster;
+    client.setCluster(mockCluster);
     JobID id = new JobID("test",0);
     
     when(mockCluster.getJob(id)).thenReturn(null);
@@ -79,9 +99,9 @@ public class JobClientUnitTest {
   @SuppressWarnings("deprecation")
   @Test
   public void testCleanupTaskReportsWithNullJob() throws Exception {
-    JobClient client = new JobClient();
+    TestJobClient client = new TestJobClient(new JobConf());
     Cluster mockCluster = mock(Cluster.class);
-    client.cluster = mockCluster;
+    client.setCluster(mockCluster);
     JobID id = new JobID("test",0);
     
     when(mockCluster.getJob(id)).thenReturn(null);
@@ -91,4 +111,49 @@ public class JobClientUnitTest {
     
     verify(mockCluster).getJob(id);
   }
+
+  @Test
+  public void testShowJob() throws Exception {
+    TestJobClient client = new TestJobClient(new JobConf());
+    JobID jobID = new JobID("test", 0);
+
+    JobStatus mockJobStatus = mock(JobStatus.class);
+    when(mockJobStatus.getJobID()).thenReturn(jobID);
+    when(mockJobStatus.getState()).thenReturn(JobStatus.State.RUNNING);
+    when(mockJobStatus.getStartTime()).thenReturn(0L);
+    when(mockJobStatus.getUsername()).thenReturn("mockuser");
+    when(mockJobStatus.getQueue()).thenReturn("mockqueue");
+    when(mockJobStatus.getPriority()).thenReturn(JobPriority.NORMAL);
+    when(mockJobStatus.getNumUsedSlots()).thenReturn(1);
+    when(mockJobStatus.getNumReservedSlots()).thenReturn(1);
+    when(mockJobStatus.getUsedMem()).thenReturn(1024);
+    when(mockJobStatus.getReservedMem()).thenReturn(512);
+    when(mockJobStatus.getNeededMem()).thenReturn(2048);
+    when(mockJobStatus.getSchedulingInfo()).thenReturn("NA");
+
+    Job mockJob = mock(Job.class);
+    when(mockJob.getTaskReports(isA(TaskType.class))).thenReturn(new TaskReport[0]);
+
+    Cluster mockCluster = mock(Cluster.class);
+    when(mockCluster.getJob(jobID)).thenReturn(mockJob);
+
+    client.setCluster(mockCluster);
+    
+    
+    client.displayJobList(new JobStatus[] {mockJobStatus});
+    verify(mockJobStatus, atLeastOnce()).getJobID();
+    verify(mockJob, atLeastOnce()).getTaskReports(isA(TaskType.class));
+    verify(mockCluster, atLeastOnce()).getJob(jobID);
+    verify(mockJobStatus).getState();
+    verify(mockJobStatus).getStartTime();
+    verify(mockJobStatus).getUsername();
+    verify(mockJobStatus).getQueue();
+    verify(mockJobStatus).getPriority();
+    verify(mockJobStatus).getNumUsedSlots();
+    verify(mockJobStatus).getNumReservedSlots();
+    verify(mockJobStatus).getUsedMem();
+    verify(mockJobStatus).getReservedMem();
+    verify(mockJobStatus).getNeededMem();
+    verify(mockJobStatus).getSchedulingInfo();
+  }
 }