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/21 13:29:24 UTC
[02/21] ambari git commit: AMBARI-18416. Optimize stack manager
initialization for Ambari Server Unit Tests (aonishuk)
AMBARI-18416. Optimize stack manager initialization for 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/536bf049
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/536bf049
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/536bf049
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 536bf049a52a3433a2a990286d9e5c3d387c3224
Parents: 0c6c141
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Sep 19 19:14:25 2016 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Sep 19 19:14:25 2016 +0300
----------------------------------------------------------------------
.../ambari/server/stack/StackManager.java | 17 +-
.../server/api/services/AmbariMetaInfoTest.java | 41 +++--
.../AmbariManagementControllerTest.java | 4 +
...ClusterStackVersionResourceProviderTest.java | 1 +
.../server/orm/InMemoryDefaultTestModule.java | 14 +-
.../ambari/server/stack/StackManagerMock.java | 166 +++++++++++++++++++
.../ambari/server/state/UpgradeHelperTest.java | 26 +++
7 files changed, 251 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/536bf049/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
index 6c0d5e4..0e2e0d8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
@@ -99,7 +99,10 @@ public class StackManager {
/**
* Map of stack id to stack info
*/
- private Map<String, StackInfo> stackMap = new HashMap<String, StackInfo>();
+ protected Map<String, StackInfo> stackMap = new HashMap<String, StackInfo>();
+ protected Map<String, ServiceModule> commonServiceModules;
+ protected Map<String, StackModule> stackModules;
+ protected Map<String, ExtensionModule> extensionModules;
/**
* Map of extension id to extension info
@@ -152,11 +155,7 @@ public class StackManager {
stackContext = new StackContext(metaInfoDAO, actionMetadata, osFamily);
extensionMap = new HashMap<String, ExtensionInfo>();
- Map<String, ServiceModule> commonServiceModules = parseCommonServicesDirectory(commonServicesRoot);
- Map<String, StackModule> stackModules = parseStackDirectory(stackRoot);
- LOG.info("About to parse extension directories");
- Map<String, ExtensionModule> extensionModules = null;
- extensionModules = parseExtensionDirectory(extensionRoot);
+ parseDirectories(stackRoot, commonServicesRoot, extensionRoot);
//Read the extension links from the DB
for (StackModule module : stackModules.values()) {
@@ -183,6 +182,12 @@ public class StackManager {
populateDB(stackDao, extensionDao);
}
+ protected void parseDirectories(File stackRoot, File commonServicesRoot, File extensionRoot) throws AmbariException {
+ commonServiceModules = parseCommonServicesDirectory(commonServicesRoot);
+ stackModules = parseStackDirectory(stackRoot);
+ LOG.info("About to parse extension directories");
+ extensionModules = parseExtensionDirectory(extensionRoot);
+ }
private void populateDB(StackDAO stackDao, ExtensionDAO extensionDao) throws AmbariException {
// for every stack read in, ensure that we have a database entry for it;
// don't put try/catch logic around this since a failure here will
http://git-wip-us.apache.org/repos/asf/ambari/blob/536bf049/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
index 5dfc094..4b7826e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
@@ -248,7 +248,7 @@ public class AmbariMetaInfoTest {
// Scenario: user has no internet and does nothing to repos via api
// use the default
String buildDir = tmpFolder.getRoot().getAbsolutePath();
- AmbariMetaInfo ambariMetaInfo = setupTempAmbariMetaInfo(buildDir);
+ setupTempAmbariMetaInfoDirs(buildDir);
// The current stack already has (HDP, 2.1.1, redhat6).
// Deleting the json file referenced by the latestBaseUrl to simulate No
@@ -261,7 +261,7 @@ public class AmbariMetaInfoTest {
FileUtils.deleteQuietly(latestUrlFile);
assertTrue(!latestUrlFile.exists());
}
- ambariMetaInfo.init();
+ AmbariMetaInfo ambariMetaInfo = setupTempAmbariMetaInfoExistingDirs(buildDir);
List<RepositoryInfo> redhat6Repo = ambariMetaInfo.getRepositories(
STACK_NAME_HDP, "2.1.1", "redhat6");
@@ -643,9 +643,9 @@ public class AmbariMetaInfoTest {
stackRoot = new File(ClassLoader.getSystemClassLoader().getResource("stacks").getPath());
version = new File(new File(ClassLoader.getSystemClassLoader().getResource("").getPath()).getParent(), "version");
}
- File stackRootTmp = new File(buildDir + "/ambari-metaInfo"); stackRootTmp.mkdir();
+ File stackRootTmp = getStackRootTmp(buildDir);
+ stackRootTmp.mkdir();
FileUtils.copyDirectory(stackRoot, stackRootTmp);
- AmbariMetaInfo ambariMetaInfo = createAmbariMetaInfo(stackRootTmp, version);
//todo
//ambariMetaInfo.injector = injector;
File f1, f2, f3;
@@ -656,7 +656,7 @@ public class AmbariMetaInfoTest {
f3.createNewFile();
}
- ambariMetaInfo.init();
+ AmbariMetaInfo ambariMetaInfo = createAmbariMetaInfo(stackRootTmp, version);
// Tests the stack is loaded as expected
getServices();
@@ -2044,21 +2044,42 @@ public class AmbariMetaInfoTest {
Assert.assertNotNull(descriptor.getService("HDFS"));
}
+ private File getStackRootTmp(String buildDir) {
+ return new File(buildDir + "/ambari-metaInfo");
+ }
- private TestAmbariMetaInfo setupTempAmbariMetaInfo(String buildDir) throws Exception {
- File stackRootTmp = new File(buildDir + "/ambari-metaInfo");
- File stackRoot = new File("src/test/resources/stacks");
+ private File getVersion() {
File version = new File("src/test/resources/version");
if (System.getProperty("os.name").contains("Windows")) {
- stackRoot = new File(ClassLoader.getSystemClassLoader().getResource("stacks").getPath());
version = new File(new File(ClassLoader.getSystemClassLoader().getResource("").getPath()).getParent(), "version");
}
+ return version;
+ }
+
+ private void setupTempAmbariMetaInfoDirs(String buildDir) throws Exception {
+ File stackRootTmp = getStackRootTmp(buildDir);
+ File stackRoot = new File("src/test/resources/stacks");
+
+ if (System.getProperty("os.name").contains("Windows")) {
+ stackRoot = new File(ClassLoader.getSystemClassLoader().getResource("stacks").getPath());
+ }
+
stackRootTmp.mkdir();
FileUtils.copyDirectory(stackRoot, stackRootTmp);
- TestAmbariMetaInfo ambariMetaInfo = createAmbariMetaInfo(stackRootTmp, version);
+ }
+
+ private TestAmbariMetaInfo setupTempAmbariMetaInfo(String buildDir) throws Exception {
+ setupTempAmbariMetaInfoDirs(buildDir);
+ TestAmbariMetaInfo ambariMetaInfo = setupTempAmbariMetaInfoExistingDirs(buildDir);
+ return ambariMetaInfo;
+ }
+ private TestAmbariMetaInfo setupTempAmbariMetaInfoExistingDirs(String buildDir) throws Exception {
+ File version = getVersion();
+ File stackRootTmp = getStackRootTmp(buildDir);
+ TestAmbariMetaInfo ambariMetaInfo = createAmbariMetaInfo(stackRootTmp, version);
return ambariMetaInfo;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/536bf049/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index a33a412..db5adff 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -117,6 +117,7 @@ import org.apache.ambari.server.orm.entities.WidgetLayoutUserWidgetEntity;
import org.apache.ambari.server.security.TestAuthenticationFactory;
import org.apache.ambari.server.security.authorization.AuthorizationException;
import org.apache.ambari.server.serveraction.ServerAction;
+import org.apache.ambari.server.stack.StackManagerMock;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
@@ -233,6 +234,7 @@ public class AmbariManagementControllerTest {
private HostDAO hostDAO;
private TopologyHostInfoDAO topologyHostInfoDAO;
private HostRoleCommandDAO hostRoleCommandDAO;
+ private StackManagerMock stackManagerMock;
@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -273,6 +275,7 @@ public class AmbariManagementControllerTest {
hostDAO = injector.getInstance(HostDAO.class);
topologyHostInfoDAO = injector.getInstance(TopologyHostInfoDAO.class);
hostRoleCommandDAO = injector.getInstance(HostRoleCommandDAO.class);
+ stackManagerMock = (StackManagerMock) ambariMetaInfo.getStackManager();
EasyMock.replay(injector.getInstance(AuditLogger.class));
}
@@ -8653,6 +8656,7 @@ public class AmbariManagementControllerTest {
assertTrue(INCORRECT_BASE_URL.equals(repositoryInfo.getBaseUrl()));
}
+ stackManagerMock.invalidateCurrentPaths();
controller.updateStacks();
stackInfo = ambariMetaInfo.getStack(STACK_NAME, STACK_VERSION);
http://git-wip-us.apache.org/repos/asf/ambari/blob/536bf049/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
index dd2feb4..9837b0f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
@@ -1544,6 +1544,7 @@ public class ClusterStackVersionResourceProviderTest {
TopologyManager topologyManager = injector.getInstance(TopologyManager.class);
StageUtils.setTopologyManager(topologyManager);
+ StageUtils.setConfiguration(injector.getInstance(Configuration.class));
// !!! make it look like there is already a versioned installed that is less than the one being installed
http://git-wip-us.apache.org/repos/asf/ambari/blob/536bf049/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 e327a04..7f5842f 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
@@ -23,10 +23,14 @@ import java.util.Collections;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
-
+import com.google.inject.assistedinject.FactoryModuleBuilder;
+import com.google.inject.util.Modules;
import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.ControllerModule;
+import org.apache.ambari.server.stack.StackManager;
+import org.apache.ambari.server.stack.StackManagerFactory;
+import org.apache.ambari.server.stack.StackManagerMock;
import org.easymock.EasyMock;
import org.springframework.beans.factory.config.BeanDefinition;
@@ -92,7 +96,13 @@ public class InMemoryDefaultTestModule extends AbstractModule {
}
try {
- install(new BeanDefinitionsCachingTestControllerModule(properties));
+ install(Modules.override(new BeanDefinitionsCachingTestControllerModule(properties)).with(new AbstractModule() {
+ @Override
+ protected void configure() {
+ // Cache parsed stacks.
+ install(new FactoryModuleBuilder().implement(StackManager.class, StackManagerMock.class).build(StackManagerFactory.class));
+ }
+ }));
AuditLogger al = EasyMock.createNiceMock(AuditLogger.class);
EasyMock.expect(al.isEnabled()).andReturn(false).anyTimes();
bind(AuditLogger.class).toInstance(al);
http://git-wip-us.apache.org/repos/asf/ambari/blob/536bf049/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerMock.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerMock.java b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerMock.java
new file mode 100644
index 0000000..1b9e15f
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerMock.java
@@ -0,0 +1,166 @@
+/**
+ * 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.ambari.server.stack;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import javax.annotation.Nullable;
+
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.metadata.ActionMetadata;
+import org.apache.ambari.server.orm.dao.ExtensionDAO;
+import org.apache.ambari.server.orm.dao.ExtensionLinkDAO;
+import org.apache.ambari.server.orm.dao.MetainfoDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
+import org.apache.ambari.server.state.StackInfo;
+import org.apache.ambari.server.state.stack.OsFamily;
+
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+
+/**
+ * Directory tree rescans and stack modules parsing take much time on every module init.
+ * This class enhances {@code}StackManager{@code} to reuse already parsed modules.
+ */
+public class StackManagerMock extends StackManager {
+
+ // Ensure correct behavior during the parallel test execution.
+ private static final Lock lock = new ReentrantLock();
+
+ // Some tests use different stack locations.
+ private static final Map<ModulesPathsKey, CachedModules> pathsToCachedModulesMap = new HashMap<>();
+
+ public static void invalidateKey(File stackRoot, File commonServicesRoot, File extensionRoot) {
+ ModulesPathsKey pathsKey = new ModulesPathsKey(stackRoot, commonServicesRoot, extensionRoot);
+ pathsToCachedModulesMap.remove(pathsKey);
+ }
+
+ // Paths for this instance.
+ private File currentStackRoot;
+ private File currentCommonServicesRoot;
+ private File currentExtensionRoot;
+
+ public void invalidateCurrentPaths() {
+ invalidateKey(currentStackRoot, currentCommonServicesRoot, currentExtensionRoot);
+ }
+
+ private static class ModulesPathsKey {
+ private String stackRoot;
+ private String commonServicesRoot;
+ private String extensionRoot;
+
+ public ModulesPathsKey(File stackRoot, File commonServicesRoot, File extensionRoot) {
+ this.stackRoot = stackRoot == null ? "" : stackRoot.getPath();
+ this.commonServicesRoot = commonServicesRoot == null ? "" : commonServicesRoot.getPath();
+ this.extensionRoot = extensionRoot == null ? "" : extensionRoot.getPath();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ModulesPathsKey that = (ModulesPathsKey) o;
+
+ if (stackRoot != null ? !stackRoot.equals(that.stackRoot) : that.stackRoot != null) return false;
+ if (commonServicesRoot != null ? !commonServicesRoot.equals(that.commonServicesRoot) : that.commonServicesRoot != null)
+ return false;
+ return !(extensionRoot != null ? !extensionRoot.equals(that.extensionRoot) : that.extensionRoot != null);
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = stackRoot != null ? stackRoot.hashCode() : 0;
+ result = 31 * result + (commonServicesRoot != null ? commonServicesRoot.hashCode() : 0);
+ result = 31 * result + (extensionRoot != null ? extensionRoot.hashCode() : 0);
+ return result;
+ }
+ }
+
+ private static class CachedModules {
+ private Map<String, ServiceModule> cachedCommonServiceModules;
+ private Map<String, StackModule> cachedStackModules;
+ private Map<String, ExtensionModule> cachedExtensionModules;
+ private Map<String, StackInfo> cachedStackMap;
+
+ public CachedModules(Map<String, ServiceModule> cachedCommonServiceModules, Map<String, StackModule> cachedStackModules,
+ Map<String, ExtensionModule> cachedExtensionModules, Map<String, StackInfo> cachedStackMap) {
+ this.cachedCommonServiceModules = cachedCommonServiceModules;
+ this.cachedStackModules = cachedStackModules;
+ this.cachedExtensionModules = cachedExtensionModules;
+ this.cachedStackMap = cachedStackMap;
+ }
+
+ public Map<String, ServiceModule> getCachedCommonServiceModules() {
+ return cachedCommonServiceModules;
+ }
+
+ public Map<String, StackModule> getCachedStackModules() {
+ return cachedStackModules;
+ }
+
+ public Map<String, ExtensionModule> getCachedExtensionModules() {
+ return cachedExtensionModules;
+ }
+
+ public Map<String, StackInfo> getCachedStackMap() {
+ return cachedStackMap;
+ }
+ }
+
+ @Inject
+ public StackManagerMock(@Assisted("stackRoot") File stackRoot, @Nullable @Assisted("commonServicesRoot")
+ File commonServicesRoot, @Assisted("extensionRoot") @Nullable File extensionRoot,
+ @Assisted OsFamily osFamily, @Assisted boolean validate, MetainfoDAO metaInfoDAO,
+ ActionMetadata actionMetadata, StackDAO stackDao, ExtensionDAO extensionDao,
+ ExtensionLinkDAO linkDao) throws AmbariException {
+ super(stackRoot, commonServicesRoot, extensionRoot, osFamily, validate, metaInfoDAO, actionMetadata, stackDao, extensionDao, linkDao);
+ currentStackRoot = stackRoot;
+ currentCommonServicesRoot = commonServicesRoot;
+ currentExtensionRoot = extensionRoot;
+ }
+
+ @Override
+ protected void parseDirectories(File stackRoot, File commonServicesRoot, File extensionRoot) throws AmbariException {
+ try {
+ // Ensure correct behavior during the parallel test execution.
+ lock.lock();
+
+ ModulesPathsKey pathsKey = new ModulesPathsKey(stackRoot, commonServicesRoot, extensionRoot);
+ CachedModules cachedModules = pathsToCachedModulesMap.get(pathsKey);
+
+ if (cachedModules == null) {
+ super.parseDirectories(stackRoot, commonServicesRoot, extensionRoot);
+ CachedModules newEntry = new CachedModules(commonServiceModules, stackModules, extensionModules, stackMap);
+ pathsToCachedModulesMap.put(pathsKey, newEntry);
+ } else {
+ commonServiceModules = cachedModules.getCachedCommonServiceModules();
+ stackModules = cachedModules.getCachedStackModules();
+ extensionModules = cachedModules.getCachedExtensionModules();
+ stackMap = cachedModules.getCachedStackMap();
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/536bf049/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
index 34bac2a..c2e1f75 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
@@ -48,6 +48,7 @@ import org.apache.ambari.server.security.TestAuthenticationFactory;
import org.apache.ambari.server.security.authorization.AuthorizationException;
import org.apache.ambari.server.stack.HostsType;
import org.apache.ambari.server.stack.MasterHostResolver;
+import org.apache.ambari.server.stack.StackManagerMock;
import org.apache.ambari.server.state.UpgradeHelper.UpgradeGroupHolder;
import org.apache.ambari.server.state.stack.ConfigUpgradePack;
import org.apache.ambari.server.state.stack.UpgradePack;
@@ -92,6 +93,7 @@ public class UpgradeHelperTest {
private Injector injector;
private AmbariMetaInfo ambariMetaInfo;
+ private StackManagerMock stackManagerMock;
private OrmTestHelper helper;
private MasterHostResolver m_masterHostResolver;
private UpgradeHelper m_upgradeHelper;
@@ -134,6 +136,7 @@ public class UpgradeHelperTest {
helper = injector.getInstance(OrmTestHelper.class);
ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
+ stackManagerMock = (StackManagerMock) ambariMetaInfo.getStackManager();
m_upgradeHelper = injector.getInstance(UpgradeHelper.class);
m_masterHostResolver = EasyMock.createMock(MasterHostResolver.class);
m_managementController = injector.getInstance(AmbariManagementController.class);
@@ -242,6 +245,10 @@ public class UpgradeHelperTest {
assertEquals(6, groups.get(1).items.size());
assertEquals(9, groups.get(2).items.size());
assertEquals(8, groups.get(3).items.size());
+
+ // Do stacks cleanup
+ stackManagerMock.invalidateCurrentPaths();
+ ambariMetaInfo.init();
}
@Test
@@ -295,6 +302,10 @@ public class UpgradeHelperTest {
assertEquals(3, groups.get(0).items.size());
assertEquals(7, groups.get(1).items.size());
assertEquals(2, groups.get(2).items.size());
+
+ // Do stacks cleanup
+ stackManagerMock.invalidateCurrentPaths();
+ ambariMetaInfo.init();
}
@Test
@@ -349,6 +360,10 @@ public class UpgradeHelperTest {
assertEquals(3, groups.get(0).items.size());
assertEquals(6, groups.get(1).items.size());
assertEquals(1, groups.get(2).items.size());
+
+ // Do stacks cleanup
+ stackManagerMock.invalidateCurrentPaths();
+ ambariMetaInfo.init();
}
@Test
@@ -383,6 +398,9 @@ public class UpgradeHelperTest {
assertEquals("Calculating Properties", stageWrappers.get(4).getText());
assertEquals("Calculating HDFS Properties", stageWrappers.get(5).getText());
+ // Do stacks cleanup
+ stackManagerMock.invalidateCurrentPaths();
+ ambariMetaInfo.init();
}
/**
@@ -427,6 +445,10 @@ public class UpgradeHelperTest {
assertFalse(hosts.contains(hostInMaintenanceMode.getHostName()));
}
}
+
+ // Do stacks cleanup
+ stackManagerMock.invalidateCurrentPaths();
+ ambariMetaInfo.init();
}
/**
@@ -1156,6 +1178,10 @@ public class UpgradeHelperTest {
assertEquals(5, groups.get(1).items.size());
assertEquals(9, groups.get(2).items.size());
assertEquals(8, groups.get(3).items.size());
+
+ // Do stacks cleanup
+ stackManagerMock.invalidateCurrentPaths();
+ ambariMetaInfo.init();
}