Enable static cgnapt functionality. 75/45675/1
authorDeepak S <deepak.s@linux.intel.com>
Fri, 22 Sep 2017 05:13:09 +0000 (22:13 -0700)
committerRoss Brattain <ross.b.brattain@intel.com>
Thu, 19 Oct 2017 00:07:20 +0000 (17:07 -0700)
Change-Id: Ie770ca69ebdc66589ed6ca5c25bfc9a75afb8938
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt.yaml
tests/unit/network_services/helpers/test_samplevnf_helper.py
tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py
tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py
yardstick/network_services/vnf_generic/vnf/sample_vnf.py

index 4aa78e7..61cbd4e 100644 (file)
@@ -94,6 +94,6 @@ downlink_0:
             ttl: 32
             dscp: 0
         outer_l4:
-            srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
-            dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+            srcport: "{{get(flow, 'flow.dst_port_0', '1-65535') }}"
+            dstport: "{{get(flow, 'flow.src_port_0', '1-65535') }}"
             count: "{{get(flow, 'flow.count', '1') }}"
index bff3a77..05acdfa 100644 (file)
@@ -797,7 +797,7 @@ class TestMultiPortConfig(unittest.TestCase):
     def test_generate_arp_route_tbl(self, *_):
         topology_file = mock.Mock()
         config_tpl = mock.Mock()
-        tmp_file = mock.Mock()
+        tmp_file = ""
         vnfd_mock = mock.MagicMock()
         vnfd_mock.port_num.side_effect = ['32', '1', '987']
         vnfd_mock.find_interface.side_effect = [
index b0ef1da..832509e 100644 (file)
@@ -72,13 +72,12 @@ link 1 up
         self.assertNotIn("This is a header", out)
 
     def test__get_cgnapt_config(self):
-        vnfd_helper = mock.Mock()
+        vnfd_helper = mock.MagicMock()
         vnfd_helper.port_pairs.uplink_ports = [{"name": 'a'}, {"name": "b"}, {"name": "c"}]
 
         helper = CgnaptApproxSetupEnvHelper(vnfd_helper, mock.Mock(), mock.Mock())
-        helper._get_ports_gateway = mock.Mock(side_effect=[3, 5, 2])
-        result = helper._get_cgnapt_config([{"name": 'a'}, {}, {"name": "b"}, {}, {"name": "c"}])
-        self.assertEqual(result, [3, 5, 2])
+        result = helper._get_cgnapt_config()
+        self.assertIsNotNone(result)
 
     def test_scale(self):
         helper = CgnaptApproxSetupEnvHelper(mock.Mock(), mock.Mock(), mock.Mock())
index c41da2c..6c102ed 100644 (file)
@@ -360,15 +360,6 @@ class TestSetupEnvHelper(unittest.TestCase):
         with self.assertRaises(NotImplementedError):
             setup_env_helper.build_config()
 
-    def test__get_ports_gateway(self):
-        vnfd_helper = VnfdHelper(self.VNFD_0)
-        setup_env_helper = SetupEnvHelper(vnfd_helper, mock.Mock(), mock.Mock())
-        result = setup_env_helper._get_ports_gateway("xe0")
-        self.assertEqual(result, "152.16.100.20")
-
-        result = setup_env_helper._get_ports_gateway("xe123")
-        self.assertIsNone(result)
-
     def test_setup_vnf_environment(self):
         setup_env_helper = SetupEnvHelper(mock.Mock(), mock.Mock(), mock.Mock())
         self.assertIsNone(setup_env_helper.setup_vnf_environment())
index b5072c1..53f73b4 100644 (file)
@@ -14,6 +14,7 @@
 
 from __future__ import absolute_import
 import logging
+import time
 
 from yardstick.network_services.vnf_generic.vnf.sample_vnf import SampleVNF, DpdkVnfSetupEnvHelper
 
@@ -64,14 +65,12 @@ class CgnaptApproxSetupEnvHelper(DpdkVnfSetupEnvHelper):
     def scale(self, flavor=""):
         raise NotImplementedError
 
-    def _get_cgnapt_config(self, interfaces=None):
-        # TODO: static CGNAPT is broken, don't use it
-        if interfaces is None:
-            interfaces = self.vnfd_helper.interfaces
-
+    def _get_cgnapt_config(self):
         # fixme: Get private port and gateway from port list
         uplink_ports = self.vnfd_helper.port_pairs.uplink_ports
-        return [self._get_ports_gateway(intf["name"]) for intf in uplink_ports]
+        return \
+            [self.vnfd_helper.find_interface(name=intf)["virtual-interface"]['dst_ip']
+             for intf in uplink_ports]
 
 
 class CgnaptApproxVnf(SampleVNF):
@@ -98,23 +97,26 @@ class CgnaptApproxVnf(SampleVNF):
         if self.scenario_helper.options.get('napt', 'static') != 'static':
             return
 
-        # ip_iter = self.setup_helper._generate_ip_from_pool("152.16.40.10")
-        # gw_ips = self.setup_helper._get_cgnapt_config()
-        # if self.scenario_helper.vnf_cfg.get("lb_config", "SW") == 'HW':
-        #     pipeline = self.setup_helper.HW_DEFAULT_CORE
-        #     offset = 3
-        # else:
-        #     pipeline = self.setup_helper.SW_DEFAULT_CORE - 1
-        #     offset = 0
-        #
-        # worker_threads = int(self.scenario_helper.vnf_cfg["worker_threads"])
-        # # p <pipeline id> entry addm <prv_ipv4/6> prvport> <pub_ip> <pub_port> <phy_port> <ttl>
-        # # <no_of_entries> <end_prv_port> <end_pub_port>
-        # cmd_template = "p {0} entry addm {1} 1 {2} 1 0 32 65535 65535 65535"
-        # for gw, ip in zip(gw_ips, ip_iter):
-        #     cmd = cmd_template.format(pipeline, gw, ip)
-        #     pipeline += worker_threads
-        #     pipeline += offset
-        #     self.vnf_execute(cmd)
-        #
-        # time.sleep(WAIT_FOR_STATIC_NAPT)
+        flow = self.scenario_helper.all_options.get('flow', {})
+        public_ip = flow.get('public_ip', ['152.16.40.10']).pop()
+        ip_iter = self.setup_helper._generate_ip_from_pool(public_ip)
+        gw_ips = self.setup_helper._get_cgnapt_config()
+        if self.scenario_helper.vnf_cfg.get("lb_config", "SW") == 'HW':
+            pipeline = self.setup_helper.HW_DEFAULT_CORE
+            offset = 3
+        else:
+            pipeline = self.setup_helper.SW_DEFAULT_CORE - 1
+            offset = 0
+
+        worker_threads = int(self.scenario_helper.vnf_cfg["worker_threads"])
+        # p <pipeline id> entry addm <prv_ipv4/6> prvport> <pub_ip> <pub_port> <phy_port> <ttl>
+        # <no_of_entries> <end_prv_port> <end_pub_port>
+        cmd_template = "p {0} entry addm {1} 1 {2} 1 0 32 65535 65535 65535"
+        for gw, ip in zip(gw_ips, ip_iter):
+            cmd = cmd_template.format(pipeline, gw, ip)
+            pipeline += worker_threads
+            pipeline += offset
+            LOG.info(cmd)
+            self.vnf_execute(cmd)
+
+        time.sleep(WAIT_FOR_STATIC_NAPT)
index 06f2596..b5cf034 100644 (file)
@@ -108,13 +108,6 @@ class SetupEnvHelper(object):
         self.ssh_helper = ssh_helper
         self.scenario_helper = scenario_helper
 
-    def _get_ports_gateway(self, name):
-        routing_table = self.vnfd_helper.vdu0.get('routing_table', [])
-        for route in routing_table:
-            if name == route['if']:
-                return route['gateway']
-        return None
-
     def build_config(self):
         raise NotImplementedError