1 # Copyright 2018 ZTE Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
20 from django.test import TestCase
22 from genericparser.pub.utils.toscaparsers import parse_vnfd, parse_pnfd, parse_nsd
23 from genericparser.pub.utils.toscaparsers.graph import Graph
25 logger = logging.getLogger(__name__)
28 class TestToscaparser(TestCase):
35 def test_vnfd_parse(self):
36 self.remove_temp_dir()
37 input_parameters = [{"value": "222222", "key": "sdncontroller"}]
38 # vcpe = ["vgw", "infra", "vbng", "vbrgemu", "vgmux"]
40 sriov_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpesriov"
41 csar_file = ("%s/%s.csar" % (sriov_path, vcpe_part))
42 logger.debug("csar_file:%s", csar_file)
43 vnfd_json = parse_vnfd(csar_file, input_parameters)
44 metadata = json.loads(vnfd_json).get("metadata")
45 logger.debug("sriov metadata:%s", metadata)
46 self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
47 if vcpe_part == "infra":
48 self.assertEqual("b1bb0ce7-1111-4fa7-95ed-4840d70a1177",
49 json.loads(vnfd_json)["vnf"]["properties"]["descriptor_id"])
51 dpdk_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpedpdk"
52 csar_file = ("%s/%s.csar" % (dpdk_path, vcpe_part))
53 logger.debug("csar_file:%s", csar_file)
54 vnfd_json = parse_vnfd(csar_file, input_parameters)
55 metadata = json.loads(vnfd_json).get("metadata")
56 logger.debug("dpdk metadata:%s", metadata)
57 self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
59 def test_pnfd_parse(self):
60 self.remove_temp_dir()
61 csar_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/pnf/ran-du.csar"
62 pnfd_json = parse_pnfd(csar_path)
63 pnfd_dict = json.loads(pnfd_json)
64 metadata = pnfd_dict.get("metadata")
65 self.assertEqual("RAN_DU", metadata.get("template_name", ""))
66 descriptor_id = pnfd_dict["pnf"]["properties"]["descriptor_id"]
67 self.assertEqual(1, descriptor_id)
69 def test_nsd_parse(self):
70 self.remove_temp_dir()
71 # ran_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/ran.csar"
72 # nsd_json = parse_nsd(ran_csar, [])
73 # logger.debug("NS ran json: %s" % nsd_json)
74 # metadata = json.loads(nsd_json).get("metadata")
75 # self.assertEqual("RAN-NS", metadata.get("nsd_name", ""))
77 def test_service_descriptor_parse(self):
78 self.remove_temp_dir()
79 service_test_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/service-vIMS.csar"
80 test_json = parse_nsd(service_test_csar, [])
81 logger.debug("service-vIMS json: %s" % test_json)
82 metadata = json.loads(test_json).get("metadata")
83 self.assertEqual("vIMS_v2", metadata.get("nsd_name", ""))
85 def remove_temp_dir(self):
86 tempdir = tempfile.gettempdir()
87 for dir in os.listdir(tempdir):
88 if dir.startswith("tmp"):
89 path = tempfile.tempdir + "/" + dir
90 if (not os.path.isfile(path)) and os.path.exists(path):
91 shutil.rmtree(tempfile.tempdir + "/" + dir)
97 "vl_flat_net": ["cucp", "cuup"],
98 "vl_ext_net": ["cucp", "cuup"],
102 self.assertEqual(['vl_ext_net', 'vl_flat_net'].sort(), graph.get_pre_nodes("cucp").sort())