Repository: ambari Updated Branches: refs/heads/trunk 358cb97db -> 0afeed9fc
AMBARI-5790. Add test scenario for changes in composing packages for install.(vbrodetskyi) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0afeed9f Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0afeed9f Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0afeed9f Branch: refs/heads/trunk Commit: 0afeed9fc4a7c04bf9200e90a957a67bc61a1ba3 Parents: 358cb97 Author: Vitaly Brodetskyi <[email protected]> Authored: Fri May 16 19:14:25 2014 +0300 Committer: Vitaly Brodetskyi <[email protected]> Committed: Fri May 16 19:14:25 2014 +0300 ---------------------------------------------------------------------- .../AmbariManagementControllerImpl.java | 35 ++++++---- .../ambari/server/state/ServiceOsSpecific.java | 6 +- .../AmbariManagementControllerImplTest.java | 67 ++++++++++++++++++++ 3 files changed, 94 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/0afeed9f/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java index 003d56e..9796336 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java @@ -1373,19 +1373,9 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle if (serviceInfo.getOsSpecifics().containsKey(AmbariMetaInfo.ANY_OS)) { anyOs = serviceInfo.getOsSpecifics().get(AmbariMetaInfo.ANY_OS); } - ServiceOsSpecific hostOs = new ServiceOsSpecific(osFamily); - List<ServiceOsSpecific> foundedOSSpecifics = getOSSpecificsByFamily(serviceInfo.getOsSpecifics(), osFamily); - if (!foundedOSSpecifics.isEmpty()) { - for (ServiceOsSpecific osSpecific : foundedOSSpecifics) { - hostOs.addPackages(osSpecific.getPackages()); - } - // Choose repo that is relevant for host - ServiceOsSpecific.Repo serviceRepo = hostOs.getRepo(); - if (serviceRepo != null) { - String serviceRepoInfo = gson.toJson(serviceRepo); - hostParams.put(SERVICE_REPO_INFO, serviceRepoInfo); - } - } + + ServiceOsSpecific hostOs = populateServicePackagesInfo(serviceInfo, hostParams, osFamily); + // Build package list that is relevant for host List<ServiceOsSpecific.Package> packages = new ArrayList<ServiceOsSpecific.Package>(); @@ -1418,6 +1408,25 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle } } + protected ServiceOsSpecific populateServicePackagesInfo(ServiceInfo serviceInfo, Map<String, String> hostParams, + String osFamily) { + ServiceOsSpecific hostOs = new ServiceOsSpecific(osFamily); + List<ServiceOsSpecific> foundedOSSpecifics = getOSSpecificsByFamily(serviceInfo.getOsSpecifics(), osFamily); + if (!foundedOSSpecifics.isEmpty()) { + for (ServiceOsSpecific osSpecific : foundedOSSpecifics) { + hostOs.addPackages(osSpecific.getPackages()); + } + // Choose repo that is relevant for host + ServiceOsSpecific.Repo serviceRepo = hostOs.getRepo(); + if (serviceRepo != null) { + String serviceRepoInfo = gson.toJson(serviceRepo); + hostParams.put(SERVICE_REPO_INFO, serviceRepoInfo); + } + } + + return hostOs; + } + private List<ServiceOsSpecific> getOSSpecificsByFamily(Map<String, ServiceOsSpecific> osSpecifics, String osFamily) { List<ServiceOsSpecific> foundedOSSpecifics = new ArrayList<ServiceOsSpecific>(); for (Entry<String, ServiceOsSpecific> osSpecific : osSpecifics.entrySet()) { http://git-wip-us.apache.org/repos/asf/ambari/blob/0afeed9f/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java index cd6f689..a143ba1 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java @@ -125,7 +125,11 @@ public class ServiceOsSpecific { return name; } - private Package() { } + public void setName(String name) { + this.name = name; + } + + public Package() { } } http://git-wip-us.apache.org/repos/asf/ambari/blob/0afeed9f/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java index b412245..f267744 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java @@ -37,6 +37,8 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.List; +import java.util.ArrayList; import junit.framework.Assert; import org.apache.ambari.server.AmbariException; @@ -46,6 +48,7 @@ import org.apache.ambari.server.ParentObjectNotFoundException; import org.apache.ambari.server.ServiceComponentHostNotFoundException; import org.apache.ambari.server.ServiceComponentNotFoundException; import org.apache.ambari.server.ServiceNotFoundException; +import org.apache.ambari.server.actionmanager.ActionManager; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; @@ -55,6 +58,8 @@ import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.ServiceComponentHost; import org.apache.ambari.server.state.StackId; +import org.apache.ambari.server.state.ServiceOsSpecific; +import org.apache.ambari.server.state.ServiceInfo; import org.easymock.Capture; import org.junit.Test; @@ -1153,4 +1158,66 @@ public class AmbariManagementControllerImplTest { verify(injector, clusters, cluster, response1, response2, response3, stack, metaInfo, service1, service2, component1, component2, componentHost1, componentHost2, componentHost3); } + + @Test + public void testPopulateServicePackagesInfo() throws Exception { + Capture<AmbariManagementController> controllerCapture = new Capture<AmbariManagementController>(); + Injector injector = createStrictMock(Injector.class); + MaintenanceStateHelper maintHelper = createNiceMock(MaintenanceStateHelper.class); + Clusters clusters = createNiceMock(Clusters.class); + + ServiceInfo serviceInfo = createNiceMock(ServiceInfo.class); + Map<String, String> hostParams = new HashMap<String, String>(); + String osFamily = "testOSFamily"; + + Map<String, ServiceOsSpecific> osSpecifics = new HashMap<String, ServiceOsSpecific>(); + + ServiceOsSpecific.Package package1 = new ServiceOsSpecific.Package(); + package1.setName("testrpm1"); + ServiceOsSpecific.Package package2 = new ServiceOsSpecific.Package(); + package2.setName("testrpm2"); + ServiceOsSpecific.Package package3 = new ServiceOsSpecific.Package(); + package3.setName("testrpm3"); + + List<ServiceOsSpecific.Package> packageList1 = new ArrayList<ServiceOsSpecific.Package>(); + packageList1.add(package1); + List<ServiceOsSpecific.Package> packageList2 = new ArrayList<ServiceOsSpecific.Package>(); + packageList2.add(package2); + packageList2.add(package3); + + ServiceOsSpecific osSpecific1 = new ServiceOsSpecific("testOSFamily"); + osSpecific1.addPackages(packageList1); + ServiceOsSpecific osSpecific2 = new ServiceOsSpecific("testOSFamily1,testOSFamily,testOSFamily2"); + osSpecific2.addPackages(packageList2); + + osSpecifics.put("testOSFamily", osSpecific1); + osSpecifics.put("testOSFamily1,testOSFamily,testOSFamily2", osSpecific2); + + expect(serviceInfo.getOsSpecifics()).andReturn(osSpecifics); + injector.injectMembers(capture(controllerCapture)); + expect(injector.getInstance(Gson.class)).andReturn(null); + expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes(); + + replay(maintHelper, injector, clusters, serviceInfo); + + AmbariManagementControllerImplTest.NestedTestClass nestedTestClass = this.new NestedTestClass(null, clusters, + injector); + + ServiceOsSpecific serviceOsSpecific = nestedTestClass.populateServicePackagesInfo(serviceInfo, hostParams, osFamily); + + assertEquals(serviceOsSpecific.getPackages().size(), 3); + } + + private class NestedTestClass extends AmbariManagementControllerImpl { + + public NestedTestClass(ActionManager actionManager, Clusters clusters, Injector injector) throws Exception { + super(actionManager, clusters, injector); + } + + public ServiceOsSpecific testPopulateServicePackagesInfo(ServiceInfo serviceInfo, Map<String, String> hostParams, + String osFamily) { + return super.populateServicePackagesInfo(serviceInfo, hostParams, osFamily); + } + + } }
