# Copyright 2018 ZTE Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import json import os import logging import tempfile import shutil from django.test import TestCase from genericparser.pub.utils.toscaparsers import parse_vnfd, parse_pnfd, parse_nsd from genericparser.pub.utils.toscaparsers.graph import Graph logger = logging.getLogger(__name__) class TestToscaparser(TestCase): def setUp(self): pass def tearDown(self): pass def test_vnfd_parse(self): self.remove_temp_dir() input_parameters = [{"value": "222222", "key": "sdncontroller"}] # vcpe = ["vgw", "infra", "vbng", "vbrgemu", "vgmux"] vcpe_part = 'vgw' sriov_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpesriov" csar_file = ("%s/%s.csar" % (sriov_path, vcpe_part)) logger.debug("csar_file:%s", csar_file) vnfd_json = parse_vnfd(csar_file, input_parameters) metadata = json.loads(vnfd_json).get("metadata") logger.debug("sriov metadata:%s", metadata) self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", "")) if vcpe_part == "infra": self.assertEqual("b1bb0ce7-1111-4fa7-95ed-4840d70a1177", json.loads(vnfd_json)["vnf"]["properties"]["descriptor_id"]) dpdk_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpedpdk" csar_file = ("%s/%s.csar" % (dpdk_path, vcpe_part)) logger.debug("csar_file:%s", csar_file) vnfd_json = parse_vnfd(csar_file, input_parameters) metadata = json.loads(vnfd_json).get("metadata") logger.debug("dpdk metadata:%s", metadata) self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", "")) def test_pnfd_parse(self): self.remove_temp_dir() csar_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/pnf/ran-du.csar" pnfd_json = parse_pnfd(csar_path) pnfd_dict = json.loads(pnfd_json) metadata = pnfd_dict.get("metadata") self.assertEqual("RAN_DU", metadata.get("template_name", "")) descriptor_id = pnfd_dict["pnf"]["properties"]["descriptor_id"] self.assertEqual(1, descriptor_id) def test_nsd_parse(self): self.remove_temp_dir() # ran_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/ran.csar" # nsd_json = parse_nsd(ran_csar, []) # logger.debug("NS ran json: %s" % nsd_json) # metadata = json.loads(nsd_json).get("metadata") # self.assertEqual("RAN-NS", metadata.get("nsd_name", "")) def test_service_descriptor_parse(self): self.remove_temp_dir() service_test_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/service-vIMS.csar" test_json = parse_nsd(service_test_csar, []) logger.debug("service-vIMS json: %s" % test_json) metadata = json.loads(test_json).get("metadata") self.assertEqual("vIMS_v2", metadata.get("nsd_name", "")) def remove_temp_dir(self): tempdir = tempfile.gettempdir() for dir in os.listdir(tempdir): if dir.startswith("tmp"): path = tempfile.tempdir + "/" + dir if (not os.path.isfile(path)) and os.path.exists(path): shutil.rmtree(tempfile.tempdir + "/" + dir) def test_graph(self): data = { "cucp": [], "du": [], "vl_flat_net": ["cucp", "cuup"], "vl_ext_net": ["cucp", "cuup"], "cuup": [] } graph = Graph(data) self.assertEqual(['vl_ext_net', 'vl_flat_net'].sort(), graph.get_pre_nodes("cucp").sort())