private void processFacet( BlockFacet block ) { FacetData data = this.facetNameToFacetData.get( block.getName()); if( data != null ) { data.blocks.add( block ); } else { data = new FacetData(); data.object = new Facet( block.getName()); data.object.exportedVariables.putAll( ModelUtils.getExportedVariables( block )); data.childrenNames.addAll( ModelUtils.getPropertyValues( block, ParsingConstants.PROPERTY_GRAPH_CHILDREN )); data.extendedFacetNames.addAll( ModelUtils.getPropertyValues( block, ParsingConstants.PROPERTY_GRAPH_EXTENDS )); data.blocks.add( block ); this.facetNameToFacetData.put( block.getName(), data ); } }
@Test public void testFacetsSorting() { List<Facet> facets = new ArrayList<Facet> (); facets.add( new Facet( "z" )); facets.add( new Facet( "m" )); facets.add( new Facet( "a" )); facets.add( new Facet( "b" )); Assert.assertEquals( "z", facets.get( 0 ).getName()); Collections.sort( facets, new AbstractTypeComparator()); Assert.assertEquals( "a", facets.get( 0 ).getName()); Assert.assertEquals( "b", facets.get( 1 ).getName()); Assert.assertEquals( "m", facets.get( 2 ).getName()); Assert.assertEquals( "z", facets.get( 3 ).getName()); }
@Test public void testSortingWithNull() { List<AbstractType> types = new ArrayList<AbstractType> (); types.add( new Facet( "z" )); types.add( null ); types.add( new Component( "m" )); Assert.assertEquals( "z", types.get( 0 ).getName()); Collections.sort( types, new AbstractTypeComparator()); Assert.assertEquals( "m", types.get( 0 ).getName()); Assert.assertEquals( "z", types.get( 1 ).getName()); Assert.assertNull( types.get( 2 )); } }
@Test public void testMixedSorting() { List<AbstractType> types = new ArrayList<AbstractType> (); types.add( new Facet( "z" )); types.add( new Component( "m" )); types.add( new Component( "a" )); types.add( new Facet( "b" )); Assert.assertEquals( "z", types.get( 0 ).getName()); Collections.sort( types, new AbstractTypeComparator()); Assert.assertEquals( "a", types.get( 0 ).getName()); Assert.assertEquals( "b", types.get( 1 ).getName()); Assert.assertEquals( "m", types.get( 2 ).getName()); Assert.assertEquals( "z", types.get( 3 ).getName()); }
@Test public void testAssociateFacet() { Component component = new Component( "comp" ); Facet facet = new Facet( "facet" ); Assert.assertEquals( 0, component.getFacets().size()); Assert.assertEquals( 0, facet.getAssociatedComponents().size()); component.associateFacet( facet ); Assert.assertEquals( 1, component.getFacets().size()); Assert.assertEquals( 1, facet.getAssociatedComponents().size()); Assert.assertEquals( facet, component.getFacets().iterator().next()); Assert.assertEquals( component, facet.getAssociatedComponents().iterator().next()); } }
Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_VM ))); facets = ComponentHelpers.findAllFacets( glassfish ); Assert.assertEquals( 3, facets.size()); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_JEE ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_WEB ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_DEPLOYABLE ))); facets = ComponentHelpers.findAllFacets( tomcat ); Assert.assertEquals( 2, facets.size()); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_WEB ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_DEPLOYABLE ))); facets = ComponentHelpers.findAllFacets( tomcat8 ); Assert.assertEquals( 2, facets.size()); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_WEB ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_DEPLOYABLE )));
@Test public void testUnreachableComponent() throws Exception { File f = TestUtils.findTestFile( "/configurations/invalid/facet-without-component.graph" ); FromGraphDefinition fromDef = new FromGraphDefinition( f.getParentFile()); Graphs g = fromDef.buildGraphs( f ); Assert.assertEquals( 0, fromDef.getErrors().size()); List<ModelError> errors = new ArrayList<>( RuntimeModelValidator.validate( g )); Assert.assertEquals( 3, errors.size()); Assert.assertEquals( ErrorCode.RM_ROOT_INSTALLER_MUST_BE_TARGET, errors.get( 0 ).getErrorCode()); Assert.assertEquals( new Component( "t" ), errors.get( 0 ).getModelObject()); Assert.assertEquals( ErrorCode.RM_ORPHAN_FACET_WITH_CHILDREN, errors.get( 1 ).getErrorCode()); Assert.assertEquals( new Facet( "f" ), errors.get( 1 ).getModelObject()); Assert.assertEquals( ErrorCode.RM_UNREACHABLE_COMPONENT, errors.get( 2 ).getErrorCode()); Assert.assertEquals( new Component( "t" ), errors.get( 2 ).getModelObject()); } }
Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_DATABASE ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_JEE ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_STORAGE ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_WEB ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_STORAGE ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_DEPLOYABLE ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_DEPLOYABLE ))); Assert.assertTrue( facets.contains( new Facet( ComplexApplicationFactory1.FACET_DATABASE )));
@Test public void testFacet() { Facet facet = new Facet(); Iterator<ModelError> iterator = RuntimeModelValidator.validate( facet ).iterator(); Assert.assertEquals( ErrorCode.RM_EMPTY_FACET_NAME, iterator.next().getErrorCode());
Assert.assertEquals( 0, errors.size()); Facet facet = new Facet( "facet" ); facet.addExportedVariable( new ExportedVariable( "ip", null )); tomcatComponent.associateFacet( facet );
comp.addExportedVariable( new ExportedVariable( "test", "ok" )); Facet f = new Facet( "facet" ); f.addExportedVariable( new ExportedVariable( "property", "value" )); comp.associateFacet( f );
@Test public void testFindPrefixesForExportedVariables_withComponentVariables() { Component component = new Component( "comp" ); component.addExportedVariable( new ExportedVariable( "comp.ip", "" )); component.addExportedVariable( new ExportedVariable( "comp.split.property", "" )); component.addExportedVariable( new ExportedVariable( "comp.port", "8000" )); Instance instance = new Instance( "inst" ).component( component ); Set<String> prefixes = VariableHelpers.findPrefixesForExportedVariables( instance ); Assert.assertEquals( 1, prefixes.size()); Assert.assertTrue( prefixes.contains( "comp" )); Facet facet = new Facet( "facet" ); facet.addExportedVariable( new ExportedVariable( "something", "value" )); component.associateFacet( facet ); prefixes = VariableHelpers.findPrefixesForExportedVariables( instance ); Assert.assertEquals( 2, prefixes.size()); Assert.assertTrue( prefixes.contains( "comp" )); Assert.assertTrue( prefixes.contains( "facet" )); }
Assert.assertFalse( iterator.hasNext()); component.associateFacet( new Facet( "my-facet" )); Assert.assertEquals( 0, RuntimeModelValidator.validate( component ).size());
component.addExportedVariable( new ExportedVariable( "ip", null )); Facet f1 = new Facet( "f1" ); f1.addExportedVariable( new ExportedVariable( "param1", "value1" )); component.associateFacet( f1 ); Facet f2 = new Facet( "f2" ); f2.addExportedVariable( new ExportedVariable( "param2", "value2" )); component.associateFacet( f2 ); Facet f3 = new Facet( "f3" ); f3.addExportedVariable( new ExportedVariable( "param3", "value3" )); component.associateFacet( f3 ); component.addExportedVariable( new ExportedVariable( "f3.param3", "component overrides facet" )); Facet f4 = new Facet( "f4" ); f4.addExportedVariable( new ExportedVariable( "param4-1", "value4" )); f4.addExportedVariable( new ExportedVariable( "param4-2", "value4" ));
@Test public void testFixVariableName() { Component comp = new Component( "coMp" ); Assert.assertEquals( "coMp.ip", ComponentHelpers.fixVariableName( comp, "ip" )); Assert.assertEquals( "coMp.ip", ComponentHelpers.fixVariableName( comp, "coMp.ip" )); Facet facet = new Facet( "f" ); Assert.assertEquals( "f.port", ComponentHelpers.fixVariableName( facet, "port" )); Assert.assertEquals( "f.ip", ComponentHelpers.fixVariableName( facet, "f.ip" )); }
@Test public void testFromGraphs_threeFacets() throws Exception { Graphs graphs = new Graphs(); Component cA = new Component( "A" ).installerName( Constants.TARGET_INSTALLER ); graphs.getRootComponents().add( cA ); Facet facet = new Facet( "my-facet-1" ); facet.addExportedVariable( new ExportedVariable( "data", "coucou" )); cA.associateFacet( facet ); cA.addExportedVariable( new ExportedVariable( "A.port", "9000" )); cA.addExportedVariable( new ExportedVariable( "A.ip", null )); cA.addImportedVariable( new ImportedVariable( "B.port", true, false )); cA.addImportedVariable( new ImportedVariable( "B.ip", true, false )); cA.addImportedVariable( new ImportedVariable( "facetF.props", false, false )); Component cB = new Component( "B" ).installerName( Constants.TARGET_INSTALLER ); graphs.getRootComponents().add( cB ); facet = new Facet( "facetF" ); facet.addExportedVariable( new ExportedVariable( "facetF.props", "some value" )); cB.associateFacet( facet ); facet = new Facet( "my-facet-2" ); facet.addExportedVariable( new ExportedVariable( "my-facet-2.woo", "woo" )); cB.associateFacet( facet ); cB.addExportedVariable( new ExportedVariable( "B.port", "9000" )); cB.addExportedVariable( new ExportedVariable( "B.ip", null )); compareGraphs( graphs, false ); }
@Test public void testEquals() { Component comp = new Component( "comp" ); Assert.assertFalse( comp.equals( null )); Assert.assertFalse( comp.equals( new Component( "comp2" ))); Assert.assertFalse( comp.equals( new Facet( "comp" ))); Assert.assertEquals( comp, comp ); Assert.assertEquals( comp, new Component( "comp" )); }
@Test public void testFromGraphs_oneFacet() throws Exception { Graphs graphs = new Graphs(); Component cA = new Component( "A" ).installerName( Constants.TARGET_INSTALLER ); graphs.getRootComponents().add( cA ); cA.addImportedVariable( new ImportedVariable( "facetF.props", false, false )); cA.addExportedVariable( new ExportedVariable( "A.port", "9000" )); cA.addExportedVariable( new ExportedVariable( "A.ip", null )); cA.addImportedVariable( new ImportedVariable( "B.port", true, false )); cA.addImportedVariable( new ImportedVariable( "B.ip", true, false )); Component cB = new Component( "B" ).installerName( Constants.TARGET_INSTALLER ); graphs.getRootComponents().add( cB ); Facet facetF = new Facet( "facetF" ); facetF.addExportedVariable( new ExportedVariable( "facetF.props", "something" )); cB.associateFacet( facetF ); cB.addExportedVariable( new ExportedVariable( "B.port", "9000" )); cB.addExportedVariable( new ExportedVariable( "B.ip", null )); compareGraphs( graphs, false ); }
graphs.getRootComponents().add( cA ); Facet facet = new Facet( "my-facet-1" ); facet.addExportedVariable( new ExportedVariable( "my-facet-1.data", "coucou" )); cA.associateFacet( facet ); cB.addExportedVariable( new ExportedVariable( "B.ip", null )); facet = new Facet( "facetF" ); facet.addExportedVariable( new ExportedVariable( "facetF.props", "some value" )); cB.associateFacet( facet ); facet = new Facet( "my-facet-2" ); facet.addExportedVariable( new ExportedVariable( "my-facet-2.woo", "woo" )); cB.associateFacet( facet );