Search in sources :

Example 1 with Criteria

use of org.eclipse.winery.repository.targetallocation.Criteria in project winery by eclipse.

the class MinExternalConnectionsTest method filter.

@Test
public void filter() throws Exception {
    ServiceTemplateId id = new ServiceTemplateId("http://www.winery.opentosca.org/test/targetallocation/servicetemplates", "MinExternalConnectionsTest1", false);
    TTopologyTemplate twoExternal = repository.getElement(id).getTopologyTemplate();
    ModelUtilities.setTargetLabel(twoExternal.getNodeTemplate("shetland_pony_2"), "PastureProvider");
    ModelUtilities.setTargetLabel(twoExternal.getNodeTemplate("shetland_pony_3"), "PastureProvider");
    TTopologyTemplate oneExternal = AllocationUtils.deepCopy(twoExternal);
    ModelUtilities.setTargetLabel(oneExternal.getNodeTemplate("shetland_pony_2"), "FieldProvider");
    ModelUtilities.setTargetLabel(oneExternal.getNodeTemplate("shetland_pony_3"), "FieldProvider");
    List<TopologyWrapper> topologies = new ArrayList<>();
    topologies.add(new TopologyWrapper(twoExternal));
    topologies.add(new TopologyWrapper(oneExternal));
    Criteria minExternalConnections = new MinExternalConnections(null, Integer.MAX_VALUE);
    List<TopologyWrapper> filtered = minExternalConnections.filter(topologies);
    assertEquals(1, filtered.size());
    TTopologyTemplate result = filtered.get(0).getTopology();
    assertEquals("PastureProvider".toLowerCase(), ModelUtilities.getTargetLabel(result.getNodeTemplate("shetland_pony")).get());
    assertEquals("FieldProvider".toLowerCase(), ModelUtilities.getTargetLabel(result.getNodeTemplate("shetland_pony_2")).get());
    assertEquals("FieldProvider".toLowerCase(), ModelUtilities.getTargetLabel(result.getNodeTemplate("shetland_pony_3")).get());
    assertEquals("FieldProvider".toLowerCase(), ModelUtilities.getTargetLabel(result.getNodeTemplate("shetland_pony_4")).get());
}
Also used : TTopologyTemplate(org.eclipse.winery.model.tosca.TTopologyTemplate) ArrayList(java.util.ArrayList) TopologyWrapper(org.eclipse.winery.repository.targetallocation.util.TopologyWrapper) Criteria(org.eclipse.winery.repository.targetallocation.Criteria) ServiceTemplateId(org.eclipse.winery.model.ids.definitions.ServiceTemplateId) Test(org.junit.jupiter.api.Test)

Example 2 with Criteria

use of org.eclipse.winery.repository.targetallocation.Criteria in project winery by eclipse.

the class FulfillPoliciesTest method testApprox.

@Test
public void testApprox() throws Exception {
    JsonNode params = JacksonProvider.mapper.readTree("{\"policySelection\":[" + "{\"policy\":\"floorwarmth10\",\"property\":\"warmth\",\"operator\":\"approx\"}," + "{\"policy\":\"floorwarmth30\",\"property\":\"warmth\",\"operator\":\"approx\"}]}");
    Criteria fulfillPolicies = new FulfillPolicies(params, Integer.MAX_VALUE);
    List<TTopologyTemplate> allocatedTopologies = fulfillPolicies.allocate(topology).stream().map(TopologyWrapper::getTopology).collect(Collectors.toList());
    assertEquals(1, allocatedTopologies.size());
    TTopologyTemplate allocated = allocatedTopologies.get(0);
    assertEquals(8, allocated.getNodeTemplates().size());
    // set by criteria
    assertEquals("PastureProvider".toLowerCase(), ModelUtilities.getTargetLabel(allocated.getNodeTemplate("shetland_pony_3")).get());
    assertEquals("FieldProvider".toLowerCase(), ModelUtilities.getTargetLabel(allocated.getNodeTemplate("shetland_pony_4")).get());
    // set by user
    assertEquals("PastureProvider".toLowerCase(), ModelUtilities.getTargetLabel(allocated.getNodeTemplate("shetland_pony")).get());
    assertEquals("FieldProvider".toLowerCase(), ModelUtilities.getTargetLabel(allocated.getNodeTemplate("shetland_pony_2")).get());
}
Also used : FulfillPolicies(org.eclipse.winery.repository.targetallocation.criteria.fulfillpolicies.FulfillPolicies) TTopologyTemplate(org.eclipse.winery.model.tosca.TTopologyTemplate) JsonNode(com.fasterxml.jackson.databind.JsonNode) Criteria(org.eclipse.winery.repository.targetallocation.Criteria) Test(org.junit.jupiter.api.Test)

Example 3 with Criteria

use of org.eclipse.winery.repository.targetallocation.Criteria in project winery by eclipse.

the class FulfillPoliciesTest method testNotPossible.

@Test
public void testNotPossible() throws Exception {
    JsonNode params = JacksonProvider.mapper.readTree("{\"policySelection\":[" + "{\"policy\":\"floorwarmth10\",\"property\":\"warmth\",\"operator\":\"=\"}," + "{\"policy\":\"floorwarmth30\",\"property\":\"warmth\",\"operator\":\"=\"}]}");
    Criteria fulfillPolicies = new FulfillPolicies(params, Integer.MAX_VALUE);
    Executable executable = () -> fulfillPolicies.allocate(topology);
    assertThrows(AllocationException.class, executable, "");
}
Also used : FulfillPolicies(org.eclipse.winery.repository.targetallocation.criteria.fulfillpolicies.FulfillPolicies) JsonNode(com.fasterxml.jackson.databind.JsonNode) Criteria(org.eclipse.winery.repository.targetallocation.Criteria) Executable(org.junit.jupiter.api.function.Executable) Test(org.junit.jupiter.api.Test)

Example 4 with Criteria

use of org.eclipse.winery.repository.targetallocation.Criteria in project winery by eclipse.

the class FulfillPoliciesTest method testSimpleOperators.

@Test
public void testSimpleOperators() throws Exception {
    JsonNode params = JacksonProvider.mapper.readTree("{\"policySelection\":[" + "{\"policy\":\"floorwarmth10\",\"property\":\"warmth\",\"operator\":\">\"}," + "{\"policy\":\"floorwarmth30\",\"property\":\"warmth\",\"operator\":\"<\"}]}");
    Criteria fulfillPolicies = new FulfillPolicies(params, Integer.MAX_VALUE);
    List<TopologyWrapper> allocatedTopologies = fulfillPolicies.allocate(topology);
    assertEquals(4, allocatedTopologies.size());
    TopologyWrapper allocated1 = allocatedTopologies.get(0);
    TopologyWrapper allocated2 = allocatedTopologies.get(1);
    TopologyWrapper allocated3 = allocatedTopologies.get(2);
    TopologyWrapper allocated4 = allocatedTopologies.get(3);
    assertEquals(8, allocated1.getNodeTemplates().size());
    assertEquals(8, allocated2.getNodeTemplates().size());
    assertEquals(8, allocated3.getNodeTemplates().size());
    assertEquals(8, allocated4.getNodeTemplates().size());
    List<String> targetLabels1 = getTargetLabels(allocated1);
    List<String> targetLabels2 = getTargetLabels(allocated2);
    List<String> targetLabels3 = getTargetLabels(allocated3);
    List<String> targetLabels4 = getTargetLabels(allocated4);
    assertEquals(3, targetLabels1.stream().filter("PastureProvider"::equalsIgnoreCase).count());
    assertEquals(1, targetLabels1.stream().filter("FieldProvider"::equalsIgnoreCase).count());
    assertEquals(2, targetLabels2.stream().filter("PastureProvider"::equalsIgnoreCase).count());
    assertEquals(2, targetLabels2.stream().filter("FieldProvider"::equalsIgnoreCase).count());
    assertEquals(2, targetLabels3.stream().filter("PastureProvider"::equalsIgnoreCase).count());
    assertEquals(2, targetLabels3.stream().filter("FieldProvider"::equalsIgnoreCase).count());
    assertEquals(1, targetLabels4.stream().filter("PastureProvider"::equalsIgnoreCase).count());
    assertEquals(3, targetLabels4.stream().filter("FieldProvider"::equalsIgnoreCase).count());
}
Also used : FulfillPolicies(org.eclipse.winery.repository.targetallocation.criteria.fulfillpolicies.FulfillPolicies) JsonNode(com.fasterxml.jackson.databind.JsonNode) Criteria(org.eclipse.winery.repository.targetallocation.Criteria) TopologyWrapper(org.eclipse.winery.repository.targetallocation.util.TopologyWrapper) Test(org.junit.jupiter.api.Test)

Example 5 with Criteria

use of org.eclipse.winery.repository.targetallocation.Criteria in project winery by eclipse.

the class MinHostsTest method test5Pony3FieldProvider.

@Test
public void test5Pony3FieldProvider() throws Exception {
    ServiceTemplateId id = new ServiceTemplateId("http://www.winery.opentosca.org/test/targetallocation/servicetemplates", "TargetAllocationMinHostsTest5_-w1-wip1", false);
    TopologyWrapper topology = new TopologyWrapper(repository.getElement(id).getTopologyTemplate());
    ModelUtilities.setTargetLabel(topology.getTopology().getNodeTemplate("shetland_pony_3"), "FieldProvider");
    Criteria minHosts = new MinHosts(null, Integer.MAX_VALUE);
    List<TopologyWrapper> topologies = minHosts.allocate(topology);
    assertEquals(1, topologies.size());
    TTopologyTemplate allocated = topologies.get(0).getTopology();
    assertEquals(6, allocated.getNodeTemplates().size());
    assertEquals(4, allocated.getRelationshipTemplates().size());
    assertEquals("LargeStallProvider".toLowerCase(), ModelUtilities.getTargetLabel(allocated.getNodeTemplate("shetland_pony")).get());
    assertEquals("LargeStallProvider".toLowerCase(), ModelUtilities.getTargetLabel(allocated.getNodeTemplate("shetland_pony_2")).get());
    assertEquals("FieldProvider".toLowerCase(), ModelUtilities.getTargetLabel(allocated.getNodeTemplate("shetland_pony_3")).get());
    assertEquals(2, allocated.getNodeTemplates().stream().map(ModelUtilities::getTargetLabel).collect(Collectors.toSet()).size());
}
Also used : TTopologyTemplate(org.eclipse.winery.model.tosca.TTopologyTemplate) TopologyWrapper(org.eclipse.winery.repository.targetallocation.util.TopologyWrapper) Criteria(org.eclipse.winery.repository.targetallocation.Criteria) ServiceTemplateId(org.eclipse.winery.model.ids.definitions.ServiceTemplateId) Test(org.junit.jupiter.api.Test)

Aggregations

Criteria (org.eclipse.winery.repository.targetallocation.Criteria)16 Test (org.junit.jupiter.api.Test)16 TopologyWrapper (org.eclipse.winery.repository.targetallocation.util.TopologyWrapper)13 ServiceTemplateId (org.eclipse.winery.model.ids.definitions.ServiceTemplateId)11 TTopologyTemplate (org.eclipse.winery.model.tosca.TTopologyTemplate)11 ArrayList (java.util.ArrayList)6 TNodeTemplate (org.eclipse.winery.model.tosca.TNodeTemplate)6 JsonNode (com.fasterxml.jackson.databind.JsonNode)5 FulfillPolicies (org.eclipse.winery.repository.targetallocation.criteria.fulfillpolicies.FulfillPolicies)5 MinExternalConnections (org.eclipse.winery.repository.targetallocation.criteria.minexternalconnections.MinExternalConnections)1 Executable (org.junit.jupiter.api.function.Executable)1