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());
}
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());
}
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, "");
}
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());
}
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());
}
Aggregations