package org.ow2.choreos.ee.services.update; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.ow2.choreos.ee.services.preparer.PrepareDeploymentFailedException; import org.ow2.choreos.ee.services.preparer.ServiceDeploymentPreparer; import org.ow2.choreos.ee.services.preparer.ServiceDeploymentPreparerFactory; import org.ow2.choreos.ee.services.update.IncreaseNumberOfReplicas; import org.ow2.choreos.ee.services.update.UpdateActionFailedException; import org.ow2.choreos.nodes.datamodel.CloudNode; import org.ow2.choreos.services.datamodel.DeployableService; import org.ow2.choreos.services.datamodel.DeployableServiceSpec; import org.ow2.choreos.services.datamodel.PackageType; import org.ow2.choreos.services.datamodel.ServiceType; import org.ow2.choreos.tests.ModelsForTest; import com.google.common.collect.Sets; public class IncreaseNumberOfReplicasTest { private ServiceDeploymentPreparer deploymentPreparer; private CloudNode node; private DeployableService airlineService; @Before public void setUp() throws Exception { setNode(); setPreparer(); setModels(); } private void setNode() { node = new CloudNode(); node.setId("unik"); node.setIp("192.168.56.101"); node.setUser("ubuntu"); node.setPrivateKey("ubuntu.pem"); } private void setPreparer() throws PrepareDeploymentFailedException { deploymentPreparer = mock(ServiceDeploymentPreparer.class); when(deploymentPreparer.prepareDeployment()).thenReturn(Sets.newHashSet(node)); ServiceDeploymentPreparerFactory.preparerForTest = deploymentPreparer; ServiceDeploymentPreparerFactory.testing = true; } private void setModels() { ModelsForTest models = new ModelsForTest(ServiceType.SOAP, PackageType.COMMAND_LINE); airlineService = models.getAirlineService(); } @After public void tearDown() { ServiceDeploymentPreparerFactory.testing = false; } @Test public void test() throws UpdateActionFailedException { DeployableServiceSpec newSpec = airlineService.getSpec().clone(); newSpec.setNumberOfInstances(2); assertEquals(1, airlineService.getSelectedNodes().size()); CloudNode originalNode = airlineService.getSelectedNodes().iterator().next(); IncreaseNumberOfReplicas action = new IncreaseNumberOfReplicas(airlineService, newSpec); action.applyUpdate(); assertEquals(newSpec, airlineService.getSpec()); assertEquals(2, airlineService.getSelectedNodes().size()); boolean foundOriginal = false; boolean foundNewNode = false; for (CloudNode node : airlineService.getSelectedNodes()) { if (node.equals(originalNode)) foundOriginal = true; if (node.equals(node)) foundNewNode = true; } assertTrue(foundOriginal); assertTrue(foundNewNode); } }