You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2016/09/26 13:05:22 UTC
[3/8] ambari git commit: AMBARI-18454. Analyze and Optimize Ambari
Server Unit Tests (aonishuk)
AMBARI-18454. Analyze and Optimize Ambari Server Unit Tests (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d237c9ad
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d237c9ad
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d237c9ad
Branch: refs/heads/branch-dev-patch-upgrade
Commit: d237c9ad36815756685b1384a43bbb90e3aa2117
Parents: 1fee5ed
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Sep 26 13:22:44 2016 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Sep 26 13:22:44 2016 +0300
----------------------------------------------------------------------
.../server/controller/ControllerModule.java | 44 ++++++++++++--------
.../actionmanager/TestActionScheduler.java | 19 +++++----
.../server/agent/HeartbeatProcessorTest.java | 27 +++++++-----
.../server/orm/InMemoryDefaultTestModule.java | 23 +++++++++-
.../server/upgrade/UpgradeCatalog222Test.java | 15 ++++++-
5 files changed, 87 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d237c9ad/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index af710ee..5afaba8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
@@ -377,8 +377,8 @@ public class ControllerModule extends AbstractModule {
requestStaticInjection(AuthorizationHelper.class);
bindByAnnotation(null);
- bindNotificationDispatchers();
- registerUpgradeChecks();
+ bindNotificationDispatchers(null);
+ registerUpgradeChecks(null);
}
// ----- helper methods ----------------------------------------------------
@@ -569,27 +569,29 @@ public class ControllerModule extends AbstractModule {
* {@link DispatchFactory}.
*/
@SuppressWarnings("unchecked")
- private void bindNotificationDispatchers() {
- ClassPathScanningCandidateComponentProvider scanner =
- new ClassPathScanningCandidateComponentProvider(false);
+ protected Set<BeanDefinition> bindNotificationDispatchers(Set<BeanDefinition> beanDefinitions) {
// make the factory a singleton
DispatchFactory dispatchFactory = DispatchFactory.getInstance();
bind(DispatchFactory.class).toInstance(dispatchFactory);
- // match all implementations of the dispatcher interface
- AssignableTypeFilter filter = new AssignableTypeFilter(
+ if (null == beanDefinitions || beanDefinitions.isEmpty()) {
+ ClassPathScanningCandidateComponentProvider scanner =
+ new ClassPathScanningCandidateComponentProvider(false);
+
+ // match all implementations of the dispatcher interface
+ AssignableTypeFilter filter = new AssignableTypeFilter(
NotificationDispatcher.class);
- scanner.addIncludeFilter(filter);
+ scanner.addIncludeFilter(filter);
- Set<BeanDefinition> beanDefinitions = scanner.findCandidateComponents(
- "org.apache.ambari.server.notifications.dispatchers");
+ beanDefinitions = scanner.findCandidateComponents("org.apache.ambari.server.notifications.dispatchers");
+ }
// no dispatchers is a problem
if (null == beanDefinitions || beanDefinitions.size() == 0) {
LOG.error("No instances of {} found to register", NotificationDispatcher.class);
- return;
+ return null;
}
// for every discovered dispatcher, singleton-ize them and register with
@@ -615,6 +617,8 @@ public class ControllerModule extends AbstractModule {
clazz, exception);
}
}
+
+ return beanDefinitions;
}
/**
@@ -623,23 +627,26 @@ public class ControllerModule extends AbstractModule {
* {@link UpgradeCheckRegistry}.
*/
@SuppressWarnings("unchecked")
- private void registerUpgradeChecks() {
- ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
+ protected Set<BeanDefinition> registerUpgradeChecks(Set<BeanDefinition> beanDefinitions) {
// make the registry a singleton
UpgradeCheckRegistry registry = new UpgradeCheckRegistry();
bind(UpgradeCheckRegistry.class).toInstance(registry);
- // match all implementations of the base check class
- AssignableTypeFilter filter = new AssignableTypeFilter(AbstractCheckDescriptor.class);
- scanner.addIncludeFilter(filter);
+ if (null == beanDefinitions || beanDefinitions.isEmpty()) {
+ ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
- Set<BeanDefinition> beanDefinitions = scanner.findCandidateComponents(AbstractCheckDescriptor.class.getPackage().getName());
+ // match all implementations of the base check class
+ AssignableTypeFilter filter = new AssignableTypeFilter(AbstractCheckDescriptor.class);
+ scanner.addIncludeFilter(filter);
+
+ beanDefinitions = scanner.findCandidateComponents(AbstractCheckDescriptor.class.getPackage().getName());
+ }
// no dispatchers is a problem
if (null == beanDefinitions || beanDefinitions.size() == 0) {
LOG.error("No instances of {} found to register", AbstractCheckDescriptor.class);
- return;
+ return null;
}
// for every discovered check, singleton-ize them and register with the
@@ -662,5 +669,6 @@ public class ControllerModule extends AbstractModule {
for (AbstractCheckDescriptor upgradeCheck : upgradeChecks) {
LOG.debug("Registered pre-upgrade check {}", upgradeCheck.getClass());
}
+ return beanDefinitions;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d237c9ad/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
index 2c39bda..ccb95a6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
@@ -127,29 +127,31 @@ public class TestActionScheduler {
+ " c6402.ambari.apache.org], slave_hosts=[c6401.ambari.apache.org,"
+ " c6402.ambari.apache.org]}";
- private static Injector injector;
+ private final Injector injector;
private final String hostname = "ahost.ambari.apache.org";
private final int MAX_CYCLE_ITERATIONS = 100;
@Inject
- HostRoleCommandFactory hostRoleCommandFactory;
+ private HostRoleCommandFactory hostRoleCommandFactory;
@Inject
- StageFactory stageFactory;
+ private StageFactory stageFactory;
@Inject
- StageUtils stageUtils;
+ private HostDAO hostDAO;
- @Inject
- HostDAO hostDAO;
+ private Provider<EntityManager> entityManagerProviderMock = EasyMock.niceMock(Provider.class);
- Provider<EntityManager> entityManagerProviderMock = EasyMock.niceMock(Provider.class);
+
+ public TestActionScheduler(){
+ injector = Guice.createInjector(new InMemoryDefaultTestModule());
+ }
@Before
public void setup() throws Exception {
- injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
+ injector.getInstance(StageUtils.class);
injector.injectMembers(this);
expect(entityManagerProviderMock.get()).andReturn(null);
@@ -159,7 +161,6 @@ public class TestActionScheduler {
@After
public void teardown() {
injector.getInstance(PersistService.class).stop();
- injector = null;
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/d237c9ad/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
index 158b97c..299002b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
@@ -59,6 +59,7 @@ import org.apache.ambari.server.actionmanager.StageFactory;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.dao.HostDAO;
@@ -102,22 +103,26 @@ public class HeartbeatProcessorTest {
private static final Logger log = LoggerFactory.getLogger(TestHeartbeatHandler.class);
private Injector injector;
+ private long requestId = 23;
+ private long stageId = 31;
+
+ @Inject
private Clusters clusters;
- long requestId = 23;
- long stageId = 31;
+
+ @Inject
private UnitOfWork unitOfWork;
@Inject
Configuration config;
@Inject
- ActionDBAccessor actionDBAccessor;
+ private ActionDBAccessor actionDBAccessor;
@Inject
- HeartbeatTestHelper heartbeatTestHelper;
+ private HeartbeatTestHelper heartbeatTestHelper;
@Inject
- ActionManagerTestHelper actionManagerTestHelper;
+ private ActionManagerTestHelper actionManagerTestHelper;
@Inject
private HostRoleCommandFactory hostRoleCommandFactory;
@@ -131,17 +136,17 @@ public class HeartbeatProcessorTest {
@Inject
private AmbariMetaInfo metaInfo;
- private final static StackId HDP_22_STACK = new StackId("HDP", "2.2.0");
- @Before
- public void setup() throws Exception {
+ public HeartbeatProcessorTest(){
InMemoryDefaultTestModule module = HeartbeatTestHelper.getTestModule();
injector = Guice.createInjector(module);
+ }
+
+
+ @Before
+ public void setup() throws Exception {
injector.getInstance(GuiceJpaInitializer.class);
- clusters = injector.getInstance(Clusters.class);
injector.injectMembers(this);
- unitOfWork = injector.getInstance(UnitOfWork.class);
-
EasyMock.replay(injector.getInstance(AuditLogger.class));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d237c9ad/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
index 7f5842f..6773176 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
@@ -50,7 +50,14 @@ public class InMemoryDefaultTestModule extends AbstractModule {
// Access should be synchronised to allow concurrent test runs.
private static final AtomicReference<Set<BeanDefinition>> foundBeanDefinitions
- = new AtomicReference<Set<BeanDefinition>>(null);
+ = new AtomicReference<>(null);
+
+ private static final AtomicReference<Set<BeanDefinition>> foundNotificationBeanDefinitions
+ = new AtomicReference<>(null);
+
+ private static final AtomicReference<Set<BeanDefinition>> foundUpgradeChecksDefinitions
+ = new AtomicReference<>(null);
+
public BeanDefinitionsCachingTestControllerModule(Properties properties) throws Exception {
super(properties);
@@ -62,6 +69,20 @@ public class InMemoryDefaultTestModule extends AbstractModule {
foundBeanDefinitions.compareAndSet(null, Collections.unmodifiableSet(newBeanDefinitions));
return null;
}
+
+ @Override
+ protected Set<BeanDefinition> bindNotificationDispatchers(Set<BeanDefinition> beanDefinitions){
+ Set<BeanDefinition> newBeanDefinitions = super.bindNotificationDispatchers(foundNotificationBeanDefinitions.get());
+ foundNotificationBeanDefinitions.compareAndSet(null, Collections.unmodifiableSet(newBeanDefinitions));
+ return null;
+ }
+
+ @Override
+ protected Set<BeanDefinition> registerUpgradeChecks(Set<BeanDefinition> beanDefinitions){
+ Set<BeanDefinition> newBeanDefinition = super.registerUpgradeChecks(foundUpgradeChecksDefinitions.get());
+ foundUpgradeChecksDefinitions.compareAndSet(null, Collections.unmodifiableSet(newBeanDefinition));
+ return null;
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/ambari/blob/d237c9ad/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java
index cdbf39b..8d5dec6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java
@@ -45,6 +45,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import com.google.inject.Inject;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.ActionManager;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -96,23 +97,33 @@ public class UpgradeCatalog222Test {
private Injector injector;
private Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
private EntityManager entityManager = createNiceMock(EntityManager.class);
+
+ @Inject
private UpgradeCatalogHelper upgradeCatalogHelper;
+
private StackEntity desiredStackEntity;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
+ public UpgradeCatalog222Test(){
+ injector = Guice.createInjector(new InMemoryDefaultTestModule());
+
+ }
+
@Before
public void init() {
reset(entityManagerProvider);
expect(entityManagerProvider.get()).andReturn(entityManager).anyTimes();
replay(entityManagerProvider);
- injector = Guice.createInjector(new InMemoryDefaultTestModule());
+
injector.getInstance(GuiceJpaInitializer.class);
- upgradeCatalogHelper = injector.getInstance(UpgradeCatalogHelper.class);
// inject AmbariMetaInfo to ensure that stacks get populated in the DB
injector.getInstance(AmbariMetaInfo.class);
+
+ injector.injectMembers(this);
+
// load the stack entity
StackDAO stackDAO = injector.getInstance(StackDAO.class);
desiredStackEntity = stackDAO.find("HDP", "2.2.0");