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 ss...@apache.org on 2012/10/19 20:59:07 UTC

svn commit: r1400227 [2/5] - in /hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2: ./ job/impl/ webapp/

Modified: hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebApp.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebApp.java?rev=1400227&r1=1400226&r2=1400227&view=diff
==============================================================================
--- hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebApp.java (original)
+++ hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebApp.java Fri Oct 19 18:59:06 2012
@@ -1,220 +1,220 @@
-///**
-//* Licensed to the Apache Software Foundation (ASF) under one
-//* or more contributor license agreements.  See the NOTICE file
-//* distributed with this work for additional information
-//* regarding copyright ownership.  The ASF licenses this file
-//* to you under the Apache License, Version 2.0 (the
-//* "License"); you may not use this file except in compliance
-//* with the License.  You may obtain a copy of the License at
-//*
-//*     http://www.apache.org/licenses/LICENSE-2.0
-//*
-//* Unless required by applicable law or agreed to in writing, software
-//* distributed under the License is distributed on an "AS IS" BASIS,
-//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//* See the License for the specific language governing permissions and
-//* limitations under the License.
-//*/
-//
-//package org.apache.hadoop.mapreduce.v2.app2.webapp;
-//
-//import static org.apache.hadoop.mapreduce.v2.app2.webapp.AMParams.APP_ID;
-//import static org.junit.Assert.assertEquals;
-//
-//import java.util.HashMap;
-//import java.util.Map;
-//import java.util.Map.Entry;
-//
-//import org.apache.hadoop.mapreduce.v2.api.records.JobId;
-//import org.apache.hadoop.mapreduce.v2.api.records.TaskId;
-//import org.apache.hadoop.mapreduce.v2.app2.AppContext;
-//import org.apache.hadoop.mapreduce.v2.app2.MockJobs;
-//import org.apache.hadoop.mapreduce.v2.app2.job.Job;
-//import org.apache.hadoop.mapreduce.v2.app2.job.Task;
-//import org.apache.hadoop.mapreduce.v2.app2.job.TaskAttempt;
-//import org.apache.hadoop.mapreduce.v2.util.MRApps;
-//import org.apache.hadoop.yarn.Clock;
-//import org.apache.hadoop.yarn.ClusterInfo;
-//import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
-//import org.apache.hadoop.yarn.api.records.ApplicationId;
-//import org.apache.hadoop.yarn.event.EventHandler;
-//import org.apache.hadoop.yarn.webapp.WebApps;
-//import org.apache.hadoop.yarn.webapp.test.WebAppTests;
-//import org.junit.Test;
-//
-//import com.google.inject.Injector;
-//
-//public class TestAMWebApp {
-//
-//  static class TestAppContext implements AppContext {
-//    final ApplicationAttemptId appAttemptID;
-//    final ApplicationId appID;
-//    final String user = MockJobs.newUserName();
-//    final Map<JobId, Job> jobs;
-//    final long startTime = System.currentTimeMillis();
-//
-//    TestAppContext(int appid, int numJobs, int numTasks, int numAttempts) {
-//      appID = MockJobs.newAppID(appid);
-//      appAttemptID = MockJobs.newAppAttemptID(appID, 0);
-//      jobs = MockJobs.newJobs(appID, numJobs, numTasks, numAttempts);
-//    }
-//
-//    TestAppContext() {
-//      this(0, 1, 1, 1);
-//    }
-//
-//    @Override
-//    public ApplicationAttemptId getApplicationAttemptId() {
-//      return appAttemptID;
-//    }
-//
-//    @Override
-//    public ApplicationId getApplicationID() {
-//      return appID;
-//    }
-//
-//    @Override
-//    public CharSequence getUser() {
-//      return user;
-//    }
-//
-//    @Override
-//    public Job getJob(JobId jobID) {
-//      return jobs.get(jobID);
-//    }
-//
-//    @Override
-//    public Map<JobId, Job> getAllJobs() {
-//      return jobs; // OK
-//    }
-//
-//    @SuppressWarnings("rawtypes")
-//    @Override
-//    public EventHandler getEventHandler() {
-//      return null;
-//    }
-//
-//    @Override
-//    public Clock getClock() {
-//      return null;
-//    }
-//
-//    @Override
-//    public String getApplicationName() {
-//      return "TestApp";
-//    }
-//
-//    @Override
-//    public long getStartTime() {
-//      return startTime;
-//    }
-//
-//    @Override
-//    public ClusterInfo getClusterInfo() {
-//      return null;
-//    }
-//  }
-//
-//  @Test public void testAppControllerIndex() {
-//    TestAppContext ctx = new TestAppContext();
-//    Injector injector = WebAppTests.createMockInjector(AppContext.class, ctx);
-//    AppController controller = injector.getInstance(AppController.class);
-//    controller.index();
-//    assertEquals(ctx.appID.toString(), controller.get(APP_ID,""));
-//  }
-//
-//  @Test public void testAppView() {
-//    WebAppTests.testPage(AppView.class, AppContext.class, new TestAppContext());
-//  }
-//
-//
-//  
-//  @Test public void testJobView() {
-//    AppContext appContext = new TestAppContext();
-//    Map<String, String> params = getJobParams(appContext);
-//    WebAppTests.testPage(JobPage.class, AppContext.class, appContext, params);
-//  }
-//
-//  @Test public void testTasksView() {
-//    AppContext appContext = new TestAppContext();
-//    Map<String, String> params = getTaskParams(appContext);
-//    WebAppTests.testPage(TasksPage.class, AppContext.class, appContext, params);
-//  }
-//
-//  @Test public void testTaskView() {
-//    AppContext appContext = new TestAppContext();
-//    Map<String, String> params = getTaskParams(appContext);
-//    WebAppTests.testPage(TaskPage.class, AppContext.class, appContext, params);
-//  }
-//
-//  public static Map<String, String> getJobParams(AppContext appContext) {
-//    JobId jobId = appContext.getAllJobs().entrySet().iterator().next().getKey();
-//    Map<String, String> params = new HashMap<String, String>();
-//    params.put(AMParams.JOB_ID, MRApps.toString(jobId));
-//    return params;
-//  }
-//  
-//  public static Map<String, String> getTaskParams(AppContext appContext) {
-//    JobId jobId = appContext.getAllJobs().entrySet().iterator().next().getKey();
-//    Entry<TaskId, Task> e = appContext.getJob(jobId).getTasks().entrySet().iterator().next();
-//    e.getValue().getType();
-//    Map<String, String> params = new HashMap<String, String>();
-//    params.put(AMParams.JOB_ID, MRApps.toString(jobId));
-//    params.put(AMParams.TASK_ID, MRApps.toString(e.getKey()));
-//    params.put(AMParams.TASK_TYPE, MRApps.taskSymbol(e.getValue().getType()));
-//    return params;
-//  }
-//
-//  @Test public void testConfView() {
-//    WebAppTests.testPage(JobConfPage.class, AppContext.class,
-//                         new TestAppContext());
-//  }
-//
-//  @Test public void testCountersView() {
-//    AppContext appContext = new TestAppContext();
-//    Map<String, String> params = getJobParams(appContext);
-//    WebAppTests.testPage(CountersPage.class, AppContext.class,
-//                         appContext, params);
-//  }
-//  
-//  @Test public void testSingleCounterView() {
-//    AppContext appContext = new TestAppContext();
-//    Map<String, String> params = getJobParams(appContext);
-//    params.put(AMParams.COUNTER_GROUP, 
-//        "org.apache.hadoop.mapreduce.FileSystemCounter");
-//    params.put(AMParams.COUNTER_NAME, "HDFS_WRITE_OPS");
-//    WebAppTests.testPage(SingleCounterPage.class, AppContext.class,
-//                         appContext, params);
-//  }
-//
-//  @Test public void testTaskCountersView() {
-//    AppContext appContext = new TestAppContext();
-//    Map<String, String> params = getTaskParams(appContext);
-//    WebAppTests.testPage(CountersPage.class, AppContext.class,
-//                         appContext, params);
-//  }
-//
-//  @Test public void testSingleTaskCounterView() {
-//    AppContext appContext = new TestAppContext(0, 1, 1, 2);
-//    Map<String, String> params = getTaskParams(appContext);
-//    params.put(AMParams.COUNTER_GROUP, 
-//        "org.apache.hadoop.mapreduce.FileSystemCounter");
-//    params.put(AMParams.COUNTER_NAME, "HDFS_WRITE_OPS");
-//    
-//    // remove counters from one task attempt
-//    // to test handling of missing counters
-//    TaskId taskID = MRApps.toTaskID(params.get(AMParams.TASK_ID));
-//    Job job = appContext.getJob(taskID.getJobId());
-//    Task task = job.getTask(taskID);
-//    TaskAttempt attempt = task.getAttempts().values().iterator().next();
-//    attempt.getReport().setCounters(null);
-//    
-//    WebAppTests.testPage(SingleCounterPage.class, AppContext.class,
-//                         appContext, params);
-//  }
-//  
-//  public static void main(String[] args) {
-//    WebApps.$for("yarn", AppContext.class, new TestAppContext(0, 8, 88, 4)).
-//        at(58888).inDevMode().start(new AMWebApp()).joinThread();
-//  }
-//}
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.mapreduce.v2.app2.webapp;
+
+import static org.apache.hadoop.mapreduce.v2.app2.webapp.AMParams.APP_ID;
+import static org.junit.Assert.assertEquals;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.hadoop.mapreduce.v2.api.records.JobId;
+import org.apache.hadoop.mapreduce.v2.api.records.TaskId;
+import org.apache.hadoop.mapreduce.v2.app2.AppContext;
+import org.apache.hadoop.mapreduce.v2.app2.MockJobs;
+import org.apache.hadoop.mapreduce.v2.app2.job.Job;
+import org.apache.hadoop.mapreduce.v2.app2.job.Task;
+import org.apache.hadoop.mapreduce.v2.app2.job.TaskAttempt;
+import org.apache.hadoop.mapreduce.v2.util.MRApps;
+import org.apache.hadoop.yarn.Clock;
+import org.apache.hadoop.yarn.ClusterInfo;
+import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.event.EventHandler;
+import org.apache.hadoop.yarn.webapp.WebApps;
+import org.apache.hadoop.yarn.webapp.test.WebAppTests;
+import org.junit.Test;
+
+import com.google.inject.Injector;
+
+public class TestAMWebApp {
+
+  static class TestAppContext implements AppContext {
+    final ApplicationAttemptId appAttemptID;
+    final ApplicationId appID;
+    final String user = MockJobs.newUserName();
+    final Map<JobId, Job> jobs;
+    final long startTime = System.currentTimeMillis();
+
+    TestAppContext(int appid, int numJobs, int numTasks, int numAttempts) {
+      appID = MockJobs.newAppID(appid);
+      appAttemptID = MockJobs.newAppAttemptID(appID, 0);
+      jobs = MockJobs.newJobs(appID, numJobs, numTasks, numAttempts);
+    }
+
+    TestAppContext() {
+      this(0, 1, 1, 1);
+    }
+
+    @Override
+    public ApplicationAttemptId getApplicationAttemptId() {
+      return appAttemptID;
+    }
+
+    @Override
+    public ApplicationId getApplicationID() {
+      return appID;
+    }
+
+    @Override
+    public CharSequence getUser() {
+      return user;
+    }
+
+    @Override
+    public Job getJob(JobId jobID) {
+      return jobs.get(jobID);
+    }
+
+    @Override
+    public Map<JobId, Job> getAllJobs() {
+      return jobs; // OK
+    }
+
+    @SuppressWarnings("rawtypes")
+    @Override
+    public EventHandler getEventHandler() {
+      return null;
+    }
+
+    @Override
+    public Clock getClock() {
+      return null;
+    }
+
+    @Override
+    public String getApplicationName() {
+      return "TestApp";
+    }
+
+    @Override
+    public long getStartTime() {
+      return startTime;
+    }
+
+    @Override
+    public ClusterInfo getClusterInfo() {
+      return null;
+    }
+  }
+
+  @Test public void testAppControllerIndex() {
+    TestAppContext ctx = new TestAppContext();
+    Injector injector = WebAppTests.createMockInjector(AppContext.class, ctx);
+    AppController controller = injector.getInstance(AppController.class);
+    controller.index();
+    assertEquals(ctx.appID.toString(), controller.get(APP_ID,""));
+  }
+
+  @Test public void testAppView() {
+    WebAppTests.testPage(AppView.class, AppContext.class, new TestAppContext());
+  }
+
+
+  
+  @Test public void testJobView() {
+    AppContext appContext = new TestAppContext();
+    Map<String, String> params = getJobParams(appContext);
+    WebAppTests.testPage(JobPage.class, AppContext.class, appContext, params);
+  }
+
+  @Test public void testTasksView() {
+    AppContext appContext = new TestAppContext();
+    Map<String, String> params = getTaskParams(appContext);
+    WebAppTests.testPage(TasksPage.class, AppContext.class, appContext, params);
+  }
+
+  @Test public void testTaskView() {
+    AppContext appContext = new TestAppContext();
+    Map<String, String> params = getTaskParams(appContext);
+    WebAppTests.testPage(TaskPage.class, AppContext.class, appContext, params);
+  }
+
+  public static Map<String, String> getJobParams(AppContext appContext) {
+    JobId jobId = appContext.getAllJobs().entrySet().iterator().next().getKey();
+    Map<String, String> params = new HashMap<String, String>();
+    params.put(AMParams.JOB_ID, MRApps.toString(jobId));
+    return params;
+  }
+  
+  public static Map<String, String> getTaskParams(AppContext appContext) {
+    JobId jobId = appContext.getAllJobs().entrySet().iterator().next().getKey();
+    Entry<TaskId, Task> e = appContext.getJob(jobId).getTasks().entrySet().iterator().next();
+    e.getValue().getType();
+    Map<String, String> params = new HashMap<String, String>();
+    params.put(AMParams.JOB_ID, MRApps.toString(jobId));
+    params.put(AMParams.TASK_ID, MRApps.toString(e.getKey()));
+    params.put(AMParams.TASK_TYPE, MRApps.taskSymbol(e.getValue().getType()));
+    return params;
+  }
+
+  @Test public void testConfView() {
+    WebAppTests.testPage(JobConfPage.class, AppContext.class,
+                         new TestAppContext());
+  }
+
+  @Test public void testCountersView() {
+    AppContext appContext = new TestAppContext();
+    Map<String, String> params = getJobParams(appContext);
+    WebAppTests.testPage(CountersPage.class, AppContext.class,
+                         appContext, params);
+  }
+  
+  @Test public void testSingleCounterView() {
+    AppContext appContext = new TestAppContext();
+    Map<String, String> params = getJobParams(appContext);
+    params.put(AMParams.COUNTER_GROUP, 
+        "org.apache.hadoop.mapreduce.FileSystemCounter");
+    params.put(AMParams.COUNTER_NAME, "HDFS_WRITE_OPS");
+    WebAppTests.testPage(SingleCounterPage.class, AppContext.class,
+                         appContext, params);
+  }
+
+  @Test public void testTaskCountersView() {
+    AppContext appContext = new TestAppContext();
+    Map<String, String> params = getTaskParams(appContext);
+    WebAppTests.testPage(CountersPage.class, AppContext.class,
+                         appContext, params);
+  }
+
+  @Test public void testSingleTaskCounterView() {
+    AppContext appContext = new TestAppContext(0, 1, 1, 2);
+    Map<String, String> params = getTaskParams(appContext);
+    params.put(AMParams.COUNTER_GROUP, 
+        "org.apache.hadoop.mapreduce.FileSystemCounter");
+    params.put(AMParams.COUNTER_NAME, "HDFS_WRITE_OPS");
+    
+    // remove counters from one task attempt
+    // to test handling of missing counters
+    TaskId taskID = MRApps.toTaskID(params.get(AMParams.TASK_ID));
+    Job job = appContext.getJob(taskID.getJobId());
+    Task task = job.getTask(taskID);
+    TaskAttempt attempt = task.getAttempts().values().iterator().next();
+    attempt.getReport().setCounters(null);
+    
+    WebAppTests.testPage(SingleCounterPage.class, AppContext.class,
+                         appContext, params);
+  }
+  
+  public static void main(String[] args) {
+    WebApps.$for("yarn", AppContext.class, new TestAppContext(0, 8, 88, 4)).
+        at(58888).inDevMode().start(new AMWebApp()).joinThread();
+  }
+}

Modified: hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebServices.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebServices.java?rev=1400227&r1=1400226&r2=1400227&view=diff
==============================================================================
--- hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebServices.java (original)
+++ hadoop/common/branches/MR-3902/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app2/src/test/java/org/apache/hadoop/mapreduce/v2/app2/webapp/TestAMWebServices.java Fri Oct 19 18:59:06 2012
@@ -1,365 +1,365 @@
-///**
-// * Licensed to the Apache Software Foundation (ASF) under one
-// * or more contributor license agreements.  See the NOTICE file
-// * distributed with this work for additional information
-// * regarding copyright ownership.  The ASF licenses this file
-// * to you under the Apache License, Version 2.0 (the
-// * "License"); you may not use this file except in compliance
-// * with the License.  You may obtain a copy of the License at
-// *
-// *     http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.hadoop.mapreduce.v2.app2.webapp;
-//
-//import static org.junit.Assert.assertEquals;
-//import static org.junit.Assert.assertTrue;
-//import static org.junit.Assert.fail;
-//
-//import java.io.StringReader;
-//import java.util.Map;
-//
-//import javax.ws.rs.core.MediaType;
-//import javax.xml.parsers.DocumentBuilder;
-//import javax.xml.parsers.DocumentBuilderFactory;
-//
-//import org.apache.hadoop.conf.Configuration;
-//import org.apache.hadoop.mapreduce.v2.api.records.JobId;
-//import org.apache.hadoop.mapreduce.v2.app2.AppContext;
-//import org.apache.hadoop.mapreduce.v2.app2.MockJobs;
-//import org.apache.hadoop.mapreduce.v2.app2.job.Job;
-//import org.apache.hadoop.yarn.Clock;
-//import org.apache.hadoop.yarn.ClusterInfo;
-//import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
-//import org.apache.hadoop.yarn.api.records.ApplicationId;
-//import org.apache.hadoop.yarn.event.EventHandler;
-//import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
-//import org.apache.hadoop.yarn.webapp.WebServicesTestUtils;
-//import org.codehaus.jettison.json.JSONException;
-//import org.codehaus.jettison.json.JSONObject;
-//import org.junit.Before;
-//import org.junit.Test;
-//import org.w3c.dom.Document;
-//import org.w3c.dom.Element;
-//import org.w3c.dom.NodeList;
-//import org.xml.sax.InputSource;
-//
-//import com.google.inject.Guice;
-//import com.google.inject.Injector;
-//import com.google.inject.servlet.GuiceServletContextListener;
-//import com.google.inject.servlet.ServletModule;
-//import com.sun.jersey.api.client.ClientResponse;
-//import com.sun.jersey.api.client.ClientResponse.Status;
-//import com.sun.jersey.api.client.UniformInterfaceException;
-//import com.sun.jersey.api.client.WebResource;
-//import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
-//import com.sun.jersey.test.framework.JerseyTest;
-//import com.sun.jersey.test.framework.WebAppDescriptor;
-//
-///**
-// * Test the MapReduce Application master info web services api's. Also test
-// * non-existent urls.
-// *
-// *  /ws/v1/mapreduce
-// *  /ws/v1/mapreduce/info
-// */
-//public class TestAMWebServices extends JerseyTest {
-//
-//  private static Configuration conf = new Configuration();
-//  private static TestAppContext appContext;
-//
-//  static class TestAppContext implements AppContext {
-//    final ApplicationAttemptId appAttemptID;
-//    final ApplicationId appID;
-//    final String user = MockJobs.newUserName();
-//    final Map<JobId, Job> jobs;
-//    final long startTime = System.currentTimeMillis();
-//
-//    TestAppContext(int appid, int numJobs, int numTasks, int numAttempts) {
-//      appID = MockJobs.newAppID(appid);
-//      appAttemptID = MockJobs.newAppAttemptID(appID, 0);
-//      jobs = MockJobs.newJobs(appID, numJobs, numTasks, numAttempts);
-//    }
-//
-//    TestAppContext() {
-//      this(0, 1, 1, 1);
-//    }
-//
-//    @Override
-//    public ApplicationAttemptId getApplicationAttemptId() {
-//      return appAttemptID;
-//    }
-//
-//    @Override
-//    public ApplicationId getApplicationID() {
-//      return appID;
-//    }
-//
-//    @Override
-//    public CharSequence getUser() {
-//      return user;
-//    }
-//
-//    @Override
-//    public Job getJob(JobId jobID) {
-//      return jobs.get(jobID);
-//    }
-//
-//    @Override
-//    public Map<JobId, Job> getAllJobs() {
-//      return jobs; // OK
-//    }
-//
-//    @SuppressWarnings("rawtypes")
-//    @Override
-//    public EventHandler getEventHandler() {
-//      return null;
-//    }
-//
-//    @Override
-//    public Clock getClock() {
-//      return null;
-//    }
-//
-//    @Override
-//    public String getApplicationName() {
-//      return "TestApp";
-//    }
-//
-//    @Override
-//    public long getStartTime() {
-//      return startTime;
-//    }
-//
-//    @Override
-//    public ClusterInfo getClusterInfo() {
-//      return null;
-//    }
-//  }
-//
-//  private Injector injector = Guice.createInjector(new ServletModule() {
-//    @Override
-//    protected void configureServlets() {
-//
-//      appContext = new TestAppContext();
-//      bind(JAXBContextResolver.class);
-//      bind(AMWebServices.class);
-//      bind(GenericExceptionHandler.class);
-//      bind(AppContext.class).toInstance(appContext);
-//      bind(Configuration.class).toInstance(conf);
-//
-//      serve("/*").with(GuiceContainer.class);
-//    }
-//  });
-//
-//  public class GuiceServletConfig extends GuiceServletContextListener {
-//
-//    @Override
-//    protected Injector getInjector() {
-//      return injector;
-//    }
-//  }
-//
-//  @Before
-//  @Override
-//  public void setUp() throws Exception {
-//    super.setUp();
-//  }
-//
-//  public TestAMWebServices() {
-//    super(new WebAppDescriptor.Builder(
-//        "org.apache.hadoop.mapreduce.v2.app2.webapp")
-//        .contextListenerClass(GuiceServletConfig.class)
-//        .filterClass(com.google.inject.servlet.GuiceFilter.class)
-//        .contextPath("jersey-guice-filter").servletPath("/").build());
-//  }
-//
-//  @Test
-//  public void testAM() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
-//        .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
-//    JSONObject json = response.getEntity(JSONObject.class);
-//    assertEquals("incorrect number of elements", 1, json.length());
-//    verifyAMInfo(json.getJSONObject("info"), appContext);
-//  }
-//
-//  @Test
-//  public void testAMSlash() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce/")
-//        .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
-//    JSONObject json = response.getEntity(JSONObject.class);
-//    assertEquals("incorrect number of elements", 1, json.length());
-//    verifyAMInfo(json.getJSONObject("info"), appContext);
-//  }
-//
-//  @Test
-//  public void testAMDefault() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce/")
-//        .get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
-//    JSONObject json = response.getEntity(JSONObject.class);
-//    assertEquals("incorrect number of elements", 1, json.length());
-//    verifyAMInfo(json.getJSONObject("info"), appContext);
-//  }
-//
-//  @Test
-//  public void testAMXML() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
-//        .accept(MediaType.APPLICATION_XML).get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_XML_TYPE, response.getType());
-//    String xml = response.getEntity(String.class);
-//    verifyAMInfoXML(xml, appContext);
-//  }
-//
-//  @Test
-//  public void testInfo() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
-//        .path("info").accept(MediaType.APPLICATION_JSON)
-//        .get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
-//    JSONObject json = response.getEntity(JSONObject.class);
-//    assertEquals("incorrect number of elements", 1, json.length());
-//    verifyAMInfo(json.getJSONObject("info"), appContext);
-//  }
-//
-//  @Test
-//  public void testInfoSlash() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
-//        .path("info/").accept(MediaType.APPLICATION_JSON)
-//        .get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
-//    JSONObject json = response.getEntity(JSONObject.class);
-//    assertEquals("incorrect number of elements", 1, json.length());
-//    verifyAMInfo(json.getJSONObject("info"), appContext);
-//  }
-//
-//  @Test
-//  public void testInfoDefault() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
-//        .path("info/").get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
-//    JSONObject json = response.getEntity(JSONObject.class);
-//    assertEquals("incorrect number of elements", 1, json.length());
-//    verifyAMInfo(json.getJSONObject("info"), appContext);
-//  }
-//
-//  @Test
-//  public void testInfoXML() throws JSONException, Exception {
-//    WebResource r = resource();
-//    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
-//        .path("info/").accept(MediaType.APPLICATION_XML)
-//        .get(ClientResponse.class);
-//    assertEquals(MediaType.APPLICATION_XML_TYPE, response.getType());
-//    String xml = response.getEntity(String.class);
-//    verifyAMInfoXML(xml, appContext);
-//  }
-//
-//  @Test
-//  public void testInvalidUri() throws JSONException, Exception {
-//    WebResource r = resource();
-//    String responseStr = "";
-//    try {
-//      responseStr = r.path("ws").path("v1").path("mapreduce").path("bogus")
-//          .accept(MediaType.APPLICATION_JSON).get(String.class);
-//      fail("should have thrown exception on invalid uri");
-//    } catch (UniformInterfaceException ue) {
-//      ClientResponse response = ue.getResponse();
-//      assertEquals(Status.NOT_FOUND, response.getClientResponseStatus());
-//      WebServicesTestUtils.checkStringMatch(
-//          "error string exists and shouldn't", "", responseStr);
-//    }
-//  }
-//
-//  @Test
-//  public void testInvalidUri2() throws JSONException, Exception {
-//    WebResource r = resource();
-//    String responseStr = "";
-//    try {
-//      responseStr = r.path("ws").path("v1").path("invalid")
-//          .accept(MediaType.APPLICATION_JSON).get(String.class);
-//      fail("should have thrown exception on invalid uri");
-//    } catch (UniformInterfaceException ue) {
-//      ClientResponse response = ue.getResponse();
-//      assertEquals(Status.NOT_FOUND, response.getClientResponseStatus());
-//      WebServicesTestUtils.checkStringMatch(
-//          "error string exists and shouldn't", "", responseStr);
-//    }
-//  }
-//
-//  @Test
-//  public void testInvalidAccept() throws JSONException, Exception {
-//    WebResource r = resource();
-//    String responseStr = "";
-//    try {
-//      responseStr = r.path("ws").path("v1").path("mapreduce")
-//          .accept(MediaType.TEXT_PLAIN).get(String.class);
-//      fail("should have thrown exception on invalid uri");
-//    } catch (UniformInterfaceException ue) {
-//      ClientResponse response = ue.getResponse();
-//      assertEquals(Status.INTERNAL_SERVER_ERROR,
-//          response.getClientResponseStatus());
-//      WebServicesTestUtils.checkStringMatch(
-//          "error string exists and shouldn't", "", responseStr);
-//    }
-//  }
-//
-//  public void verifyAMInfo(JSONObject info, TestAppContext ctx)
-//      throws JSONException {
-//    assertEquals("incorrect number of elements", 5, info.length());
-//
-//    verifyAMInfoGeneric(ctx, info.getString("appId"), info.getString("user"),
-//        info.getString("name"), info.getLong("startedOn"),
-//        info.getLong("elapsedTime"));
-//  }
-//
-//  public void verifyAMInfoXML(String xml, TestAppContext ctx)
-//      throws JSONException, Exception {
-//    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-//    DocumentBuilder db = dbf.newDocumentBuilder();
-//    InputSource is = new InputSource();
-//    is.setCharacterStream(new StringReader(xml));
-//    Document dom = db.parse(is);
-//    NodeList nodes = dom.getElementsByTagName("info");
-//    assertEquals("incorrect number of elements", 1, nodes.getLength());
-//
-//    for (int i = 0; i < nodes.getLength(); i++) {
-//      Element element = (Element) nodes.item(i);
-//      verifyAMInfoGeneric(ctx,
-//          WebServicesTestUtils.getXmlString(element, "appId"),
-//          WebServicesTestUtils.getXmlString(element, "user"),
-//          WebServicesTestUtils.getXmlString(element, "name"),
-//          WebServicesTestUtils.getXmlLong(element, "startedOn"),
-//          WebServicesTestUtils.getXmlLong(element, "elapsedTime"));
-//    }
-//  }
-//
-//  public void verifyAMInfoGeneric(TestAppContext ctx, String id, String user,
-//      String name, long startedOn, long elapsedTime) {
-//
-//    WebServicesTestUtils.checkStringMatch("id", ctx.getApplicationID()
-//        .toString(), id);
-//    WebServicesTestUtils.checkStringMatch("user", ctx.getUser().toString(),
-//        user);
-//    WebServicesTestUtils.checkStringMatch("name", ctx.getApplicationName(),
-//        name);
-//
-//    assertEquals("startedOn incorrect", ctx.getStartTime(), startedOn);
-//    assertTrue("elapsedTime not greater then 0", (elapsedTime > 0));
-//
-//  }
-//}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.mapreduce.v2.app2.webapp;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.StringReader;
+import java.util.Map;
+
+import javax.ws.rs.core.MediaType;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.mapreduce.v2.api.records.JobId;
+import org.apache.hadoop.mapreduce.v2.app2.AppContext;
+import org.apache.hadoop.mapreduce.v2.app2.MockJobs;
+import org.apache.hadoop.mapreduce.v2.app2.job.Job;
+import org.apache.hadoop.yarn.Clock;
+import org.apache.hadoop.yarn.ClusterInfo;
+import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.event.EventHandler;
+import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
+import org.apache.hadoop.yarn.webapp.WebServicesTestUtils;
+import org.codehaus.jettison.json.JSONException;
+import org.codehaus.jettison.json.JSONObject;
+import org.junit.Before;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.servlet.GuiceServletContextListener;
+import com.google.inject.servlet.ServletModule;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.ClientResponse.Status;
+import com.sun.jersey.api.client.UniformInterfaceException;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
+import com.sun.jersey.test.framework.JerseyTest;
+import com.sun.jersey.test.framework.WebAppDescriptor;
+
+/**
+ * Test the MapReduce Application master info web services api's. Also test
+ * non-existent urls.
+ *
+ *  /ws/v1/mapreduce
+ *  /ws/v1/mapreduce/info
+ */
+public class TestAMWebServices extends JerseyTest {
+
+  private static Configuration conf = new Configuration();
+  private static TestAppContext appContext;
+
+  static class TestAppContext implements AppContext {
+    final ApplicationAttemptId appAttemptID;
+    final ApplicationId appID;
+    final String user = MockJobs.newUserName();
+    final Map<JobId, Job> jobs;
+    final long startTime = System.currentTimeMillis();
+
+    TestAppContext(int appid, int numJobs, int numTasks, int numAttempts) {
+      appID = MockJobs.newAppID(appid);
+      appAttemptID = MockJobs.newAppAttemptID(appID, 0);
+      jobs = MockJobs.newJobs(appID, numJobs, numTasks, numAttempts);
+    }
+
+    TestAppContext() {
+      this(0, 1, 1, 1);
+    }
+
+    @Override
+    public ApplicationAttemptId getApplicationAttemptId() {
+      return appAttemptID;
+    }
+
+    @Override
+    public ApplicationId getApplicationID() {
+      return appID;
+    }
+
+    @Override
+    public CharSequence getUser() {
+      return user;
+    }
+
+    @Override
+    public Job getJob(JobId jobID) {
+      return jobs.get(jobID);
+    }
+
+    @Override
+    public Map<JobId, Job> getAllJobs() {
+      return jobs; // OK
+    }
+
+    @SuppressWarnings("rawtypes")
+    @Override
+    public EventHandler getEventHandler() {
+      return null;
+    }
+
+    @Override
+    public Clock getClock() {
+      return null;
+    }
+
+    @Override
+    public String getApplicationName() {
+      return "TestApp";
+    }
+
+    @Override
+    public long getStartTime() {
+      return startTime;
+    }
+
+    @Override
+    public ClusterInfo getClusterInfo() {
+      return null;
+    }
+  }
+
+  private Injector injector = Guice.createInjector(new ServletModule() {
+    @Override
+    protected void configureServlets() {
+
+      appContext = new TestAppContext();
+      bind(JAXBContextResolver.class);
+      bind(AMWebServices.class);
+      bind(GenericExceptionHandler.class);
+      bind(AppContext.class).toInstance(appContext);
+      bind(Configuration.class).toInstance(conf);
+
+      serve("/*").with(GuiceContainer.class);
+    }
+  });
+
+  public class GuiceServletConfig extends GuiceServletContextListener {
+
+    @Override
+    protected Injector getInjector() {
+      return injector;
+    }
+  }
+
+  @Before
+  @Override
+  public void setUp() throws Exception {
+    super.setUp();
+  }
+
+  public TestAMWebServices() {
+    super(new WebAppDescriptor.Builder(
+        "org.apache.hadoop.mapreduce.v2.app2.webapp")
+        .contextListenerClass(GuiceServletConfig.class)
+        .filterClass(com.google.inject.servlet.GuiceFilter.class)
+        .contextPath("jersey-guice-filter").servletPath("/").build());
+  }
+
+  @Test
+  public void testAM() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
+        .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
+    JSONObject json = response.getEntity(JSONObject.class);
+    assertEquals("incorrect number of elements", 1, json.length());
+    verifyAMInfo(json.getJSONObject("info"), appContext);
+  }
+
+  @Test
+  public void testAMSlash() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce/")
+        .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
+    JSONObject json = response.getEntity(JSONObject.class);
+    assertEquals("incorrect number of elements", 1, json.length());
+    verifyAMInfo(json.getJSONObject("info"), appContext);
+  }
+
+  @Test
+  public void testAMDefault() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce/")
+        .get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
+    JSONObject json = response.getEntity(JSONObject.class);
+    assertEquals("incorrect number of elements", 1, json.length());
+    verifyAMInfo(json.getJSONObject("info"), appContext);
+  }
+
+  @Test
+  public void testAMXML() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
+        .accept(MediaType.APPLICATION_XML).get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_XML_TYPE, response.getType());
+    String xml = response.getEntity(String.class);
+    verifyAMInfoXML(xml, appContext);
+  }
+
+  @Test
+  public void testInfo() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
+        .path("info").accept(MediaType.APPLICATION_JSON)
+        .get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
+    JSONObject json = response.getEntity(JSONObject.class);
+    assertEquals("incorrect number of elements", 1, json.length());
+    verifyAMInfo(json.getJSONObject("info"), appContext);
+  }
+
+  @Test
+  public void testInfoSlash() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
+        .path("info/").accept(MediaType.APPLICATION_JSON)
+        .get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
+    JSONObject json = response.getEntity(JSONObject.class);
+    assertEquals("incorrect number of elements", 1, json.length());
+    verifyAMInfo(json.getJSONObject("info"), appContext);
+  }
+
+  @Test
+  public void testInfoDefault() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
+        .path("info/").get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
+    JSONObject json = response.getEntity(JSONObject.class);
+    assertEquals("incorrect number of elements", 1, json.length());
+    verifyAMInfo(json.getJSONObject("info"), appContext);
+  }
+
+  @Test
+  public void testInfoXML() throws JSONException, Exception {
+    WebResource r = resource();
+    ClientResponse response = r.path("ws").path("v1").path("mapreduce")
+        .path("info/").accept(MediaType.APPLICATION_XML)
+        .get(ClientResponse.class);
+    assertEquals(MediaType.APPLICATION_XML_TYPE, response.getType());
+    String xml = response.getEntity(String.class);
+    verifyAMInfoXML(xml, appContext);
+  }
+
+  @Test
+  public void testInvalidUri() throws JSONException, Exception {
+    WebResource r = resource();
+    String responseStr = "";
+    try {
+      responseStr = r.path("ws").path("v1").path("mapreduce").path("bogus")
+          .accept(MediaType.APPLICATION_JSON).get(String.class);
+      fail("should have thrown exception on invalid uri");
+    } catch (UniformInterfaceException ue) {
+      ClientResponse response = ue.getResponse();
+      assertEquals(Status.NOT_FOUND, response.getClientResponseStatus());
+      WebServicesTestUtils.checkStringMatch(
+          "error string exists and shouldn't", "", responseStr);
+    }
+  }
+
+  @Test
+  public void testInvalidUri2() throws JSONException, Exception {
+    WebResource r = resource();
+    String responseStr = "";
+    try {
+      responseStr = r.path("ws").path("v1").path("invalid")
+          .accept(MediaType.APPLICATION_JSON).get(String.class);
+      fail("should have thrown exception on invalid uri");
+    } catch (UniformInterfaceException ue) {
+      ClientResponse response = ue.getResponse();
+      assertEquals(Status.NOT_FOUND, response.getClientResponseStatus());
+      WebServicesTestUtils.checkStringMatch(
+          "error string exists and shouldn't", "", responseStr);
+    }
+  }
+
+  @Test
+  public void testInvalidAccept() throws JSONException, Exception {
+    WebResource r = resource();
+    String responseStr = "";
+    try {
+      responseStr = r.path("ws").path("v1").path("mapreduce")
+          .accept(MediaType.TEXT_PLAIN).get(String.class);
+      fail("should have thrown exception on invalid uri");
+    } catch (UniformInterfaceException ue) {
+      ClientResponse response = ue.getResponse();
+      assertEquals(Status.INTERNAL_SERVER_ERROR,
+          response.getClientResponseStatus());
+      WebServicesTestUtils.checkStringMatch(
+          "error string exists and shouldn't", "", responseStr);
+    }
+  }
+
+  public void verifyAMInfo(JSONObject info, TestAppContext ctx)
+      throws JSONException {
+    assertEquals("incorrect number of elements", 5, info.length());
+
+    verifyAMInfoGeneric(ctx, info.getString("appId"), info.getString("user"),
+        info.getString("name"), info.getLong("startedOn"),
+        info.getLong("elapsedTime"));
+  }
+
+  public void verifyAMInfoXML(String xml, TestAppContext ctx)
+      throws JSONException, Exception {
+    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+    DocumentBuilder db = dbf.newDocumentBuilder();
+    InputSource is = new InputSource();
+    is.setCharacterStream(new StringReader(xml));
+    Document dom = db.parse(is);
+    NodeList nodes = dom.getElementsByTagName("info");
+    assertEquals("incorrect number of elements", 1, nodes.getLength());
+
+    for (int i = 0; i < nodes.getLength(); i++) {
+      Element element = (Element) nodes.item(i);
+      verifyAMInfoGeneric(ctx,
+          WebServicesTestUtils.getXmlString(element, "appId"),
+          WebServicesTestUtils.getXmlString(element, "user"),
+          WebServicesTestUtils.getXmlString(element, "name"),
+          WebServicesTestUtils.getXmlLong(element, "startedOn"),
+          WebServicesTestUtils.getXmlLong(element, "elapsedTime"));
+    }
+  }
+
+  public void verifyAMInfoGeneric(TestAppContext ctx, String id, String user,
+      String name, long startedOn, long elapsedTime) {
+
+    WebServicesTestUtils.checkStringMatch("id", ctx.getApplicationID()
+        .toString(), id);
+    WebServicesTestUtils.checkStringMatch("user", ctx.getUser().toString(),
+        user);
+    WebServicesTestUtils.checkStringMatch("name", ctx.getApplicationName(),
+        name);
+
+    assertEquals("startedOn incorrect", ctx.getStartTime(), startedOn);
+    assertTrue("elapsedTime not greater then 0", (elapsedTime > 0));
+
+  }
+}