Merge "testcase: add rate parameter for spec cpu 2006"
[yardstick.git] / tests / unit / network_services / vnf_generic / test_vnfdgen.py
index 6d5fb0c..c2b9235 100644 (file)
@@ -21,6 +21,7 @@ from __future__ import absolute_import
 import unittest
 from six.moves import range
 
+from yardstick.common.yaml_loader import yaml_load
 from yardstick.network_services.vnf_generic import vnfdgen
 
 TREX_VNFD_TEMPLATE = """
@@ -65,6 +66,8 @@ vnfd:vnfd-catalog:
                     dst_mac: '{{ interfaces.xe1.dst_mac }}'
                     bandwidth: 10 Gbps
                 vnfd-connection-point-ref: xe1
+            routing_table: {{ routing_table }}
+            nd_route_tbl: {{ nd_route_tbl }}
 
         benchmark:
             kpi:
@@ -126,6 +129,22 @@ COMPLETE_TREX_VNFD = \
                                          'vpci': '0000:00:10.1'},
                    'vnfd-connection-point-ref': 'xe1'}],
                  'id': 'trexgen-baremetal',
+                 'nd_route_tbl': [{'gateway': '0064:ff9b:0:0:0:0:9810:6414',
+                                   'if': 'xe0',
+                                   'netmask': '112',
+                                   'network': '0064:ff9b:0:0:0:0:9810:6414'},
+                                  {'gateway': '0064:ff9b:0:0:0:0:9810:2814',
+                                   'if': 'xe1',
+                                   'netmask': '112',
+                                   'network': '0064:ff9b:0:0:0:0:9810:2814'}],
+                 'routing_table': [{'gateway': '152.16.100.20',
+                                    'if': 'xe0',
+                                    'netmask': '255.255.255.0',
+                                    'network': '152.16.100.20'},
+                                   {'gateway': '152.16.40.20',
+                                    'if': 'xe1',
+                                    'netmask': '255.255.255.0',
+                                    'network': '152.16.40.20'}],
                  'name': 'trexgen-baremetal'}]}]}}
 
 NODE_CFG = {'ip': '1.1.1.1',
@@ -144,7 +163,24 @@ NODE_CFG = {'ip': '1.1.1.1',
                                    'dst_mac': '00:01:02:03:04:06',
                                    'local_ip': '2.1.1.2',
                                    'local_mac': '00:01:02:03:05:06',
-                                   'vpci': '0000:00:10.1'}}}
+                                   'vpci': '0000:00:10.1'}},
+            'nd_route_tbl': [{u'gateway': u'0064:ff9b:0:0:0:0:9810:6414',
+                              u'if': u'xe0',
+                              u'netmask': u'112',
+                              u'network': u'0064:ff9b:0:0:0:0:9810:6414'},
+                             {u'gateway': u'0064:ff9b:0:0:0:0:9810:2814',
+                              u'if': u'xe1',
+                              u'netmask': u'112',
+                              u'network': u'0064:ff9b:0:0:0:0:9810:2814'}],
+            'routing_table': [{u'gateway': u'152.16.100.20',
+                               u'if': u'xe0',
+                               u'netmask': u'255.255.255.0',
+                               u'network': u'152.16.100.20'},
+                              {u'gateway': u'152.16.40.20',
+                               u'if': u'xe1',
+                               u'netmask': u'255.255.255.0',
+                               u'network': u'152.16.40.20'}],
+            }
 
 
 TRAFFIC_PROFILE_TPL = """
@@ -169,6 +205,20 @@ TRAFFIC_PROFILE = {
                                          "1518B": '40'}}}}]}
 
 
+class TestRender(unittest.TestCase):
+
+    def test_render_none(self):
+
+        tmpl = "{{ routing_table }}"
+        self.assertEqual(vnfdgen.render(tmpl, routing_table=None), u'~')
+        self.assertEqual(yaml_load(vnfdgen.render(tmpl, routing_table=None)), None)
+
+    def test_render_unicode_dict(self):
+
+        tmpl = "{{ routing_table }}"
+        self.assertEqual(yaml_load(vnfdgen.render(tmpl, **NODE_CFG)), NODE_CFG["routing_table"])
+
+
 class TestVnfdGen(unittest.TestCase):
     """ Class to verify VNFS testcases """
 
@@ -185,26 +235,34 @@ class TestVnfdGen(unittest.TestCase):
         generated_tp = vnfdgen.generate_vnfd(TRAFFIC_PROFILE_TPL, {"imix": {}})
         self.assertDictEqual(TRAFFIC_PROFILE, generated_tp)
 
-    def test_dict_flatten_empty_dict(self):
-        self.assertEqual(vnfdgen.dict_key_flatten({}), {})
+    def test_deepgetitem(self):
+        d = {'a': 1, 'b': 2}
+        self.assertEqual(vnfdgen.deepgetitem(d, "a"), 1)
 
     def test_dict_flatten_int(self):
         d = {'a': 1, 'b': 2}
-        self.assertEqual(vnfdgen.dict_key_flatten(d), d)
+        self.assertEqual(vnfdgen.deepgetitem(d, "a"), 1)
+
+    def test_dict_flatten_str_int_key_first(self):
+        d = {'0': 1, 0: 24, 'b': 2}
+        self.assertEqual(vnfdgen.deepgetitem(d, "0"), 1)
 
-    def test_dict_flatten_str(self):
-        d = {'a': "1", 'b': '2'}
-        self.assertEqual(vnfdgen.dict_key_flatten(d), d)
+    def test_dict_flatten_int_key_fallback(self):
+        d = {0: 1, 'b': 2}
+        self.assertEqual(vnfdgen.deepgetitem(d, "0"), 1)
 
     def test_dict_flatten_list(self):
         d = {'a': 1, 'b': list(range(2))}
-        self.assertEqual(vnfdgen.dict_key_flatten(d),
-                         {'a': 1, 'b0': 0, 'b1': 1})
+        self.assertEqual(vnfdgen.deepgetitem(d, "b.0"), 0)
 
     def test_dict_flatten_dict(self):
         d = {'a': 1, 'b': {x: x for x in list(range(2))}}
-        self.assertEqual(vnfdgen.dict_key_flatten(d),
-                         {'a': 1, 'b.0': 0, 'b.1': 1})
+        self.assertEqual(vnfdgen.deepgetitem(d, "b.0"), 0)
+
+    def test_dict_flatten_only_str_key(self):
+        d = {'0': 1, 0: 24, 'b': 2}
+        self.assertRaises(AttributeError, vnfdgen.deepgetitem, d, 0)
+
 
     def test_generate_tp_single_var(self):
         """ Function to verify traffic profile generation with imix """