/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.ow2.choreos.tests; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import org.ow2.choreos.chors.datamodel.Choreography; import org.ow2.choreos.chors.datamodel.ChoreographySpec; import org.ow2.choreos.nodes.datamodel.CloudNode; import org.ow2.choreos.nodes.datamodel.ResourceImpact; 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.ServiceDependency; import org.ow2.choreos.services.datamodel.ServiceInstance; import org.ow2.choreos.services.datamodel.ServiceType; public class ModelsForTest { public static final String AIRLINE = "airline"; public static final String TRAVEL_AGENCY = "travelagency"; public static String AIRLINE_JAR = "http://valinhos.ime.usp.br:54080/enact_test/v2-2/airline-service.jar"; public static String TRAVEL_AGENCY_JAR = "http://valinhos.ime.usp.br:54080/enact_test/v2-2/travel-agency-service.jar"; public static String AIRLINE_WAR = "http://valinhos.ime.usp.br:54080/enact_test/v2-2/airline.war"; public static String TRAVEL_AGENCY_WAR = "http://valinhos.ime.usp.br:54080/enact_test/v2-2/travelagency.war"; public static final String AIRLINE_IP = "192.168.56.101"; public static final String TRAVEL_AGENCY_IP = "192.168.56.102"; public static final int AIRLINE_PORT = 1234; public static final int TRAVEL_AGENCY_PORT = 1235; public static final String AIRLINE_URI = "http://" + AIRLINE_IP + ":" + AIRLINE_PORT + "/" + AIRLINE + "/"; public static final String TRAVEL_AGENCY_URI = "http://" + TRAVEL_AGENCY_IP + ":" + TRAVEL_AGENCY_PORT + "/" + TRAVEL_AGENCY + "/"; private final String serviceVersion = "0.1"; private final int numberOfTravelInstances = 1; private PackageType packageType; private ServiceType serviceType; private ResourceImpact resourceImpact = new ResourceImpact(); private int numberOfAirlineServices = 1; private Choreography chor; private ChoreographySpec chorSpec; private DeployableServiceSpec airlineSpec; private DeployableServiceSpec travelSpec; private DeployableService airlineService; private DeployableService travelService; public ModelsForTest(ServiceType serviceType, PackageType packageType) { this.packageType = packageType; this.serviceType = serviceType; initAirlineSpec(); initAirlineService(); initTravelSpec(); initTravelService(); createChorSpec(); createChoreography(); } public ModelsForTest(ServiceType serviceType, PackageType packageType, int numberOfAirlineServices) { this.packageType = packageType; this.serviceType = serviceType; this.numberOfAirlineServices = numberOfAirlineServices; initAirlineSpec(); initAirlineService(); initTravelSpec(); initTravelService(); createChorSpec(); createChoreography(); } public ModelsForTest(ServiceType serviceType, PackageType packageType, ResourceImpact resourceImpact) { this.packageType = packageType; this.serviceType = serviceType; this.resourceImpact = resourceImpact; initAirlineSpec(); initAirlineService(); initTravelSpec(); initTravelService(); createChorSpec(); createChoreography(); } public DeployableServiceSpec getAirlineSpec() { return airlineSpec; } public DeployableServiceSpec getTravelSpec() { return travelSpec; } public DeployableService getTravelService() { return travelService; } public DeployableService getAirlineService() { return airlineService; } public ChoreographySpec getChorSpec() { return this.chorSpec; } public Choreography getChoreography() { return this.chor; } private void createChorSpec() { this.chorSpec = new ChoreographySpec(this.airlineSpec, this.travelSpec); } private void initAirlineSpec() { if (packageType == PackageType.COMMAND_LINE) { airlineSpec = new DeployableServiceSpec(AIRLINE, serviceType, packageType, resourceImpact, serviceVersion, AIRLINE_JAR, AIRLINE_PORT, AIRLINE, numberOfAirlineServices); } else { airlineSpec = new DeployableServiceSpec(AIRLINE, serviceType, packageType, resourceImpact, serviceVersion, AIRLINE_WAR, AIRLINE, numberOfAirlineServices); } airlineSpec.setRoles(Collections.singletonList(AIRLINE)); } private void initTravelSpec() { if (packageType == PackageType.COMMAND_LINE) { travelSpec = new DeployableServiceSpec(TRAVEL_AGENCY, serviceType, packageType, resourceImpact, serviceVersion, TRAVEL_AGENCY_JAR, TRAVEL_AGENCY_PORT, TRAVEL_AGENCY, numberOfTravelInstances); } else { travelSpec = new DeployableServiceSpec(TRAVEL_AGENCY, serviceType, packageType, resourceImpact, serviceVersion, TRAVEL_AGENCY_WAR, TRAVEL_AGENCY, numberOfTravelInstances); } travelSpec.setRoles(Collections.singletonList(TRAVEL_AGENCY)); travelSpec.addDependency(new ServiceDependency(AIRLINE, AIRLINE)); } public void initTravelService() { CloudNode node = createNode("2", TRAVEL_AGENCY_IP, "choreos-node"); travelService = new DeployableService(this.travelSpec); travelService.generateUUID(); Set<CloudNode> nodes = new HashSet<CloudNode>(); nodes.add(node); travelService.setSelectedNodes(nodes); ServiceInstance instance = new ServiceInstance(node); instance.setInstanceId(TRAVEL_AGENCY + "1"); instance.setServiceSpec(this.travelSpec); travelService.setServiceInstances(Collections.singletonList(instance)); } public void initAirlineService() { airlineService = new DeployableService(this.airlineSpec); airlineService.generateUUID(); CloudNode node = createNode("1", AIRLINE_IP, "choreos-node"); // TODO // instances // should be in // different // nodes Set<CloudNode> nodes = new HashSet<CloudNode>(); nodes.add(node); airlineService.setSelectedNodes(nodes); List<ServiceInstance> instances = new ArrayList<ServiceInstance>(); for (int i = 0; i < numberOfAirlineServices; i++) { ServiceInstance instance = new ServiceInstance(node); instance.setInstanceId(AIRLINE + i); instance.setServiceSpec(this.airlineSpec); instances.add(instance); } airlineService.setServiceInstances(instances); } private void createChoreography() { if (chorSpec == null) createChorSpec(); this.chor = new Choreography(); this.chor.setId("1"); this.chor.setChoreographySpec(this.chorSpec); this.chor.addService(travelService); this.chor.addService(airlineService); } private CloudNode createNode(String id, String ip, String hostname) { CloudNode node1 = new CloudNode(); node1.setId(id); node1.setIp(ip); node1.setHostname(hostname); return node1; } }