/** * Finds all the facets of a component. * <p> * Inheritance cycles are ignored. * </p> * * @param component a non-null component * @return a non-null list of facets */ public static Collection<Facet> findAllFacets( Component component ) { Set<Facet> result = new HashSet<> (); List<Facet> toProcess = new ArrayList<> (); for( Component c : findAllExtendedComponents( component )) toProcess.addAll( c.getFacets()); while( ! toProcess.isEmpty()) { Facet f = toProcess.remove( 0 ); result.add( f ); toProcess.addAll( f.getExtendedFacets()); // Prevent loops toProcess.removeAll( result ); } return result; }
for( Facet f : component.getFacets()) result.putAll( findAllExportedVariables( f ));
@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()); } }
String s = writeCollection( component.getFacets()); if( ! Utils.isEmptyOrWhitespaces( s )) { p = new BlockProperty( file, ParsingConstants.PROPERTY_COMPONENT_FACETS, s );
Assert.assertEquals( 2, c1.exportedVariables.size()); Assert.assertEquals( 0, c1.importedVariables.size()); Assert.assertEquals( 1, c1.getFacets().size()); Assert.assertEquals( 0, c1.getChildren().size()); Assert.assertEquals( 1, comp2.exportedVariables.size()); Assert.assertEquals( 0, comp2.importedVariables.size()); Assert.assertEquals( 0, comp2.getFacets().size()); Assert.assertEquals( 0, comp2.getChildren().size());
Assert.assertEquals( 2, c1.exportedVariables.size()); Assert.assertEquals( 0, c1.importedVariables.size()); Assert.assertEquals( 1, c1.getFacets().size()); Assert.assertEquals( 0, c1.getChildren().size()); Assert.assertEquals( 1, c2.exportedVariables.size()); Assert.assertEquals( 0, c2.importedVariables.size()); Assert.assertEquals( 0, c2.getFacets().size()); Assert.assertEquals( 1, c2.getChildren().size()); Assert.assertEquals( 0, comp1.exportedVariables.size()); Assert.assertEquals( 0, comp1.importedVariables.size()); Assert.assertEquals( 0, comp1.getFacets().size()); Assert.assertEquals( 0, comp1.getChildren().size()); Assert.assertEquals( 1, comp2.exportedVariables.size()); Assert.assertEquals( 0, comp2.importedVariables.size()); Assert.assertEquals( 0, comp2.getFacets().size()); Assert.assertEquals( 0, comp2.getChildren().size());
@Test public void testLoadApplication_Mongo() throws Exception { File directory = TestUtils.findTestFile( "/applications/mongo" ); ApplicationLoadResult result = RuntimeModelIo.loadApplication( directory ); Assert.assertNotNull( result ); Assert.assertNotNull( result.applicationTemplate ); Assert.assertEquals( 0, result.applicationTemplate.externalExports.size()); Assert.assertEquals( 2, result.loadErrors.size()); for( RoboconfError error : result.loadErrors ) Assert.assertEquals( ErrorCode.PROJ_NO_RESOURCE_DIRECTORY, error.getErrorCode()); Assert.assertEquals( "Mongo", result.applicationTemplate.getName()); Assert.assertNotNull( result.applicationTemplate.getGraphs()); Graphs g = result.applicationTemplate.getGraphs(); Assert.assertEquals( 1, g.getRootComponents().size()); Component vmComponent = g.getRootComponents().iterator().next(); Assert.assertEquals( "VM", vmComponent.getName()); Assert.assertEquals( "target", vmComponent.getInstallerName()); Assert.assertEquals( 0, vmComponent.getFacets().size()); Collection<Component> children = ComponentHelpers.findAllChildren( vmComponent ); Assert.assertEquals( 1, children.size()); Component childComponent = children.iterator().next(); Assert.assertEquals( "puppet", childComponent.getInstallerName()); Assert.assertEquals( 0, childComponent.getChildren().size()); Assert.assertEquals( 2, childComponent.exportedVariables.size()); Assert.assertNull( childComponent.exportedVariables.get( "Mongo.ip" )); Assert.assertEquals( "27017", ComponentHelpers.findAllExportedVariables( childComponent ).get( "Mongo.port" )); Assert.assertEquals( 2, childComponent.importedVariables.size()); Assert.assertTrue( childComponent.importedVariables.containsKey( "Mongo.ip" )); Assert.assertTrue( childComponent.importedVariables.containsKey( "Mongo.port" )); }
Assert.assertEquals( "VM", vmComponent.getName()); Assert.assertEquals( "target", vmComponent.getInstallerName()); Assert.assertEquals( 0, vmComponent.getFacets().size());
Assert.assertEquals( 0, RuntimeModelValidator.validate( comp ).size()); iterator = RuntimeModelValidator.validate( comp.getFacets().iterator().next()).iterator(); Assert.assertEquals( ErrorCode.RM_EMPTY_FACET_NAME, iterator.next().getErrorCode()); Assert.assertFalse( iterator.hasNext()); comp.disassociateFacet( comp.getFacets().iterator().next()); comp.associateFacet( new Facet( "!nvalid-facet-n@me" )); Assert.assertEquals( 0, RuntimeModelValidator.validate( comp ).size()); iterator = RuntimeModelValidator.validate( comp.getFacets().iterator().next()).iterator(); Assert.assertEquals( ErrorCode.RM_INVALID_FACET_NAME, iterator.next().getErrorCode()); Assert.assertFalse( iterator.hasNext()); comp.disassociateFacet( comp.getFacets().iterator().next()); Assert.assertEquals( 0, RuntimeModelValidator.validate( comp ).size());
Component root1 = ComponentHelpers.findComponent( app.getGraphs(), ComplexApplicationFactory1.ROOT_1 ); Assert.assertNotNull( root1 ); Assert.assertEquals( 1, root1.getFacets().size()); Facet vm = root1.getFacets().iterator().next(); Assert.assertEquals( ComplexApplicationFactory1.FACET_VM, vm.getName()); Assert.assertEquals( 1, vm.getChildren().size());
Assert.assertEquals( 0, children.size()); Assert.assertEquals( 1, childComponent.getFacets().size()); Assert.assertEquals( "deployable", childComponent.getFacets().iterator().next().getName()); Assert.assertEquals( 0, children.size()); Assert.assertEquals( 1, childComponent.getFacets().size()); Assert.assertEquals( "deployable", childComponent.getFacets().iterator().next().getName()); Assert.assertEquals( 0, exportedVariables.size()); Assert.assertEquals( 1, childComponent.getFacets().size()); Assert.assertEquals( "deployable", childComponent.getFacets().iterator().next().getName());
for( Facet f : cB.getFacets()) cC.associateFacet( f );