aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/network_services/traffic_profile
diff options
context:
space:
mode:
authorDeepak S <deepak.s@linux.intel.com>2017-06-20 14:31:19 -0700
committerRoss Brattain <ross.b.brattain@intel.com>2017-08-08 08:54:23 -0700
commit5ce3b6f8c8b3217091e51a6041455738603d90b8 (patch)
treeca34e15a85d69e2b23ce498fead47761624ae42c /tests/unit/network_services/traffic_profile
parent72778951d6b8968f562fb8fefa02a57159ea1b83 (diff)
NSB update
Refactored main NSB VNF classes accroding to class diagram https://wiki.opnfv.org/display/yardstick/NSB+class+diagram All the SampleVNFs have been separated and placed under the SampleVNF class. Added AutoConnectSSH to automatically create SSH conneciton on demand. Added VnfdHelper class to wrap the VNFD dictionary in prepartion for class-based modeling. Extracted DpdkVnfSetupEnvHelper for DPDK based VNF setup. Extracted Stats and other client config to ResourceHelper Had to replace dict_key_flatten with deepgetitem due to Python 2.7 Jinja2 infinite recursion. Change-Id: Ia8840e9c44cdbdf39aab6b02e6d2176b31937dc9 Signed-off-by: Deepak S <deepak.s@linux.intel.com> Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com> Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Diffstat (limited to 'tests/unit/network_services/traffic_profile')
-rw-r--r--tests/unit/network_services/traffic_profile/test_rfc2544.py200
-rw-r--r--tests/unit/network_services/traffic_profile/test_traffic_profile.py10
2 files changed, 152 insertions, 58 deletions
diff --git a/tests/unit/network_services/traffic_profile/test_rfc2544.py b/tests/unit/network_services/traffic_profile/test_rfc2544.py
index 1e9409b2a..dcaf43dc5 100644
--- a/tests/unit/network_services/traffic_profile/test_rfc2544.py
+++ b/tests/unit/network_services/traffic_profile/test_rfc2544.py
@@ -106,7 +106,7 @@ class TestRFC2544Profile(unittest.TestCase):
'name': 'rfc2544',
'traffic_profile': {'traffic_type': 'RFC2544Profile',
'frame_rate': 100},
- 'public': {'ipv4':
+ 'public_1': {'ipv4':
{'outer_l2': {'framesize':
{'64B': '100', '1518B': '0',
'128B': '0', '1400B': '0',
@@ -118,7 +118,7 @@ class TestRFC2544Profile(unittest.TestCase):
'dscp': 0, 'ttl': 32},
'outer_l4': {'srcport': '2001',
'dsrport': '1234'}}},
- 'private': {'ipv4':
+ 'private_1': {'ipv4':
{'outer_l2': {'framesize':
{'64B': '100', '1518B': '0',
'128B': '0', '1400B': '0',
@@ -139,6 +139,8 @@ class TestRFC2544Profile(unittest.TestCase):
def test_execute(self):
traffic_generator = mock.Mock(autospec=TrexProfile)
traffic_generator.my_ports = [0, 1]
+ traffic_generator.priv_ports = [-1]
+ traffic_generator.pub_ports = [1]
traffic_generator.client = \
mock.Mock(return_value=True)
r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
@@ -149,66 +151,101 @@ class TestRFC2544Profile(unittest.TestCase):
def test_get_drop_percentage(self):
traffic_generator = mock.Mock(autospec=TrexProfile)
traffic_generator.my_ports = [0, 1]
- traffic_generator.client = \
- mock.Mock(return_value=True)
+ traffic_generator.priv_ports = [0]
+ traffic_generator.pub_ports = [1]
+ traffic_generator.client = mock.Mock(return_value=True)
+
r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
r_f_c2544_profile.params = self.PROFILE
- self.assertEqual(None, r_f_c2544_profile.execute(traffic_generator))
+ r_f_c2544_profile.register_generator(traffic_generator)
+ self.assertIsNone(r_f_c2544_profile.execute(traffic_generator))
+
samples = {}
for ifname in range(1):
name = "xe{}".format(ifname)
- samples[name] = {"rx_throughput_fps": 20,
- "tx_throughput_fps": 20,
- "rx_throughput_mbps": 10,
- "tx_throughput_mbps": 10,
- "in_packets": 1000,
- "out_packets": 1000}
- tol_min = 100.0
- tolerance = 0.0
- expected = {'DropPercentage': 0.0, 'RxThroughput': 100/3.0,
- 'TxThroughput': 100/3.0, 'CurrentDropPercentage': 0.0,
- 'Throughput': 100/3.0,
- 'xe0': {'tx_throughput_fps': 20, 'in_packets': 1000,
- 'out_packets': 1000, 'rx_throughput_mbps': 10,
- 'tx_throughput_mbps': 10, 'rx_throughput_fps': 20}}
- self.assertDictEqual(expected,
- r_f_c2544_profile.get_drop_percentage(
- traffic_generator, samples,
- tol_min, tolerance))
+ samples[name] = {
+ "rx_throughput_fps": 20,
+ "tx_throughput_fps": 20,
+ "rx_throughput_mbps": 10,
+ "tx_throughput_mbps": 10,
+ "in_packets": 1000,
+ "out_packets": 1000,
+ }
+
+ expected = {
+ 'DropPercentage': 0.0,
+ 'RxThroughput': 100 / 3.0,
+ 'TxThroughput': 100 / 3.0,
+ 'CurrentDropPercentage': 0.0,
+ 'Throughput': 66.66666666666667,
+ 'xe0': {
+ 'tx_throughput_fps': 20,
+ 'in_packets': 1000,
+ 'out_packets': 1000,
+ 'rx_throughput_mbps': 10,
+ 'tx_throughput_mbps': 10,
+ 'rx_throughput_fps': 20,
+ },
+ }
+ traffic_generator.generate_samples = mock.MagicMock(return_value=samples)
+ traffic_generator.RUN_DURATION = 30
+ traffic_generator.rfc2544_helper.tolerance_low = 0.0001
+ traffic_generator.rfc2544_helper.tolerance_high = 0.0001
+ result = r_f_c2544_profile.get_drop_percentage(traffic_generator)
+ self.assertDictEqual(result, expected)
def test_get_drop_percentage_update(self):
- traffic_generator = mock.Mock(autospec=TrexProfile)
+ traffic_generator = mock.Mock(autospec=RFC2544Profile)
traffic_generator.my_ports = [0, 1]
- traffic_generator.client = \
- mock.Mock(return_value=True)
+ traffic_generator.priv_ports = [0]
+ traffic_generator.pub_ports = [1]
+ traffic_generator.client = mock.Mock(return_value=True)
+
r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
r_f_c2544_profile.params = self.PROFILE
- self.assertEqual(None, r_f_c2544_profile.execute(traffic_generator))
+ r_f_c2544_profile.register_generator(traffic_generator)
+ self.assertIsNone(r_f_c2544_profile.execute())
+
samples = {}
for ifname in range(1):
name = "xe{}".format(ifname)
- samples[name] = {"rx_throughput_fps": 20,
- "tx_throughput_fps": 20,
- "rx_throughput_mbps": 10,
- "tx_throughput_mbps": 10,
- "in_packets": 1000,
- "out_packets": 1002}
+ samples[name] = {
+ "rx_throughput_fps": 20,
+ "tx_throughput_fps": 20,
+ "rx_throughput_mbps": 10,
+ "tx_throughput_mbps": 10,
+ "in_packets": 1000,
+ "out_packets": 1002,
+ }
tol_min = 0.0
tolerance = 1.0
- expected = {'DropPercentage': 0.2, 'RxThroughput': 100/3.0,
- 'TxThroughput': 33.4, 'CurrentDropPercentage': 0.2,
- 'Throughput': 100/3.0,
- 'xe0': {'tx_throughput_fps': 20, 'in_packets': 1000,
- 'out_packets': 1002, 'rx_throughput_mbps': 10,
- 'tx_throughput_mbps': 10, 'rx_throughput_fps': 20}}
- self.assertDictEqual(expected,
- r_f_c2544_profile.get_drop_percentage(
- traffic_generator, samples,
- tol_min, tolerance))
+ expected = {
+ 'DropPercentage': 0.1996,
+ 'RxThroughput': 33.333333333333336,
+ 'TxThroughput': 33.4,
+ 'CurrentDropPercentage': 0.1996,
+ 'Throughput': 66.66666666666667,
+ 'xe0': {
+ 'tx_throughput_fps': 20,
+ 'in_packets': 1000,
+ 'out_packets': 1002,
+ 'rx_throughput_mbps': 10,
+ 'tx_throughput_mbps': 10,
+ 'rx_throughput_fps': 20,
+ },
+ }
+ traffic_generator.generate_samples = mock.MagicMock(return_value=samples)
+ traffic_generator.RUN_DURATION = 30
+ traffic_generator.rfc2544_helper.tolerance_low = 0.0001
+ traffic_generator.rfc2544_helper.tolerance_high = 0.0001
+ result = r_f_c2544_profile.get_drop_percentage(traffic_generator)
+ self.assertDictEqual(expected, result)
def test_get_drop_percentage_div_zero(self):
traffic_generator = mock.Mock(autospec=TrexProfile)
traffic_generator.my_ports = [0, 1]
+ traffic_generator.priv_ports = [0]
+ traffic_generator.pub_ports = [1]
traffic_generator.client = \
mock.Mock(return_value=True)
r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
@@ -225,17 +262,23 @@ class TestRFC2544Profile(unittest.TestCase):
"out_packets": 0}
tol_min = 0.0
tolerance = 0.0
- r_f_c2544_profile.tmp_throughput = 0
- expected = {'DropPercentage': 100.0, 'RxThroughput': 100/3.0,
- 'TxThroughput': 0.0, 'CurrentDropPercentage': 100.0,
- 'Throughput': 100/3.0,
- 'xe0': {'tx_throughput_fps': 20, 'in_packets': 1000,
- 'out_packets': 0, 'rx_throughput_mbps': 10,
- 'tx_throughput_mbps': 10, 'rx_throughput_fps': 20}}
+ r_f_c2544_profile.throughput_max = 0
+ expected = {
+ 'DropPercentage': 100.0, 'RxThroughput': 100 / 3.0,
+ 'TxThroughput': 0.0, 'CurrentDropPercentage': 100.0,
+ 'Throughput': 66.66666666666667,
+ 'xe0': {
+ 'tx_throughput_fps': 20, 'in_packets': 1000,
+ 'out_packets': 0, 'rx_throughput_mbps': 10,
+ 'tx_throughput_mbps': 10, 'rx_throughput_fps': 20
+ }
+ }
+ traffic_generator.generate_samples = mock.MagicMock(return_value=samples)
+ traffic_generator.RUN_DURATION = 30
+ traffic_generator.rfc2544_helper.tolerance_low = 0.0001
+ traffic_generator.rfc2544_helper.tolerance_high = 0.0001
self.assertDictEqual(expected,
- r_f_c2544_profile.get_drop_percentage(
- traffic_generator, samples,
- tol_min, tolerance))
+ r_f_c2544_profile.get_drop_percentage(traffic_generator))
def test_get_multiplier(self):
r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
@@ -243,5 +286,56 @@ class TestRFC2544Profile(unittest.TestCase):
r_f_c2544_profile.min_rate = 100
self.assertEqual("1.0", r_f_c2544_profile.get_multiplier())
+ def test_calculate_pps(self):
+ r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
+ r_f_c2544_profile.rate = 100
+ r_f_c2544_profile.pps = 100
+ samples = {'Throughput': 4549093.33}
+ self.assertEqual((2274546.67, 1.0),
+ r_f_c2544_profile.calculate_pps(samples))
+
+ def test_create_single_stream(self):
+ r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
+ r_f_c2544_profile._create_single_packet = mock.MagicMock()
+ r_f_c2544_profile.pg_id = 1
+ self.assertIsNotNone(
+ r_f_c2544_profile.create_single_stream(64, 2274546.67))
+
+ def test_create_single_stream_no_pg_id(self):
+ r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
+ r_f_c2544_profile._create_single_packet = mock.MagicMock()
+ r_f_c2544_profile.pg_id = 0
+ self.assertIsNotNone(
+ r_f_c2544_profile.create_single_stream(64, 2274546.67))
+
+ def test_execute_latency(self):
+ traffic_generator = mock.Mock(autospec=TrexProfile)
+ traffic_generator.my_ports = [0, 1]
+ traffic_generator.priv_ports = [-1]
+ traffic_generator.pub_ports = [1]
+ traffic_generator.client = \
+ mock.Mock(return_value=True)
+ r_f_c2544_profile = RFC2544Profile(self.TRAFFIC_PROFILE)
+ r_f_c2544_profile.params = self.PROFILE
+ r_f_c2544_profile.first_run = True
+ samples = {}
+ for ifname in range(1):
+ name = "xe{}".format(ifname)
+ samples[name] = {"rx_throughput_fps": 20,
+ "tx_throughput_fps": 20,
+ "rx_throughput_mbps": 10,
+ "tx_throughput_mbps": 10,
+ "in_packets": 1000,
+ "out_packets": 0}
+
+ samples['Throughput'] = 4549093.33
+ r_f_c2544_profile.calculate_pps = mock.Mock(return_value=[2274546.67,
+ 1.0])
+
+ self.assertEqual(None,
+ r_f_c2544_profile.execute_latency(traffic_generator,
+ samples))
+
+
if __name__ == '__main__':
unittest.main()
diff --git a/tests/unit/network_services/traffic_profile/test_traffic_profile.py b/tests/unit/network_services/traffic_profile/test_traffic_profile.py
index ec07e83a6..fd769e6e0 100644
--- a/tests/unit/network_services/traffic_profile/test_traffic_profile.py
+++ b/tests/unit/network_services/traffic_profile/test_traffic_profile.py
@@ -307,15 +307,15 @@ class TestTrexProfile(unittest.TestCase):
trex_profile = \
TrexProfile(TrafficProfile)
trex_profile.params = self.PROFILE
- trex_profile.profile_data = self.PROFILE["private"]
- self.assertIsNotNone(trex_profile.get_streams())
+ profile_data = self.PROFILE["private"]
+ self.assertIsNotNone(trex_profile.get_streams(profile_data))
trex_profile.pg_id = 1
- self.assertIsNotNone(trex_profile.get_streams())
+ self.assertIsNotNone(trex_profile.get_streams(profile_data))
trex_profile.params = self.PROFILE_v6
trex_profile.profile_data = self.PROFILE_v6["private"]
- self.assertIsNotNone(trex_profile.get_streams())
+ self.assertIsNotNone(trex_profile.get_streams(profile_data))
trex_profile.pg_id = 1
- self.assertIsNotNone(trex_profile.get_streams())
+ self.assertIsNotNone(trex_profile.get_streams(profile_data))
def test_generate_packets(self):
trex_profile = \