7cfe3be66858d00d93ef9d65e868d3e173641d37
[vfc/nfvo/lcm.git] / lcm / pub / tests / test_scaleaspect.py
1 from django.test import TestCase
2 from lcm.pub.utils.scaleaspect import get_json_data
3 from lcm.pub.utils.scaleaspect import get_nsdId
4 from lcm.pub.utils.scaleaspect import get_scale_vnf_data_from_json
5 from lcm.pub.utils.scaleaspect import get_scale_vnf_data_info_list
6 from lcm.pub.utils.scaleaspect import set_scacle_vnf_instance_id
7 from lcm.pub.database.models import NfInstModel
8 from lcm.pub.database.models import NSInstModel
9 from lcm.pub.msapi import catalog
10 from lcm.pub.utils.timeutil import now_time
11 import os
12 import mock
13
14
15 class TestScaleAspect(TestCase):
16
17     def setUp(self):
18         curdir_path = os.path.dirname(
19             os.path.dirname(
20                 os.path.dirname(
21                     os.path.abspath(__file__))))
22         filename = curdir_path + "/ns/data/scalemapping.json"
23         self.scaling_map_json = get_json_data(filename)
24
25         self.initInstModel()
26
27         self.scaleNsData = {
28             "aspectId": "TIC_EDGE_IMS",
29             "numberOfSteps": "1",
30             "scalingDirection": "UP"
31         }
32
33     def initInstModel(self):
34         self.nsd_id = "23"
35         self.ns_inst_id = "1"
36         self.ns_name = "ns_1"
37         self.ns_package_id = "ns_zte"
38         self.description = "ns_zte"
39         self.global_customer_id = "global_customer_id"
40         self.service_type = "service_role"
41
42         NSInstModel(id=self.ns_inst_id,
43                     name=self.ns_name,
44                     nspackage_id=self.ns_package_id,
45                     nsd_id=self.nsd_id,
46                     description=self.description,
47                     status='empty',
48                     lastuptime=now_time(),
49                     global_customer_id=self.global_customer_id,
50                     service_type=self.service_type).save()
51
52         self.nf_inst_id = "231"
53         self.ns_inst_id = "1"
54         self.nf_name = "name_1"
55         self.vnf_id = "1"
56         self.vnfm_inst_id = "1"
57         self.package_id = "nf_zte_cscf"
58         self.nf_uuid = "abc34-345a-de13-ab85-ijs9"
59
60         NfInstModel.objects.create(
61             nfinstid=self.nf_inst_id,
62             nf_name=self.nf_name,
63             vnf_id=self.vnf_id,
64             vnfm_inst_id=self.vnfm_inst_id,
65             ns_inst_id=self.ns_inst_id,
66             max_cpu='14',
67             max_ram='12296',
68             max_hd='101',
69             max_shd="20",
70             max_net=10,
71             status='active',
72             mnfinstid=self.nf_uuid,
73             package_id=self.package_id,
74             vnfd_model='{"metadata": {"vnfdId": "1","vnfdName": "PGW001",'
75             '"vnfProvider": "zte","vnfdVersion": "V00001","vnfVersion": "V5.10.20",'
76             '"productType": "CN","vnfType": "PGW",'
77             '"description": "PGW VNFD description",'
78             '"isShared":true,"vnfExtendType":"driver"}}')
79
80         # Create a second vnf instance
81         self.nf_inst_id = "232"
82         self.package_id = "nf_zte_hss"
83         self.nf_uuid = "abc34-3g5a-de13-ab85-ijs3"
84
85         NfInstModel.objects.create(
86             nfinstid=self.nf_inst_id,
87             nf_name=self.nf_name,
88             vnf_id=self.vnf_id,
89             vnfm_inst_id=self.vnfm_inst_id,
90             ns_inst_id=self.ns_inst_id,
91             max_cpu='14',
92             max_ram='12296',
93             max_hd='101',
94             max_shd="20",
95             max_net=10,
96             status='active',
97             mnfinstid=self.nf_uuid,
98             package_id=self.package_id,
99             vnfd_model='{"metadata": {"vnfdId": "1","vnfdName": "PGW001",'
100                        '"vnfProvider": "zte","vnfdVersion": "V00001","vnfVersion": "V5.10.20",'
101                        '"productType": "CN","vnfType": "PGW",'
102                        '"description": "PGW VNFD description",'
103                        '"isShared":true,"vnfExtendType":"driver"}}')
104
105     def tearDown(self):
106         NSInstModel().clean()
107         NfInstModel().clean()
108
109     def test_get_scale_vnf_data_from_json(self):
110         vnf_data_package = get_scale_vnf_data_from_json(
111             self.scaling_map_json, "23", "TIC_EDGE_IMS", "1")
112         self.assertIsNotNone(vnf_data_package)
113         self.assertEqual(2, vnf_data_package.__len__())
114
115     @mock.patch.object(catalog, 'get_scalingmap_json_package')
116     def test_get_scale_vnf_data_info_list(
117             self, mock_get_scalingmap_json_package):
118         mock_get_scalingmap_json_package.return_value = self.scaling_map_json
119
120         scale_vnf_data = get_scale_vnf_data_info_list(self.scaleNsData, "1")
121         self.assertIsNotNone(scale_vnf_data)
122         self.assertEqual(2, scale_vnf_data.__len__())
123
124     def test_set_scacle_vnf_instance_id(self):
125         vnf_scale_info_list = [
126             {
127                 "vnfd_id": "nf_zte_cscf",
128                 "vnf_scaleAspectId": "mpu",
129                 "numberOfSteps": "1"
130             },
131             {
132                 "vnfd_id": "nf_zte_hss",
133                 "vnf_scaleAspectId": "mpu",
134                 "numberOfSteps": "1"
135             }
136         ]
137         result = set_scacle_vnf_instance_id(vnf_scale_info_list)
138         self.assertEqual(result[0]["numberOfSteps"], vnf_scale_info_list[0]["numberOfSteps"])
139         self.assertEqual(result[0]["vnf_scaleAspectId"], vnf_scale_info_list[0]["vnf_scaleAspectId"])
140         self.assertEqual(result[1]["numberOfSteps"], vnf_scale_info_list[0]["numberOfSteps"])
141         self.assertEqual(result[1]["vnf_scaleAspectId"], vnf_scale_info_list[0]["vnf_scaleAspectId"])
142         self.assertEqual("231", result[0]["vnfInstanceId"])
143         self.assertEqual("232", result[1]["vnfInstanceId"])
144         self.assertNotIn("vnfd_id", result[0])
145         self.assertNotIn("vnfd_id", result[1])
146
147     def test_get_nsdId(self):
148         nsd_id = get_nsdId("1")
149         self.assertEqual("23", nsd_id)