IxNetwork IPv4 mask format is x.x.x.x 55/60155/3
authorRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Tue, 24 Jul 2018 14:11:37 +0000 (15:11 +0100)
committerRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Tue, 24 Jul 2018 14:25:19 +0000 (15:25 +0100)
When updating the IP packet in IxNextgen library, the IPv4 mask should
be defined in the following format: x.x.x.x

This mask defines the number of lower bits used to generate a random IP.
For example:
  - mask length: 16
  - mask string: 0.0.255.255

JIRA: YARDSTICK-1351

Change-Id: Ie3cbf0205aac83aea8d7f665bc068e8566238055
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py
yardstick/tests/unit/network_services/libs/ixia_libs/test_ixnet_api.py

index 9058fa7..a840fea 100644 (file)
@@ -12,6 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import ipaddress
 import logging
 
 import IxNetwork
@@ -397,15 +398,17 @@ class IxNextgen(object):  # pragma: no cover
         :param field: (str) field name, e.g.: scrIp, dstIp
         :param ip_address: (str) IP address
         :param seed: (int) seed length
-        :param mask: (str) IP address mask
+        :param mask: (int) IP address mask length
         :param count: (int) number of random IPs to generate
         """
         field_descriptor = self._get_field_in_stack_item(ip_descriptor,
                                                          field)
+        random_mask = str(ipaddress.IPv4Address(
+            2**(ipaddress.IPV4LENGTH - mask) - 1).compressed)
         self.ixnet.setMultiAttribute(field_descriptor,
                                      '-seed', seed,
                                      '-fixedBits', ip_address,
-                                     '-randomMask', mask,
+                                     '-randomMask', random_mask,
                                      '-valueType', 'random',
                                      '-countValue', count)
         self.ixnet.commit()
index 458ea0f..dd43a64 100644 (file)
@@ -405,10 +405,10 @@ class TestIxNextgen(unittest.TestCase):
         with mock.patch.object(ixnet_gen, '_get_field_in_stack_item',
                                return_value='field_desc'):
             ixnet_gen._update_ipv4_address(mock.ANY, mock.ANY, '192.168.1.1',
-                                           100, '255.255.255.0', 25)
+                                           100, 26, 25)
         ixnet_gen.ixnet.setMultiAttribute.assert_called_once_with(
             'field_desc', '-seed', 100, '-fixedBits', '192.168.1.1',
-            '-randomMask', '255.255.255.0', '-valueType', 'random',
+            '-randomMask', '0.0.0.63', '-valueType', 'random',
             '-countValue', 25)
 
     def test_update_ip_packet(self):