http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerAuditDbCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerAuditDbCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerAuditDbCheckTest.java index e3e14d5..ec91e48 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerAuditDbCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerAuditDbCheckTest.java @@ -22,28 +22,45 @@ import java.util.Map; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; import org.apache.ambari.server.state.Service; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; /* Tests for RangerAuditDbCheck */ - +@RunWith(MockitoJUnitRunner.class) public class RangerAuditDbCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private final RangerAuditDbCheck rangerAuditDbCheck = new RangerAuditDbCheck(); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + @Before - public void setup() { + public void setup() throws Exception { rangerAuditDbCheck.clustersProvider = new Provider<Clusters>() { @Override @@ -53,24 +70,31 @@ public class RangerAuditDbCheckTest { }; Configuration config = Mockito.mock(Configuration.class); rangerAuditDbCheck.config = config; + + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testIsApplicable() throws Exception { final Cluster cluster = Mockito.mock(Cluster.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("RANGER", service); + m_services.put("RANGER", service); - Mockito.when(cluster.getServices()).thenReturn(services); + Mockito.when(cluster.getServices()).thenReturn(m_services); Mockito.when(cluster.getClusterId()).thenReturn(1L); Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); - Assert.assertTrue(rangerAuditDbCheck.isApplicable(new PrereqCheckRequest("cluster"))); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); - services.remove("RANGER"); - Assert.assertFalse(rangerAuditDbCheck.isApplicable(new PrereqCheckRequest("cluster"))); + Assert.assertTrue(rangerAuditDbCheck.isApplicable(request)); + + m_services.remove("RANGER"); + Assert.assertFalse(rangerAuditDbCheck.isApplicable(request)); } @Test @@ -107,5 +131,5 @@ public class RangerAuditDbCheckTest { Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); } - + } \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerPasswordCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerPasswordCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerPasswordCheckTest.java index c69c4e5..cfffb8f 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerPasswordCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerPasswordCheckTest.java @@ -22,7 +22,6 @@ import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; @@ -35,18 +34,24 @@ import java.util.Map; import org.apache.ambari.server.controller.PrereqCheckRequest; import org.apache.ambari.server.controller.internal.URLStreamProvider; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.StackId; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @@ -86,8 +91,21 @@ public class RangerPasswordCheckTest { private RangerPasswordCheck m_rpc = null; private URLStreamProvider m_streamProvider = EasyMock.createMock(URLStreamProvider.class); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + @Before public void setup() throws Exception { + MockitoAnnotations.initMocks(this); + m_configMap.put("policymgr_external_url", RANGER_URL); m_configMap.put("admin_username", "admin"); m_configMap.put("admin_password", "pass"); @@ -129,43 +147,32 @@ public class RangerPasswordCheckTest { EasyMock.reset(m_streamProvider); PowerMockito.whenNew(URLStreamProvider.class).withAnyArguments().thenReturn(m_streamProvider); + + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testApplicable() throws Exception { final Service service = EasyMock.createMock(Service.class); - - Map<String, Service> services = new HashMap<>(); - services.put("RANGER", service); + m_services.put("RANGER", service); expect(service.getDesiredStackId()).andReturn(new StackId("HDP-2.3")).anyTimes(); Cluster cluster = m_clusters.getCluster("cluster"); EasyMock.reset(cluster); - expect(cluster.getServices()).andReturn(services).anyTimes(); + expect(cluster.getServices()).andReturn(m_services).anyTimes(); expect(cluster.getService("RANGER")).andReturn(service).atLeastOnce(); replay(cluster, service); PrereqCheckRequest request = new PrereqCheckRequest("cluster"); - request.setSourceStackId(new StackId("HDP-2.3")); - assertTrue(m_rpc.isApplicable(request)); - - request = new PrereqCheckRequest("cluster"); - request.setSourceStackId(new StackId("HDP-2.2")); - assertFalse(m_rpc.isApplicable(request)); - - EasyMock.reset(cluster, service); - expect(cluster.getServices()).andReturn(services).anyTimes(); - expect(cluster.getService("RANGER")).andReturn(service).atLeastOnce(); - expect(service.getDesiredStackId()).andReturn(new StackId("WILDSTACK-2.0")).anyTimes(); - replay(cluster, service); + request.setTargetRepositoryVersion(m_repositoryVersion); - request = new PrereqCheckRequest("cluster"); - request.setSourceStackId(new StackId("HDP-2.2")); assertTrue(m_rpc.isApplicable(request)); - } @SuppressWarnings("unchecked") http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerSSLConfigCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerSSLConfigCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerSSLConfigCheckTest.java index 327faf9..af016b0 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerSSLConfigCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/RangerSSLConfigCheckTest.java @@ -22,29 +22,47 @@ import java.util.Map; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; import org.apache.ambari.server.state.Service; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; /* Test for RangerSSLConfigCheck */ +@RunWith(MockitoJUnitRunner.class) public class RangerSSLConfigCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private final RangerSSLConfigCheck rangerSSLConfigCheck = new RangerSSLConfigCheck(); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + @Before - public void setup() { + public void setup() throws Exception { rangerSSLConfigCheck.clustersProvider = new Provider<Clusters>() { @Override public Clusters get() { @@ -53,25 +71,31 @@ public class RangerSSLConfigCheckTest { }; Configuration config = Mockito.mock(Configuration.class); rangerSSLConfigCheck.config = config; + + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testIsApplicable() throws Exception { final Cluster cluster = Mockito.mock(Cluster.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("RANGER", service); + m_services.put("RANGER", service); - Mockito.when(cluster.getServices()).thenReturn(services); + Mockito.when(cluster.getServices()).thenReturn(m_services); Mockito.when(cluster.getClusterId()).thenReturn(1L); Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); - Assert.assertTrue(rangerSSLConfigCheck.isApplicable(new PrereqCheckRequest("cluster"))); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); - services.remove("RANGER"); - Assert.assertFalse(rangerSSLConfigCheck.isApplicable(new PrereqCheckRequest("cluster"))); + Assert.assertTrue(rangerSSLConfigCheck.isApplicable(request)); + m_services.remove("RANGER"); + Assert.assertFalse(rangerSSLConfigCheck.isApplicable(request)); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/SecondaryNamenodeDeletedCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/SecondaryNamenodeDeletedCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/SecondaryNamenodeDeletedCheckTest.java index ce9a68c..5d0ca5f 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/SecondaryNamenodeDeletedCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/SecondaryNamenodeDeletedCheckTest.java @@ -25,17 +25,23 @@ import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; import org.apache.ambari.server.orm.dao.HostComponentStateDAO; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; 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.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; @@ -43,14 +49,26 @@ import com.google.inject.Provider; * Unit tests for SecondaryNamenodeDeletedCheck * */ +@RunWith(MockitoJUnitRunner.class) public class SecondaryNamenodeDeletedCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private final HostComponentStateDAO hostComponentStateDAO = Mockito.mock(HostComponentStateDAO.class); private final SecondaryNamenodeDeletedCheck secondaryNamenodeDeletedCheck = new SecondaryNamenodeDeletedCheck(); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + @Before - public void setup() { + public void setup() throws Exception { secondaryNamenodeDeletedCheck.clustersProvider = new Provider<Clusters>() { @Override public Clusters get() { @@ -68,31 +86,40 @@ public class SecondaryNamenodeDeletedCheckTest { secondaryNamenodeDeletedCheck.hostComponentStateDao = hostComponentStateDAO; Configuration config = Mockito.mock(Configuration.class); secondaryNamenodeDeletedCheck.config = config; + + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testIsApplicable() throws Exception { final Cluster cluster = Mockito.mock(Cluster.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("HDFS", service); + m_services.put("HDFS", service); Mockito.when(cluster.getClusterId()).thenReturn(1L); - Mockito.when(cluster.getServices()).thenReturn(services); + Mockito.when(cluster.getServices()).thenReturn(m_services); Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); - Assert.assertTrue(secondaryNamenodeDeletedCheck.isApplicable(new PrereqCheckRequest("cluster"))); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); + + Assert.assertTrue(secondaryNamenodeDeletedCheck.isApplicable(request)); + + request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); - PrereqCheckRequest req = new PrereqCheckRequest("cluster"); - req.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.FAIL); - Assert.assertFalse(secondaryNamenodeDeletedCheck.isApplicable(req)); + request.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.FAIL); + Assert.assertFalse(secondaryNamenodeDeletedCheck.isApplicable(request)); - req.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.PASS); - Assert.assertTrue(secondaryNamenodeDeletedCheck.isApplicable(req)); + request.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.PASS); + Assert.assertTrue(secondaryNamenodeDeletedCheck.isApplicable(request)); - services.remove("HDFS"); - Assert.assertFalse(secondaryNamenodeDeletedCheck.isApplicable(new PrereqCheckRequest("cluster"))); + m_services.remove("HDFS"); + Assert.assertFalse(secondaryNamenodeDeletedCheck.isApplicable(request)); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicePresenceCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicePresenceCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicePresenceCheckTest.java index 55c622e..1df3ed6 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicePresenceCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicePresenceCheckTest.java @@ -124,12 +124,13 @@ public class ServicePresenceCheckTest { Mockito.when(cluster.getServices()).thenReturn(services); Map<String, String> checkProperties = new HashMap<>(); - checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME,"Atlas, OldService"); - checkProperties.put(ServicePresenceCheck.NEW_SERVICES_PROPERTY_NAME,"Atlas2, NewService"); + checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME, "Atlas, OldService"); + checkProperties.put(ServicePresenceCheck.NEW_SERVICES_PROPERTY_NAME, "Atlas2, NewService"); PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class); - Mockito.when(prerequisiteCheckConfig.getCheckProperties( - m_check.getClass().getName())).thenReturn(checkProperties); + Mockito.when( + prerequisiteCheckConfig.getCheckProperties(m_check.getClass().getName())).thenReturn( + checkProperties); PrerequisiteCheck check = new PrerequisiteCheck(null, null); PrereqCheckRequest request = new PrereqCheckRequest("cluster"); @@ -151,7 +152,7 @@ public class ServicePresenceCheckTest { Mockito.when(cluster.getServices()).thenReturn(services); Map<String, String> checkProperties = new HashMap<>(); - checkProperties.put(ServicePresenceCheck.REMOVED_SERVICES_PROPERTY_NAME,"OldService"); + checkProperties.put(ServicePresenceCheck.REMOVED_SERVICES_PROPERTY_NAME, "OldService"); PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class); Mockito.when(prerequisiteCheckConfig.getCheckProperties( @@ -178,9 +179,9 @@ public class ServicePresenceCheckTest { Map<String, String> checkProperties = new HashMap<>(); checkProperties.put(ServicePresenceCheck.NO_UPGRADE_SUPPORT_SERVICES_PROPERTY_NAME,"MyServiceOne, MyServiceTwo"); - checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME,"Atlas, OldService"); + checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME, "Atlas, OldService"); checkProperties.put(ServicePresenceCheck.NEW_SERVICES_PROPERTY_NAME,"Atlas2, NewService"); - checkProperties.put(ServicePresenceCheck.REMOVED_SERVICES_PROPERTY_NAME,"RemovedService"); + checkProperties.put(ServicePresenceCheck.REMOVED_SERVICES_PROPERTY_NAME, "RemovedService"); PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class); Mockito.when(prerequisiteCheckConfig.getCheckProperties( @@ -206,7 +207,7 @@ public class ServicePresenceCheckTest { Map<String, String> checkProperties = new HashMap<>(); checkProperties.put(ServicePresenceCheck.NO_UPGRADE_SUPPORT_SERVICES_PROPERTY_NAME,"Atlas, MyService"); - checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME,"OldService"); + checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME, "OldService"); checkProperties.put(ServicePresenceCheck.NEW_SERVICES_PROPERTY_NAME,"NewService"); PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class); @@ -236,7 +237,7 @@ public class ServicePresenceCheckTest { Map<String, String> checkProperties = new HashMap<>(); checkProperties.put(ServicePresenceCheck.NO_UPGRADE_SUPPORT_SERVICES_PROPERTY_NAME,"Atlas, HDFS"); - checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME,"Storm, Ranger"); + checkProperties.put(ServicePresenceCheck.REPLACED_SERVICES_PROPERTY_NAME, "Storm, Ranger"); checkProperties.put(ServicePresenceCheck.NEW_SERVICES_PROPERTY_NAME,"Storm2, Ranger2"); PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class); @@ -250,4 +251,4 @@ public class ServicePresenceCheckTest { m_check.perform(check, request); Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus()); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheckTest.java index 636cafe..6577651 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMaintenanceModeCheckTest.java @@ -18,6 +18,8 @@ package org.apache.ambari.server.checks; import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.configuration.Configuration; @@ -28,12 +30,17 @@ import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.State; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; @@ -41,18 +48,33 @@ import com.google.inject.Provider; * Unit tests for ServicesMaintenanceModeCheck * */ +@RunWith(MockitoJUnitRunner.class) public class ServicesMaintenanceModeCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); - final RepositoryVersionEntity m_repositoryVersion = Mockito.mock(RepositoryVersionEntity.class); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); /** * */ @Before - public void setup() { + public void setup() throws Exception { + m_services.clear(); + Mockito.when(m_repositoryVersion.getVersion()).thenReturn("2.2.0.0-1234"); Mockito.when(m_repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.2")); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test @@ -96,12 +118,16 @@ public class ServicesMaintenanceModeCheckTest { // We don't bother checking service desired state as it's performed by a separate check Mockito.when(service.getDesiredState()).thenReturn(State.UNKNOWN); PrerequisiteCheck check = new PrerequisiteCheck(null, null); - servicesMaintenanceModeCheck.perform(check, new PrereqCheckRequest("cluster")); + + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); + + servicesMaintenanceModeCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); Mockito.when(service.getDesiredState()).thenReturn(State.STARTED); check = new PrerequisiteCheck(null, null); - servicesMaintenanceModeCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesMaintenanceModeCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java index f6ad846..a8569cc 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesMapReduceDistributedCacheCheckTest.java @@ -22,18 +22,24 @@ import java.util.Map; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; import org.apache.ambari.server.state.Service; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; @@ -41,13 +47,25 @@ import com.google.inject.Provider; * Unit tests for ServicesMapReduceDistributedCacheCheck * */ +@RunWith(MockitoJUnitRunner.class) public class ServicesMapReduceDistributedCacheCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private final ServicesMapReduceDistributedCacheCheck servicesMapReduceDistributedCacheCheck = new ServicesMapReduceDistributedCacheCheck(); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + @Before - public void setup() { + public void setup() throws Exception { servicesMapReduceDistributedCacheCheck.clustersProvider = new Provider<Clusters>() { @Override @@ -57,32 +75,40 @@ public class ServicesMapReduceDistributedCacheCheckTest { }; Configuration config = Mockito.mock(Configuration.class); servicesMapReduceDistributedCacheCheck.config = config; + + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testIsApplicable() throws Exception { final Cluster cluster = Mockito.mock(Cluster.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("YARN", service); + m_services.put("YARN", service); - Mockito.when(cluster.getServices()).thenReturn(services); + Mockito.when(cluster.getServices()).thenReturn(m_services); Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); Mockito.when(cluster.getClusterId()).thenReturn(1L); - Assert.assertTrue(servicesMapReduceDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster"))); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); + + Assert.assertTrue(servicesMapReduceDistributedCacheCheck.isApplicable(request)); - PrereqCheckRequest req = new PrereqCheckRequest("cluster"); - req.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.FAIL); - Assert.assertFalse(servicesMapReduceDistributedCacheCheck.isApplicable(req)); + request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); - req.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.PASS); - Assert.assertTrue(servicesMapReduceDistributedCacheCheck.isApplicable(req)); + request.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.FAIL); + Assert.assertFalse(servicesMapReduceDistributedCacheCheck.isApplicable(request)); + request.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.PASS); + Assert.assertTrue(servicesMapReduceDistributedCacheCheck.isApplicable(request)); - services.remove("YARN"); - Assert.assertFalse(servicesMapReduceDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster"))); + m_services.remove("YARN"); + Assert.assertFalse(servicesMapReduceDistributedCacheCheck.isApplicable(request)); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheckTest.java index a2a74bd..c7e8fd6 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeHighAvailabilityCheckTest.java @@ -23,17 +23,23 @@ import java.util.Map; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; import org.apache.ambari.server.state.Service; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; @@ -41,13 +47,25 @@ import com.google.inject.Provider; * Unit tests for ServicesNamenodeHighAvailabilityCheck * */ +@RunWith(MockitoJUnitRunner.class) public class ServicesNamenodeHighAvailabilityCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private final ServicesNamenodeHighAvailabilityCheck servicesNamenodeHighAvailabilityCheck = new ServicesNamenodeHighAvailabilityCheck(); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + @Before - public void setup() { + public void setup() throws Exception { servicesNamenodeHighAvailabilityCheck.clustersProvider = new Provider<Clusters>() { @Override @@ -57,24 +75,31 @@ public class ServicesNamenodeHighAvailabilityCheckTest { }; Configuration config = Mockito.mock(Configuration.class); servicesNamenodeHighAvailabilityCheck.config = config; + + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testIsApplicable() throws Exception { final Cluster cluster = Mockito.mock(Cluster.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("HDFS", service); + m_services.put("HDFS", service); - Mockito.when(cluster.getServices()).thenReturn(services); + Mockito.when(cluster.getServices()).thenReturn(m_services); Mockito.when(cluster.getClusterId()).thenReturn(1L); Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); - Assert.assertTrue(servicesNamenodeHighAvailabilityCheck.isApplicable(new PrereqCheckRequest("cluster"))); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); + + Assert.assertTrue(servicesNamenodeHighAvailabilityCheck.isApplicable(request)); - services.remove("HDFS"); - Assert.assertFalse(servicesNamenodeHighAvailabilityCheck.isApplicable(new PrereqCheckRequest("cluster"))); + m_services.remove("HDFS"); + Assert.assertFalse(servicesNamenodeHighAvailabilityCheck.isApplicable(request)); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java index d0aad2f..545caf3 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesNamenodeTruncateCheckTest.java @@ -27,21 +27,24 @@ import java.util.Map; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; -import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; -import org.apache.ambari.server.state.RepositoryType; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.StackId; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; @@ -49,26 +52,35 @@ import com.google.inject.Provider; * Unit tests for ServicesNamenodeTruncateCheck * */ +@RunWith(MockitoJUnitRunner.class) public class ServicesNamenodeTruncateCheckTest { private Clusters m_clusters = EasyMock.createMock(Clusters.class); private ServicesNamenodeTruncateCheck m_check = new ServicesNamenodeTruncateCheck(); private final Map<String, String> m_configMap = new HashMap<>(); - private RepositoryVersionDAO m_repositoryVersionDAO = EasyMock.createMock(RepositoryVersionDAO.class); - final RepositoryVersionEntity repositoryVersion = Mockito.mock(RepositoryVersionEntity.class); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); @Before public void setup() throws Exception { Cluster cluster = EasyMock.createMock(Cluster.class); Config config = EasyMock.createMock(Config.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("HDFS", service); + m_services.clear(); + m_services.put("HDFS", service); - expect(cluster.getServices()).andReturn(services).anyTimes(); + expect(cluster.getServices()).andReturn(m_services).anyTimes(); expect(config.getProperties()).andReturn(m_configMap).anyTimes(); expect(cluster.getService("HDFS")).andReturn(service); expect(cluster.getDesiredConfigByType("hdfs-site")).andReturn(config).anyTimes(); @@ -87,20 +99,12 @@ public class ServicesNamenodeTruncateCheckTest { } }; - m_check.repositoryVersionDaoProvider = new Provider<RepositoryVersionDAO>() { - @Override - public RepositoryVersionDAO get() { - return m_repositoryVersionDAO; - } - }; - - RepositoryVersionEntity rve = EasyMock.createMock(RepositoryVersionEntity.class); - expect(rve.getType()).andReturn(RepositoryType.STANDARD).anyTimes(); - expect(m_repositoryVersionDAO.findByStackNameAndVersion(EasyMock.anyString(), EasyMock.anyString())).andReturn(rve).anyTimes(); - replay(m_repositoryVersionDAO, rve); + Mockito.when(m_repositoryVersion.getVersion()).thenReturn("HDP-2.2.0.0"); + Mockito.when(m_repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.2.0")); - Mockito.when(repositoryVersion.getVersion()).thenReturn("HDP-2.2.0.0"); - Mockito.when(repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.2.0")); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @@ -109,7 +113,7 @@ public class ServicesNamenodeTruncateCheckTest { PrereqCheckRequest checkRequest = new PrereqCheckRequest("c1"); checkRequest.setSourceStackId(new StackId("HDP", "2.2")); - checkRequest.setTargetRepositoryVersion(repositoryVersion); + checkRequest.setTargetRepositoryVersion(m_repositoryVersion); Assert.assertTrue(m_check.isApplicable(checkRequest)); } @@ -125,9 +129,9 @@ public class ServicesNamenodeTruncateCheckTest { m_configMap.put("dfs.allow.truncate", "true"); request.setSourceStackId(new StackId("HDP-2.2.4.2")); - Mockito.when(repositoryVersion.getVersion()).thenReturn("2.2.8.4"); - Mockito.when(repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.2.8.4")); - request.setTargetRepositoryVersion(repositoryVersion); + Mockito.when(m_repositoryVersion.getVersion()).thenReturn("2.2.8.4"); + Mockito.when(m_repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.2.8.4")); + request.setTargetRepositoryVersion(m_repositoryVersion); check = new PrerequisiteCheck(null, null); m_check.perform(check, request); @@ -142,9 +146,9 @@ public class ServicesNamenodeTruncateCheckTest { m_configMap.put("dfs.allow.truncate", "true"); request.setSourceStackId(new StackId("HDP-2.2.4.2")); - Mockito.when(repositoryVersion.getVersion()).thenReturn("2.3.8.4"); - Mockito.when(repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.3.8.4")); - request.setTargetRepositoryVersion(repositoryVersion); + Mockito.when(m_repositoryVersion.getVersion()).thenReturn("2.3.8.4"); + Mockito.when(m_repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.3.8.4")); + request.setTargetRepositoryVersion(m_repositoryVersion); check = new PrerequisiteCheck(null, null); m_check.perform(check, request); @@ -155,4 +159,4 @@ public class ServicesNamenodeTruncateCheckTest { m_check.perform(check, request); assertEquals(PrereqCheckStatus.PASS, check.getStatus()); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java index 3eaf890..96eefc1 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesTezDistributedCacheCheckTest.java @@ -22,18 +22,24 @@ import java.util.Map; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; import org.apache.ambari.server.state.Service; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; @@ -41,13 +47,25 @@ import com.google.inject.Provider; * Unit tests for ServicesTezDistributedCacheCheck * */ +@RunWith(MockitoJUnitRunner.class) public class ServicesTezDistributedCacheCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private final ServicesTezDistributedCacheCheck servicesTezDistributedCacheCheck = new ServicesTezDistributedCacheCheck(); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + @Before - public void setup() { + public void setup() throws Exception { servicesTezDistributedCacheCheck.clustersProvider = new Provider<Clusters>() { @Override @@ -58,24 +76,31 @@ public class ServicesTezDistributedCacheCheckTest { Configuration config = Mockito.mock(Configuration.class); servicesTezDistributedCacheCheck.config = config; + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testIsApplicable() throws Exception { final Cluster cluster = Mockito.mock(Cluster.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("TEZ", service); + m_services.put("TEZ", service); - Mockito.when(cluster.getServices()).thenReturn(services); + Mockito.when(cluster.getServices()).thenReturn(m_services); Mockito.when(cluster.getClusterId()).thenReturn(1L); Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); - Assert.assertTrue(servicesTezDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster"))); + Assert.assertTrue(servicesTezDistributedCacheCheck.isApplicable(request)); PrereqCheckRequest req = new PrereqCheckRequest("cluster"); + req.setTargetRepositoryVersion(m_repositoryVersion); + req.addResult(CheckDescription.SERVICES_NAMENODE_HA, PrereqCheckStatus.FAIL); Assert.assertFalse(servicesTezDistributedCacheCheck.isApplicable(req)); @@ -83,8 +108,8 @@ public class ServicesTezDistributedCacheCheckTest { Assert.assertTrue(servicesTezDistributedCacheCheck.isApplicable(req)); - services.remove("TEZ"); - Assert.assertFalse(servicesTezDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster"))); + m_services.remove("TEZ"); + Assert.assertFalse(servicesTezDistributedCacheCheck.isApplicable(request)); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java index ba0f701..a851919 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesUpCheckTest.java @@ -37,13 +37,17 @@ import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.State; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.powermock.api.mockito.PowerMockito; @@ -63,15 +67,31 @@ public class ServicesUpCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private AmbariMetaInfo ambariMetaInfo = Mockito.mock(AmbariMetaInfo.class); - final RepositoryVersionEntity m_repositoryVersion = Mockito.mock(RepositoryVersionEntity.class); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); /** * */ @Before - public void setup() { + public void setup() throws Exception { + MockitoAnnotations.initMocks(this); + + m_services.clear(); + Mockito.when(m_repositoryVersion.getVersion()).thenReturn("2.2.0.0-1234"); Mockito.when(m_repositoryVersion.getStackId()).thenReturn(new StackId("HDP", "2.2")); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test @@ -129,24 +149,28 @@ public class ServicesUpCheckTest { final Service tezService = Mockito.mock(Service.class); final Service amsService = Mockito.mock(Service.class); - HashMap<String, Service> clusterServices = new HashMap<>(); - clusterServices.put("HDFS", hdfsService); - clusterServices.put("TEZ", tezService); - clusterServices.put("AMBARI_METRICS", amsService); + m_services.put("HDFS", hdfsService); + m_services.put("TEZ", tezService); + m_services.put("AMBARI_METRICS", amsService); Mockito.when(hdfsService.getName()).thenReturn("HDFS"); Mockito.when(tezService.getName()).thenReturn("TEZ"); Mockito.when(amsService.getName()).thenReturn("AMBARI_METRICS"); + StackId stackId = new StackId("HDP", "2.2"); + Mockito.when(hdfsService.getDesiredStackId()).thenReturn(stackId); + Mockito.when(tezService.getDesiredStackId()).thenReturn(stackId); + Mockito.when(amsService.getDesiredStackId()).thenReturn(stackId); + Mockito.when(hdfsService.isClientOnlyService()).thenReturn(false); Mockito.when(tezService.isClientOnlyService()).thenReturn(true); Mockito.when(amsService.isClientOnlyService()).thenReturn(false); - Mockito.when(hdfsService.getDesiredStackId()).thenReturn(new StackId("HDP", "2.2")); - Mockito.when(tezService.getDesiredStackId()).thenReturn(new StackId("HDP", "2.2")); - Mockito.when(amsService.getDesiredStackId()).thenReturn(new StackId("HDP", "2.2")); + Mockito.when(cluster.getServices()).thenReturn(m_services); - Mockito.when(cluster.getServices()).thenReturn(clusterServices); + Mockito.when(cluster.getService("HDFS")).thenReturn(hdfsService); + Mockito.when(cluster.getService("TEZ")).thenReturn(tezService); + Mockito.when(cluster.getService("AMBARI_METRICS")).thenReturn(amsService); Mockito.when(ambariMetaInfo.getComponent(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenAnswer(new Answer<ComponentInfo>() { @@ -264,8 +288,11 @@ public class ServicesUpCheckTest { Mockito.when(hcs.getCurrentState()).thenReturn(State.STARTED); } + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); + PrerequisiteCheck check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); // Case 2. Change some desired states to STARTED, should still pass @@ -273,7 +300,7 @@ public class ServicesUpCheckTest { Mockito.when(hcsDataNode1.getDesiredState()).thenReturn(State.STARTED); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); // Case 3. Ensure that ZKFC and AMS are ignored even if their current state is not STARTED @@ -282,7 +309,7 @@ public class ServicesUpCheckTest { Mockito.when(hcsMetricsMonitor.getCurrentState()).thenReturn(State.INSTALLED); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); // Case 4. Change HDFS current states to INSTALLED, should fail. @@ -290,14 +317,14 @@ public class ServicesUpCheckTest { Mockito.when(hcsDataNode1.getCurrentState()).thenReturn(State.INSTALLED); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus()); // Case 5. Change HDFS master to STARTED, but one slave to INSTALLED, should pass (2/3 are up). Mockito.when(hcsNameNode.getCurrentState()).thenReturn(State.STARTED); Mockito.when(hcsDataNode1.getCurrentState()).thenReturn(State.INSTALLED); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); // Case 6. Change HDFS master to STARTED, but 2 slaves to INSTALLED, should fail (2/3 are down) @@ -305,7 +332,7 @@ public class ServicesUpCheckTest { Mockito.when(hcsDataNode1.getCurrentState()).thenReturn(State.INSTALLED); Mockito.when(hcsDataNode2.getCurrentState()).thenReturn(State.INSTALLED); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus()); Assert.assertTrue(check.getFailReason().indexOf("50%") > -1); @@ -313,7 +340,7 @@ public class ServicesUpCheckTest { Mockito.when(host1.getMaintenanceState(Mockito.anyLong())).thenReturn(MaintenanceState.ON); Mockito.when(host3.getMaintenanceState(Mockito.anyLong())).thenReturn(MaintenanceState.ON); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.PASS, check.getStatus()); // put everything back to normal, then fail NN @@ -324,13 +351,13 @@ public class ServicesUpCheckTest { Mockito.when(host3.getMaintenanceState(Mockito.anyLong())).thenReturn(MaintenanceState.OFF); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus()); // put NN into MM; should still fail since it's a master Mockito.when(host1.getMaintenanceState(Mockito.anyLong())).thenReturn(MaintenanceState.ON); check = new PrerequisiteCheck(null, null); - servicesUpCheck.perform(check, new PrereqCheckRequest("cluster")); + servicesUpCheck.perform(check, request); Assert.assertEquals(PrereqCheckStatus.FAIL, check.getStatus()); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheckTest.java index 439710f..331223d 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServicesYarnWorkPreservingCheckTest.java @@ -23,17 +23,23 @@ import java.util.Map; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.DesiredConfig; import org.apache.ambari.server.state.Service; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; @@ -41,13 +47,26 @@ import com.google.inject.Provider; * Unit tests for ServicesYarnWorkPreservingCheck * */ +@RunWith(MockitoJUnitRunner.class) public class ServicesYarnWorkPreservingCheckTest { private final Clusters clusters = Mockito.mock(Clusters.class); private final ServicesYarnWorkPreservingCheck servicesYarnWorkPreservingCheck = new ServicesYarnWorkPreservingCheck(); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + + @Before - public void setup() { + public void setup() throws Exception { servicesYarnWorkPreservingCheck.clustersProvider = new Provider<Clusters>() { @Override @@ -57,24 +76,29 @@ public class ServicesYarnWorkPreservingCheckTest { }; Configuration config = Mockito.mock(Configuration.class); servicesYarnWorkPreservingCheck.config = config; + + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); } @Test public void testIsApplicable() throws Exception { final Cluster cluster = Mockito.mock(Cluster.class); - final Map<String, Service> services = new HashMap<>(); final Service service = Mockito.mock(Service.class); - services.put("YARN", service); + m_services.put("YARN", service); - Mockito.when(cluster.getServices()).thenReturn(services); + Mockito.when(cluster.getServices()).thenReturn(m_services); Mockito.when(cluster.getClusterId()).thenReturn(1L); Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); - Assert.assertTrue(servicesYarnWorkPreservingCheck.isApplicable(new PrereqCheckRequest("cluster"))); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); + Assert.assertTrue(servicesYarnWorkPreservingCheck.isApplicable(request)); - services.remove("YARN"); - Assert.assertFalse(servicesYarnWorkPreservingCheck.isApplicable(new PrereqCheckRequest("cluster"))); + m_services.remove("YARN"); + Assert.assertFalse(servicesYarnWorkPreservingCheck.isApplicable(request)); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/StormShutdownWarningTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/StormShutdownWarningTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/StormShutdownWarningTest.java index 39089f3..1441256 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/StormShutdownWarningTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/StormShutdownWarningTest.java @@ -21,28 +21,56 @@ import java.util.HashMap; import java.util.Map; import org.apache.ambari.server.controller.PrereqCheckRequest; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.StackId; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; import org.apache.ambari.server.state.stack.upgrade.UpgradeType; import org.easymock.EasyMock; import org.easymock.EasyMockSupport; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; import com.google.inject.Provider; /** * Tests {@link StormShutdownWarning}. */ +@RunWith(MockitoJUnitRunner.class) public class StormShutdownWarningTest extends EasyMockSupport { private final String m_clusterName = "c1"; private final Clusters m_clusters = niceMock(Clusters.class); + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + final Map<String, Service> m_services = new HashMap<>(); + + @Before + public void setup() throws Exception { + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); + } + /** * @throws Exception */ @@ -60,18 +88,18 @@ public class StormShutdownWarningTest extends EasyMockSupport { final Cluster cluster = niceMock(Cluster.class); final Service hive = niceMock(Service.class); - final Map<String, Service> services = new HashMap<>(); - services.put("STORM", hive); + m_services.put("STORM", hive); EasyMock.expect(cluster.getClusterId()).andReturn(1L).anyTimes(); EasyMock.expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP", "2.3")).anyTimes(); - EasyMock.expect(cluster.getServices()).andReturn(services).atLeastOnce(); + EasyMock.expect(cluster.getServices()).andReturn(m_services).anyTimes(); EasyMock.expect(m_clusters.getCluster(m_clusterName)).andReturn(cluster).atLeastOnce(); PrereqCheckRequest request = niceMock(PrereqCheckRequest.class); - EasyMock.expect(request.getClusterName()).andReturn(m_clusterName); - EasyMock.expect(request.getUpgradeType()).andReturn(UpgradeType.ROLLING); + EasyMock.expect(request.getClusterName()).andReturn(m_clusterName).anyTimes(); + EasyMock.expect(request.getUpgradeType()).andReturn(UpgradeType.ROLLING).anyTimes(); + EasyMock.expect(request.getTargetRepositoryVersion()).andReturn(m_repositoryVersion).anyTimes(); replayAll(); http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java index 5cb666b..5de4b2a 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/YarnTimelineServerStatePreservingCheckTest.java @@ -56,7 +56,7 @@ public class YarnTimelineServerStatePreservingCheckTest { * */ @Before - public void setup() { + public void setup() throws Exception { m_check.clustersProvider = new Provider<Clusters>() { @Override http://git-wip-us.apache.org/repos/asf/ambari/blob/108ad9b4/ambari-server/src/test/java/org/apache/ambari/server/state/CheckHelperTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/CheckHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/CheckHelperTest.java index a25ad08..fc3a133 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/CheckHelperTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/CheckHelperTest.java @@ -19,34 +19,30 @@ package org.apache.ambari.server.state; import java.util.ArrayList; -import java.util.LinkedList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; import org.apache.ambari.server.AmbariException; -import org.apache.ambari.server.ClusterNotFoundException; -import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.checks.AbstractCheckDescriptor; import org.apache.ambari.server.checks.CheckDescription; -import org.apache.ambari.server.checks.ServicesUpCheck; import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.PrereqCheckRequest; -import org.apache.ambari.server.orm.dao.HostVersionDAO; -import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; -import org.apache.ambari.server.orm.dao.UpgradeDAO; -import org.apache.ambari.server.state.stack.OsFamily; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; +import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.PrereqCheckStatus; import org.apache.ambari.server.state.stack.PrerequisiteCheck; -import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper; import org.easymock.EasyMock; +import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; +import org.mockito.runners.MockitoJUnitRunner; -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Injector; -import com.google.inject.util.Providers; +import com.google.inject.Provider; import junit.framework.Assert; @@ -55,9 +51,41 @@ import junit.framework.Assert; * Tests the {@link CheckHelper} class * Makes sure that people don't forget to add new checks to registry. */ - +@RunWith(MockitoJUnitRunner.class) public class CheckHelperTest { + private final Clusters clusters = Mockito.mock(Clusters.class); + + private MockCheck m_mockCheck; + + private CheckDescription m_mockCheckDescription = Mockito.mock(CheckDescription.class); + + @Mock + private ClusterVersionSummary m_clusterVersionSummary; + + @Mock + private VersionDefinitionXml m_vdfXml; + + @Mock + private RepositoryVersionEntity m_repositoryVersion; + + @Mock + private Object m_mockPerform; + + final Map<String, Service> m_services = new HashMap<>(); + + @Before + public void setup() throws Exception { + m_mockCheck = new MockCheck(); + + Mockito.when(m_mockPerform.toString()).thenReturn("Perform!"); + + m_services.clear(); + Mockito.when(m_repositoryVersion.getRepositoryXml()).thenReturn(m_vdfXml); + Mockito.when(m_vdfXml.getClusterSummary(Mockito.any(Cluster.class))).thenReturn(m_clusterVersionSummary); + Mockito.when(m_clusterVersionSummary.getAvailableServiceNames()).thenReturn(m_services.keySet()); + } + /** * Sunny case when applicable. */ @@ -66,17 +94,15 @@ public class CheckHelperTest { final CheckHelper helper = new CheckHelper(); Configuration configuration = EasyMock.createNiceMock(Configuration.class); List<AbstractCheckDescriptor> updateChecksRegistry = new ArrayList<>(); - AbstractCheckDescriptor descriptor = EasyMock.createNiceMock(AbstractCheckDescriptor.class); EasyMock.expect(configuration.isUpgradePrecheckBypass()).andReturn(false); - descriptor.perform(EasyMock.<PrerequisiteCheck> anyObject(), EasyMock.<PrereqCheckRequest> anyObject()); - EasyMock.expectLastCall().times(1); - EasyMock.expect(descriptor.isApplicable(EasyMock.<PrereqCheckRequest> anyObject())).andReturn(true); - EasyMock.replay(descriptor, configuration); - updateChecksRegistry.add(descriptor); - - helper.performChecks(new PrereqCheckRequest("cluster"), updateChecksRegistry, configuration); - EasyMock.verify(descriptor); + EasyMock.replay(configuration); + updateChecksRegistry.add(m_mockCheck); + + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + helper.performChecks(request, updateChecksRegistry, configuration); + + Assert.assertEquals(PrereqCheckStatus.PASS, request.getResult(m_mockCheckDescription)); } /** @@ -84,16 +110,28 @@ public class CheckHelperTest { */ @Test public void testPreUpgradeCheckNotApplicable() throws Exception { + final Cluster cluster = Mockito.mock(Cluster.class); + final Service service = Mockito.mock(Service.class); + + m_services.put("KAFKA", service); + + Mockito.when(cluster.getServices()).thenReturn(new HashMap<String, Service>()); + Mockito.when(cluster.getClusterId()).thenReturn(1L); + Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster); + final CheckHelper helper = new CheckHelper(); Configuration configuration = EasyMock.createNiceMock(Configuration.class); List<AbstractCheckDescriptor> updateChecksRegistry = new ArrayList<>(); - AbstractCheckDescriptor descriptor = EasyMock.createNiceMock(AbstractCheckDescriptor.class); + EasyMock.expect(configuration.isUpgradePrecheckBypass()).andReturn(false); - EasyMock.expect(descriptor.isApplicable(EasyMock.<PrereqCheckRequest> anyObject())).andReturn(false); - EasyMock.replay(descriptor, configuration); - updateChecksRegistry.add(descriptor); - helper.performChecks(new PrereqCheckRequest("cluster"), updateChecksRegistry, configuration); - EasyMock.verify(descriptor); + EasyMock.replay(configuration); + updateChecksRegistry.add(m_mockCheck); + + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + helper.performChecks(request, updateChecksRegistry, configuration); + + + Assert.assertEquals(null, request.getResult(m_mockCheckDescription)); } /** @@ -102,20 +140,20 @@ public class CheckHelperTest { @Test public void testPreUpgradeCheckThrowsException() throws Exception { final CheckHelper helper = new CheckHelper(); - List<AbstractCheckDescriptor> updateChecksRegistry = new ArrayList<>(); - AbstractCheckDescriptor descriptor = EasyMock.createNiceMock(AbstractCheckDescriptor.class); Configuration configuration = EasyMock.createNiceMock(Configuration.class); + List<AbstractCheckDescriptor> updateChecksRegistry = new ArrayList<>(); EasyMock.expect(configuration.isUpgradePrecheckBypass()).andReturn(false); - descriptor.perform(EasyMock.<PrerequisiteCheck> anyObject(), EasyMock.<PrereqCheckRequest> anyObject()); - EasyMock.expectLastCall().andThrow(new AmbariException("error")); - EasyMock.expect(descriptor.isApplicable(EasyMock.<PrereqCheckRequest> anyObject())).andReturn(true); - EasyMock.expect(descriptor.getDescription()).andReturn(CheckDescription.HOSTS_HEARTBEAT).anyTimes(); - EasyMock.replay(descriptor, configuration); - updateChecksRegistry.add(descriptor); - final List<PrerequisiteCheck> upgradeChecks = helper.performChecks(new PrereqCheckRequest("cluster"), updateChecksRegistry, configuration); - EasyMock.verify(descriptor); - Assert.assertEquals(PrereqCheckStatus.FAIL, upgradeChecks.get(0).getStatus()); + EasyMock.replay(configuration); + updateChecksRegistry.add(m_mockCheck); + + // this will cause an exception + Mockito.when(m_mockPerform.toString()).thenThrow(new RuntimeException()); + + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + helper.performChecks(request, updateChecksRegistry, configuration); + + Assert.assertEquals(PrereqCheckStatus.FAIL, request.getResult(m_mockCheckDescription)); } /** @@ -123,98 +161,80 @@ public class CheckHelperTest { */ @Test public void testPreUpgradeCheckBypassesFailure() throws Exception { - // This mock class extends CheckHelper and overrides the getPrerequisiteChecks method in order to return - // a PrerequisiteCheck object whose status is FAIL. - final CheckHelperMock helper = new CheckHelperMock(); + final CheckHelper helper = new CheckHelper(); Configuration configuration = EasyMock.createNiceMock(Configuration.class); List<AbstractCheckDescriptor> updateChecksRegistry = new ArrayList<>(); - PrereqCheckRequest checkRequest = EasyMock.createNiceMock(PrereqCheckRequest.class); EasyMock.expect(configuration.isUpgradePrecheckBypass()).andReturn(true); - EasyMock.expect(checkRequest.getClusterName()).andReturn("c1").anyTimes(); - EasyMock.replay(checkRequest, configuration); + EasyMock.replay(configuration); + updateChecksRegistry.add(m_mockCheck); + + // this will cause an exception, triggering the bypass + Mockito.when(m_mockPerform.toString()).thenThrow(new RuntimeException()); - final List<PrerequisiteCheck> upgradeChecks = helper.performChecks(checkRequest, updateChecksRegistry, configuration); - Assert.assertEquals(1, upgradeChecks.size()); - Assert.assertEquals(PrereqCheckStatus.BYPASS, upgradeChecks.get(0).getStatus()); + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + helper.performChecks(request, updateChecksRegistry, configuration); + + Assert.assertEquals(PrereqCheckStatus.BYPASS, request.getResult(m_mockCheckDescription)); } @Test public void testPreUpgradeCheckClusterMissing() throws Exception { - final Clusters clusters = Mockito.mock(Clusters.class); + final Cluster cluster = Mockito.mock(Cluster.class); + final Service service = Mockito.mock(Service.class); + + m_services.put("KAFKA", service); + + Mockito.when(cluster.getServices()).thenReturn(new HashMap<String, Service>()); + Mockito.when(cluster.getClusterId()).thenReturn(1L); + + Mockito.when(clusters.getCluster(Mockito.anyString())).thenReturn(cluster); + + final CheckHelper helper = new CheckHelper(); Configuration configuration = EasyMock.createNiceMock(Configuration.class); - Mockito.when(clusters.getCluster(Mockito.anyString())).thenAnswer(new Answer<Cluster>() { - @Override - public Cluster answer(InvocationOnMock invocation) throws Throwable { - final String clusterName = invocation.getArguments()[0].toString(); - if (clusterName.equals("existing")) { - return Mockito.mock(Cluster.class); - } else { - throw new ClusterNotFoundException(clusterName); - } - } - }); - - final OsFamily osFamily = Mockito.mock(OsFamily.class); - - final Injector injector = Guice.createInjector(new AbstractModule() { - - @Override - protected void configure() { - bind(Clusters.class).toInstance(clusters); - bind(HostVersionDAO.class).toProvider(Providers.<HostVersionDAO>of(null)); - bind(UpgradeDAO.class).toProvider(Providers.<UpgradeDAO>of(null)); - bind(RepositoryVersionDAO.class).toProvider(Providers.<RepositoryVersionDAO>of(null)); - bind(RepositoryVersionHelper.class).toProvider(Providers.<RepositoryVersionHelper>of(null)); - bind(AmbariMetaInfo.class).toProvider(Providers.<AmbariMetaInfo>of(null)); - bind(ServicesUpCheck.class).toInstance(new ServicesUpCheck()); - bind(OsFamily.class).toInstance(osFamily); - } - }); - - final CheckHelper helper = injector.getInstance(CheckHelper.class); List<AbstractCheckDescriptor> updateChecksRegistry = new ArrayList<>(); EasyMock.expect(configuration.isUpgradePrecheckBypass()).andReturn(false); - EasyMock.replay(configuration); + updateChecksRegistry.add(m_mockCheck); - // mocked Cluster has no services, so the check should always be PASS - updateChecksRegistry.add(injector.getInstance(ServicesUpCheck.class)); - List<PrerequisiteCheck> upgradeChecks = helper.performChecks(new PrereqCheckRequest("existing"), updateChecksRegistry, configuration); - Assert.assertEquals(PrereqCheckStatus.PASS, upgradeChecks.get(0).getStatus()); - upgradeChecks = helper.performChecks(new PrereqCheckRequest("non-existing"), updateChecksRegistry, configuration); - Assert.assertEquals(PrereqCheckStatus.FAIL, upgradeChecks.get(0).getStatus()); - //non existing cluster is an expected error - Assert.assertTrue(!upgradeChecks.get(0).getFailReason().equals("Unexpected server error happened")); - } + // this will cause an exception, triggering the fail + Mockito.when(m_mockPerform.toString()).thenThrow(new RuntimeException()); - class CheckHelperMock extends CheckHelper { - @Override - public List<DescriptorPreCheck> getApplicablePrerequisiteChecks(PrereqCheckRequest request, - List<AbstractCheckDescriptor> checksRegistry) { + PrereqCheckRequest request = new PrereqCheckRequest("cluster"); + request.setTargetRepositoryVersion(m_repositoryVersion); - List<DescriptorPreCheck> applicablePreChecks = new LinkedList<>(); + helper.performChecks(request, updateChecksRegistry, configuration); - try { - CheckDescription description = CheckDescription.SERVICES_UP; - PrerequisiteCheck check = new PrerequisiteCheck(description, "c1"); - check.setStatus(PrereqCheckStatus.FAIL); + Assert.assertEquals(PrereqCheckStatus.FAIL, request.getResult(m_mockCheckDescription)); + } - AbstractCheckDescriptor descriptor = EasyMock.createNiceMock(AbstractCheckDescriptor.class); - EasyMock.expect(descriptor.isApplicable(EasyMock.<PrereqCheckRequest>anyObject())).andReturn(true); - EasyMock.expect(descriptor.getDescription()).andReturn(description).anyTimes(); + class MockCheck extends AbstractCheckDescriptor { - // Allow bypassing failures - EasyMock.replay(descriptor); + protected MockCheck() { + super(m_mockCheckDescription); - applicablePreChecks.add(new DescriptorPreCheck(descriptor, check)); - } catch (AmbariException e) { - ; - } + clustersProvider = new Provider<Clusters>() { - return applicablePreChecks; + @Override + public Clusters get() { + return clusters; + } + }; } - } -} + /** + * {@inheritDoc} + */ + @Override + public Set<String> getApplicableServices() { + return m_services.keySet(); + } + + @Override + public void perform(PrerequisiteCheck prerequisiteCheck, PrereqCheckRequest request) + throws AmbariException { + m_mockPerform.toString(); + } + } +} \ No newline at end of file