package org.ow2.choreos.ee.services.preparer; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; 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.ServiceInstance; import org.ow2.choreos.services.datamodel.ServiceType; import org.ow2.choreos.tests.ModelsForTest; import org.ow2.choreos.utils.Concurrency; public class InstanceCreatorUpdateHandlerTest { private DeployableService service; private CloudNode node; private DeployableServiceSpec spec; @Before public void setUp() throws Exception { setNode(); setService(); } private void setNode() { node = new CloudNode(); node.setIp("192.168.56.101"); node.setUser("ubuntu"); node.setPrivateKey("ubuntu.pem"); } private void setService() { ModelsForTest models = new ModelsForTest(ServiceType.SOAP, PackageType.COMMAND_LINE); spec = models.getAirlineSpec(); service = new DeployableService(); service.generateUUID(); service.setSpec(spec); } @Test public void shouldCreateInstancesOnService() { int N = 3; List<Thread> trds = new ArrayList<Thread>(); for (int i = 0; i < N; i++) { String instanceId = Integer.toString(i); InstanceCreatorUpdateHandler handler = new InstanceCreatorUpdateHandler(service, instanceId, node); HandlerTask task = new HandlerTask(handler); Thread t = new Thread(task); trds.add(t); t.start(); } Concurrency.waitThreads(trds); assertEquals(N, service.getServiceInstances().size()); for (ServiceInstance instance : service.getServiceInstances()) { assertEquals(node, instance.getNode()); assertEquals(spec, instance.getServiceSpec()); } } private class HandlerTask implements Runnable { InstanceCreatorUpdateHandler handler; public HandlerTask(InstanceCreatorUpdateHandler handler) { this.handler = handler; } @Override public void run() { handler.handle(); } } }