/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesFairScheduler.java
Java | 120 lines | 89 code | 14 blank | 17 comment | 0 complexity | 92c4dc0ac2b63602e24958cd1da94dd1 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause
- /**
- * 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.yarn.server.resourcemanager.webapp;
- import static org.junit.Assert.assertEquals;
- import javax.ws.rs.core.MediaType;
- import org.apache.hadoop.yarn.conf.YarnConfiguration;
- import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
- import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
- import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
- import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
- import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler;
- import org.apache.hadoop.yarn.server.resourcemanager.security.QueueACLsManager;
- import org.apache.hadoop.yarn.server.security.ApplicationACLsManager;
- import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
- import org.codehaus.jettison.json.JSONException;
- import org.codehaus.jettison.json.JSONObject;
- import org.junit.Test;
- 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.WebResource;
- import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
- import com.sun.jersey.test.framework.JerseyTest;
- import com.sun.jersey.test.framework.WebAppDescriptor;
- public class TestRMWebServicesFairScheduler extends JerseyTest {
- private static MockRM rm;
- private YarnConfiguration conf;
-
- private Injector injector = Guice.createInjector(new ServletModule() {
- @Override
- protected void configureServlets() {
- bind(JAXBContextResolver.class);
- bind(RMWebServices.class);
- bind(GenericExceptionHandler.class);
- conf = new YarnConfiguration();
- conf.setClass(YarnConfiguration.RM_SCHEDULER, FairScheduler.class,
- ResourceScheduler.class);
- rm = new MockRM(conf);
- bind(ResourceManager.class).toInstance(rm);
- bind(RMContext.class).toInstance(rm.getRMContext());
- bind(ApplicationACLsManager.class).toInstance(
- rm.getApplicationACLsManager());
- bind(QueueACLsManager.class).toInstance(rm.getQueueACLsManager());
- serve("/*").with(GuiceContainer.class);
- }
- });
-
- public class GuiceServletConfig extends GuiceServletContextListener {
- @Override
- protected Injector getInjector() {
- return injector;
- }
- }
-
- public TestRMWebServicesFairScheduler() {
- super(new WebAppDescriptor.Builder(
- "org.apache.hadoop.yarn.server.resourcemanager.webapp")
- .contextListenerClass(GuiceServletConfig.class)
- .filterClass(com.google.inject.servlet.GuiceFilter.class)
- .contextPath("jersey-guice-filter").servletPath("/").build());
- }
-
- @Test
- public void testClusterScheduler() throws JSONException, Exception {
- WebResource r = resource();
- ClientResponse response = r.path("ws").path("v1").path("cluster")
- .path("scheduler").accept(MediaType.APPLICATION_JSON)
- .get(ClientResponse.class);
- assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
- JSONObject json = response.getEntity(JSONObject.class);
- verifyClusterScheduler(json);
- }
- @Test
- public void testClusterSchedulerSlash() throws JSONException, Exception {
- WebResource r = resource();
- ClientResponse response = r.path("ws").path("v1").path("cluster")
- .path("scheduler/").accept(MediaType.APPLICATION_JSON)
- .get(ClientResponse.class);
- assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType());
- JSONObject json = response.getEntity(JSONObject.class);
- verifyClusterScheduler(json);
- }
-
- private void verifyClusterScheduler(JSONObject json) throws JSONException,
- Exception {
- assertEquals("incorrect number of elements", 1, json.length());
- JSONObject info = json.getJSONObject("scheduler");
- assertEquals("incorrect number of elements", 1, info.length());
- info = info.getJSONObject("schedulerInfo");
- assertEquals("incorrect number of elements", 2, info.length());
- JSONObject rootQueue = info.getJSONObject("rootQueue");
- assertEquals("root", rootQueue.getString("queueName"));
- }
- }