private void unloadTomcatGroup() {
    // _______________________________________________________________
    // Delete compute will trigger following actions on type loader
    loader.unloadType("tosca.nodes.Compute");
    // Java hosted on compute
    loader.unloadType("tosca.relationships.HostedOn");

    // _______________________________________________________________
    // Delete relationship Tomcat depends on Java
    loader.unloadType("tosca.relationships.DependsOn");

    // _______________________________________________________________
    // Delete java
    loader.unloadType("tosca.nodes.Java");

    // _______________________________________________________________
    // Delete tomcat will trigger following actions on type loader
    loader.unloadType("tosca.nodes.Tomcat");
    // Tomcat hosted on compute
    loader.unloadType("tosca.relationships.HostedOn");
    // War hosted on tomcat
    loader.unloadType("tosca.relationships.WarDeployedOn");

    // _______________________________________________________________
    loader.unloadType("tosca.nodes.War");
  }
 private void loadTomcatGroup() {
   // All nodes are placed first
   loader.loadType("tosca.nodes.Compute", baseTypes);
   loader.loadType("tosca.nodes.Java", javaTypes);
   loader.loadType("tosca.nodes.Tomcat", javaTypes);
   loader.loadType("tosca.nodes.War", javaTypes);
   // Java hosted on compute
   loader.loadType("tosca.relationships.HostedOn", baseTypes);
   // Tomcat hosted on compute
   loader.loadType("tosca.relationships.HostedOn", baseTypes);
   // War hosted on tomcat
   loader.loadType("tosca.relationships.WarDeployedOn", javaTypes);
   // Tomcat depends on Java
   loader.loadType("tosca.relationships.DependsOn", baseTypes);
 }
 private void loadGigaSpacesGroup() {
   // All gigaspaces group nodes are placed first
   loader.loadType("tosca.nodes.Compute", baseTypesV2);
   loader.loadType("tosca.nodes.Java", javaTypesV2);
   loader.loadType("tosca.nodes.GigaSpaces", javaTypesV2);
   // Java hosted on compute
   loader.loadType("tosca.relationships.HostedOn", baseTypesV2);
   // GigaSpaces hosted on compute
   loader.loadType("tosca.relationships.HostedOn", baseTypes);
   // GigaSpaces depends on Java
   loader.loadType("tosca.relationships.DependsOn", baseTypes);
   // War connect to gigaspaces
   loader.loadType("tosca.relationships.ConnectedTo", baseTypes);
 }
  private void unloadGigaSpacesGroup() {
    // _______________________________________________________________
    // War connected to GigaSpaces
    loader.unloadType("tosca.relationships.ConnectedTo");
    // _______________________________________________________________
    // Delete compute will trigger following actions on type loader
    loader.unloadType("tosca.nodes.Compute");
    // Java hosted on compute
    loader.unloadType("tosca.relationships.HostedOn");
    // GigaSpaces hosted on compute
    loader.unloadType("tosca.relationships.HostedOn");

    // _______________________________________________________________
    // Delete relationship GigaSpaces depends on Java
    loader.unloadType("tosca.relationships.DependsOn");

    // _______________________________________________________________
    // Delete java
    loader.unloadType("tosca.nodes.Java");

    // _______________________________________________________________
    // Delete GigaSpaces will trigger following actions on type loader
    loader.unloadType("tosca.nodes.GigaSpaces");
  }
  @Test
  public void testOverride() {

    // All tomcat group nodes are placed first
    loadTomcatGroup();
    loadGigaSpacesGroup();

    Assert.assertEquals(2, loader.getDependenciesMap().keySet().size());
    Assert.assertTrue(loader.getDependenciesMap().containsKey(baseTypesV2));
    Assert.assertTrue(loader.getDependenciesMap().containsKey(javaTypesV2));

    Assert.assertEquals(
        Sets.newHashSet(
            "tosca.nodes.Compute",
            "tosca.nodes.Java",
            "tosca.nodes.Tomcat",
            "tosca.relationships.HostedOn",
            "tosca.relationships.DependsOn",
            "tosca.relationships.WarDeployedOn",
            "tosca.nodes.War",
            "tosca.nodes.GigaSpaces",
            "tosca.relationships.ConnectedTo"),
        loader.getDependenciesMap().get(baseTypesV2));
    Assert.assertEquals(
        Sets.newHashSet(
            "tosca.nodes.Java",
            "tosca.nodes.Tomcat",
            "tosca.nodes.War",
            "tosca.nodes.GigaSpaces",
            "tosca.relationships.WarDeployedOn"),
        loader.getDependenciesMap().get(javaTypesV2));

    unloadTomcatGroup();
    unloadGigaSpacesGroup();

    Assert.assertTrue(loader.getDependenciesMap().isEmpty());
    Assert.assertTrue(loader.getTypeUsagesMap().isEmpty());
  }
  @Test
  public void testStandardUseCase() {
    loadTomcatGroup();
    Assert.assertEquals(2, loader.getDependenciesMap().keySet().size());
    Assert.assertTrue(loader.getDependenciesMap().containsKey(baseTypes));
    Assert.assertTrue(loader.getDependenciesMap().containsKey(javaTypes));

    Assert.assertEquals(
        Sets.newHashSet(
            "tosca.nodes.Compute",
            "tosca.nodes.Java",
            "tosca.relationships.HostedOn",
            "tosca.relationships.DependsOn",
            "tosca.relationships.WarDeployedOn",
            "tosca.nodes.War",
            "tosca.nodes.Tomcat"),
        loader.getDependenciesMap().get(baseTypes));
    Assert.assertEquals(
        Sets.newHashSet(
            "tosca.nodes.Java",
            "tosca.nodes.Tomcat",
            "tosca.nodes.War",
            "tosca.relationships.WarDeployedOn"),
        loader.getDependenciesMap().get(javaTypes));

    Assert.assertEquals(1, loader.getTypeUsagesMap().get("tosca.nodes.Compute").intValue());
    Assert.assertEquals(1, loader.getTypeUsagesMap().get("tosca.nodes.Java").intValue());
    Assert.assertEquals(1, loader.getTypeUsagesMap().get("tosca.nodes.Tomcat").intValue());
    Assert.assertEquals(1, loader.getTypeUsagesMap().get("tosca.nodes.War").intValue());

    Assert.assertEquals(
        2, loader.getTypeUsagesMap().get("tosca.relationships.HostedOn").intValue());
    Assert.assertEquals(
        1, loader.getTypeUsagesMap().get("tosca.relationships.DependsOn").intValue());
    Assert.assertEquals(
        1, loader.getTypeUsagesMap().get("tosca.relationships.WarDeployedOn").intValue());

    unloadTomcatGroup();

    Assert.assertTrue(loader.getDependenciesMap().isEmpty());
    Assert.assertTrue(loader.getTypeUsagesMap().isEmpty());
  }