http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java index 9d499c0..86a11e3 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java @@ -41,12 +41,16 @@ import org.apache.ambari.server.controller.internal.RequestResourceFilter; import org.apache.ambari.server.controller.internal.ServiceResourceProviderTest; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; +import org.apache.ambari.server.orm.OrmTestHelper; +import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.security.TestAuthenticationFactory; import org.apache.ambari.server.security.authorization.AuthorizationException; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Host; import org.apache.ambari.server.state.HostState; import org.apache.ambari.server.state.SecurityType; +import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.State; import org.apache.ambari.server.topology.TopologyManager; import org.apache.ambari.server.utils.StageUtils; @@ -77,6 +81,11 @@ public class BackgroundCustomCommandExecutionTest { @Captor ArgumentCaptor<Request> requestCapture; @Mock ActionManager am; + private final String STACK_VERSION = "2.0.6"; + private final String REPO_VERSION = "2.0.6-1234"; + private final StackId STACK_ID = new StackId("HDP", STACK_VERSION); + private RepositoryVersionEntity m_repositoryVersion; + @Before public void setup() throws Exception { Configuration configuration; @@ -100,6 +109,7 @@ public class BackgroundCustomCommandExecutionTest { clusters = injector.getInstance(Clusters.class); configuration = injector.getInstance(Configuration.class); topologyManager = injector.getInstance(TopologyManager.class); + OrmTestHelper ormTestHelper = injector.getInstance(OrmTestHelper.class); Assert.assertEquals("src/main/resources/custom_action_definitions", configuration.getCustomActionDefinitionPath()); @@ -111,6 +121,9 @@ public class BackgroundCustomCommandExecutionTest { // Set the authenticated user // TODO: remove this or replace the authenticated user to test authorization rules SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator()); + + m_repositoryVersion = ormTestHelper.getOrCreateRepositoryVersion(STACK_ID, REPO_VERSION); + Assert.assertNotNull(m_repositoryVersion); } @After public void teardown() throws AmbariException, SQLException { @@ -192,7 +205,9 @@ public class BackgroundCustomCommandExecutionTest { } private void createCluster(String clusterName) throws AmbariException, AuthorizationException { - ClusterRequest r = new ClusterRequest(null, clusterName, State.INSTALLED.name(), SecurityType.NONE, "HDP-2.0.6", null); + ClusterRequest r = new ClusterRequest(null, clusterName, State.INSTALLED.name(), + SecurityType.NONE, STACK_ID.getStackId(), null); + controller.createCluster(r); } @@ -202,11 +217,14 @@ public class BackgroundCustomCommandExecutionTest { if (desiredState != null) { dStateStr = desiredState.toString(); } - ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, dStateStr); + ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, + m_repositoryVersion.getStackId().getStackId(), m_repositoryVersion.getVersion(), dStateStr); + Set<ServiceRequest> requests = new HashSet<>(); requests.add(r1); - ServiceResourceProviderTest.createServices(controller, requests); + ServiceResourceProviderTest.createServices(controller, + injector.getInstance(RepositoryVersionDAO.class), requests); } private void createServiceComponent(String clusterName,
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java index 5275580..8cfe258 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java @@ -965,14 +965,11 @@ public class KerberosHelperTest extends EasyMockSupport { KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class); boolean identitiesManaged = (manageIdentities == null) || !"false".equalsIgnoreCase(manageIdentities); - final StackId stackVersion = createMock(StackId.class); - final ServiceComponentHost schKerberosClient = createMock(ServiceComponentHost.class); expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes(); expect(schKerberosClient.getServiceComponentName()).andReturn(Role.KERBEROS_CLIENT.name()).anyTimes(); expect(schKerberosClient.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(schKerberosClient.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(schKerberosClient.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(schKerberosClient.getHostName()).andReturn("host1").anyTimes(); expect(schKerberosClient.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -981,7 +978,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch1.getServiceComponentName()).andReturn("COMPONENT1").anyTimes(); expect(sch1.getSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); expect(sch1.getDesiredSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); - expect(sch1.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch1.getHostName()).andReturn("host1").anyTimes(); expect(sch1.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -995,7 +991,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch2.getServiceComponentName()).andReturn("COMPONENT2").anyTimes(); expect(sch2.getSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); expect(sch2.getDesiredSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); - expect(sch2.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch2.getHostName()).andReturn("host1").anyTimes(); expect(sch2.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -1156,14 +1151,11 @@ public class KerberosHelperTest extends EasyMockSupport { KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class); boolean identitiesManaged = (manageIdentities == null) || !"false".equalsIgnoreCase(manageIdentities); - final StackId stackVersion = createMock(StackId.class); - final ServiceComponentHost schKerberosClient = createMock(ServiceComponentHost.class); expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes(); expect(schKerberosClient.getServiceComponentName()).andReturn(Role.KERBEROS_CLIENT.name()).anyTimes(); expect(schKerberosClient.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(schKerberosClient.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(schKerberosClient.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(schKerberosClient.getHostName()).andReturn("host1").anyTimes(); expect(schKerberosClient.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -1172,7 +1164,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch1.getServiceComponentName()).andReturn("COMPONENT1").anyTimes(); expect(sch1.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(sch1.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(sch1.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch1.getHostName()).andReturn("host1").anyTimes(); expect(sch1.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -1186,7 +1177,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch2.getServiceComponentName()).andReturn("COMPONENT2").anyTimes(); expect(sch2.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(sch2.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(sch2.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch2.getHostName()).andReturn("host1").anyTimes(); expect(sch2.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -1344,14 +1334,11 @@ public class KerberosHelperTest extends EasyMockSupport { KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class); - final StackId stackVersion = createMock(StackId.class); - final ServiceComponentHost schKerberosClient = createMock(ServiceComponentHost.class); expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes(); expect(schKerberosClient.getServiceComponentName()).andReturn(Role.KERBEROS_CLIENT.name()).anyTimes(); expect(schKerberosClient.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(schKerberosClient.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(schKerberosClient.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(schKerberosClient.getHostName()).andReturn("host1").anyTimes(); expect(schKerberosClient.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -1360,7 +1347,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch1.getServiceComponentName()).andReturn("COMPONENT1").once(); expect(sch1.getSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); expect(sch1.getDesiredSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); - expect(sch1.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch1.getHostName()).andReturn("host1").anyTimes(); expect(sch1.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -1374,7 +1360,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch2.getServiceComponentName()).andReturn("COMPONENT2").anyTimes(); expect(sch2.getSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); expect(sch2.getDesiredSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes(); - expect(sch2.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch2.getHostName()).andReturn("host1").anyTimes(); expect(sch2.getState()).andReturn(State.INSTALLED).anyTimes(); @@ -1536,8 +1521,6 @@ public class KerberosHelperTest extends EasyMockSupport { KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class); - final StackId stackVersion = createMock(StackId.class); - final ServiceComponentHost schKerberosClient = createMock(ServiceComponentHost.class); expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes(); expect(schKerberosClient.getServiceComponentName()).andReturn(Role.KERBEROS_CLIENT.name()).anyTimes(); @@ -1549,7 +1532,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch1.getServiceComponentName()).andReturn("COMPONENT1").anyTimes(); expect(sch1.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(sch1.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(sch1.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch1.getHostName()).andReturn("host1").anyTimes(); final ServiceComponentHost sch2 = createMock(ServiceComponentHost.class); @@ -1557,7 +1539,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch2.getServiceComponentName()).andReturn("COMPONENT2").anyTimes(); expect(sch2.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(sch2.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(sch2.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch2.getHostName()).andReturn("host1").anyTimes(); final Host host = createMockHost("host1"); @@ -1577,7 +1558,6 @@ public class KerberosHelperTest extends EasyMockSupport { expect(sch1a.getServiceComponentName()).andReturn("COMPONENT1").anyTimes(); expect(sch1a.getSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); expect(sch1a.getDesiredSecurityState()).andReturn(SecurityState.UNSECURED).anyTimes(); - expect(sch1a.getStackVersion()).andReturn(stackVersion).anyTimes(); expect(sch1a.getHostName()).andReturn("host2").anyTimes(); hostInvalid = createMockHost("host1"); http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java index 34e2e06..575f5e4 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java @@ -31,6 +31,9 @@ import org.apache.ambari.server.controller.internal.ComponentResourceProviderTes import org.apache.ambari.server.controller.internal.ServiceResourceProviderTest; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; +import org.apache.ambari.server.orm.OrmTestHelper; +import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.security.TestAuthenticationFactory; import org.apache.ambari.server.security.authorization.AuthorizationException; import org.apache.ambari.server.state.Cluster; @@ -42,6 +45,7 @@ import org.apache.ambari.server.state.SecurityType; 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.State; import org.junit.After; import org.junit.Before; @@ -60,16 +64,18 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { private AmbariManagementController controller; private Clusters clusters; private ConfigHelper configHelper; + private OrmTestHelper ormTestHelper; @Before public void setup() throws Exception { injector = Guice.createInjector(new InMemoryDefaultTestModule()); - + injector.getInstance(GuiceJpaInitializer.class); controller = injector.getInstance(AmbariManagementController.class); clusters = injector.getInstance(Clusters.class); configHelper = injector.getInstance(ConfigHelper.class); + ormTestHelper = injector.getInstance(OrmTestHelper.class); // Set the authenticated user // TODO: remove this or replace the authenticated user to test authorization rules @@ -85,27 +91,27 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { } - + @Test public void testRMRequiresRestart() throws AmbariException, AuthorizationException { createClusterFixture("HDP-2.0.7"); - - + + Cluster cluster = clusters.getCluster("c1"); - + // Start ClusterRequest cr = new ClusterRequest(cluster.getClusterId(), "c1", cluster.getDesiredStackVersion().getStackVersion(), null); cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest("c1","capacity-scheduler","version2",new HashMap<String, String>(), null))); - + controller.updateClusters(Collections.singleton(cr) , null); - - + + ServiceComponentHostRequest r = new ServiceComponentHostRequest("c1", null, null, null, null); r.setStaleConfig("true"); Set<ServiceComponentHostResponse> resps = controller.getHostComponents(Collections.singleton(r)); Assert.assertEquals(1, resps.size()); - + Assert.assertEquals(true, configHelper.isStaleConfigs(clusters.getCluster("c1").getService("YARN").getServiceComponent("RESOURCEMANAGER").getServiceComponentHost("c6401"), null)); } @@ -113,29 +119,29 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { public void testAllRequiresRestart() throws AmbariException, AuthorizationException { createClusterFixture("HDP-2.0.7"); Cluster cluster = clusters.getCluster("c1"); - + // Start ClusterRequest cr = new ClusterRequest(cluster.getClusterId(), "c1", cluster.getDesiredStackVersion().getStackVersion(), null); - + cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest("c1","core-site","version2",new HashMap<String, String>(),null))); - + controller.updateClusters(Collections.singleton(cr) , null); - - + + ServiceComponentHostRequest r = new ServiceComponentHostRequest("c1", null, null, null, null); r.setStaleConfig("true"); Set<ServiceComponentHostResponse> resps = controller.getHostComponents(Collections.singleton(r)); Assert.assertEquals(4, resps.size()); - + } @Test public void testConfigInComponent() throws Exception { StackServiceRequest requestWithParams = new StackServiceRequest("HDP", "2.0.6", "YARN"); Set<StackServiceResponse> responsesWithParams = controller.getStackServices(Collections.singleton(requestWithParams)); - + Assert.assertEquals(1, responsesWithParams.size()); - + for (StackServiceResponse responseWithParams: responsesWithParams) { Assert.assertEquals(responseWithParams.getServiceName(), "YARN"); Assert.assertTrue(responseWithParams.getConfigTypes().containsKey("capacity-scheduler")); @@ -146,9 +152,9 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { public void testConfigInComponentOverwrited() throws Exception { StackServiceRequest requestWithParams = new StackServiceRequest("HDP", "2.0.7", "YARN"); Set<StackServiceResponse> responsesWithParams = controller.getStackServices(Collections.singleton(requestWithParams)); - + Assert.assertEquals(1, responsesWithParams.size()); - + for (StackServiceResponse responseWithParams: responsesWithParams) { Assert.assertEquals(responseWithParams.getServiceName(), "YARN"); Assert.assertTrue(responseWithParams.getConfigTypes().containsKey("capacity-scheduler")); @@ -159,17 +165,17 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { createCluster("c1", stackName); addHost("c6401","c1"); addHost("c6402","c1"); - + clusters.getCluster("c1"); createService("c1", "YARN", null); - + createServiceComponent("c1","YARN","RESOURCEMANAGER", State.INIT); createServiceComponent("c1","YARN","NODEMANAGER", State.INIT); createServiceComponent("c1","YARN","YARN_CLIENT", State.INIT); - + createServiceComponentHost("c1","YARN","RESOURCEMANAGER","c6401", null); createServiceComponentHost("c1","YARN","NODEMANAGER","c6401", null); - + createServiceComponentHost("c1","YARN","NODEMANAGER","c6402", null); createServiceComponentHost("c1","YARN","YARN_CLIENT","c6402", null); } @@ -187,7 +193,7 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { Map<String, String> hostAttributes = new HashMap<>(); hostAttributes.put("os_family", osFamily); hostAttributes.put("os_release_version", osVersion); - + host.setHostAttributes(hostAttributes); } @@ -195,18 +201,26 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { ClusterRequest r = new ClusterRequest(null, clusterName, State.INSTALLED.name(), SecurityType.NONE, stackName, null); controller.createCluster(r); } - + private void createService(String clusterName, String serviceName, State desiredState) throws AmbariException, AuthorizationException { String dStateStr = null; + if (desiredState != null) { dStateStr = desiredState.toString(); } - ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, dStateStr); + + RepositoryVersionEntity repositoryVersion = ormTestHelper.getOrCreateRepositoryVersion( + new StackId("HDP-2.0.7"), "2.0.7-1234"); + + ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, + repositoryVersion.getStackId().getStackId(), repositoryVersion.getVersion(), dStateStr); + Set<ServiceRequest> requests = new HashSet<>(); requests.add(r1); - ServiceResourceProviderTest.createServices(controller, requests); + ServiceResourceProviderTest.createServices(controller, + injector.getInstance(RepositoryVersionDAO.class), requests); } private void createServiceComponent(String clusterName, @@ -236,13 +250,13 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest { new HashSet<>(); requests.add(r); controller.createHostComponents(requests); - - + + //set actual config Service service = clusters.getCluster(clusterName).getService(serviceName); ServiceComponent rm = service.getServiceComponent(componentName); ServiceComponentHost rmc1 = rm.getServiceComponentHost(hostname); - + rmc1.updateActualConfigs((new HashMap<String, Map<String,String>>() {{ put("capacity-scheduler", new HashMap<String,String>() {{ put("tag", "version1"); }}); put("hive-group", new HashMap<String,String>() {{ put("tag", "version1"); }}); http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java index 094e49d..35ce868 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java @@ -35,6 +35,7 @@ import org.apache.ambari.server.controller.MaintenanceStateHelper; import org.apache.ambari.server.controller.ResourceProviderFactory; import org.apache.ambari.server.controller.spi.Resource; import org.apache.ambari.server.controller.spi.ResourceProvider; +import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; import org.junit.Test; import junit.framework.Assert; @@ -61,12 +62,16 @@ public class AbstractControllerResourceProviderTest { ResourceProviderFactory factory = createMock(ResourceProviderFactory.class); MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); - ResourceProvider serviceResourceProvider = new ServiceResourceProvider(propertyIds, keyPropertyIds, managementController, maintenanceStateHelper); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); + + ResourceProvider serviceResourceProvider = new ServiceResourceProvider(propertyIds, + keyPropertyIds, managementController, maintenanceStateHelper, repositoryVersionDAO); + expect(factory.getServiceResourceProvider(propertyIds, keyPropertyIds, managementController)).andReturn(serviceResourceProvider); AbstractControllerResourceProvider.init(factory); - replay(managementController, factory, maintenanceStateHelper); + replay(managementController, factory, maintenanceStateHelper, repositoryVersionDAO); AbstractResourceProvider provider = (AbstractResourceProvider) AbstractControllerResourceProvider.getResourceProvider( http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java index c761323..8f0a6bb 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java @@ -53,6 +53,7 @@ import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException; import org.apache.ambari.server.controller.spi.SystemException; import org.apache.ambari.server.controller.spi.UnsupportedPropertyException; import org.apache.ambari.server.controller.utilities.PredicateBuilder; +import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; import org.apache.ambari.server.state.SecurityType; import org.easymock.EasyMock; import org.easymock.IArgumentMatcher; @@ -79,11 +80,11 @@ public class AbstractResourceProviderTest { AmbariManagementController managementController = createMock(AmbariManagementController.class); MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); - replay(maintenanceStateHelper); - AbstractResourceProvider provider = new ServiceResourceProvider( - propertyIds, - keyPropertyIds, - managementController, maintenanceStateHelper); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); + replay(maintenanceStateHelper, repositoryVersionDAO); + + AbstractResourceProvider provider = new ServiceResourceProvider(propertyIds, keyPropertyIds, + managementController, maintenanceStateHelper, repositoryVersionDAO); Set<String> unsupported = provider.checkPropertyIds(Collections.singleton("foo")); Assert.assertTrue(unsupported.isEmpty()); @@ -118,12 +119,11 @@ public class AbstractResourceProviderTest { AmbariManagementController managementController = createMock(AmbariManagementController.class); MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); - replay(maintenanceStateHelper); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); + replay(maintenanceStateHelper, repositoryVersionDAO); - AbstractResourceProvider provider = new ServiceResourceProvider( - propertyIds, - keyPropertyIds, - managementController, maintenanceStateHelper); + AbstractResourceProvider provider = new ServiceResourceProvider(propertyIds, keyPropertyIds, + managementController, maintenanceStateHelper, repositoryVersionDAO); Set<String> supportedPropertyIds = provider.getPropertyIds(); Assert.assertTrue(supportedPropertyIds.containsAll(propertyIds)); @@ -135,12 +135,11 @@ public class AbstractResourceProviderTest { Map<Resource.Type, String> keyPropertyIds = new HashMap<>(); AmbariManagementController managementController = createMock(AmbariManagementController.class); MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); - replay(maintenanceStateHelper); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); + replay(maintenanceStateHelper, repositoryVersionDAO); - AbstractResourceProvider provider = new ServiceResourceProvider( - propertyIds, - keyPropertyIds, - managementController, maintenanceStateHelper); + AbstractResourceProvider provider = new ServiceResourceProvider(propertyIds, keyPropertyIds, + managementController, maintenanceStateHelper, repositoryVersionDAO); RequestStatus status = provider.getRequestStatus(null); @@ -358,7 +357,7 @@ public class AbstractResourceProviderTest { EasyMock.reportMatcher(new StackConfigurationRequestSetMatcher(stackName, stackVersion, serviceName, propertyName)); return null; } - + public static Set<StackConfigurationDependencyRequest> getStackConfigurationDependencyRequestSet(String stackName, String stackVersion, String serviceName, String propertyName, String dependencyName) { http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java index e7c1588..7b3837e 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java @@ -249,7 +249,9 @@ public class ClientConfigResourceProviderTest { HashMap<String, ServiceOsSpecific> serviceOsSpecificHashMap = new HashMap<>(); serviceOsSpecificHashMap.put("key",serviceOsSpecific); - ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(clusterName, serviceName, componentName, displayName, hostName, publicHostname,desiredState, "", null, null, null); + ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(clusterName, serviceName, + componentName, displayName, hostName, publicHostname, desiredState, "", null, null, null, + null); Set<ServiceComponentHostResponse> responses = new LinkedHashSet<>(); responses.add(shr1); @@ -497,7 +499,9 @@ public class ClientConfigResourceProviderTest { HashMap<String, ServiceOsSpecific> serviceOsSpecificHashMap = new HashMap<>(); serviceOsSpecificHashMap.put("key",serviceOsSpecific); - ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(clusterName, serviceName, componentName, displayName, hostName, publicHostName, desiredState, "", null, null, null); + ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse(clusterName, serviceName, + componentName, displayName, hostName, publicHostName, desiredState, "", null, null, null, + null); Set<ServiceComponentHostResponse> responses = new LinkedHashSet<>(); responses.add(shr1); http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/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 6245708..caf7210 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 @@ -31,7 +31,6 @@ import static org.easymock.EasyMock.verify; import java.io.File; import java.io.FileInputStream; -import java.lang.reflect.Field; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; @@ -54,7 +53,6 @@ import org.apache.ambari.server.actionmanager.ExecutionCommandWrapper; import org.apache.ambari.server.actionmanager.HostRoleCommand; import org.apache.ambari.server.actionmanager.Stage; import org.apache.ambari.server.actionmanager.StageFactory; -import org.apache.ambari.server.agent.CommandReport; import org.apache.ambari.server.agent.ExecutionCommand; import org.apache.ambari.server.agent.ExecutionCommand.KeyNames; import org.apache.ambari.server.api.services.AmbariMetaInfo; @@ -80,14 +78,10 @@ import org.apache.ambari.server.orm.entities.ClusterEntity; import org.apache.ambari.server.orm.entities.ClusterVersionEntity; import org.apache.ambari.server.orm.entities.HostVersionEntity; import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; -import org.apache.ambari.server.orm.entities.ResourceEntity; -import org.apache.ambari.server.orm.entities.ResourceTypeEntity; import org.apache.ambari.server.orm.entities.StackEntity; import org.apache.ambari.server.orm.entities.UpgradeEntity; import org.apache.ambari.server.security.TestAuthenticationFactory; import org.apache.ambari.server.security.authorization.AuthorizationException; -import org.apache.ambari.server.security.authorization.ResourceType; -import org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.ConfigHelper; @@ -1116,319 +1110,6 @@ public class ClusterStackVersionResourceProviderTest { } @Test - public void testUpdateResourcesAsAdministrator() throws Exception { - testUpdateResources(TestAuthenticationFactory.createAdministrator()); - } - - @Test - public void testUpdateResourcesAsClusterAdministrator() throws Exception { - testUpdateResources(TestAuthenticationFactory.createClusterAdministrator()); - } - - @Test(expected = AuthorizationException.class) - public void testUpdateResourcesAsClusterOperator() throws Exception { - testUpdateResources(TestAuthenticationFactory.createClusterOperator()); - } - - private void testUpdateResources(Authentication authentication) throws Exception { - Resource.Type type = Resource.Type.ClusterStackVersion; - String clusterName = "Cluster100"; - - AmbariManagementController managementController = createMock(AmbariManagementController.class); - - StackId stackId = new StackId("HDP", "2.0.1"); - StackEntity stackEntity = stackDAO.find(stackId.getStackName(), stackId.getStackVersion()); - Assert.assertNotNull(stackEntity); - - ResourceTypeEntity resourceTypeEntity = resourceTypeDAO.findById(ResourceType.CLUSTER.getId()); - if (resourceTypeEntity == null) { - resourceTypeEntity = new ResourceTypeEntity(); - resourceTypeEntity.setId(ResourceType.CLUSTER.getId()); - resourceTypeEntity.setName(ResourceType.CLUSTER.name()); - resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity); - } - ResourceEntity resourceEntity = new ResourceEntity(); - resourceEntity.setResourceType(resourceTypeEntity); - - final Host host1 = createNiceMock("host1", Host.class); - final Host host2 = createNiceMock("host2", Host.class); - - expect(host1.getHostName()).andReturn("host1").anyTimes(); - expect(host2.getHostName()).andReturn("host2").anyTimes(); - replay(host1, host2); - - ServiceComponentHost sch = createMock(ServiceComponentHost.class); - List<ServiceComponentHost> schs = Collections.singletonList(sch); - - Cluster cluster = createNiceMock(Cluster.class); - cluster.setClusterName(clusterName); - - ArrayList<Host> hosts = new ArrayList<Host>() {{ - add(host1); - add(host2); - }}; - - Clusters clusters = createNiceMock(Clusters.class); - expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster); - - RepositoryVersionEntity repoVersion = new RepositoryVersionEntity(); - repoVersion.setOperatingSystems(OS_JSON); - StackEntity newDesiredStack = stackDAO.find("HDP", "2.0.1"); - repoVersion.setStack(newDesiredStack); - - final ServiceOsSpecific.Package hivePackage = new ServiceOsSpecific.Package(); - hivePackage.setName("hive"); - final ServiceOsSpecific.Package mysqlPackage = new ServiceOsSpecific.Package(); - mysqlPackage.setName("mysql"); - mysqlPackage.setSkipUpgrade(Boolean.TRUE); - List<ServiceOsSpecific.Package> packages = new ArrayList<ServiceOsSpecific.Package>() {{ - add(hivePackage); - add(mysqlPackage); - }}; - - ActionManager actionManager = createNiceMock(ActionManager.class); - - RequestStatusResponse response = createNiceMock(RequestStatusResponse.class); - ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class); - ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class); - - CommandReport report = createNiceMock(CommandReport.class); - FinalizeUpgradeAction finalizeUpgradeAction = createNiceMock(FinalizeUpgradeAction.class); - - AbstractControllerResourceProvider.init(resourceProviderFactory); - - Map<String, Map<String, String>> hostConfigTags = new HashMap<>(); - expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags); - - expect(managementController.getClusters()).andReturn(clusters).anyTimes(); - expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes(); - expect(managementController.getAuthName()).andReturn("admin").anyTimes(); - expect(managementController.getActionManager()).andReturn(actionManager).anyTimes(); - expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes(); - expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class), - EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).andReturn(packages).anyTimes(); - - expect(resourceProviderFactory.getHostResourceProvider(EasyMock.<Set<String>>anyObject(), EasyMock.<Map<Resource.Type, String>>anyObject(), - eq(managementController))).andReturn(csvResourceProvider).anyTimes(); - - expect(cluster.getCurrentStackVersion()).andReturn(stackId); - expect(cluster.getServiceComponentHosts(anyObject(String.class))).andReturn(schs).anyTimes(); - - Capture<StackId> capturedStackId = EasyMock.newCapture(); - cluster.setDesiredStackVersion(capture(capturedStackId)); - expectLastCall().once(); - expect(cluster.getHosts()).andReturn(hosts).anyTimes(); - - - expect(sch.getServiceName()).andReturn("HIVE").anyTimes(); - - expect(repositoryVersionDAOMock.findByDisplayName(anyObject(String.class))).andReturn(repoVersion); - - expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.<HostRoleCommand>emptyList()).anyTimes(); - - expect(finalizeUpgradeAction.execute(null)).andReturn(report); - - expect(report.getStdOut()).andReturn("Dummy stdout"); - expect(report.getStdErr()).andReturn("Dummy stderr"); - expect(report.getStatus()).andReturn("COMPLETED"); - - // replay - replay(managementController, response, clusters, resourceProviderFactory, csvResourceProvider, - cluster, repositoryVersionDAOMock, configHelper, sch, actionManager, finalizeUpgradeAction, report, - stageFactory); - - ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider( - type, - PropertyHelper.getPropertyIds(type), - PropertyHelper.getKeyPropertyIds(type), - managementController); - - injector.injectMembers(provider); - - // Have to inject instance manually because injection via DI fails - Field field = ClusterStackVersionResourceProvider.class.getDeclaredField("finalizeUpgradeAction"); - field.setAccessible(true); - field.set(provider, finalizeUpgradeAction); - - // add the property map to a set for the request. add more maps for multiple creates - Map<String, Object> properties = new LinkedHashMap<>(); - - // add properties to the request map - properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID, clusterName); - properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_STATE_PROPERTY_ID, "CURRENT"); - properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "HDP-2.2.2.0-2561"); - - // create the request - Request request = PropertyHelper.getUpdateRequest(properties, null); - - SecurityContextHolder.getContext().setAuthentication(authentication); - - provider.updateResources(request, null); - - // verify - verify(managementController, response); - Assert.assertEquals(capturedStackId.getValue(), - new StackId(newDesiredStack.getStackName(), newDesiredStack.getStackVersion())); - } - - @Test - public void testUpdateResourcesWithForceAsAdministrator() throws Exception { - testUpdateResourcesWithForce(TestAuthenticationFactory.createAdministrator()); - } - - @Test - public void testUpdateResourcesWithForceAsClusterAdministrator() throws Exception { - testUpdateResourcesWithForce(TestAuthenticationFactory.createClusterAdministrator()); - } - - @Test(expected = AuthorizationException.class) - public void testUpdateResourcesWithForceAsClusterOperator() throws Exception { - testUpdateResourcesWithForce(TestAuthenticationFactory.createClusterOperator()); - } - - private void testUpdateResourcesWithForce(Authentication authentication) throws Exception { - Resource.Type type = Resource.Type.ClusterStackVersion; - String clusterName = "Cluster100"; - - AmbariManagementController managementController = createMock(AmbariManagementController.class); - - StackId stackId = new StackId("HDP", "2.0.1"); - StackEntity stackEntity = stackDAO.find(stackId.getStackName(), stackId.getStackVersion()); - Assert.assertNotNull(stackEntity); - - ResourceTypeEntity resourceTypeEntity = resourceTypeDAO.findById(ResourceType.CLUSTER.getId()); - if (resourceTypeEntity == null) { - resourceTypeEntity = new ResourceTypeEntity(); - resourceTypeEntity.setId(ResourceType.CLUSTER.getId()); - resourceTypeEntity.setName(ResourceType.CLUSTER.name()); - resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity); - } - ResourceEntity resourceEntity = new ResourceEntity(); - resourceEntity.setResourceType(resourceTypeEntity); - - final Host host1 = createNiceMock("host1", Host.class); - final Host host2 = createNiceMock("host2", Host.class); - - expect(host1.getHostName()).andReturn("host1").anyTimes(); - expect(host2.getHostName()).andReturn("host2").anyTimes(); - replay(host1, host2); - - ServiceComponentHost sch = createMock(ServiceComponentHost.class); - List<ServiceComponentHost> schs = Collections.singletonList(sch); - - Cluster cluster = createNiceMock(Cluster.class); - cluster.setClusterName(clusterName); - - ArrayList<Host> hosts = new ArrayList<Host>() {{ - add(host1); - add(host2); - }}; - - Clusters clusters = createNiceMock(Clusters.class); - expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster); - - RepositoryVersionEntity repoVersion = new RepositoryVersionEntity(); - repoVersion.setOperatingSystems(OS_JSON); - StackEntity newDesiredStack = stackDAO.find("HDP", "2.0.1"); - repoVersion.setStack(newDesiredStack); - - final ServiceOsSpecific.Package hivePackage = new ServiceOsSpecific.Package(); - hivePackage.setName("hive"); - final ServiceOsSpecific.Package mysqlPackage = new ServiceOsSpecific.Package(); - mysqlPackage.setName("mysql"); - mysqlPackage.setSkipUpgrade(Boolean.TRUE); - List<ServiceOsSpecific.Package> packages = new ArrayList<ServiceOsSpecific.Package>() {{ - add(hivePackage); - add(mysqlPackage); - }}; - - ActionManager actionManager = createNiceMock(ActionManager.class); - - RequestStatusResponse response = createNiceMock(RequestStatusResponse.class); - ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class); - ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class); - - AbstractControllerResourceProvider.init(resourceProviderFactory); - - Map<String, Map<String, String>> hostConfigTags = new HashMap<>(); - expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags); - - expect(managementController.getClusters()).andReturn(clusters).anyTimes(); - expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes(); - expect(managementController.getAuthName()).andReturn("admin").anyTimes(); - expect(managementController.getActionManager()).andReturn(actionManager).anyTimes(); - expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes(); - expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class), - EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).andReturn(packages).anyTimes(); - - expect(resourceProviderFactory.getHostResourceProvider(EasyMock.<Set<String>>anyObject(), EasyMock.<Map<Resource.Type, String>>anyObject(), - eq(managementController))).andReturn(csvResourceProvider).anyTimes(); - - expect(cluster.getCurrentStackVersion()).andReturn(stackId); - expect(cluster.getServiceComponentHosts(anyObject(String.class))).andReturn(schs).anyTimes(); - - RepositoryVersionEntity currentRepo = new RepositoryVersionEntity(); - currentRepo.setVersion("2.2.2.0-2122"); - ClusterVersionEntity current = new ClusterVersionEntity(); - current.setRepositoryVersion(currentRepo); - - Capture<StackId> capturedStackId = EasyMock.newCapture(); - cluster.setDesiredStackVersion(capture(capturedStackId)); - expectLastCall().once(); - expect(cluster.getHosts()).andReturn(hosts).anyTimes(); - expect(cluster.getCurrentClusterVersion()).andReturn(current).anyTimes(); - - expect(sch.getServiceName()).andReturn("HIVE").anyTimes(); - - expect(repositoryVersionDAOMock.findByDisplayName(anyObject(String.class))).andReturn(repoVersion); - - clusterVersionDAO.updateVersions((Long) anyObject(), - (RepositoryVersionEntity) anyObject(), (RepositoryVersionEntity) anyObject()); - expectLastCall().once(); - - hostVersionDAO.updateVersions((RepositoryVersionEntity) anyObject(), (RepositoryVersionEntity) anyObject()); - expectLastCall().once(); - - hostComponentStateDAO.updateVersions((String) anyObject()); - expectLastCall().once(); - - // replay - replay(managementController, response, clusters, resourceProviderFactory, csvResourceProvider, - cluster, repositoryVersionDAOMock, configHelper, sch, actionManager, clusterVersionDAO, - hostVersionDAO, hostComponentStateDAO); - - ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider( - type, - PropertyHelper.getPropertyIds(type), - PropertyHelper.getKeyPropertyIds(type), - managementController); - - injector.injectMembers(provider); - - - // add the property map to a set for the request. add more maps for multiple creates - Map<String, Object> properties = new LinkedHashMap<>(); - - // add properties to the request map - properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID, clusterName); - properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_STATE_PROPERTY_ID, "CURRENT"); - properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "HDP-2.2.2.0-2561"); - properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_FORCE, "true"); - - // create the request - Request request = PropertyHelper.getUpdateRequest(properties, null); - - SecurityContextHolder.getContext().setAuthentication(authentication); - - provider.updateResources(request, null); - - // verify - verify(managementController, response, clusterVersionDAO, hostVersionDAO, hostComponentStateDAO); - Assert.assertEquals(capturedStackId.getValue(), - new StackId(newDesiredStack.getStackName(), newDesiredStack.getStackVersion())); - } - - @Test public void testCreateResourcesMixedAsAdministrator() throws Exception { testCreateResourcesMixed(TestAuthenticationFactory.createAdministrator()); } http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java index a2b0a0c..cb9e31e 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java @@ -183,23 +183,33 @@ public class HostComponentResourceProviderTest { Set<ServiceComponentHostResponse> allResponse = new HashSet<>(); StackId stackId = new StackId("HDP-0.1"); StackId stackId2 = new StackId("HDP-0.2"); + + String repositoryVersion2 = "0.2-1234"; + allResponse.add(new ServiceComponentHostResponse( - "Cluster100", "Service100", "Component100", "Component 100", "Host100", "Host100", State.INSTALLED.toString(), stackId.getStackId(), State.STARTED.toString(), - stackId2.getStackId(), null)); + "Cluster100", "Service100", "Component100", "Component 100", "Host100", "Host100", + State.INSTALLED.toString(), stackId.getStackId(), State.STARTED.toString(), + stackId2.getStackId(), repositoryVersion2, null)); + allResponse.add(new ServiceComponentHostResponse( - "Cluster100", "Service100", "Component101", "Component 101", "Host100", "Host100", State.INSTALLED.toString(), stackId.getStackId(), State.STARTED.toString(), - stackId2.getStackId(), null)); + "Cluster100", "Service100", "Component101", "Component 101", "Host100", "Host100", + State.INSTALLED.toString(), stackId.getStackId(), State.STARTED.toString(), + stackId2.getStackId(), repositoryVersion2, null)); allResponse.add(new ServiceComponentHostResponse( - "Cluster100", "Service100", "Component102", "Component 102", "Host100","Host100", State.INSTALLED.toString(), stackId.getStackId(), State.STARTED.toString(), - stackId2.getStackId(), null)); + "Cluster100", "Service100", "Component102", "Component 102", "Host100", "Host100", + State.INSTALLED.toString(), stackId.getStackId(), State.STARTED.toString(), + stackId2.getStackId(), repositoryVersion2, null)); + Map<String, String> expectedNameValues = new HashMap<>(); expectedNameValues.put( HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID, "Cluster100"); expectedNameValues.put( HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID, State.INSTALLED.toString()); expectedNameValues.put( - HostComponentResourceProvider.HOST_COMPONENT_STACK_ID_PROPERTY_ID, stackId.getStackId()); + HostComponentResourceProvider.HOST_COMPONENT_VERSION_PROPERTY_ID, repositoryVersion2); + expectedNameValues.put( + HostComponentResourceProvider.HOST_COMPONENT_DESIRED_REPOSITORY_VERSION, repositoryVersion2); expectedNameValues.put( HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID, State.STARTED.toString()); expectedNameValues.put( @@ -219,7 +229,8 @@ public class HostComponentResourceProviderTest { propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID); propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID); propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID); - propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_STACK_ID_PROPERTY_ID); + propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_VERSION_PROPERTY_ID); + propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_REPOSITORY_VERSION); propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID); propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID); @@ -236,9 +247,11 @@ public class HostComponentResourceProviderTest { hostsComponentResource1.setProperty(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "Component100"); hostsComponentResource1.setProperty(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID, State.INSTALLED.name()); hostsComponentResource1.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID, State.STARTED.name()); - hostsComponentResource1.setProperty(HostComponentResourceProvider.HOST_COMPONENT_STACK_ID_PROPERTY_ID, stackId.getStackId()); + hostsComponentResource1.setProperty( + HostComponentResourceProvider.HOST_COMPONENT_VERSION_PROPERTY_ID, repositoryVersion2); hostsComponentResource1.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID, stackId2.getStackId()); hostsComponentResource1.setProperty(HostComponentResourceProvider.HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID, UpgradeState.NONE.name()); + hostsComponentResource1.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_REPOSITORY_VERSION, repositoryVersion2); Resource hostsComponentResource2 = new ResourceImpl(Resource.Type.HostComponent); hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID, "Cluster100"); @@ -247,9 +260,11 @@ public class HostComponentResourceProviderTest { hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "Component101"); hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID, State.INSTALLED.name()); hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID, State.STARTED.name()); - hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_STACK_ID_PROPERTY_ID, stackId.getStackId()); + hostsComponentResource2.setProperty( + HostComponentResourceProvider.HOST_COMPONENT_VERSION_PROPERTY_ID, repositoryVersion2); hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID, stackId2.getStackId()); hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID, UpgradeState.NONE.name()); + hostsComponentResource2.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_REPOSITORY_VERSION, repositoryVersion2); Resource hostsComponentResource3 = new ResourceImpl(Resource.Type.HostComponent); hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID, "Cluster100"); @@ -258,9 +273,11 @@ public class HostComponentResourceProviderTest { hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "Component102"); hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID, State.INSTALLED.name()); hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID, State.STARTED.name()); - hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_STACK_ID_PROPERTY_ID, stackId.getStackId()); + hostsComponentResource3.setProperty( + HostComponentResourceProvider.HOST_COMPONENT_VERSION_PROPERTY_ID, repositoryVersion2); hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID, stackId2.getStackId()); hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID, UpgradeState.NONE.name()); + hostsComponentResource3.setProperty(HostComponentResourceProvider.HOST_COMPONENT_DESIRED_REPOSITORY_VERSION, repositoryVersion2); hostsComponentResources.add(hostsComponentResource1); hostsComponentResources.add(hostsComponentResource2); @@ -337,7 +354,8 @@ public class HostComponentResourceProviderTest { Set<ServiceComponentHostResponse> nameResponse = new HashSet<>(); nameResponse.add(new ServiceComponentHostResponse( - "Cluster102", "Service100", "Component100", "Component 100", "Host100", "Host100","INSTALLED", "", "", "", null)); + "Cluster102", "Service100", "Component100", "Component 100", "Host100", "Host100", + "INSTALLED", "", "", "", "", null)); // set expectations expect(managementController.getClusters()).andReturn(clusters).anyTimes(); @@ -538,7 +556,8 @@ public class HostComponentResourceProviderTest { Set<ServiceComponentHostResponse> nameResponse = new HashSet<>(); nameResponse.add(new ServiceComponentHostResponse( - "Cluster102", "Service100", "Component100", "Component 100", "Host100", "Host100","INSTALLED", "", "", "", null)); + "Cluster102", "Service100", "Component100", "Component 100", "Host100", "Host100", + "INSTALLED", "", "", "", "", null)); // set expectations expect(managementController.getClusters()).andReturn(clusters).anyTimes(); http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java index 8772b24..d1a4a1a 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java @@ -301,11 +301,11 @@ public class HostResourceProviderTest extends EasyMockSupport { clusterSet.add(cluster); ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component100", "Component 100", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); ServiceComponentHostResponse shr2 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component102", "Component 102", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); ServiceComponentHostResponse shr3 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component103", "Component 103", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); Set<ServiceComponentHostResponse> responses = new HashSet<>(); responses.add(shr1); @@ -402,11 +402,11 @@ public class HostResourceProviderTest extends EasyMockSupport { clusterSet.add(cluster); ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component100", "Component 100", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); ServiceComponentHostResponse shr2 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component102", "Component 102", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); ServiceComponentHostResponse shr3 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component103", "Component 103", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); Set<ServiceComponentHostResponse> responses = new HashSet<>(); responses.add(shr1); @@ -498,11 +498,11 @@ public class HostResourceProviderTest extends EasyMockSupport { clusterSet.add(cluster); ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component100", "Component 100", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); ServiceComponentHostResponse shr2 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component102", "Component 102", - "Host100", "Host100", "INSTALLED", "", null, null, null); + "Host100", "Host100", "INSTALLED", "", null, null, null, null); ServiceComponentHostResponse shr3 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component103", "Component 103", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); Set<ServiceComponentHostResponse> responses = new HashSet<>(); responses.add(shr1); @@ -698,7 +698,7 @@ public class HostResourceProviderTest extends EasyMockSupport { clusterSet.add(cluster); ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component100", "Component 100", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); Set<ServiceComponentHostResponse> responses = new HashSet<>(); responses.add(shr1); @@ -785,11 +785,11 @@ public class HostResourceProviderTest extends EasyMockSupport { clusterSet.add(cluster); ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component100", "Component 100", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); ServiceComponentHostResponse shr2 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component102", "Component 102", - "Host100", "Host100", "INSTALLED", "", null, null, null); + "Host100", "Host100", "INSTALLED", "", null, null, null, null); ServiceComponentHostResponse shr3 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component103", "Component 103", - "Host100", "Host100", "STARTED", "", null, null, null); + "Host100", "Host100", "STARTED", "", null, null, null, null); Set<ServiceComponentHostResponse> responses = new HashSet<>(); responses.add(shr1); http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java index 3cc6416..9486f9d 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java @@ -47,6 +47,9 @@ import org.apache.ambari.server.controller.spi.UnsupportedPropertyException; import org.apache.ambari.server.controller.utilities.PropertyHelper; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; +import org.apache.ambari.server.orm.OrmTestHelper; +import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.security.TestAuthenticationFactory; import org.apache.ambari.server.security.authorization.AuthorizationException; import org.apache.ambari.server.state.Cluster; @@ -83,6 +86,11 @@ public class JMXHostProviderTest { private static final String MAPREDUCE_HTTPS_POLICY = "mapreduce.jobhistory.http.policy"; private static final String MAPREDUCE_HTTPS_PORT = "mapreduce.jobhistory.webapp.https.address"; + private final String STACK_VERSION = "2.0.6"; + private final String REPO_VERSION = "2.0.6-1234"; + private final StackId STACK_ID = new StackId("HDP", STACK_VERSION); + private RepositoryVersionEntity m_repositoryVersion; + @Before public void setup() throws Exception { injector = Guice.createInjector(new InMemoryDefaultTestModule()); @@ -90,6 +98,10 @@ public class JMXHostProviderTest { injector.getInstance(GuiceJpaInitializer.class); clusters = injector.getInstance(Clusters.class); controller = injector.getInstance(AmbariManagementController.class); + OrmTestHelper ormTestHelper = injector.getInstance(OrmTestHelper.class); + + m_repositoryVersion = ormTestHelper.getOrCreateRepositoryVersion(STACK_ID, REPO_VERSION); + Assert.assertNotNull(m_repositoryVersion); // Set the authenticated user // TODO: remove this or replace the authenticated user to test authorization rules @@ -104,17 +116,22 @@ public class JMXHostProviderTest { SecurityContextHolder.getContext().setAuthentication(null); } - private void createService(String clusterName, - String serviceName, State desiredState) + private void createService(String clusterName, String serviceName, State desiredState) throws AmbariException, AuthorizationException { String dStateStr = null; + if (desiredState != null) { dStateStr = desiredState.toString(); } - ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, dStateStr); + + ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, STACK_ID.getStackId(), + REPO_VERSION, dStateStr); + Set<ServiceRequest> requests = new HashSet<>(); requests.add(r1); - ServiceResourceProviderTest.createServices(controller, requests); + + ServiceResourceProviderTest.createServices(controller, + injector.getInstance(RepositoryVersionDAO.class), requests); } private void createServiceComponent(String clusterName, @@ -640,14 +657,17 @@ public class JMXHostProviderTest { Injector injector = createNiceMock(Injector.class); MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); + { expect(injector.getInstance(Clusters.class)).andReturn(null); replay(maintenanceStateHelper, injector); } - ResourceProvider serviceResourceProvider = new ServiceResourceProvider(PropertyHelper - .getPropertyIds(Resource.Type.Service), - PropertyHelper.getKeyPropertyIds(Resource.Type.Service), controller, maintenanceStateHelper); + ResourceProvider serviceResourceProvider = new ServiceResourceProvider( + PropertyHelper.getPropertyIds(Resource.Type.Service), + PropertyHelper.getKeyPropertyIds(Resource.Type.Service), controller, maintenanceStateHelper, + repositoryVersionDAO); ResourceProvider hostCompResourceProvider = new HostComponentResourceProvider(PropertyHelper.getPropertyIds(Resource http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java index 4aacf91..2e712d1 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestImplTest.java @@ -61,7 +61,8 @@ public class RequestImplTest { Assert.assertTrue(validPropertyIds.contains("params/run_smoke_test")); Assert.assertTrue(validPropertyIds.contains("HostRoles/actual_configs")); Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_stack_id")); - Assert.assertTrue(validPropertyIds.contains("HostRoles/stack_id")); + Assert.assertTrue(validPropertyIds.contains("HostRoles/version")); + Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_repository_version")); Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_state")); Assert.assertTrue(validPropertyIds.contains("HostRoles/state")); Assert.assertTrue(validPropertyIds.contains("HostRoles/component_name")); http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java index 44c2493..04b7933 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java @@ -62,6 +62,9 @@ import org.apache.ambari.server.controller.spi.SystemException; import org.apache.ambari.server.controller.utilities.PredicateBuilder; import org.apache.ambari.server.controller.utilities.PropertyHelper; import org.apache.ambari.server.metadata.RoleCommandOrder; +import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; +import org.apache.ambari.server.orm.entities.ClusterVersionEntity; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.security.TestAuthenticationFactory; import org.apache.ambari.server.security.authorization.AuthorizationException; import org.apache.ambari.server.serveraction.kerberos.KerberosAdminAuthenticationException; @@ -117,10 +120,17 @@ public class ServiceResourceProviderTest { AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class); ServiceInfo serviceInfo = createNiceMock(ServiceInfo.class); + ClusterVersionEntity clusterVersion = createNiceMock(ClusterVersionEntity.class); + RepositoryVersionEntity repositoryVersion = createNiceMock(RepositoryVersionEntity.class); + expect(clusterVersion.getRepositoryVersion()).andReturn(repositoryVersion).atLeastOnce(); + expect(managementController.getClusters()).andReturn(clusters).anyTimes(); expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes(); - expect(cluster.addService("Service100")).andReturn(service); + expect(cluster.getCurrentClusterVersion()).andReturn(clusterVersion).atLeastOnce(); + + expect(cluster.addService(eq("Service100"), + EasyMock.anyObject(RepositoryVersionEntity.class))).andReturn(service); expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes(); @@ -135,7 +145,8 @@ public class ServiceResourceProviderTest { expect(ambariMetaInfo.getService((String)anyObject(), (String)anyObject(), (String)anyObject())).andReturn(serviceInfo).anyTimes(); // replay - replay(managementController, clusters, cluster, service, ambariMetaInfo, stackId, serviceFactory, serviceInfo); + replay(managementController, clusters, cluster, clusterVersion, repositoryVersion, service, + ambariMetaInfo, stackId, serviceFactory, serviceInfo); SecurityContextHolder.getContext().setAuthentication(authentication); @@ -160,7 +171,8 @@ public class ServiceResourceProviderTest { provider.createResources(request); // verify - verify(managementController, clusters, cluster, service, ambariMetaInfo, stackId, serviceFactory, serviceInfo); + verify(managementController, clusters, cluster, clusterVersion, repositoryVersion, service, + ambariMetaInfo, stackId, serviceFactory, serviceInfo); } @Test @@ -596,6 +608,7 @@ public class ServiceResourceProviderTest { private void testUpdateResources(Authentication authentication) throws Exception{ MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); AmbariManagementController managementController = createMock(AmbariManagementController.class); Clusters clusters = createNiceMock(Clusters.class); Cluster cluster = createNiceMock(Cluster.class); @@ -656,11 +669,13 @@ public class ServiceResourceProviderTest { // replay replay(managementController, clusters, cluster, rco, maintenanceStateHelper, - service0, serviceFactory, ambariMetaInfo, requestStages, requestStatusResponse, stackId, serviceInfo); + repositoryVersionDAO, service0, serviceFactory, ambariMetaInfo, requestStages, + requestStatusResponse, stackId, serviceInfo); SecurityContextHolder.getContext().setAuthentication(authentication); - ServiceResourceProvider provider = getServiceProvider(managementController, maintenanceStateHelper); + ServiceResourceProvider provider = getServiceProvider(managementController, + maintenanceStateHelper, repositoryVersionDAO); // add the property map to a set for the request. Map<String, Object> properties = new LinkedHashMap<>(); @@ -697,6 +712,7 @@ public class ServiceResourceProviderTest { private void testReconfigureClientsFlag(Authentication authentication) throws Exception { MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); AmbariManagementController managementController1 = createMock(AmbariManagementController.class); AmbariManagementController managementController2 = createMock (AmbariManagementController.class); @@ -787,14 +803,17 @@ public class ServiceResourceProviderTest { andReturn(Collections.<Service>emptySet()).anyTimes(); // replay - replay(managementController1, response1, managementController2, requestStages1, requestStages2, response2, - clusters, cluster, service0, serviceResponse0, ambariMetaInfo, rco, maintenanceStateHelper, stackId, serviceInfo); + replay(managementController1, response1, managementController2, requestStages1, requestStages2, + response2, clusters, cluster, service0, serviceResponse0, ambariMetaInfo, rco, + maintenanceStateHelper, repositoryVersionDAO, stackId, serviceInfo); SecurityContextHolder.getContext().setAuthentication(authentication); - ServiceResourceProvider provider1 = getServiceProvider(managementController1, maintenanceStateHelper); + ServiceResourceProvider provider1 = getServiceProvider(managementController1, + maintenanceStateHelper, repositoryVersionDAO); - ServiceResourceProvider provider2 = getServiceProvider(managementController2, maintenanceStateHelper); + ServiceResourceProvider provider2 = getServiceProvider(managementController2, + maintenanceStateHelper, repositoryVersionDAO); // add the property map to a set for the request. Map<String, Object> properties = new LinkedHashMap<>(); @@ -1122,9 +1141,11 @@ public class ServiceResourceProviderTest { AmbariManagementController managementController = createMock(AmbariManagementController.class); MaintenanceStateHelper maintenanceStateHelperMock = createNiceMock(MaintenanceStateHelper.class); - AbstractResourceProvider provider = new ServiceResourceProvider(propertyIds, - keyPropertyIds, - managementController, maintenanceStateHelperMock); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); + replay(maintenanceStateHelperMock, repositoryVersionDAO); + + AbstractResourceProvider provider = new ServiceResourceProvider(propertyIds, keyPropertyIds, + managementController, maintenanceStateHelperMock, repositoryVersionDAO); Set<String> unsupported = provider.checkPropertyIds(Collections.singleton("foo")); Assert.assertTrue(unsupported.isEmpty()); @@ -1156,26 +1177,30 @@ public class ServiceResourceProviderTest { */ public static ServiceResourceProvider getServiceProvider(AmbariManagementController managementController) throws AmbariException { MaintenanceStateHelper maintenanceStateHelperMock = createNiceMock(MaintenanceStateHelper.class); + RepositoryVersionDAO repositoryVersionDAO = createNiceMock(RepositoryVersionDAO.class); expect(maintenanceStateHelperMock.isOperationAllowed(anyObject(Resource.Type.class), anyObject(Service.class))).andReturn(true).anyTimes(); expect(maintenanceStateHelperMock.isOperationAllowed(anyObject(Resource.Type.class), anyObject(ServiceComponentHost.class))).andReturn(true).anyTimes(); - replay(maintenanceStateHelperMock); - return getServiceProvider(managementController, maintenanceStateHelperMock); + replay(maintenanceStateHelperMock, repositoryVersionDAO); + return getServiceProvider(managementController, maintenanceStateHelperMock, repositoryVersionDAO); } /** * This factory method allows to define custom MaintenanceStateHelper mock. */ - public static ServiceResourceProvider getServiceProvider(AmbariManagementController managementController, - MaintenanceStateHelper maintenanceStateHelper) { + public static ServiceResourceProvider getServiceProvider( + AmbariManagementController managementController, + MaintenanceStateHelper maintenanceStateHelper, RepositoryVersionDAO repositoryVersionDAO) { Resource.Type type = Resource.Type.Service; return new ServiceResourceProvider(PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type), - managementController, maintenanceStateHelper); + managementController, maintenanceStateHelper, repositoryVersionDAO); } - public static void createServices(AmbariManagementController controller, Set<ServiceRequest> requests) + public static void createServices(AmbariManagementController controller, + RepositoryVersionDAO repositoryVersionDAO, Set<ServiceRequest> requests) throws AmbariException, AuthorizationException { - ServiceResourceProvider provider = getServiceProvider(controller); + MaintenanceStateHelper maintenanceStateHelperMock = createNiceMock(MaintenanceStateHelper.class); + ServiceResourceProvider provider = getServiceProvider(controller, maintenanceStateHelperMock, repositoryVersionDAO); provider.createServices(requests); } @@ -1205,7 +1230,7 @@ public class ServiceResourceProviderTest { throws AmbariException, AuthorizationException { ServiceResourceProvider provider; if (maintenanceStateHelper != null) { - provider = getServiceProvider(controller, maintenanceStateHelper); + provider = getServiceProvider(controller, maintenanceStateHelper, null); } else { provider = getServiceProvider(controller); } http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java index 1c45589..bc178ea 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java @@ -55,6 +55,7 @@ import org.apache.ambari.server.state.ServiceComponentHostFactory; import org.apache.ambari.server.state.ServiceFactory; import org.apache.ambari.server.state.ServiceInfo; import org.apache.ambari.server.state.StackId; +import org.apache.ambari.server.state.UpgradeContext; import org.apache.ambari.server.state.UpgradeContextFactory; import org.apache.ambari.server.state.configgroup.ConfigGroupFactory; import org.apache.ambari.server.state.scheduler.RequestExecutionFactory; @@ -90,7 +91,6 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { private static final StackId s_targetStackId = new StackId("HDP-2.5"); private Injector m_injector; - private Clusters m_clustersMock; private AmbariMetaInfo m_ambariMetaInfoMock; /** @@ -98,7 +98,6 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { */ @Before public void before() throws Exception { - m_clustersMock = createNiceMock(Clusters.class); m_ambariMetaInfoMock = createNiceMock(AmbariMetaInfo.class); MockModule mockModule = new MockModule(); @@ -158,6 +157,8 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { UpgradePack upgradePack = createNiceMock(UpgradePack.class); StackEntity targetStack = createNiceMock(StackEntity.class); + String version = "2.5.0.0-1234"; + // mocks which were bound previously AmbariManagementController amc = m_injector.getInstance(AmbariManagementController.class); AmbariMetaInfo ambariMetaInfo = m_injector.getInstance(AmbariMetaInfo.class); @@ -173,7 +174,9 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { EasyMock.expect(targetStack.getStackVersion()).andReturn("2.5").anyTimes(); EasyMock.expect(repositoryVersionEntity.getStack()).andReturn(targetStack); - EasyMock.expect(repositoryVersionDAO.findByStackNameAndVersion("HDP", "2.5.0.0-1234")).andReturn(repositoryVersionEntity); + EasyMock.expect(repositoryVersionEntity.getVersion()).andReturn(version); + EasyMock.expect(repositoryVersionDAO.findByStackNameAndVersion("HDP", version)).andReturn( + repositoryVersionEntity); EasyMock.expect(upgradePack.getGroups(Direction.UPGRADE)).andReturn(new ArrayList<Grouping>()); @@ -236,13 +239,20 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { EasyMock.expectLastCall(); + UpgradeContext upgradeContext = createNiceMock(UpgradeContext.class); + EasyMock.expect(upgradeContext.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes(); + EasyMock.expect(upgradeContext.getCluster()).andReturn(cluster).anyTimes(); + EasyMock.expect(upgradeContext.getDirection()).andReturn(Direction.UPGRADE).anyTimes(); + EasyMock.expect(upgradeContext.getUpgradePack()).andReturn(upgradePack).anyTimes(); + EasyMock.expect(upgradeContext.getTargetRepositoryVersion()).andReturn(repositoryVersionEntity).anyTimes(); + EasyMock.expect(upgradeContext.getTargetStackId()).andReturn(new StackId("HDP-2.5")).anyTimes(); + EasyMock.expect(upgradeContext.getVersion()).andReturn(version).anyTimes(); replayAll(); UpgradeResourceProvider upgradeResourceProvider = new UpgradeResourceProvider(amc); m_injector.injectMembers(upgradeResourceProvider); - upgradeResourceProvider.applyStackAndProcessConfigurations("HDP", cluster, "2.5.0.0-1234", - Direction.UPGRADE, upgradePack, "admin"); + upgradeResourceProvider.applyStackAndProcessConfigurations(upgradeContext); // assertion time! Map<String, Map<String, String>> mergedConfigurations = capturedArgument.getValue(); http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java index 36889b2..3039267 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java @@ -157,7 +157,9 @@ public class UpgradeResourceProviderHDP22Test { clusters.addCluster("c1", stackId); Cluster cluster = clusters.getCluster("c1"); - helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion()); + RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId, + stackId.getStackVersion()); + cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin", RepositoryVersionState.INSTALLING); cluster.transitionClusterVersion(stackId, stackId.getStackVersion(), RepositoryVersionState.CURRENT); @@ -172,8 +174,7 @@ public class UpgradeResourceProviderHDP22Test { clusters.mapHostToCluster("h1", "c1"); // add a single HIVE server - Service service = cluster.addService("HIVE"); - service.setDesiredStackVersion(cluster.getDesiredStackVersion()); + Service service = cluster.addService("HIVE", repositoryVersion); ServiceComponent component = service.addServiceComponent("HIVE_SERVER"); ServiceComponentHost sch = component.addServiceComponentHost("h1"); @@ -215,7 +216,7 @@ public class UpgradeResourceProviderHDP22Test { assertEquals(oldStack, sc.getDesiredStackVersion()); for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) { - assertEquals(oldStack, sch.getDesiredStackVersion()); + assertEquals("2.2.0.0", sch.getVersion()); } } } @@ -260,10 +261,6 @@ public class UpgradeResourceProviderHDP22Test { for (ServiceComponent sc : s.getServiceComponents().values()) { assertEquals(newStack, sc.getDesiredStackVersion()); - - for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) { - assertEquals(newStack, sch.getDesiredStackVersion()); - } } }
