blob: 9480850d3285bf027ecf9d921846b244227406ab [file] [log] [blame]
/**
* 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.router.webapp;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.Response;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.authorize.AuthorizationException;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ActivitiesInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppActivitiesInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppAttemptsInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppPriority;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppQueue;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppState;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppTimeoutInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppTimeoutsInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ApplicationStatisticsInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppsInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterMetricsInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.LabelsToNodesInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeLabelsInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeToLabelsInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodesInfo;
import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedulerTypeInfo;
import org.apache.hadoop.yarn.server.router.Router;
import org.apache.hadoop.yarn.server.router.webapp.RouterWebServices.RequestInterceptorChainWrapper;
import org.apache.hadoop.yarn.server.webapp.dao.AppAttemptInfo;
import org.apache.hadoop.yarn.server.webapp.dao.ContainerInfo;
import org.apache.hadoop.yarn.server.webapp.dao.ContainersInfo;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.mockito.Mockito;
/**
* Base class for all the RouterRMAdminService test cases. It provides utility
* methods that can be used by the concrete test case classes.
*
*/
public abstract class BaseRouterWebServicesTest {
private YarnConfiguration conf;
private Router router;
public final static int TEST_MAX_CACHE_SIZE = 10;
private RouterWebServices routerWebService;
@Before
public void setUp() {
this.conf = createConfiguration();
router = spy(new Router());
Mockito.doNothing().when(router).startWepApp();
routerWebService = new RouterWebServices(router, conf);
routerWebService.setResponse(mock(HttpServletResponse.class));
router.init(conf);
router.start();
}
protected YarnConfiguration createConfiguration() {
YarnConfiguration config = new YarnConfiguration();
String mockPassThroughInterceptorClass =
PassThroughRESTRequestInterceptor.class.getName();
// Create a request intercepter pipeline for testing. The last one in the
// chain will call the mock resource manager. The others in the chain will
// simply forward it to the next one in the chain
config.set(YarnConfiguration.ROUTER_WEBAPP_INTERCEPTOR_CLASS_PIPELINE,
mockPassThroughInterceptorClass + "," + mockPassThroughInterceptorClass
+ "," + mockPassThroughInterceptorClass + ","
+ MockRESTRequestInterceptor.class.getName());
config.setInt(YarnConfiguration.ROUTER_PIPELINE_CACHE_MAX_SIZE,
TEST_MAX_CACHE_SIZE);
return config;
}
@After
public void tearDown() {
if (router != null) {
router.stop();
}
}
public void setUpConfig() {
this.conf = createConfiguration();
}
protected Configuration getConf() {
return this.conf;
}
protected RouterWebServices getRouterWebServices() {
Assert.assertNotNull(this.routerWebService);
return this.routerWebService;
}
protected ClusterInfo get(String user)
throws IOException, InterruptedException {
// HSR is not used here
return routerWebService.get();
}
protected ClusterInfo getClusterInfo(String user)
throws IOException, InterruptedException {
// HSR is not used here
return routerWebService.getClusterInfo();
}
protected ClusterMetricsInfo getClusterMetricsInfo(String user)
throws IOException, InterruptedException {
// HSR is not used here
return routerWebService.getClusterMetricsInfo();
}
protected SchedulerTypeInfo getSchedulerInfo(String user)
throws IOException, InterruptedException {
// HSR is not used here
return routerWebService.getSchedulerInfo();
}
protected String dumpSchedulerLogs(String user)
throws IOException, InterruptedException {
return routerWebService.dumpSchedulerLogs(null,
createHttpServletRequest(user));
}
protected NodesInfo getNodes(String user)
throws IOException, InterruptedException {
return routerWebService.getNodes(null);
}
protected NodeInfo getNode(String user)
throws IOException, InterruptedException {
return routerWebService.getNode(null);
}
protected AppsInfo getApps(String user)
throws IOException, InterruptedException {
return routerWebService.getApps(createHttpServletRequest(user), null, null,
null, null, null, null, null, null, null, null, null, null, null);
}
protected ActivitiesInfo getActivities(String user)
throws IOException, InterruptedException {
return routerWebService.getActivities(
createHttpServletRequest(user), null);
}
protected AppActivitiesInfo getAppActivities(String user)
throws IOException, InterruptedException {
return routerWebService.getAppActivities(
createHttpServletRequest(user), null, null);
}
protected ApplicationStatisticsInfo getAppStatistics(String user)
throws IOException, InterruptedException {
return routerWebService.getAppStatistics(
createHttpServletRequest(user), null, null);
}
protected AppInfo getApp(String user)
throws IOException, InterruptedException {
return routerWebService.getApp(createHttpServletRequest(user), null, null);
}
protected AppState getAppState(String user)
throws IOException, InterruptedException {
return routerWebService.getAppState(createHttpServletRequest(user), null);
}
protected Response updateAppState(String user) throws AuthorizationException,
YarnException, InterruptedException, IOException {
return routerWebService.updateAppState(
null, createHttpServletRequest(user), null);
}
protected NodeToLabelsInfo getNodeToLabels(String user)
throws IOException, InterruptedException {
return routerWebService.getNodeToLabels(createHttpServletRequest(user));
}
protected LabelsToNodesInfo getLabelsToNodes(String user)
throws IOException, InterruptedException {
return routerWebService.getLabelsToNodes(null);
}
protected Response replaceLabelsOnNodes(String user) throws Exception {
return routerWebService.replaceLabelsOnNodes(
null, createHttpServletRequest(user));
}
protected Response replaceLabelsOnNode(String user) throws Exception {
return routerWebService.replaceLabelsOnNode(
null, createHttpServletRequest(user), null);
}
protected NodeLabelsInfo getClusterNodeLabels(String user)
throws IOException, InterruptedException {
return routerWebService.getClusterNodeLabels(
createHttpServletRequest(user));
}
protected Response addToClusterNodeLabels(String user) throws Exception {
return routerWebService.addToClusterNodeLabels(
null, createHttpServletRequest(user));
}
protected Response removeFromCluserNodeLabels(String user) throws Exception {
return routerWebService.removeFromCluserNodeLabels(
null, createHttpServletRequest(user));
}
protected NodeLabelsInfo getLabelsOnNode(String user)
throws IOException, InterruptedException {
return routerWebService.getLabelsOnNode(
createHttpServletRequest(user), null);
}
protected AppPriority getAppPriority(String user)
throws IOException, InterruptedException {
return routerWebService.getAppPriority(
createHttpServletRequest(user), null);
}
protected Response updateApplicationPriority(String user)
throws AuthorizationException, YarnException, InterruptedException,
IOException {
return routerWebService.updateApplicationPriority(
null, createHttpServletRequest(user), null);
}
protected AppQueue getAppQueue(String user)
throws IOException, InterruptedException {
return routerWebService.getAppQueue(createHttpServletRequest(user), null);
}
protected Response updateAppQueue(String user) throws AuthorizationException,
YarnException, InterruptedException, IOException {
return routerWebService.updateAppQueue(
null, createHttpServletRequest(user), null);
}
protected Response createNewApplication(String user)
throws AuthorizationException, IOException, InterruptedException {
return routerWebService.createNewApplication(
createHttpServletRequest(user));
}
protected Response submitApplication(String user)
throws AuthorizationException, IOException, InterruptedException {
return routerWebService.submitApplication(
null, createHttpServletRequest(user));
}
protected Response postDelegationToken(String user)
throws AuthorizationException, IOException, InterruptedException,
Exception {
return routerWebService.postDelegationToken(
null, createHttpServletRequest(user));
}
protected Response postDelegationTokenExpiration(String user)
throws AuthorizationException, IOException, Exception {
return routerWebService.postDelegationTokenExpiration(
createHttpServletRequest(user));
}
protected Response cancelDelegationToken(String user)
throws AuthorizationException, IOException, InterruptedException,
Exception {
return routerWebService.cancelDelegationToken(
createHttpServletRequest(user));
}
protected Response createNewReservation(String user)
throws AuthorizationException, IOException, InterruptedException {
return routerWebService.createNewReservation(
createHttpServletRequest(user));
}
protected Response submitReservation(String user)
throws AuthorizationException, IOException, InterruptedException {
return routerWebService.submitReservation(
null, createHttpServletRequest(user));
}
protected Response updateReservation(String user)
throws AuthorizationException, IOException, InterruptedException {
return routerWebService.updateReservation(
null, createHttpServletRequest(user));
}
protected Response deleteReservation(String user)
throws AuthorizationException, IOException, InterruptedException {
return routerWebService.deleteReservation(
null, createHttpServletRequest(user));
}
protected Response listReservation(String user) throws Exception {
return routerWebService.listReservation(
null, null, 0, 0, false, createHttpServletRequest(user));
}
protected AppTimeoutInfo getAppTimeout(String user)
throws IOException, InterruptedException {
return routerWebService.getAppTimeout(
createHttpServletRequest(user), null, null);
}
protected AppTimeoutsInfo getAppTimeouts(String user)
throws IOException, InterruptedException {
return routerWebService.getAppTimeouts(
createHttpServletRequest(user), null);
}
protected Response updateApplicationTimeout(String user)
throws AuthorizationException, YarnException, InterruptedException,
IOException {
return routerWebService.updateApplicationTimeout(
null, createHttpServletRequest(user), null);
}
protected AppAttemptsInfo getAppAttempts(String user)
throws IOException, InterruptedException {
return routerWebService.getAppAttempts(
createHttpServletRequest(user), null);
}
protected AppAttemptInfo getAppAttempt(String user)
throws IOException, InterruptedException {
return routerWebService.getAppAttempt(
createHttpServletRequest(user), null, null, null);
}
protected ContainersInfo getContainers(String user)
throws IOException, InterruptedException {
return routerWebService.getContainers(
createHttpServletRequest(user), null, null, null);
}
protected ContainerInfo getContainer(String user)
throws IOException, InterruptedException {
return routerWebService.getContainer(
createHttpServletRequest(user), null, null, null, null);
}
protected RequestInterceptorChainWrapper getInterceptorChain(String user)
throws IOException, InterruptedException {
HttpServletRequest request = createHttpServletRequest(user);
return routerWebService.getInterceptorChain(request);
}
private HttpServletRequest createHttpServletRequest(String user) {
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRemoteUser()).thenReturn(user);
return request;
}
}