Repository: ambari Updated Branches: refs/heads/trunk 46abb14ce -> cb8dca09c
http://git-wip-us.apache.org/repos/asf/ambari/blob/cb8dca09/ambari-server/src/test/java/org/apache/ambari/server/checks/CheckDatabaseHelperTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/CheckDatabaseHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/CheckDatabaseHelperTest.java deleted file mode 100644 index 8d801dc..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/CheckDatabaseHelperTest.java +++ /dev/null @@ -1,303 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.ambari.server.checks; - - -import javax.persistence.EntityManager; -import static org.easymock.EasyMock.expect; - -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.HashMap; -import java.util.Map; - -import org.apache.ambari.server.api.services.AmbariMetaInfo; -import org.apache.ambari.server.orm.DBAccessor; -import org.apache.ambari.server.stack.StackManagerFactory; -import org.apache.ambari.server.state.Clusters; -import org.apache.ambari.server.state.ServiceInfo; -import org.apache.ambari.server.state.stack.OsFamily; -import org.easymock.EasyMockSupport; -import org.junit.Test; - -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Injector; - -public class CheckDatabaseHelperTest { - - @Test - public void testCheckForNotMappedConfigs() throws Exception { - EasyMockSupport easyMockSupport = new EasyMockSupport(); - final AmbariMetaInfo mockAmbariMetainfo = easyMockSupport.createNiceMock(AmbariMetaInfo.class); - final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); - final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); - final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); - final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); - - final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); - final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); - final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); - final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); - final Injector mockInjector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(AmbariMetaInfo.class).toInstance(mockAmbariMetainfo); - bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); - bind(EntityManager.class).toInstance(mockEntityManager); - bind(DBAccessor.class).toInstance(mockDBDbAccessor); - bind(Clusters.class).toInstance(mockClusters); - bind(OsFamily.class).toInstance(mockOSFamily); - } - }); - - - expect(mockDBDbAccessor.getConnection()).andReturn(mockConnection); - expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); - expect(mockStatement.executeQuery("select type_name from clusterconfig where type_name not in (select type_name from clusterconfigmapping)")).andReturn(mockResultSet); - - CheckDatabaseHelper checkDatabaseHelper = new CheckDatabaseHelper(mockDBDbAccessor, mockInjector, null); - - - easyMockSupport.replayAll(); - - mockAmbariMetainfo.init(); - checkDatabaseHelper.init(); - checkDatabaseHelper.checkForNotMappedConfigsToCluster(); - - easyMockSupport.verifyAll(); - } - - @Test - public void testCheckForConfigsSelectedMoreThanOnce() throws Exception { - EasyMockSupport easyMockSupport = new EasyMockSupport(); - final AmbariMetaInfo mockAmbariMetainfo = easyMockSupport.createNiceMock(AmbariMetaInfo.class); - final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); - final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); - final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); - final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); - - final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); - final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); - final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); - final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); - final Injector mockInjector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(AmbariMetaInfo.class).toInstance(mockAmbariMetainfo); - bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); - bind(EntityManager.class).toInstance(mockEntityManager); - bind(DBAccessor.class).toInstance(mockDBDbAccessor); - bind(Clusters.class).toInstance(mockClusters); - bind(OsFamily.class).toInstance(mockOSFamily); - } - }); - - - expect(mockDBDbAccessor.getConnection()).andReturn(mockConnection); - expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); - expect(mockStatement.executeQuery("select c.cluster_name, ccm.type_name from clusterconfigmapping ccm " + - "join clusters c on ccm.cluster_id=c.cluster_id " + - "group by c.cluster_name, ccm.type_name " + - "having sum(selected) > 1")).andReturn(mockResultSet); - - CheckDatabaseHelper checkDatabaseHelper = new CheckDatabaseHelper(mockDBDbAccessor, mockInjector, null); - - - easyMockSupport.replayAll(); - - mockAmbariMetainfo.init(); - checkDatabaseHelper.init(); - checkDatabaseHelper.checkForConfigsSelectedMoreThanOnce(); - - easyMockSupport.verifyAll(); - } - - @Test - public void testCheckForHostsWithoutState() throws Exception { - EasyMockSupport easyMockSupport = new EasyMockSupport(); - final AmbariMetaInfo mockAmbariMetainfo = easyMockSupport.createNiceMock(AmbariMetaInfo.class); - final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); - final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); - final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); - final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); - - final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); - final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); - final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); - final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); - final Injector mockInjector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(AmbariMetaInfo.class).toInstance(mockAmbariMetainfo); - bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); - bind(EntityManager.class).toInstance(mockEntityManager); - bind(DBAccessor.class).toInstance(mockDBDbAccessor); - bind(Clusters.class).toInstance(mockClusters); - bind(OsFamily.class).toInstance(mockOSFamily); - } - }); - - - expect(mockDBDbAccessor.getConnection()).andReturn(mockConnection); - expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); - expect(mockStatement.executeQuery("select host_name from hosts where host_id not in (select host_id from hoststate)")).andReturn(mockResultSet); - - CheckDatabaseHelper checkDatabaseHelper = new CheckDatabaseHelper(mockDBDbAccessor, mockInjector, null); - - - easyMockSupport.replayAll(); - - mockAmbariMetainfo.init(); - checkDatabaseHelper.init(); - checkDatabaseHelper.checkForHostsWithoutState(); - - easyMockSupport.verifyAll(); - } - - @Test - public void testCheckHostComponentStatesCountEqualsHostComponentsDesiredStates() throws Exception { - EasyMockSupport easyMockSupport = new EasyMockSupport(); - final AmbariMetaInfo mockAmbariMetainfo = easyMockSupport.createNiceMock(AmbariMetaInfo.class); - final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); - final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); - final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); - final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); - - final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); - final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); - final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); - final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); - final Injector mockInjector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(AmbariMetaInfo.class).toInstance(mockAmbariMetainfo); - bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); - bind(EntityManager.class).toInstance(mockEntityManager); - bind(DBAccessor.class).toInstance(mockDBDbAccessor); - bind(Clusters.class).toInstance(mockClusters); - bind(OsFamily.class).toInstance(mockOSFamily); - } - }); - - - expect(mockDBDbAccessor.getConnection()).andReturn(mockConnection); - expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); - expect(mockStatement.executeQuery("select count(*) from hostcomponentstate")).andReturn(mockResultSet); - expect(mockStatement.executeQuery("select count(*) from hostcomponentdesiredstate")).andReturn(mockResultSet); - expect(mockStatement.executeQuery("select count(*) FROM hostcomponentstate hcs " + - "JOIN hostcomponentdesiredstate hcds ON hcs.service_name=hcds.service_name AND " + - "hcs.component_name=hcds.component_name AND hcs.host_id=hcds.host_id")).andReturn(mockResultSet); - - CheckDatabaseHelper checkDatabaseHelper = new CheckDatabaseHelper(mockDBDbAccessor, mockInjector, null); - - - easyMockSupport.replayAll(); - - mockAmbariMetainfo.init(); - checkDatabaseHelper.init(); - checkDatabaseHelper.checkHostComponentStatesCountEqualsHostComponentsDesiredStates(); - - easyMockSupport.verifyAll(); - } - - @Test - public void testCheckServiceConfigs() throws Exception { - EasyMockSupport easyMockSupport = new EasyMockSupport(); - final AmbariMetaInfo mockAmbariMetainfo = easyMockSupport.createNiceMock(AmbariMetaInfo.class); - final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); - final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); - final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); - final ResultSet stackResultSet = easyMockSupport.createNiceMock(ResultSet.class); - final ResultSet serviceConfigResultSet = easyMockSupport.createNiceMock(ResultSet.class); - final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); - final ServiceInfo mockHDFSServiceInfo = easyMockSupport.createNiceMock(ServiceInfo.class); - - final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); - final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); - final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); - final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); - final Injector mockInjector = Guice.createInjector(new AbstractModule() { - @Override - protected void configure() { - bind(AmbariMetaInfo.class).toInstance(mockAmbariMetainfo); - bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); - bind(EntityManager.class).toInstance(mockEntityManager); - bind(DBAccessor.class).toInstance(mockDBDbAccessor); - bind(Clusters.class).toInstance(mockClusters); - bind(OsFamily.class).toInstance(mockOSFamily); - } - }); - - Map<String, ServiceInfo> services = new HashMap<>(); - services.put("HDFS", mockHDFSServiceInfo); - - Map<String, Map<String, Map<String, String>>> configAttributes = new HashMap<>(); - configAttributes.put("core-site", new HashMap<String, Map<String, String>>()); - - expect(mockHDFSServiceInfo.getConfigTypeAttributes()).andReturn(configAttributes); - expect(mockAmbariMetainfo.getServices("HDP", "2.2")).andReturn(services); - expect(serviceConfigResultSet.next()).andReturn(true); - expect(serviceConfigResultSet.getString("service_name")).andReturn("HDFS"); - expect(serviceConfigResultSet.getString("type_name")).andReturn("core-site"); - expect(stackResultSet.next()).andReturn(true); - expect(stackResultSet.getString("stack_name")).andReturn("HDP"); - expect(stackResultSet.getString("stack_version")).andReturn("2.2"); - expect(mockDBDbAccessor.getConnection()).andReturn(mockConnection); - expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); - expect(mockStatement.executeQuery("select c.cluster_name, service_name from clusterservices cs " + - "join clusters c on cs.cluster_id=c.cluster_id " + - "where service_name not in (select service_name from serviceconfig sc where sc.cluster_id=cs.cluster_id and sc.service_name=cs.service_name and sc.group_id is null)")).andReturn(mockResultSet); - expect(mockStatement.executeQuery("select c.cluster_name, sc.service_name, sc.version from serviceconfig sc " + - "join clusters c on sc.cluster_id=c.cluster_id " + - "where service_config_id not in (select service_config_id from serviceconfigmapping) and group_id is null")).andReturn(mockResultSet); - expect(mockStatement.executeQuery("select c.cluster_name, s.stack_name, s.stack_version from clusters c " + - "join stack s on c.desired_stack_id = s.stack_id")).andReturn(stackResultSet); - expect(mockStatement.executeQuery("select c.cluster_name, cs.service_name, cc.type_name, sc.version from clusterservices cs " + - "join serviceconfig sc on cs.service_name=sc.service_name and cs.cluster_id=sc.cluster_id " + - "join serviceconfigmapping scm on sc.service_config_id=scm.service_config_id " + - "join clusterconfig cc on scm.config_id=cc.config_id and sc.cluster_id=cc.cluster_id " + - "join clusters c on cc.cluster_id=c.cluster_id and sc.stack_id=c.desired_stack_id " + - "where sc.group_id is null and sc.service_config_id=(select max(service_config_id) from serviceconfig sc2 where sc2.service_name=sc.service_name and sc2.cluster_id=sc.cluster_id) " + - "group by c.cluster_name, cs.service_name, cc.type_name, sc.version")).andReturn(serviceConfigResultSet); - expect(mockStatement.executeQuery("select c.cluster_name, cs.service_name, cc.type_name from clusterservices cs " + - "join serviceconfig sc on cs.service_name=sc.service_name and cs.cluster_id=sc.cluster_id " + - "join serviceconfigmapping scm on sc.service_config_id=scm.service_config_id " + - "join clusterconfig cc on scm.config_id=cc.config_id and cc.cluster_id=sc.cluster_id " + - "join clusterconfigmapping ccm on cc.type_name=ccm.type_name and cc.version_tag=ccm.version_tag and cc.cluster_id=ccm.cluster_id " + - "join clusters c on ccm.cluster_id=c.cluster_id " + - "where sc.group_id is null and sc.service_config_id = (select max(service_config_id) from serviceconfig sc2 where sc2.service_name=sc.service_name and sc2.cluster_id=sc.cluster_id) " + - "group by c.cluster_name, cs.service_name, cc.type_name " + - "having sum(ccm.selected) < 1")).andReturn(mockResultSet); - - CheckDatabaseHelper checkDatabaseHelper = new CheckDatabaseHelper(mockDBDbAccessor, mockInjector, null); - - - easyMockSupport.replayAll(); - - mockAmbariMetainfo.init(); - checkDatabaseHelper.init(); - checkDatabaseHelper.checkServiceConfigs(); - - easyMockSupport.verifyAll(); - } - - -} - http://git-wip-us.apache.org/repos/asf/ambari/blob/cb8dca09/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java new file mode 100644 index 0000000..a7c77e1 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java @@ -0,0 +1,298 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.ambari.server.checks; + + +import javax.persistence.EntityManager; +import static org.easymock.EasyMock.expect; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.HashMap; +import java.util.Map; + +import org.apache.ambari.server.api.services.AmbariMetaInfo; +import org.apache.ambari.server.orm.DBAccessor; +import org.apache.ambari.server.stack.StackManagerFactory; +import org.apache.ambari.server.state.Clusters; +import org.apache.ambari.server.state.ServiceInfo; +import org.apache.ambari.server.state.stack.OsFamily; +import org.easymock.EasyMockSupport; +import org.junit.Test; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Injector; + +public class DatabaseConsistencyCheckHelperTest { + + @Test + public void testCheckForNotMappedConfigs() throws Exception { + EasyMockSupport easyMockSupport = new EasyMockSupport(); + + final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); + final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); + final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); + final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); + + final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); + final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); + final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); + final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); + final Injector mockInjector = Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + + bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); + bind(EntityManager.class).toInstance(mockEntityManager); + bind(DBAccessor.class).toInstance(mockDBDbAccessor); + bind(Clusters.class).toInstance(mockClusters); + bind(OsFamily.class).toInstance(mockOSFamily); + } + }); + + + + expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); + expect(mockStatement.executeQuery("select type_name from clusterconfig where type_name not in (select type_name from clusterconfigmapping)")).andReturn(mockResultSet); + + DatabaseConsistencyCheckHelper.setInjector(mockInjector); + DatabaseConsistencyCheckHelper.setConnection(mockConnection); + + easyMockSupport.replayAll(); + + DatabaseConsistencyCheckHelper.checkForNotMappedConfigsToCluster(); + + easyMockSupport.verifyAll(); + } + + @Test + public void testCheckForConfigsSelectedMoreThanOnce() throws Exception { + EasyMockSupport easyMockSupport = new EasyMockSupport(); + + final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); + final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); + final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); + final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); + + final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); + final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); + final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); + final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); + final Injector mockInjector = Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + + bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); + bind(EntityManager.class).toInstance(mockEntityManager); + bind(DBAccessor.class).toInstance(mockDBDbAccessor); + bind(Clusters.class).toInstance(mockClusters); + bind(OsFamily.class).toInstance(mockOSFamily); + } + }); + + expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); + expect(mockStatement.executeQuery("select c.cluster_name, ccm.type_name from clusterconfigmapping ccm " + + "join clusters c on ccm.cluster_id=c.cluster_id " + + "group by c.cluster_name, ccm.type_name " + + "having sum(selected) > 1")).andReturn(mockResultSet); + + + + DatabaseConsistencyCheckHelper.setInjector(mockInjector); + DatabaseConsistencyCheckHelper.setConnection(mockConnection); + + + easyMockSupport.replayAll(); + + DatabaseConsistencyCheckHelper.checkForConfigsSelectedMoreThanOnce(); + + easyMockSupport.verifyAll(); + } + + @Test + public void testCheckForHostsWithoutState() throws Exception { + EasyMockSupport easyMockSupport = new EasyMockSupport(); + + final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); + final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); + final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); + final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); + + final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); + final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); + final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); + final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); + final Injector mockInjector = Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + + bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); + bind(EntityManager.class).toInstance(mockEntityManager); + bind(DBAccessor.class).toInstance(mockDBDbAccessor); + bind(Clusters.class).toInstance(mockClusters); + bind(OsFamily.class).toInstance(mockOSFamily); + } + }); + + + + expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); + expect(mockStatement.executeQuery("select host_name from hosts where host_id not in (select host_id from hoststate)")).andReturn(mockResultSet); + + DatabaseConsistencyCheckHelper.setInjector(mockInjector); + DatabaseConsistencyCheckHelper.setConnection(mockConnection); + + easyMockSupport.replayAll(); + + + + DatabaseConsistencyCheckHelper.checkForHostsWithoutState(); + + easyMockSupport.verifyAll(); + } + + @Test + public void testCheckHostComponentStatesCountEqualsHostComponentsDesiredStates() throws Exception { + EasyMockSupport easyMockSupport = new EasyMockSupport(); + + final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); + final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); + final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); + final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); + + final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); + final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); + final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); + final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); + final Injector mockInjector = Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + + bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); + bind(EntityManager.class).toInstance(mockEntityManager); + bind(DBAccessor.class).toInstance(mockDBDbAccessor); + bind(Clusters.class).toInstance(mockClusters); + bind(OsFamily.class).toInstance(mockOSFamily); + } + }); + + + + expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); + expect(mockStatement.executeQuery("select count(*) from hostcomponentstate")).andReturn(mockResultSet); + expect(mockStatement.executeQuery("select count(*) from hostcomponentdesiredstate")).andReturn(mockResultSet); + expect(mockStatement.executeQuery("select count(*) FROM hostcomponentstate hcs " + + "JOIN hostcomponentdesiredstate hcds ON hcs.service_name=hcds.service_name AND " + + "hcs.component_name=hcds.component_name AND hcs.host_id=hcds.host_id")).andReturn(mockResultSet); + + DatabaseConsistencyCheckHelper.setInjector(mockInjector); + DatabaseConsistencyCheckHelper.setConnection(mockConnection); + + easyMockSupport.replayAll(); + + + DatabaseConsistencyCheckHelper.checkHostComponentStatesCountEqualsHostComponentsDesiredStates(); + + easyMockSupport.verifyAll(); + } + + @Test + public void testCheckServiceConfigs() throws Exception { + EasyMockSupport easyMockSupport = new EasyMockSupport(); + final AmbariMetaInfo mockAmbariMetainfo = easyMockSupport.createNiceMock(AmbariMetaInfo.class); + final DBAccessor mockDBDbAccessor = easyMockSupport.createNiceMock(DBAccessor.class); + final Connection mockConnection = easyMockSupport.createNiceMock(Connection.class); + final ResultSet mockResultSet = easyMockSupport.createNiceMock(ResultSet.class); + final ResultSet stackResultSet = easyMockSupport.createNiceMock(ResultSet.class); + final ResultSet serviceConfigResultSet = easyMockSupport.createNiceMock(ResultSet.class); + final Statement mockStatement = easyMockSupport.createNiceMock(Statement.class); + final ServiceInfo mockHDFSServiceInfo = easyMockSupport.createNiceMock(ServiceInfo.class); + + final StackManagerFactory mockStackManagerFactory = easyMockSupport.createNiceMock(StackManagerFactory.class); + final EntityManager mockEntityManager = easyMockSupport.createNiceMock(EntityManager.class); + final Clusters mockClusters = easyMockSupport.createNiceMock(Clusters.class); + final OsFamily mockOSFamily = easyMockSupport.createNiceMock(OsFamily.class); + final Injector mockInjector = Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + bind(AmbariMetaInfo.class).toInstance(mockAmbariMetainfo); + bind(StackManagerFactory.class).toInstance(mockStackManagerFactory); + bind(EntityManager.class).toInstance(mockEntityManager); + bind(DBAccessor.class).toInstance(mockDBDbAccessor); + bind(Clusters.class).toInstance(mockClusters); + bind(OsFamily.class).toInstance(mockOSFamily); + } + }); + + Map<String, ServiceInfo> services = new HashMap<>(); + services.put("HDFS", mockHDFSServiceInfo); + + Map<String, Map<String, Map<String, String>>> configAttributes = new HashMap<>(); + configAttributes.put("core-site", new HashMap<String, Map<String, String>>()); + + expect(mockHDFSServiceInfo.getConfigTypeAttributes()).andReturn(configAttributes); + expect(mockAmbariMetainfo.getServices("HDP", "2.2")).andReturn(services); + expect(serviceConfigResultSet.next()).andReturn(true); + expect(serviceConfigResultSet.getString("service_name")).andReturn("HDFS"); + expect(serviceConfigResultSet.getString("type_name")).andReturn("core-site"); + expect(stackResultSet.next()).andReturn(true); + expect(stackResultSet.getString("stack_name")).andReturn("HDP"); + expect(stackResultSet.getString("stack_version")).andReturn("2.2"); + expect(mockConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)).andReturn(mockStatement); + expect(mockStatement.executeQuery("select c.cluster_name, service_name from clusterservices cs " + + "join clusters c on cs.cluster_id=c.cluster_id " + + "where service_name not in (select service_name from serviceconfig sc where sc.cluster_id=cs.cluster_id and sc.service_name=cs.service_name and sc.group_id is null)")).andReturn(mockResultSet); + expect(mockStatement.executeQuery("select c.cluster_name, sc.service_name, sc.version from serviceconfig sc " + + "join clusters c on sc.cluster_id=c.cluster_id " + + "where service_config_id not in (select service_config_id from serviceconfigmapping) and group_id is null")).andReturn(mockResultSet); + expect(mockStatement.executeQuery("select c.cluster_name, s.stack_name, s.stack_version from clusters c " + + "join stack s on c.desired_stack_id = s.stack_id")).andReturn(stackResultSet); + expect(mockStatement.executeQuery("select c.cluster_name, cs.service_name, cc.type_name, sc.version from clusterservices cs " + + "join serviceconfig sc on cs.service_name=sc.service_name and cs.cluster_id=sc.cluster_id " + + "join serviceconfigmapping scm on sc.service_config_id=scm.service_config_id " + + "join clusterconfig cc on scm.config_id=cc.config_id and sc.cluster_id=cc.cluster_id " + + "join clusters c on cc.cluster_id=c.cluster_id and sc.stack_id=c.desired_stack_id " + + "where sc.group_id is null and sc.service_config_id=(select max(service_config_id) from serviceconfig sc2 where sc2.service_name=sc.service_name and sc2.cluster_id=sc.cluster_id) " + + "group by c.cluster_name, cs.service_name, cc.type_name, sc.version")).andReturn(serviceConfigResultSet); + expect(mockStatement.executeQuery("select c.cluster_name, cs.service_name, cc.type_name from clusterservices cs " + + "join serviceconfig sc on cs.service_name=sc.service_name and cs.cluster_id=sc.cluster_id " + + "join serviceconfigmapping scm on sc.service_config_id=scm.service_config_id " + + "join clusterconfig cc on scm.config_id=cc.config_id and cc.cluster_id=sc.cluster_id " + + "join clusterconfigmapping ccm on cc.type_name=ccm.type_name and cc.version_tag=ccm.version_tag and cc.cluster_id=ccm.cluster_id " + + "join clusters c on ccm.cluster_id=c.cluster_id " + + "where sc.group_id is null and sc.service_config_id = (select max(service_config_id) from serviceconfig sc2 where sc2.service_name=sc.service_name and sc2.cluster_id=sc.cluster_id) " + + "group by c.cluster_name, cs.service_name, cc.type_name " + + "having sum(ccm.selected) < 1")).andReturn(mockResultSet); + + DatabaseConsistencyCheckHelper.setInjector(mockInjector); + DatabaseConsistencyCheckHelper.setConnection(mockConnection); + + easyMockSupport.replayAll(); + + mockAmbariMetainfo.init(); + + DatabaseConsistencyCheckHelper.checkServiceConfigs(); + + easyMockSupport.verifyAll(); + } + + +} + http://git-wip-us.apache.org/repos/asf/ambari/blob/cb8dca09/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/DatabaseCheckerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/DatabaseCheckerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/DatabaseCheckerTest.java index 63baafe..f148da1 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/DatabaseCheckerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/DatabaseCheckerTest.java @@ -18,9 +18,11 @@ package org.apache.ambari.server.controller.utilities; -import com.google.inject.Guice; -import com.google.inject.Inject; -import com.google.inject.Injector; +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; +import static org.junit.Assert.fail; + import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.configuration.Configuration; @@ -31,12 +33,14 @@ import org.apache.ambari.server.orm.entities.MetainfoEntity; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.junit.Assert.fail; +import com.google.inject.Guice; +import com.google.inject.Inject; +import com.google.inject.Injector; + +/*Ignore this test because DatabaseChecker is not used anymore and it will be removed soon*/ public class DatabaseCheckerTest { private static Injector injector; @@ -59,6 +63,7 @@ public class DatabaseCheckerTest { public void teardown() throws AmbariException { } + @Ignore @Test public void testCheckDBVersion_Valid() throws Exception { MetainfoDAO metainfoDAO = createMock(MetainfoDAO.class); @@ -78,6 +83,7 @@ public class DatabaseCheckerTest { } } + @Ignore @Test(expected = AmbariException.class) public void testCheckDBVersionInvalid() throws Exception { MetainfoDAO metainfoDAO = createMock(MetainfoDAO.class); http://git-wip-us.apache.org/repos/asf/ambari/blob/cb8dca09/ambari-server/src/test/python/TestAmbariServer.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/TestAmbariServer.py b/ambari-server/src/test/python/TestAmbariServer.py index 9f17e91..254aeb7 100644 --- a/ambari-server/src/test/python/TestAmbariServer.py +++ b/ambari-server/src/test/python/TestAmbariServer.py @@ -6938,7 +6938,8 @@ class TestAmbariServer(TestCase): @patch("ambari_server.serverConfiguration.parse_properties_file") @patch("ambari_server.serverConfiguration.get_ambari_properties") @patch("ambari_server.serverConfiguration.get_java_exe_path") - def test_check_database(self, getJavaExePathMock, + @patch("sys.exit") + def test_check_database(self, exitMock, getJavaExePathMock, getAmbariPropertiesMock, parsePropertiesFileMock, ensureDriverInstalledMock, readAmbariUserMock, ensureCanStartUnderCurrentUserMock, generateEnvMock, runOSCommandMock, isServerRunningMock): properties = Properties() @@ -6959,7 +6960,7 @@ class TestAmbariServer(TestCase): self.assertTrue(ensureCanStartUnderCurrentUserMock.called) self.assertTrue(generateEnvMock.called) - self.assertEquals(runOSCommandMock.call_args[0][0], '/path/to/java -cp test:path12 org.apache.ambari.server.checks.CheckDatabaseHelper') + self.assertEquals(runOSCommandMock.call_args[0][0], '/path/to/java -cp test:path12 org.apache.ambari.server.checks.DatabaseConsistencyChecker') pass
