package org.ow2.choreos.chors.datamodel;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.ow2.choreos.services.datamodel.DeployableService;
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;
public class ChoreographyTest {
private static final String AIRLINE = ModelsForTest.AIRLINE;
private static final String TRAVEL_AGENCY = ModelsForTest.TRAVEL_AGENCY;
private Choreography chor;
private DeployableService airlineService;
private DeployableService travelService;
@Before
public void setUp() {
ModelsForTest models = new ModelsForTest(ServiceType.SOAP, PackageType.COMMAND_LINE, 3);
chor = models.getChoreography();
airlineService = models.getAirlineService();
travelService = models.getTravelService();
}
@Test
public void shouldRetrieveMap() {
Map<String, DeployableService> map = chor.getMapOfDeployableServicesBySpecNames();
assertTrue(map.containsKey(AIRLINE));
assertTrue(map.containsKey(TRAVEL_AGENCY));
assertEquals(AIRLINE, map.get(AIRLINE).getSpec().getName());
assertEquals(TRAVEL_AGENCY, map.get(TRAVEL_AGENCY).getSpec().getName());
assertEquals(airlineService, map.get(AIRLINE));
assertEquals(travelService, map.get(TRAVEL_AGENCY));
}
@Test
public void shoulRemoveInstance() {
DeployableService airline = chor.getDeployableServiceBySpecName(AIRLINE);
assertEquals(3, airline.getInstances().size());
ServiceInstance instance = airline.getInstances().get(0);
String id = instance.getInstanceId();
chor.removeServiceInstance(instance);
List<String> instancesId = getInstancesIds();
assertEquals(2, airline.getInstances().size());
assertFalse(instancesId.contains(id));
}
private List<String> getInstancesIds() {
List<String> ids = new ArrayList<String>();
for (DeployableService svc : chor.getDeployableServices()) {
for (ServiceInstance instance : svc.getInstances()) {
ids.add(instance.getInstanceId());
}
}
return ids;
}
}