YARN-11036. Do not inherit from TestRMWebServicesCapacitySched. Contributed by Tamas Domok
This commit is contained in:
parent
9539ff108a
commit
383b73417d
|
@ -77,42 +77,37 @@ import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
public class TestRMWebServicesCapacitySched extends JerseyTestBase {
|
public class TestRMWebServicesCapacitySched extends JerseyTestBase {
|
||||||
|
|
||||||
protected static MockRM rm;
|
private MockRM rm;
|
||||||
|
|
||||||
|
public static class WebServletModule extends ServletModule {
|
||||||
|
private final MockRM rm;
|
||||||
|
|
||||||
|
WebServletModule(MockRM rm) {
|
||||||
|
this.rm = rm;
|
||||||
|
}
|
||||||
|
|
||||||
private static class WebServletModule extends ServletModule {
|
|
||||||
@Override
|
@Override
|
||||||
protected void configureServlets() {
|
protected void configureServlets() {
|
||||||
bind(JAXBContextResolver.class);
|
bind(JAXBContextResolver.class);
|
||||||
bind(RMWebServices.class);
|
bind(RMWebServices.class);
|
||||||
bind(GenericExceptionHandler.class);
|
bind(GenericExceptionHandler.class);
|
||||||
CapacitySchedulerConfiguration csConf = new CapacitySchedulerConfiguration(
|
|
||||||
new Configuration(false));
|
|
||||||
setupQueueConfiguration(csConf);
|
|
||||||
YarnConfiguration conf = new YarnConfiguration(csConf);
|
|
||||||
conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class,
|
|
||||||
ResourceScheduler.class);
|
|
||||||
conf.set(YarnConfiguration.RM_PLACEMENT_CONSTRAINTS_HANDLER,
|
|
||||||
YarnConfiguration.SCHEDULER_RM_PLACEMENT_CONSTRAINTS_HANDLER);
|
|
||||||
rm = new MockRM(conf);
|
|
||||||
bind(ResourceManager.class).toInstance(rm);
|
bind(ResourceManager.class).toInstance(rm);
|
||||||
serve("/*").with(GuiceContainer.class);
|
serve("/*").with(GuiceContainer.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TestRMWebServicesCapacitySched() {
|
public TestRMWebServicesCapacitySched() {
|
||||||
super(new WebAppDescriptor.Builder(
|
super(createWebAppDescriptor());
|
||||||
"org.apache.hadoop.yarn.server.resourcemanager.webapp")
|
|
||||||
.contextListenerClass(GuiceServletConfig.class)
|
|
||||||
.filterClass(com.google.inject.servlet.GuiceFilter.class)
|
|
||||||
.contextPath("jersey-guice-filter").servletPath("/").build());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@Override
|
@Override
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
|
rm = createMockRM(new CapacitySchedulerConfiguration(
|
||||||
|
new Configuration(false)));
|
||||||
GuiceServletConfig.setInjector(
|
GuiceServletConfig.setInjector(
|
||||||
Guice.createInjector(new WebServletModule()));
|
Guice.createInjector(new WebServletModule(rm)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setupQueueConfiguration(
|
public static void setupQueueConfiguration(
|
||||||
|
@ -389,4 +384,22 @@ public class TestRMWebServicesCapacitySched extends JerseyTestBase {
|
||||||
Assert.fail("overwrite should not fail " + e.getMessage());
|
Assert.fail("overwrite should not fail " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static WebAppDescriptor createWebAppDescriptor() {
|
||||||
|
return new WebAppDescriptor.Builder(
|
||||||
|
TestRMWebServicesCapacitySched.class.getPackage().getName())
|
||||||
|
.contextListenerClass(GuiceServletConfig.class)
|
||||||
|
.filterClass(com.google.inject.servlet.GuiceFilter.class)
|
||||||
|
.contextPath("jersey-guice-filter").servletPath("/").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MockRM createMockRM(CapacitySchedulerConfiguration csConf) {
|
||||||
|
setupQueueConfiguration(csConf);
|
||||||
|
YarnConfiguration conf = new YarnConfiguration(csConf);
|
||||||
|
conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class,
|
||||||
|
ResourceScheduler.class);
|
||||||
|
conf.set(YarnConfiguration.RM_PLACEMENT_CONSTRAINTS_HANDLER,
|
||||||
|
YarnConfiguration.SCHEDULER_RM_PLACEMENT_CONSTRAINTS_HANDLER);
|
||||||
|
return new MockRM(conf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,10 +19,7 @@
|
||||||
package org.apache.hadoop.yarn.server.resourcemanager.webapp;
|
package org.apache.hadoop.yarn.server.resourcemanager.webapp;
|
||||||
|
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.servlet.ServletModule;
|
|
||||||
import com.sun.jersey.api.client.ClientResponse;
|
import com.sun.jersey.api.client.ClientResponse;
|
||||||
import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
|
|
||||||
import com.sun.jersey.test.framework.WebAppDescriptor;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -34,67 +31,28 @@ import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
||||||
import org.apache.hadoop.yarn.exceptions.YarnException;
|
import org.apache.hadoop.yarn.exceptions.YarnException;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
|
import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
|
||||||
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.capacity.AutoCreatedQueueTemplate;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.AutoCreatedQueueTemplate;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerQueueManager;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerQueueManager;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.QueuePath;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.QueuePath;
|
||||||
import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
|
|
||||||
import org.apache.hadoop.yarn.webapp.GuiceServletConfig;
|
import org.apache.hadoop.yarn.webapp.GuiceServletConfig;
|
||||||
import org.apache.hadoop.yarn.webapp.JerseyTestBase;
|
import org.apache.hadoop.yarn.webapp.JerseyTestBase;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerTestUtilities.GB;
|
||||||
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySched.assertJsonResponse;
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySched.assertJsonResponse;
|
||||||
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySched.createMockRM;
|
||||||
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySched.createWebAppDescriptor;
|
||||||
|
|
||||||
public class TestRMWebServicesCapacitySchedDynamicConfig extends
|
public class TestRMWebServicesCapacitySchedDynamicConfig extends
|
||||||
JerseyTestBase {
|
JerseyTestBase {
|
||||||
private static final int GB = 1024;
|
private MockRM rm;
|
||||||
private static MockRM rm;
|
|
||||||
|
|
||||||
private CapacitySchedulerQueueManager autoQueueHandler;
|
private CapacitySchedulerQueueManager autoQueueHandler;
|
||||||
|
|
||||||
private static class WebServletModule extends ServletModule {
|
|
||||||
private final Configuration conf;
|
|
||||||
|
|
||||||
WebServletModule(Configuration conf) {
|
|
||||||
this.conf = conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configureServlets() {
|
|
||||||
bind(JAXBContextResolver.class);
|
|
||||||
bind(RMWebServices.class);
|
|
||||||
bind(GenericExceptionHandler.class);
|
|
||||||
conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class,
|
|
||||||
ResourceScheduler.class);
|
|
||||||
conf.set(YarnConfiguration.RM_PLACEMENT_CONSTRAINTS_HANDLER,
|
|
||||||
YarnConfiguration.SCHEDULER_RM_PLACEMENT_CONSTRAINTS_HANDLER);
|
|
||||||
rm = new MockRM(conf);
|
|
||||||
bind(ResourceManager.class).toInstance(rm);
|
|
||||||
serve("/*").with(GuiceContainer.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initResourceManager(Configuration conf) throws IOException {
|
|
||||||
GuiceServletConfig.setInjector(
|
|
||||||
Guice.createInjector(new WebServletModule(conf)));
|
|
||||||
rm.start();
|
|
||||||
//Need to call reinitialize as
|
|
||||||
//MutableCSConfigurationProvider with InMemoryConfigurationStore
|
|
||||||
//somehow does not load the queues properly and falls back to default config.
|
|
||||||
//Therefore CS will think there's only the default queue there.
|
|
||||||
((CapacityScheduler) rm.getResourceScheduler()).reinitialize(conf,
|
|
||||||
rm.getRMContext(), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TestRMWebServicesCapacitySchedDynamicConfig() {
|
public TestRMWebServicesCapacitySchedDynamicConfig() {
|
||||||
super(new WebAppDescriptor.Builder(
|
super(createWebAppDescriptor());
|
||||||
"org.apache.hadoop.yarn.server.resourcemanager.webapp")
|
|
||||||
.contextListenerClass(GuiceServletConfig.class)
|
|
||||||
.filterClass(com.google.inject.servlet.GuiceFilter.class)
|
|
||||||
.contextPath("jersey-guice-filter").servletPath("/").build());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -327,4 +285,17 @@ public class TestRMWebServicesCapacitySchedDynamicConfig extends
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initResourceManager(Configuration conf) throws IOException {
|
||||||
|
rm = createMockRM(new CapacitySchedulerConfiguration(conf));
|
||||||
|
GuiceServletConfig.setInjector(
|
||||||
|
Guice.createInjector(new TestRMWebServicesCapacitySched.WebServletModule(rm)));
|
||||||
|
rm.start();
|
||||||
|
//Need to call reinitialize as
|
||||||
|
//MutableCSConfigurationProvider with InMemoryConfigurationStore
|
||||||
|
//somehow does not load the queues properly and falls back to default config.
|
||||||
|
//Therefore CS will think there's only the default queue there.
|
||||||
|
((CapacityScheduler) rm.getResourceScheduler()).reinitialize(conf,
|
||||||
|
rm.getRMContext(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,15 +18,20 @@
|
||||||
|
|
||||||
package org.apache.hadoop.yarn.server.resourcemanager.webapp;
|
package org.apache.hadoop.yarn.server.resourcemanager.webapp;
|
||||||
|
|
||||||
|
import com.google.inject.Guice;
|
||||||
import com.sun.jersey.api.client.ClientResponse;
|
import com.sun.jersey.api.client.ClientResponse;
|
||||||
import com.sun.jersey.api.client.WebResource;
|
import com.sun.jersey.api.client.WebResource;
|
||||||
import com.sun.jersey.core.util.MultivaluedMapImpl;
|
import com.sun.jersey.core.util.MultivaluedMapImpl;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.test.GenericTestUtils;
|
import org.apache.hadoop.test.GenericTestUtils;
|
||||||
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
|
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityDiagnosticConstant;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityDiagnosticConstant;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityState;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityState;
|
||||||
import org.slf4j.Logger;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.apache.hadoop.yarn.webapp.GuiceServletConfig;
|
||||||
|
import org.apache.hadoop.yarn.webapp.JerseyTestBase;
|
||||||
|
import org.junit.Before;
|
||||||
import org.apache.hadoop.http.JettyUtils;
|
import org.apache.hadoop.http.JettyUtils;
|
||||||
import org.apache.hadoop.yarn.api.records.ContainerId;
|
import org.apache.hadoop.yarn.api.records.ContainerId;
|
||||||
import org.apache.hadoop.yarn.api.records.ContainerState;
|
import org.apache.hadoop.yarn.api.records.ContainerState;
|
||||||
|
@ -83,6 +88,8 @@ import static org.apache.hadoop.yarn.server.resourcemanager.webapp.ActivitiesTes
|
||||||
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.ActivitiesTestUtils.verifyNumberOfNodes;
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.ActivitiesTestUtils.verifyNumberOfNodes;
|
||||||
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.ActivitiesTestUtils.verifyQueueOrder;
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.ActivitiesTestUtils.verifyQueueOrder;
|
||||||
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.ActivitiesTestUtils.verifyStateOfAllocations;
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.ActivitiesTestUtils.verifyStateOfAllocations;
|
||||||
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySched.createMockRM;
|
||||||
|
import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestRMWebServicesCapacitySched.createWebAppDescriptor;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
@ -91,11 +98,23 @@ import static org.junit.Assert.assertTrue;
|
||||||
/**
|
/**
|
||||||
* Tests for scheduler/app activities.
|
* Tests for scheduler/app activities.
|
||||||
*/
|
*/
|
||||||
public class TestRMWebServicesSchedulerActivities
|
public class TestRMWebServicesSchedulerActivities extends JerseyTestBase {
|
||||||
extends TestRMWebServicesCapacitySched {
|
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(
|
private MockRM rm;
|
||||||
TestRMWebServicesSchedulerActivities.class);
|
|
||||||
|
public TestRMWebServicesSchedulerActivities() {
|
||||||
|
super(createWebAppDescriptor());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
@Override
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
super.setUp();
|
||||||
|
rm = createMockRM(new CapacitySchedulerConfiguration(
|
||||||
|
new Configuration(false)));
|
||||||
|
GuiceServletConfig.setInjector(
|
||||||
|
Guice.createInjector(new TestRMWebServicesCapacitySched.WebServletModule(rm)));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAssignMultipleContainersPerNodeHeartbeat()
|
public void testAssignMultipleContainersPerNodeHeartbeat()
|
||||||
|
|
Loading…
Reference in New Issue