Exemple #1
0
class TestYMLImporterGroups(TestCase):

    @classmethod
    def setUpClass(self):
        file = 'data/tests/test_groups.yml'
        self.importer = YMLImporter()
        self.microtosca = self.importer.Import(file)

    def test_team1(self):
        t1 = self.microtosca.get_group("team1")
        self.assertEqual(len(t1.members),2)
        self.assertIsInstance(t1, Team)
    
    def test_team2(self):
        t2 = self.microtosca.get_group("team2")
        self.assertEqual(len(t2.members),3)
        self.assertIsInstance(t2, Team)

    def test_team3(self):
        t3 = self.microtosca.get_group("team3")
        self.assertEqual(len(t3.members),2)
        self.assertIsInstance(t3, Team)
    
    def test_edge(self):
        edge = self.microtosca.get_group("edgenodes")
        self.assertEqual(len(edge.members), 3) #  Datastore node cannot be into an Edge group
        self.assertIsInstance(edge, Edge)
Exemple #2
0
def analyse(ymlfile):
    """
    Analyse a microTOSCA YML
    """
    importer = YMLImporter()
    model = importer.Import(ymlfile)
    builder = MicroToscaAnalyserBuilder(model)
    analyser = builder.add_all_sniffers().build()
    res = analyser.run()
    click.echo(res)
Exemple #3
0
def ymltojson(ymlfile, jsonfile):
    """
    Transform a microTOSCA YML file to JSON
    """

    yml_importer = YMLImporter()
    json_exporter = JSONExporter()
    mmodel = yml_importer.Import(ymlfile)
    jsonString = json_exporter.Export(mmodel)
    with open(jsonfile, 'w') as outfile:
        json.dump(jsonString, outfile, indent=4)
Exemple #4
0
class TestYMLImporterNodes(TestCase):
    @classmethod
    def setUpClass(self):
        file = 'data/tests/test_nodes.yml'
        self.importer = YMLImporter()
        self.microtosca = self.importer.Import(file)

    def test_service(self):
        s1 = self.microtosca['my_service']
        self.assertIsInstance(s1, Service)
        self.assertEqual(s1.name, "my_service")

    def test_database(self):
        db = self.microtosca['my_datastore']
        self.assertIsInstance(db, Datastore)
        self.assertEqual(db.name, "my_datastore")

    def test_messagebroker(self):
        mb = self.microtosca['my_messagebroker']
        self.assertIsInstance(mb, MessageBroker)
        self.assertEqual(mb.name, "my_messagebroker")

    def test_messagerouter(self):
        mr = self.microtosca['my_messagerouter']
        self.assertIsInstance(mr, MessageRouter)
        self.assertEqual(mr.name, "my_messagerouter")
        self.assertEqual(mr.label, "MR")

    def test_kservice(self):
        mr = self.microtosca['my_kservice']
        self.assertIsInstance(mr, KService)
        self.assertEqual(mr.name, "my_kservice")

    def test_kproxy(self):
        mr = self.microtosca['my_kproxy']
        self.assertIsInstance(mr, KProxy)
        self.assertEqual(mr.name, "my_kproxy")

    def test_kingress(self):
        mr = self.microtosca['my_kingress']
        self.assertIsInstance(mr, KIngress)
        self.assertEqual(mr.name, "my_kingress")
Exemple #5
0
 def setUpClass(self):
     file = 'data/tests/test_sniffer_wbsi.yml'
     loader = YMLImporter()
     self.micro_model = loader.Import(file)
     self.wbsiSniffer = WobblyServiceInteractionSmellSniffer()
Exemple #6
0
 def setUpClass(self):
     file = 'data/tests/test_groups.yml'
     importer = YMLImporter()
     self.microtosca = importer.Import(file)
     self.exporter = YMLExporter()
class TestYMLImporter(TestCase):
    @classmethod
    def setUpClass(self):
        file = 'data/examples/hello-world/helloworld.yml'
        self.importer = YMLImporter()
        self.microtosca = self.importer.Import(file)

    def test_number_nodes(self):
        self.assertEqual(len(list(self.microtosca.nodes)), 5)

    def test_get_node_by_name(self):
        self.assertEqual(self.microtosca['shipping'].name, "shipping")

    def test_get_services(self):
        self.assertEqual(len(list(self.microtosca.services)), 2)

    def test_database(self):
        db = self.microtosca['shipping']
        self.assertIsInstance(db, Service)

    def test_shipping_interactions(self):
        shipping = self.microtosca["shipping"]
        rels = [link.target.name for link in shipping.interactions]
        self.assertCountEqual(rels, ['rabbitmq', 'order_db'])

    def test_order_interactions(self):
        order = self.microtosca["order"]
        rels = [link.target.name for link in order.interactions]
        self.assertCountEqual(rels,
                              ['shipping', 'order_db', 'rabbitmq', 'shipping'])

    def test_gateway_interactions(self):
        order = self.microtosca["gateway"]
        rels = [link.target.name for link in order.interactions]
        self.assertCountEqual(rels, ['shipping'])

    def test_shipping_incoming_interactions(self):
        shipping = self.microtosca["shipping"]
        rels = [link.source.name for link in shipping.incoming_interactions]
        self.assertCountEqual(rels, ['order', 'order', 'gateway'])

    def test_order_incoming_interactions(self):
        order = self.microtosca["order"]
        rels = [link.source.name for link in order.incoming_interactions]
        self.assertCountEqual(rels, [])

    def test_rabbitmq_incoming_interactions(self):
        rabbitmq = self.microtosca["rabbitmq"]
        rels = [link.source.name for link in rabbitmq.incoming_interactions]
        self.assertCountEqual(rels, ['shipping', 'order'])

    def test_orderdb_incoming_interactions(self):
        order_db = self.microtosca["order_db"]
        rels = [link.source.name for link in order_db.incoming_interactions]
        self.assertCountEqual(rels, ['shipping', 'order'])

    def test_timedout_relationship(self):
        order = self.microtosca["order"]
        shipping = self.microtosca["shipping"]
        link_to_shipping = [
            link for link in order.interactions if link.target == shipping
        ]
        self.assertTrue(link_to_shipping[0].timeout)

    def test_edge_group(self):
        group = self.microtosca.get_group('edgenodes')
        self.assertEqual(group.name, "edgenodes")

        self.assertEqual(self.microtosca['shipping'] in group, True)
        self.assertEqual('shipping' in group, True)
        self.assertEqual(self.microtosca['rabbitmq'] in group, False)
        self.assertEqual('rabbitmq' in group, False)

        members = [m.name for m in group.members]
        self.assertCountEqual(members, ['shipping', 'order', 'gateway'])

    def test_squad_group(self):
        squad = self.microtosca.get_group('team1')
        self.assertEqual(squad.name, "team1")
        self.assertEqual(self.microtosca['shipping'] in squad, True)
        self.assertEqual('shipping' in squad, True)
        self.assertEqual(self.microtosca['rabbitmq'] in squad, True)
        self.assertEqual('rabbitmq' in squad, True)
        self.assertEqual(self.microtosca['order'] in squad, False)
        self.assertEqual('order' in squad, False)
        self.assertCountEqual([m.name for m in squad.members],
                              ['shipping', 'rabbitmq'])

        squad = self.microtosca.get_group('team2')
        self.assertEqual(squad.name, "team2")
        self.assertCountEqual([m.name for m in squad.members],
                              ['order', 'order_db'])
class TestYMLImporterRelationshipProperties(TestCase):
    @classmethod
    def setUpClass(self):
        file = 'data/tests/test_relationships_properties.yml'
        self.importer = YMLImporter()
        self.microtosca = self.importer.Import(file)

    def test_relationship_empty(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target")
        self.assertFalse(link.timeout)
        self.assertFalse(link.circuit_breaker)
        self.assertFalse(link.dynamic_discovery)

    def test_relationship_t(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target_t")
        self.assertTrue(link.timeout)
        self.assertFalse(link.circuit_breaker)
        self.assertFalse(link.dynamic_discovery)

    def test_relationship_c(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target_c")
        self.assertFalse(link.timeout)
        self.assertTrue(link.circuit_breaker)
        self.assertFalse(link.dynamic_discovery)

    def test_relationship_d(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target_d")
        self.assertFalse(link.timeout)
        self.assertFalse(link.circuit_breaker)
        self.assertTrue(link.dynamic_discovery)

    def test_relationship_tc(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target_tc")
        self.assertTrue(link.timeout)
        self.assertTrue(link.circuit_breaker)
        self.assertFalse(link.dynamic_discovery)

    def test_relationship_td(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target_td")
        self.assertTrue(link.timeout)
        self.assertFalse(link.circuit_breaker)
        self.assertTrue(link.dynamic_discovery)

    def test_relationship_cd(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target_cd")
        self.assertFalse(link.timeout)
        self.assertTrue(link.circuit_breaker)
        self.assertTrue(link.dynamic_discovery)

    def test_relationship_tcd(self):
        link = self._load_relationship_from_source_to_target(
            "source", "target_tcd")
        self.assertTrue(link.timeout)
        self.assertTrue(link.circuit_breaker)
        self.assertTrue(link.dynamic_discovery)

    def test_multiple_relatsionship(self):
        source = self.microtosca["source_same"]
        target = self.microtosca["target_same"]
        links_to_target = [
            link for link in source.interactions if link.target == target
        ]
        self.assertEqual(len(links_to_target), 8)
        self.assertFalse(links_to_target[0] == links_to_target[1])
        self.assertTrue(links_to_target[0] == links_to_target[0])

    def test_get_relationship_template_t(self):
        rel = self.importer._get_relationship_template_by_name(
            YML_RELATIONSHIP_T)
        self.assertDictEqual(
            rel, {
                "type": MICROTOSCA_RELATIONSHIPS_INTERACT_WITH,
                "properties": {
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_TIMEOUT_PROPERTY:
                    True
                }
            })

    def test_get_relationship_template_c(self):
        rel = self.importer._get_relationship_template_by_name(
            YML_RELATIONSHIP_C)
        self.assertDictEqual(
            rel, {
                "type": MICROTOSCA_RELATIONSHIPS_INTERACT_WITH,
                "properties": {
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_CIRCUIT_BREAKER_PROPERTY:
                    True
                }
            })

    def test_get_relationship_template_d(self):
        rel = self.importer._get_relationship_template_by_name(
            YML_RELATIONSHIP_D)
        self.assertDictEqual(
            rel, {
                "type": MICROTOSCA_RELATIONSHIPS_INTERACT_WITH,
                "properties": {
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_DYNAMIC_DISCOVEY_PROPERTY:
                    True
                }
            })

    def test_get_relationship_template_tc(self):
        rel = self.importer._get_relationship_template_by_name(
            YML_RELATIONSHIP_TC)
        self.assertDictEqual(
            rel, {
                "type": MICROTOSCA_RELATIONSHIPS_INTERACT_WITH,
                "properties": {
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_TIMEOUT_PROPERTY:
                    True,
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_CIRCUIT_BREAKER_PROPERTY:
                    True
                }
            })

    def test_get_relationship_template_td(self):
        rel = self.importer._get_relationship_template_by_name(
            YML_RELATIONSHIP_TD)
        self.assertDictEqual(
            rel, {
                "type": MICROTOSCA_RELATIONSHIPS_INTERACT_WITH,
                "properties": {
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_TIMEOUT_PROPERTY:
                    True,
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_DYNAMIC_DISCOVEY_PROPERTY:
                    True
                }
            })

    def test_get_relationship_template_cd(self):
        rel = self.importer._get_relationship_template_by_name(
            YML_RELATIONSHIP_CD)
        self.assertDictEqual(
            rel, {
                "type": MICROTOSCA_RELATIONSHIPS_INTERACT_WITH,
                "properties": {
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_CIRCUIT_BREAKER_PROPERTY:
                    True,
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_DYNAMIC_DISCOVEY_PROPERTY:
                    True
                }
            })

    def test_get_relationship_template_tcd(self):
        rel = self.importer._get_relationship_template_by_name(
            YML_RELATIONSHIP_TCD)
        self.assertDictEqual(
            rel, {
                "type": MICROTOSCA_RELATIONSHIPS_INTERACT_WITH,
                "properties": {
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_TIMEOUT_PROPERTY:
                    True,
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_CIRCUIT_BREAKER_PROPERTY:
                    True,
                    MICROTOSCA_RELATIONSHIPS_INTERACT_WITH_DYNAMIC_DISCOVEY_PROPERTY:
                    True
                }
            })

    def test_get_relationship_template_raise(self):
        with self.assertRaises(ImporterError):
            self.importer._get_relationship_template_by_name("notexist")

    def _load_relationship_from_source_to_target(self, source_name,
                                                 target_name):
        source = self.microtosca[source_name]
        target = self.microtosca[target_name]
        links_to_target = [
            link for link in source.interactions if link.target == target
        ]
        self.assertEqual(len(links_to_target), 1)
        return links_to_target[0]
Exemple #9
0
 def setUpClass(self):
     file = 'data/tests/test_sniffer_ctdm.yml'
     loader = YMLImporter()
     self.micro_model = loader.Import(file)
     self.ctdmSniffer = CrossTeamDataManagementSmellSniffer(
         self.micro_model)
Exemple #10
0
 def setUpClass(self):
     file = 'data/examples/hello-world/helloworld.yml'
     loader = YMLImporter()
     self.micro_object = loader.Import(file)
Exemple #11
0

#**********************************
#        VALIDATOR: Open stack
# *********************************
tosca = ToscaTemplate(path_to_yml, None)

if tosca.version:
    print("\nversion: " + tosca.version)

#********************************
#         LOADER: yml, json
#*******************************
# Yml loader
loader = YMLImporter()
micro_model = loader.Import(path_to_yml)

#JSON loader
# loader = JSONImporter()
# micro_model = loader.Import(path_to_json)

#********************************
#         MICRO MODEL
#*******************************
# add node
# s = Service(name="new")
# s.add_deployment_time(micro_model["order"])
# s.add_run_time(micro_model["order_db"])
# micro_model.add_node(s)

# remove node
Exemple #12
0
 def setUpClass(self):
     file = 'data/tests/test_sniffer_ebsi.yml'
     loader = YMLImporter()
     self.micro_model = loader.Import(file)
     self.ebsiSniffer = EndpointBasedServiceInteractionSmellSniffer()
 def setUpClass(self):
     file = 'data/tests/test_relationships_properties.yml'
     importer = YMLImporter()
     self.microtosca = importer.Import(file)
     self.exporter = YMLExporter()
 def setUpClass(self):
     file = 'data/tests/test_sniffer_shpr.yml'
     loader = YMLImporter()
     self.micro_model = loader.Import(file)
     self.shprSniffer = SharedPersistencySmellSniffer()
Exemple #15
0
 def setUpClass(self):
     file = 'data/tests/test_nodes.yml'
     loader = YMLImporter()
     self.microtosca = loader.Import(file)
     self.tranformer = YMLExporter()