Replace assert statements in PipelineRules 43/60443/1
authorMiikka Koistinen <miikka.koistinen@nokia.com>
Tue, 31 Jul 2018 14:03:10 +0000 (17:03 +0300)
committerMiikka Koistinen <miikka.koistinen@nokia.com>
Tue, 31 Jul 2018 14:11:41 +0000 (17:11 +0300)
The class PipelineRules uses assert statements to check the correctness
of an input parameter IP address. This commit will modify these lines
to use a dedicated function "common.utils.make_ipv4_address".

JIRA: YARDSTICK-966

Change-Id: I1c4cc439a7716d36548125c87dfb0bc200714a56
Signed-off-by: Miikka Koistinen <miikka.koistinen@nokia.com>
yardstick/common/utils.py
yardstick/network_services/pipeline.py
yardstick/tests/unit/common/test_utils.py

index 6c5389c..f1822a0 100644 (file)
@@ -291,6 +291,10 @@ def mac_address_to_hex_list(mac):
     return octets
 
 
+def make_ipv4_address(ip_addr):
+    return ipaddress.IPv4Address(six.text_type(ip_addr))
+
+
 def safe_ip_address(ip_addr):
     """ get ip address version v6 or v4 """
     try:
index d781ba0..7155480 100644 (file)
@@ -18,6 +18,8 @@ import itertools
 \r
 from six.moves import zip\r
 \r
+from yardstick.common import utils\r
+\r
 FIREWALL_ADD_DEFAULT = "p {0} firewall add default 1"\r
 FIREWALL_ADD_PRIO = """\\r
 p {0} firewall add priority 1 ipv4  {1} 24 0.0.0.0 0 0 65535 0 65535 6 0xFF port 0"""\r
@@ -59,8 +61,7 @@ class PipelineRules(object):
         self.add_rule(FIREWALL_ADD_PRIO, ip)\r
 \r
     def add_firewall_script(self, ip):\r
-        ip_addr = ip.split('.')\r
-        assert len(ip_addr) == 4\r
+        ip_addr = str(utils.make_ipv4_address(ip)).split('.')\r
         ip_addr[-1] = '0'\r
         for i in range(256):\r
             ip_addr[-2] = str(i)\r
@@ -87,8 +88,7 @@ class PipelineRules(object):
         self.add_rule(ROUTE_ADD_ETHER_MPLS, ip, mac_addr, index)\r
 \r
     def add_route_script(self, ip, mac_addr):\r
-        ip_addr = ip.split('.')\r
-        assert len(ip_addr) == 4\r
+        ip_addr = str(utils.make_ipv4_address(ip)).split('.')\r
         ip_addr[-1] = '0'\r
         for index in range(0, 256, 8):\r
             ip_addr[-2] = str(index)\r
@@ -101,8 +101,7 @@ class PipelineRules(object):
         self.add_rule(ROUTE_ADD_ETHER_QINQ, ip, mask, mac_addr, index)\r
 \r
     def add_route_script2(self, ip, mac_addr):\r
-        ip_addr = ip.split('.')\r
-        assert len(ip_addr) == 4\r
+        ip_addr = str(utils.make_ipv4_address(ip)).split('.')\r
         ip_addr[-1] = '0'\r
         mask = 24\r
         for i in range(0, 256):\r
index b634ff4..b030428 100644 (file)
@@ -1123,6 +1123,19 @@ class TestUtilsIpAddrMethods(ut_base.BaseUnitTestCase):
         u'123:4567:89ab:cdef:123:4567:89ab:cdef/129',
     ]
 
+    def test_make_ipv4_address(self):
+        for addr in self.GOOD_IP_V4_ADDRESS_STR_LIST:
+            # test with no mask
+            expected = ipaddress.IPv4Address(addr)
+            self.assertEqual(utils.make_ipv4_address(addr), expected, addr)
+
+    def test_make_ipv4_address_error(self):
+        addr_list = self.INVALID_IP_ADDRESS_STR_LIST +\
+                    self.GOOD_IP_V6_ADDRESS_STR_LIST
+        for addr in addr_list:
+            self.assertRaises(Exception, utils.make_ipv4_address, addr)
+
+
     def test_safe_ip_address(self):
         addr_list = self.GOOD_IP_V4_ADDRESS_STR_LIST
         for addr in addr_list: