Repository: ambari Updated Branches: refs/heads/branch-feature-AMBARI-21450 8bf44f3d5 -> 1f95e149b
http://git-wip-us.apache.org/repos/asf/ambari/blob/1f95e149/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/1f95e149/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 22f2b1b..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 @@ -93,13 +119,13 @@ public class ServicesMapReduceDistributedCacheCheckTest { final DesiredConfig desiredConfig = Mockito.mock(DesiredConfig.class); Mockito.when(desiredConfig.getTag()).thenReturn("tag"); - Map<String, DesiredConfig> configMap = new HashMap<String, DesiredConfig>(); + Map<String, DesiredConfig> configMap = new HashMap<>(); configMap.put("mapred-site", desiredConfig); configMap.put("core-site", desiredConfig); Mockito.when(cluster.getDesiredConfigs()).thenReturn(configMap); final Config config = Mockito.mock(Config.class); Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config); - final Map<String, String> properties = new HashMap<String, String>(); + final Map<String, String> properties = new HashMap<>(); Mockito.when(config.getProperties()).thenReturn(properties); PrerequisiteCheck check = new PrerequisiteCheck(null, null); @@ -151,16 +177,16 @@ public class ServicesMapReduceDistributedCacheCheckTest { final DesiredConfig desiredConfig = Mockito.mock(DesiredConfig.class); Mockito.when(desiredConfig.getTag()).thenReturn("tag"); - Map<String, DesiredConfig> configMap = new HashMap<String, DesiredConfig>(); + Map<String, DesiredConfig> configMap = new HashMap<>(); configMap.put("mapred-site", desiredConfig); configMap.put("core-site", desiredConfig); Mockito.when(cluster.getDesiredConfigs()).thenReturn(configMap); final Config config = Mockito.mock(Config.class); Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config); - final Map<String, String> properties = new HashMap<String, String>(); + final Map<String, String> properties = new HashMap<>(); Mockito.when(config.getProperties()).thenReturn(properties); - Map<String, String> checkProperties = new HashMap<String, String>(); + Map<String, String> checkProperties = new HashMap<>(); checkProperties.put("dfs-protocols-regex","^([^:]*dfs|wasb|ecs):.*"); PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class); Mockito.when(prerequisiteCheckConfig.getCheckProperties( http://git-wip-us.apache.org/repos/asf/ambari/blob/1f95e149/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 c44451f..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 @@ -21,20 +21,25 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.apache.ambari.server.ServiceNotFoundException; 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; @@ -42,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 @@ -58,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 @@ -89,7 +113,7 @@ public class ServicesNamenodeHighAvailabilityCheckTest { Mockito.when(cluster.getDesiredConfigs()).thenReturn(Collections.singletonMap("hdfs-site", desiredConfig)); final Config config = Mockito.mock(Config.class); Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config); - final Map<String, String> properties = new HashMap<String, String>(); + final Map<String, String> properties = new HashMap<>(); Mockito.when(config.getProperties()).thenReturn(properties); PrerequisiteCheck check = new PrerequisiteCheck(null, null); http://git-wip-us.apache.org/repos/asf/ambari/blob/1f95e149/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 cd0d4fb..b252ec5 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 @@ -33,13 +33,18 @@ import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Config; 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; @@ -47,25 +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<>(); - 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(); @@ -84,8 +99,12 @@ public class ServicesNamenodeTruncateCheckTest { } }; - 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.getVersion()).thenReturn("HDP-2.2.0.0"); + Mockito.when(m_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()); } @@ -94,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)); } @@ -110,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); @@ -127,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); http://git-wip-us.apache.org/repos/asf/ambari/blob/1f95e149/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 334b3b3..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 @@ -95,13 +120,13 @@ public class ServicesTezDistributedCacheCheckTest { final DesiredConfig desiredConfig = Mockito.mock(DesiredConfig.class); Mockito.when(desiredConfig.getTag()).thenReturn("tag"); - Map<String, DesiredConfig> configMap = new HashMap<String, DesiredConfig>(); + Map<String, DesiredConfig> configMap = new HashMap<>(); configMap.put("tez-site", desiredConfig); configMap.put("core-site", desiredConfig); Mockito.when(cluster.getDesiredConfigs()).thenReturn(configMap); final Config config = Mockito.mock(Config.class); Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config); - final Map<String, String> properties = new HashMap<String, String>(); + final Map<String, String> properties = new HashMap<>(); Mockito.when(config.getProperties()).thenReturn(properties); PrerequisiteCheck check = new PrerequisiteCheck(null, null); @@ -169,16 +194,16 @@ public class ServicesTezDistributedCacheCheckTest { final DesiredConfig desiredConfig = Mockito.mock(DesiredConfig.class); Mockito.when(desiredConfig.getTag()).thenReturn("tag"); - Map<String, DesiredConfig> configMap = new HashMap<String, DesiredConfig>(); + Map<String, DesiredConfig> configMap = new HashMap<>(); configMap.put("tez-site", desiredConfig); configMap.put("core-site", desiredConfig); Mockito.when(cluster.getDesiredConfigs()).thenReturn(configMap); final Config config = Mockito.mock(Config.class); Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config); - final Map<String, String> properties = new HashMap<String, String>(); + final Map<String, String> properties = new HashMap<>(); Mockito.when(config.getProperties()).thenReturn(properties); - Map<String, String> checkProperties = new HashMap<String, String>(); + Map<String, String> checkProperties = new HashMap<>(); checkProperties.put("dfs-protocols-regex","^([^:]*dfs|wasb|ecs):.*"); PrerequisiteCheckConfig prerequisiteCheckConfig = Mockito.mock(PrerequisiteCheckConfig.class); Mockito.when(prerequisiteCheckConfig.getCheckProperties( http://git-wip-us.apache.org/repos/asf/ambari/blob/1f95e149/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 29bc300..7cf0a38 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,20 +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(cluster.getServices()).thenReturn(clusterServices); + Mockito.when(cluster.getServices()).thenReturn(m_services); + + 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>() { @@ -259,8 +287,12 @@ public class ServicesUpCheckTest { Mockito.when(hcs.getDesiredState()).thenReturn(State.INSTALLED); 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 @@ -268,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 @@ -277,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. @@ -285,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) @@ -300,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); @@ -308,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 @@ -319,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()); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/1f95e149/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 98cfb18..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 @@ -21,20 +21,25 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.apache.ambari.server.ServiceNotFoundException; 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; @@ -42,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 @@ -58,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 @@ -89,7 +112,7 @@ public class ServicesYarnWorkPreservingCheckTest { Mockito.when(cluster.getDesiredConfigs()).thenReturn(Collections.singletonMap("yarn-site", desiredConfig)); final Config config = Mockito.mock(Config.class); Mockito.when(cluster.getConfig(Mockito.anyString(), Mockito.anyString())).thenReturn(config); - final Map<String, String> properties = new HashMap<String, String>(); + final Map<String, String> properties = new HashMap<>(); Mockito.when(config.getProperties()).thenReturn(properties); PrerequisiteCheck check = new PrerequisiteCheck(null, null); http://git-wip-us.apache.org/repos/asf/ambari/blob/1f95e149/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/1f95e149/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/1f95e149/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 215cbd6..27b248f 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,46 +19,72 @@ 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; + /** * Tests the {@link CheckHelper} class + * Makes sure that people don't forget to add new checks to registry. */ - +@RunWith(MockitoJUnitRunner.class) public class CheckHelperTest { -/** - * Makes sure that people don't forget to add new checks to registry. - */ + 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. @@ -68,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)); } /** @@ -86,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)); } /** @@ -104,20 +140,20 @@ public class CheckHelperTest { @Test public void testPreUpgradeCheckThrowsException() throws Exception { final CheckHelper helper = new CheckHelper(); - List<AbstractCheckDescriptor> updateChecksRegistry = new ArrayList<>(); Configuration configuration = EasyMock.createNiceMock(Configuration.class); - AbstractCheckDescriptor descriptor = EasyMock.createNiceMock(AbstractCheckDescriptor.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)); } /** @@ -125,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); - final List<PrerequisiteCheck> upgradeChecks = helper.performChecks(checkRequest, updateChecksRegistry, configuration); - Assert.assertEquals(1, upgradeChecks.size()); - Assert.assertEquals(PrereqCheckStatus.BYPASS, upgradeChecks.get(0).getStatus()); + // this will cause an exception, triggering the bypass + Mockito.when(m_mockPerform.toString()).thenThrow(new RuntimeException()); + + 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(); } } } -