Search in sources :

Example 1 with ToscaTypeMatcher

use of org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher in project winery by eclipse.

the class AbstractRefinementTest method setUp.

protected static void setUp() {
    // region *** topology ***
    TNodeTemplate nt1 = new TNodeTemplate.Builder("1", QName.valueOf("{http://ex.org}nodeType_1")).setX("10").setY("10").build();
    TNodeTemplate nt2 = new TNodeTemplate.Builder("2", QName.valueOf("{http://ex.org}nodeType_2")).setX("110").setY("10").build();
    TNodeTemplate nt3 = new TNodeTemplate.Builder("3", QName.valueOf("{http://ex.org}nodeType_3")).setX("210").setY("10").build();
    TNodeTemplate nt4 = new TNodeTemplate.Builder("4", QName.valueOf("{http://ex.org}nodeType_4")).setX("110").setY("110").build();
    TRelationshipTemplate rt21 = new TRelationshipTemplate.Builder("21", QName.valueOf("{http://ex.org}relType_1"), nt2, nt1).build();
    TRelationshipTemplate rt32 = new TRelationshipTemplate.Builder("32", QName.valueOf("{http://ex.org}relType_1"), nt3, nt2).build();
    TRelationshipTemplate rt24 = new TRelationshipTemplate.Builder("24", QName.valueOf("{http://ex.org}relType_2"), nt2, nt4).build();
    /*
        #######   (1)  #######   (1)  #######
        # (1) # <----- # (2) # <----- # (3) #
        #######        #######        #######
                          | (2)
                         \/
                       #######
                       # (4) #
                       #######
         */
    topology = new TTopologyTemplate.Builder().addNodeTemplate(nt1).addNodeTemplate(nt2).addNodeTemplate(nt3).addNodeTemplate(nt4).addRelationshipTemplate(rt21).addRelationshipTemplate(rt32).addRelationshipTemplate(rt24).build();
    // endregion
    // region *** topology2 ***
    /*
        #######   (1)  #######
        # (1) # <----- # (2) #
        #######        #######
                          | (2)
                         \/
                       #######
                       # (4) #
                       #######
         */
    topology2 = new TTopologyTemplate.Builder().addNodeTemplate(nt1).addNodeTemplate(nt2).addNodeTemplate(nt4).addRelationshipTemplate(rt21).addRelationshipTemplate(rt24).build();
    // endregion
    // region *** topology 3 ***
    /*
        #######   (1)  #######
        # (1) # <----- # (2) #
        #######        #######
                          | (2)
                         \/
                       #######----|
                       # (4) # DA |
                       #######----|
         */
    QName artifactTypeFile = new QName("file", "http://example.org/tosca/at");
    QName test_da = new QName("test_da", "http://example.org/tosca/atemp/das");
    TNodeTemplate nt30 = new TNodeTemplate.Builder("30", QName.valueOf("{http://ex.org}nodeType_4")).setX("110").setY("110").build();
    TRelationshipTemplate rt230 = new TRelationshipTemplate.Builder("302", QName.valueOf("{http://ex.org}relType_2"), nt2, nt30).build();
    TDeploymentArtifact da = new TDeploymentArtifact.Builder("test_da", artifactTypeFile).setArtifactRef(test_da).build();
    nt30.setDeploymentArtifacts(new ArrayList<>(Collections.singletonList(da)));
    topology3 = new TTopologyTemplate.Builder().addNodeTemplate(nt1).addNodeTemplate(nt2).addNodeTemplate(nt30).addRelationshipTemplate(rt21).addRelationshipTemplate(rt230).build();
    // endregion
    // region *** topology4 ***
    TRelationshipTemplate rt14 = new TRelationshipTemplate.Builder("14", QName.valueOf("{http://ex.org}relType_1"), nt1, nt4).build();
    /*
        #######  (1)  #######
        # (3) # -----># (2) #
        #######       #######
                         | (2)
                        \/
        #######  (1)  #######
        # (1) # -----># (4) #
        #######       #######
        */
    topology4 = new TTopologyTemplate.Builder().addNodeTemplate(nt1).addNodeTemplate(nt2).addNodeTemplate(nt3).addNodeTemplate(nt4).addRelationshipTemplate(rt32).addRelationshipTemplate(rt14).addRelationshipTemplate(rt24).build();
    // endregion
    // region *** matching PRM ***
    // region *** detector ***
    TNodeTemplate nt7 = new TNodeTemplate.Builder("7", QName.valueOf("{http://ex.org}nodeType_2")).build();
    TNodeTemplate nt8 = new TNodeTemplate.Builder("8", QName.valueOf("{http://ex.org}nodeType_4")).build();
    TRelationshipTemplate rt78 = new TRelationshipTemplate.Builder("78", QName.valueOf("{http://ex.org}relType_2"), nt7, nt8).build();
    /*
        #######
        # (2) #
        #######
           | (2)
          \/
        #######
        # (4) #
        #######
         */
    TTopologyTemplate detector = new TTopologyTemplate.Builder().addNodeTemplate(nt7).addNodeTemplate(nt8).addRelationshipTemplate(rt78).build();
    // endregion
    // region *** refinement structure
    TNodeTemplate nt10 = new TNodeTemplate.Builder("10", QName.valueOf("{http://ex.org}nodeType_10")).setX("5").setY("10").build();
    TNodeTemplate nt11 = new TNodeTemplate.Builder("11", QName.valueOf("{http://ex.org}nodeType_11")).setX("105").setY("5").build();
    TNodeTemplate nt12 = new TNodeTemplate.Builder("12", QName.valueOf("{http://ex.org}nodeType_12")).setX("55").setY("105").build();
    TNodeTemplate nt13 = new TNodeTemplate.Builder("13", QName.valueOf("{http://ex.org}nodeType_13")).setX("55").setY("205").build();
    TRelationshipTemplate rt1012 = new TRelationshipTemplate.Builder("1012", QName.valueOf("{http://ex.org}relType_2"), nt10, nt12).build();
    TRelationshipTemplate rt1112 = new TRelationshipTemplate.Builder("1112", QName.valueOf("{http://ex.org}relType_2"), nt11, nt12).build();
    TRelationshipTemplate rt1213 = new TRelationshipTemplate.Builder("1213", QName.valueOf("{http://ex.org}relType_2"), nt12, nt13).build();
    /*
        ########        ########
        # (10) #        # (11) #
        ########        ########
            | (2)          | (2)
            +-------|------+
                   \/
                ########
                # (12) #
                ########
                    | (2)
                   \/
                ########
                # (13) #
                ########
         */
    TTopologyTemplate refinementStructure = new TTopologyTemplate.Builder().addNodeTemplate(nt10).addNodeTemplate(nt11).addNodeTemplate(nt12).addNodeTemplate(nt13).addRelationshipTemplate(rt1012).addRelationshipTemplate(rt1112).addRelationshipTemplate(rt1213).build();
    // endregion
    // region *** relation mapping ***
    OTRelationMapping rm1 = new OTRelationMapping(new OTRelationMapping.Builder());
    rm1.setDetectorElement(nt7);
    rm1.setRelationType(QName.valueOf("{http://ex.org}relType_1"));
    rm1.setDirection(OTRelationDirection.INGOING);
    rm1.setValidSourceOrTarget(QName.valueOf("{http://ex.org}nodeType_3"));
    rm1.setRefinementElement(nt11);
    OTRelationMapping rm2 = new OTRelationMapping(new OTRelationMapping.Builder());
    rm2.setDetectorElement(nt7);
    rm2.setRelationType(QName.valueOf("{http://ex.org}relType_1"));
    rm2.setDirection(OTRelationDirection.OUTGOING);
    rm2.setValidSourceOrTarget(QName.valueOf("{http://ex.org}nodeType_1"));
    rm2.setRefinementElement(nt10);
    // endregion
    OTPatternRefinementModel prmWithNt2HostedOnNt4AndIngoingRt1AtNt2AndOutgoingRt1AtNt2 = new OTPatternRefinementModel(new OTPatternRefinementModel.Builder());
    prmWithNt2HostedOnNt4AndIngoingRt1AtNt2AndOutgoingRt1AtNt2.setDetector(detector);
    prmWithNt2HostedOnNt4AndIngoingRt1AtNt2AndOutgoingRt1AtNt2.setRefinementTopology(refinementStructure);
    ToscaGraph topologyGraph = ToscaTransformer.createTOSCAGraph(topology);
    ToscaGraph detectorGraph = ToscaTransformer.createTOSCAGraph(detector);
    ToscaIsomorphismMatcher matcher = new ToscaIsomorphismMatcher();
    Iterator<GraphMapping<ToscaNode, ToscaEdge>> mappings = matcher.findMatches(detectorGraph, topologyGraph, new ToscaTypeMatcher());
    GraphMapping<ToscaNode, ToscaEdge> detectorWithTopologyMapping = mappings.next();
    List<OTRelationMapping> relationMappings = new ArrayList<>();
    relationMappings.add(rm1);
    relationMappings.add(rm2);
    prmWithNt2HostedOnNt4AndIngoingRt1AtNt2AndOutgoingRt1AtNt2.setRelationMappings(relationMappings);
    candidateForTopology = new RefinementCandidate(prmWithNt2HostedOnNt4AndIngoingRt1AtNt2AndOutgoingRt1AtNt2, detectorWithTopologyMapping, detectorGraph, 1);
    // endregion
    // region *** invalidCandidateForTopology **
    OTPatternRefinementModel prmWithNt2HostedOnNt4AndOutgoingRt1AtNt2 = new OTPatternRefinementModel(new OTPatternRefinementModel.Builder());
    prmWithNt2HostedOnNt4AndOutgoingRt1AtNt2.setDetector(detector);
    List<OTRelationMapping> relationMappingsNonMatchingPrm = new ArrayList<>();
    relationMappingsNonMatchingPrm.add(rm2);
    prmWithNt2HostedOnNt4AndOutgoingRt1AtNt2.setRelationMappings(relationMappingsNonMatchingPrm);
    invalidCandidateForTopology = new RefinementCandidate(prmWithNt2HostedOnNt4AndOutgoingRt1AtNt2, detectorWithTopologyMapping, detectorGraph, 2);
    // endregion
    // region *** Candidates for Topology 2 ***
    ToscaGraph topology2Graph = ToscaTransformer.createTOSCAGraph(topology2);
    GraphMapping<ToscaNode, ToscaEdge> detectorWithTopology2Mapping = matcher.findMatches(detectorGraph, topology2Graph, new ToscaTypeMatcher()).next();
    candidateForTopology2 = new RefinementCandidate(prmWithNt2HostedOnNt4AndIngoingRt1AtNt2AndOutgoingRt1AtNt2, detectorWithTopology2Mapping, detectorGraph, 3);
    secondValidCandidateForTopology2 = new RefinementCandidate(prmWithNt2HostedOnNt4AndOutgoingRt1AtNt2, detectorWithTopology2Mapping, detectorGraph, 4);
    // endregion
    // region *** Candidates for Topology 3 ***
    ToscaGraph topologyGraph3 = ToscaTransformer.createTOSCAGraph(topology3);
    GraphMapping<ToscaNode, ToscaEdge> detectorToTopology3Mapping = new ToscaIsomorphismMatcher().findMatches(detectorGraph, topologyGraph3, new ToscaTypeMatcher()).next();
    OTDeploymentArtifactMapping deploymentArtifactMapping1 = new OTDeploymentArtifactMapping(new OTDeploymentArtifactMapping.Builder());
    deploymentArtifactMapping1.setId("daMap-1");
    deploymentArtifactMapping1.setArtifactType(artifactTypeFile);
    deploymentArtifactMapping1.setDetectorElement(nt8);
    deploymentArtifactMapping1.setRefinementElement(nt13);
    OTPatternRefinementModel matchingPrmWithDa = new OTPatternRefinementModel(new OTPatternRefinementModel.Builder());
    matchingPrmWithDa.setDetector(detector);
    matchingPrmWithDa.setRefinementTopology(refinementStructure);
    matchingPrmWithDa.setDeploymentArtifactMappings(Collections.singletonList(deploymentArtifactMapping1));
    matchingPrmWithDa.setRelationMappings(relationMappings);
    candidateForTopology3WithDa = new RefinementCandidate(matchingPrmWithDa, detectorToTopology3Mapping, detectorGraph, 5);
    QName artifactTypeZip = new QName("zip", "http://example.org/tosca/at");
    OTDeploymentArtifactMapping deploymentArtifactMapping2 = new OTDeploymentArtifactMapping(new OTDeploymentArtifactMapping.Builder());
    deploymentArtifactMapping2.setId("daMap-1");
    deploymentArtifactMapping2.setArtifactType(artifactTypeZip);
    deploymentArtifactMapping2.setDetectorElement(nt7);
    deploymentArtifactMapping2.setRefinementElement(nt11);
    OTPatternRefinementModel nonMatchingPrmWithDa = new OTPatternRefinementModel(new OTPatternRefinementModel.Builder());
    nonMatchingPrmWithDa.setDetector(detector);
    nonMatchingPrmWithDa.setRefinementTopology(refinementStructure);
    nonMatchingPrmWithDa.setDeploymentArtifactMappings(Collections.singletonList(deploymentArtifactMapping2));
    nonMatchingPrmWithDa.setRelationMappings(relationMappings);
    candidateForTopology3WithNotMatchingDa = new RefinementCandidate(nonMatchingPrmWithDa, detectorToTopology3Mapping, detectorGraph, 6);
    // endregion
    // region *** Candidates for Topology 4 ***
    ToscaGraph topology4Graph = ToscaTransformer.createTOSCAGraph(topology4);
    GraphMapping<ToscaNode, ToscaEdge> detectorWithTopology4Mapping = matcher.findMatches(detectorGraph, topology4Graph, new ToscaTypeMatcher()).next();
    OTRelationMapping rm3 = new OTRelationMapping(new OTRelationMapping.Builder());
    rm3.setRelationType(QName.valueOf("{http://ex.org}relType_1"));
    rm3.setDirection(OTRelationDirection.INGOING);
    rm3.setDetectorElement(nt7);
    rm3.setRefinementElement(nt11);
    OTPatternRefinementModel prmWithNT2HostedOnNT4AndIngoingRT1AtNT2 = new OTPatternRefinementModel(new OTPatternRefinementModel.Builder());
    prmWithNT2HostedOnNT4AndIngoingRT1AtNT2.setDetector(detector);
    prmWithNT2HostedOnNT4AndIngoingRT1AtNT2.setRefinementTopology(refinementStructure);
    prmWithNT2HostedOnNT4AndIngoingRT1AtNT2.setRelationMappings(Collections.singletonList(rm3));
    invalidCandidateForTopology4 = new RefinementCandidate(prmWithNT2HostedOnNT4AndIngoingRT1AtNT2, detectorWithTopology4Mapping, detectorGraph, 7);
    OTRelationMapping rm4 = new OTRelationMapping(new OTRelationMapping.Builder());
    rm4.setRelationType(QName.valueOf("{http://ex.org}relType_1"));
    rm4.setDirection(OTRelationDirection.INGOING);
    rm4.setDetectorElement(nt8);
    rm4.setRefinementElement(nt13);
    OTPatternRefinementModel prmWithNT2HostedOnNT4AndIngoingRT1AtNT2AndIngoingRT1AtNT4 = new OTPatternRefinementModel(new OTPatternRefinementModel.Builder());
    prmWithNT2HostedOnNT4AndIngoingRT1AtNT2AndIngoingRT1AtNT4.setDetector(detector);
    prmWithNT2HostedOnNT4AndIngoingRT1AtNT2AndIngoingRT1AtNT4.setRefinementTopology(refinementStructure);
    prmWithNT2HostedOnNT4AndIngoingRT1AtNT2AndIngoingRT1AtNT4.setRelationMappings(Arrays.asList(rm3, rm4));
    validCandidateForTopology4 = new RefinementCandidate(prmWithNT2HostedOnNT4AndIngoingRT1AtNT2AndIngoingRT1AtNT4, detectorWithTopology4Mapping, detectorGraph, 8);
// endregion
}
Also used : ToscaGraph(org.eclipse.winery.topologygraph.model.ToscaGraph) OTDeploymentArtifactMapping(org.eclipse.winery.model.tosca.extensions.OTDeploymentArtifactMapping) ArrayList(java.util.ArrayList) 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) TDeploymentArtifact(org.eclipse.winery.model.tosca.TDeploymentArtifact) TNodeTemplate(org.eclipse.winery.model.tosca.TNodeTemplate) ToscaTypeMatcher(org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher) ToscaIsomorphismMatcher(org.eclipse.winery.topologygraph.matching.ToscaIsomorphismMatcher) QName(javax.xml.namespace.QName) OTRelationMapping(org.eclipse.winery.model.tosca.extensions.OTRelationMapping) OTPatternRefinementModel(org.eclipse.winery.model.tosca.extensions.OTPatternRefinementModel) GraphMapping(org.jgrapht.GraphMapping)

Example 2 with ToscaTypeMatcher

use of org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher in project winery by eclipse.

the class PatternRefinementTest method redirectStayMappings.

// endregion
// region ********** redirectStayMappings **********
@Test
void redirectStayMappings() {
    setUp();
    /*
        input:
        #######   (1)  #######
        # (1) # <----- # (2) #
        #######        #######
                          | (2)
                         \/
                       #######
                       # (4) #
                       #######

        expected output:
        #######   (1)  ########        ########
        # (1) # <----- # (10) #        # (11) #
        #######        ########        ########
                           | (2)          | (2)
                           +-------|------+
                                  \/
                                #######
                                # (4) #
                                #######
         */
    // region *** add stay mapping to PRM ***
    TTopologyTemplate refinementTopology = candidateForTopology.getRefinementModel().getRefinementTopology();
    TTopologyTemplate detector = candidateForTopology.getRefinementModel().getDetector();
    refinementTopology.getNodeTemplateOrRelationshipTemplate().removeIf(template -> template.getId().equals("13") || template.getId().equals("1213"));
    TNodeTemplate nt12 = refinementTopology.getNodeTemplate("12");
    assertNotNull(nt12);
    nt12.setType("{http://ex.org}nodeType_4");
    TNodeTemplate nt4 = detector.getNodeTemplate("8");
    OTStayMapping nt4staysAsNt12 = new OTStayMapping.Builder("stay1").setDetectorElement(nt4).setRefinementElement(nt12).build();
    ((OTPatternRefinementModel) candidateForTopology.getRefinementModel()).setStayMappings(Collections.singletonList(nt4staysAsNt12));
    // endregion
    // recreate the candidate
    ToscaGraph topologyGraph = ToscaTransformer.createTOSCAGraph(topology2);
    ToscaGraph detectorGraph = ToscaTransformer.createTOSCAGraph(detector);
    GraphMapping<ToscaNode, ToscaEdge> mapping = new ToscaIsomorphismMatcher().findMatches(detectorGraph, topologyGraph, new ToscaTypeMatcher()).next();
    candidateForTopology = new RefinementCandidate(candidateForTopology.getRefinementModel(), mapping, detectorGraph, 1);
    PatternRefinement patternRefinement = new PatternRefinement();
    patternRefinement.applyRefinement(candidateForTopology, topology2);
    // region *** assertions ***
    assertNotNull(topology2.getNodeTemplate("4"));
    TRelationshipTemplate relation1012 = topology2.getRelationshipTemplate("1012");
    assertNotNull(relation1012);
    assertEquals("4", relation1012.getTargetElement().getRef().getId());
    assertEquals("10", relation1012.getSourceElement().getRef().getId());
    TRelationshipTemplate relation1112 = topology2.getRelationshipTemplate("1112");
    assertNotNull(relation1112);
    assertEquals("4", relation1112.getTargetElement().getRef().getId());
    assertEquals("11", relation1112.getSourceElement().getRef().getId());
    TRelationshipTemplate relation21 = topology2.getRelationshipTemplate("21");
    assertNotNull(relation21);
    assertEquals("1", relation21.getTargetElement().getRef().getId());
    assertEquals("10", relation21.getSourceElement().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) TTopologyTemplate(org.eclipse.winery.model.tosca.TTopologyTemplate) OTStayMapping(org.eclipse.winery.model.tosca.extensions.OTStayMapping) ToscaNode(org.eclipse.winery.topologygraph.model.ToscaNode) TRelationshipTemplate(org.eclipse.winery.model.tosca.TRelationshipTemplate) ToscaEdge(org.eclipse.winery.topologygraph.model.ToscaEdge) TNodeTemplate(org.eclipse.winery.model.tosca.TNodeTemplate) OTPatternRefinementModel(org.eclipse.winery.model.tosca.extensions.OTPatternRefinementModel) ToscaTypeMatcher(org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher) AbstractRefinementTest(org.eclipse.winery.model.adaptation.substitution.refinement.AbstractRefinementTest) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 3 with ToscaTypeMatcher

use of org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher 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

TNodeTemplate (org.eclipse.winery.model.tosca.TNodeTemplate)3 TRelationshipTemplate (org.eclipse.winery.model.tosca.TRelationshipTemplate)3 TTopologyTemplate (org.eclipse.winery.model.tosca.TTopologyTemplate)3 ToscaIsomorphismMatcher (org.eclipse.winery.topologygraph.matching.ToscaIsomorphismMatcher)3 ToscaTypeMatcher (org.eclipse.winery.topologygraph.matching.ToscaTypeMatcher)3 ToscaEdge (org.eclipse.winery.topologygraph.model.ToscaEdge)3 ToscaGraph (org.eclipse.winery.topologygraph.model.ToscaGraph)3 ToscaNode (org.eclipse.winery.topologygraph.model.ToscaNode)3 ArrayList (java.util.ArrayList)2 RefinementCandidate (org.eclipse.winery.model.adaptation.substitution.refinement.RefinementCandidate)2 OTPatternRefinementModel (org.eclipse.winery.model.tosca.extensions.OTPatternRefinementModel)2 OTRelationMapping (org.eclipse.winery.model.tosca.extensions.OTRelationMapping)2 GraphMapping (org.jgrapht.GraphMapping)2 Test (org.junit.jupiter.api.Test)2 QName (javax.xml.namespace.QName)1 AbstractRefinementTest (org.eclipse.winery.model.adaptation.substitution.refinement.AbstractRefinementTest)1 TDeploymentArtifact (org.eclipse.winery.model.tosca.TDeploymentArtifact)1 OTDeploymentArtifactMapping (org.eclipse.winery.model.tosca.extensions.OTDeploymentArtifactMapping)1 OTStayMapping (org.eclipse.winery.model.tosca.extensions.OTStayMapping)1 OTTestRefinementModel (org.eclipse.winery.model.tosca.extensions.OTTestRefinementModel)1