Search in sources :

Example 11 with ToscaGraph

use of org.eclipse.winery.topologygraph.model.ToscaGraph in project winery by eclipse.

the class TestRefinementTest method applyRefinementTest.

@Test
public void applyRefinementTest() {
    // region *** topology ***
    TNodeTemplate tomcat = new TNodeTemplate();
    tomcat.setId("tomcat");
    tomcat.setType("{ns}tomcat");
    TNodeTemplate webShop = new TNodeTemplate();
    webShop.setId("webShop");
    webShop.setType("{ns}webShop");
    TNodeTemplate database = new TNodeTemplate();
    database.setId("database");
    database.setType("{ns}database");
    TRelationshipTemplate webShopOnTomcat = new TRelationshipTemplate();
    webShopOnTomcat.setSourceNodeTemplate(webShop);
    webShopOnTomcat.setTargetNodeTemplate(tomcat);
    webShopOnTomcat.setType("{ns}hostedOn");
    TRelationshipTemplate webShopToDatabase = new TRelationshipTemplate();
    webShopToDatabase.setTargetNodeTemplate(database);
    webShopToDatabase.setSourceNodeTemplate(webShop);
    webShopToDatabase.setType("{ns}connectsTo");
    TTopologyTemplate topologyTemplate = new TTopologyTemplate.Builder().addNodeTemplate(tomcat).addNodeTemplate(webShop).addNodeTemplate(database).addRelationshipTemplate(webShopOnTomcat).addRelationshipTemplate(webShopToDatabase).build();
    // endregion
    // region *** refinement model ***
    TNodeTemplate mySqlConnectorTest = new TNodeTemplate();
    mySqlConnectorTest.setId("sqlConnectorTest");
    mySqlConnectorTest.setType("{ns}sqlConnectorTest");
    TTopologyTemplate refinementTopology = new TTopologyTemplate.Builder().addNodeTemplate(mySqlConnectorTest).build();
    OTRelationMapping testHostedOn = new OTRelationMapping(new OTRelationMapping.Builder().setDirection(OTRelationDirection.OUTGOING).setRelationType(QName.valueOf("{ns}hostedOn")).setRefinementElement(mySqlConnectorTest).setDetectorElement(tomcat));
    OTRelationMapping testConnectsTo = new OTRelationMapping(new OTRelationMapping.Builder().setDirection(OTRelationDirection.OUTGOING).setRelationType(QName.valueOf("{ns}connectsTo")).setRefinementElement(mySqlConnectorTest).setDetectorElement(database));
    OTRelationMapping testIngoingRelationTest = new OTRelationMapping(new OTRelationMapping.Builder().setDirection(OTRelationDirection.INGOING).setRelationType(QName.valueOf("{ns}ingoingTest")).setRefinementElement(mySqlConnectorTest).setDetectorElement(webShop));
    List<OTRelationMapping> relationMappings = new ArrayList<>();
    relationMappings.add(testHostedOn);
    relationMappings.add(testConnectsTo);
    relationMappings.add(testIngoingRelationTest);
    OTTestRefinementModel testRefinementModel = new OTTestRefinementModel(new OTTestRefinementModel.Builder().setTestFragment(refinementTopology).setDetector(topologyTemplate).setRelationMappings(relationMappings));
    // endregion
    ToscaGraph topologyGraph = ToscaTransformer.createTOSCAGraph(topologyTemplate);
    ToscaGraph detectorGraph = ToscaTransformer.createTOSCAGraph(testRefinementModel.getDetector());
    ToscaIsomorphismMatcher matcher = new ToscaIsomorphismMatcher();
    Iterator<GraphMapping<ToscaNode, ToscaEdge>> mappings = matcher.findMatches(detectorGraph, topologyGraph, new ToscaTypeMatcher());
    GraphMapping<ToscaNode, ToscaEdge> mapping = mappings.next();
    RefinementCandidate refinementCandidate = new RefinementCandidate(testRefinementModel, mapping, detectorGraph, 1);
    TestRefinement testRefinement = new TestRefinement();
    testRefinement.applyRefinement(refinementCandidate, topologyTemplate);
    // region *** assertions ***
    assertEquals(4, topologyTemplate.getNodeTemplates().size());
    assertEquals(5, topologyTemplate.getRelationshipTemplates().size());
    TRelationshipTemplate mimicTestHostedOnTomcat = topologyTemplate.getRelationshipTemplate("mimicTest-hostedOn");
    assertNotNull(mimicTestHostedOnTomcat);
    assertEquals("tomcat", mimicTestHostedOnTomcat.getTargetElement().getRef().getId());
    assertEquals("sqlConnectorTest", mimicTestHostedOnTomcat.getSourceElement().getRef().getId());
    TRelationshipTemplate mimicTestConnectsToDatabase = topologyTemplate.getRelationshipTemplate("mimicTest-connectsTo");
    assertNotNull(mimicTestConnectsToDatabase);
    assertEquals("database", mimicTestConnectsToDatabase.getTargetElement().getRef().getId());
    assertEquals("sqlConnectorTest", mimicTestConnectsToDatabase.getSourceElement().getRef().getId());
    TRelationshipTemplate mimicTestTestIngoingConnection = topologyTemplate.getRelationshipTemplate("mimicTest-ingoingTest");
    assertNotNull(mimicTestTestIngoingConnection);
    assertEquals("webShop", mimicTestTestIngoingConnection.getSourceElement().getRef().getId());
    assertEquals("sqlConnectorTest", mimicTestTestIngoingConnection.getTargetElement().getRef().getId());
// endregion
}
Also used : ToscaGraph(org.eclipse.winery.topologygraph.model.ToscaGraph) ToscaIsomorphismMatcher(org.eclipse.winery.topologygraph.matching.ToscaIsomorphismMatcher) RefinementCandidate(org.eclipse.winery.model.adaptation.substitution.refinement.RefinementCandidate) ArrayList(java.util.ArrayList) OTTestRefinementModel(org.eclipse.winery.model.tosca.extensions.OTTestRefinementModel) OTRelationMapping(org.eclipse.winery.model.tosca.extensions.OTRelationMapping) TRelationshipTemplate(org.eclipse.winery.model.tosca.TRelationshipTemplate) TTopologyTemplate(org.eclipse.winery.model.tosca.TTopologyTemplate) ToscaNode(org.eclipse.winery.topologygraph.model.ToscaNode) ToscaEdge(org.eclipse.winery.topologygraph.model.ToscaEdge) TNodeTemplate(org.eclipse.winery.model.tosca.TNodeTemplate) ToscaTypeMatcher(org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher) GraphMapping(org.jgrapht.GraphMapping) Test(org.junit.jupiter.api.Test)

Aggregations

ToscaGraph (org.eclipse.winery.topologygraph.model.ToscaGraph)11 ToscaIsomorphismMatcher (org.eclipse.winery.topologygraph.matching.ToscaIsomorphismMatcher)8 GraphMapping (org.jgrapht.GraphMapping)8 ArrayList (java.util.ArrayList)7 TTopologyTemplate (org.eclipse.winery.model.tosca.TTopologyTemplate)7 ToscaEdge (org.eclipse.winery.topologygraph.model.ToscaEdge)7 ToscaNode (org.eclipse.winery.topologygraph.model.ToscaNode)7 TNodeTemplate (org.eclipse.winery.model.tosca.TNodeTemplate)6 Test (org.junit.jupiter.api.Test)5 RefinementCandidate (org.eclipse.winery.model.adaptation.substitution.refinement.RefinementCandidate)4 TRelationshipTemplate (org.eclipse.winery.model.tosca.TRelationshipTemplate)4 OTPatternRefinementModel (org.eclipse.winery.model.tosca.extensions.OTPatternRefinementModel)4 IToscaMatcher (org.eclipse.winery.topologygraph.matching.IToscaMatcher)4 Collections (java.util.Collections)3 List (java.util.List)3 QName (javax.xml.namespace.QName)3 OTStayMapping (org.eclipse.winery.model.tosca.extensions.OTStayMapping)3 ToscaTypeMatcher (org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher)3 ToscaTransformer (org.eclipse.winery.topologygraph.transformation.ToscaTransformer)3 Collection (java.util.Collection)2