@Test
public void testNoTargetLabelsPresent() throws Exception {

    ServiceTemplateId id = new ServiceTemplateId("http://www.winery.opentosca.org/test/targetallocation/servicetemplates",
        "TargetAllocationMinHostsTest4", false);
    TopologyWrapper topology = new TopologyWrapper(repository.getElement(id).getTopologyTemplate());
    Criteria minHosts = new MinHosts(null, Integer.MAX_VALUE);
    List<String> ntIdsWithoutTargetLabel = topology.getTopLevelNTs().stream()
        .filter(nt -> !ModelUtilities.getTargetLabel(nt).isPresent()).map(HasId::getId).collect(Collectors.toList());
    List<TopologyWrapper> topologies = minHosts.allocate(topology);
    assertEquals(2, topologies.size());
    TTopologyTemplate topology1 = topologies.get(0).getTopology();
    TTopologyTemplate topology2 = topologies.get(1).getTopology();
    assertEquals(17, topology1.getNodeTemplateOrRelationshipTemplate().size());
    assertEquals(17, topology2.getNodeTemplateOrRelationshipTemplate().size());
    List<String> types1 = new ArrayList<>();
    for (TNodeTemplate nodeTemplate : topology1.getNodeTemplates()) {
        types1.add(nodeTemplate.getType().getLocalPart());
    }
    assertEquals(10, types1.size());
    assertEquals(7, types1.stream().filter(type -> type.equalsIgnoreCase("shetland_pony")).count());
    assertEquals(2, types1.stream().filter(type -> type.equalsIgnoreCase("pasture")).count());
    for (TNodeTemplate nodeTemplate : topologies.get(0).getTopLevelNTs()) {
        if (ntIdsWithoutTargetLabel.contains(nodeTemplate.getId())) {
            assertEquals("pasture", topologies.get(0).getHostedOnSuccessor(nodeTemplate).getType().getLocalPart());
        }
    }
    List<String> types2 = new ArrayList<>();
    for (TNodeTemplate nodeTemplate : topology2.getNodeTemplates()) {
        types2.add(nodeTemplate.getType().getLocalPart());
    }
    assertEquals(10, types2.size());
    assertEquals(7, types2.stream().filter(type -> type.equalsIgnoreCase("shetland_pony")).count());
    assertEquals(2, types2.stream().filter(type -> type.equalsIgnoreCase("field_-w1-wip1")).count());
    for (TNodeTemplate nodeTemplate : topologies.get(1).getTopLevelNTs()) {
        if (ntIdsWithoutTargetLabel.contains(nodeTemplate.getId())) {
            assertEquals("field_-w1-wip1", topologies.get(1).getHostedOnSuccessor(nodeTemplate).getType().getLocalPart());
        }
    }
}