From 4608b2d7a467344cde6208eaa5d0db58d7d7d42f Mon Sep 17 00:00:00 2001 From: Ace Lee Date: Fri, 15 Sep 2017 06:14:19 +0000 Subject: Use "protocol" parameters in iperf3 yaml and task file JIRA: YARDSTICK-755 There is a history problem that iperf use udp to set a net protocol. This code will change it to protocol. so you could use 'tcp','udp' and other protocol. Change-Id: I1a101013dfe58165a3ed08aa77f0aa2f73d57a12 Signed-off-by: Ace Lee (cherry picked from commit 10f85b332c4b1f55e651aeb9c45b328e1ebdc2af) --- tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml | 4 ++-- .../benchmark/scenarios/networking/test_iperf3.py | 22 ++++++++++++++++++++-- yardstick/benchmark/scenarios/networking/iperf3.py | 20 ++++++++++++-------- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml index b2077d59e..ee36c6c82 100644 --- a/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml @@ -13,7 +13,7 @@ description: > Yardstick TC011 config file; Measure packet delay variation (jitter) using iperf3. -{% set udp = udp or "udp" %} +{% set protocol = protocol or "udp" %} {% set bandwidth = bandwidth or "20m" %} {% set length = length or "8K" %} {% set window = window or 29200 %} @@ -25,7 +25,7 @@ scenarios: - type: Iperf3 options: - udp: {{udp}} + protocol: {{protocol}} bandwidth: {{bandwidth}} length: {{length}} window: {{window}} diff --git a/tests/unit/benchmark/scenarios/networking/test_iperf3.py b/tests/unit/benchmark/scenarios/networking/test_iperf3.py index 331245357..4d3745230 100644 --- a/tests/unit/benchmark/scenarios/networking/test_iperf3.py +++ b/tests/unit/benchmark/scenarios/networking/test_iperf3.py @@ -123,7 +123,7 @@ class IperfTestCase(unittest.TestCase): self.assertRaises(AssertionError, p.run, result) def test_iperf_successful_sla_jitter(self, mock_ssh): - options = {"udp": "udp", "bandwidth": "20m"} + options = {"protocol": "udp", "bandwidth": "20m"} args = { 'options': options, 'sla': {'jitter': 10} @@ -141,7 +141,7 @@ class IperfTestCase(unittest.TestCase): self.assertEqual(result, expected_result) def test_iperf_unsuccessful_sla_jitter(self, mock_ssh): - options = {"udp": "udp", "bandwidth": "20m"} + options = {"protocol": "udp", "bandwidth": "20m"} args = { 'options': options, 'sla': {'jitter': 0.0001} @@ -156,6 +156,24 @@ class IperfTestCase(unittest.TestCase): mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') self.assertRaises(AssertionError, p.run, result) + def test_iperf_successful_tcp_protocal(self, mock_ssh): + options = {"protocol": "tcp", "nodelay": "yes"} + args = { + 'options': options, + 'sla': {'bytes_per_second': 15000000} + } + result = {} + + p = iperf3.Iperf(args, self.ctx) + mock_ssh.SSH.from_node().execute.return_value = (0, '', '') + p.host = mock_ssh.SSH.from_node() + + sample_output = self._read_sample_output(self.output_name_tcp) + mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') + expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) + p.run(result) + self.assertEqual(result, expected_result) + def test_iperf_unsuccessful_script_error(self, mock_ssh): options = {} diff --git a/yardstick/benchmark/scenarios/networking/iperf3.py b/yardstick/benchmark/scenarios/networking/iperf3.py index a3d273750..98c45990e 100644 --- a/yardstick/benchmark/scenarios/networking/iperf3.py +++ b/yardstick/benchmark/scenarios/networking/iperf3.py @@ -111,18 +111,22 @@ For more info see http://software.es.net/iperf # If there are no options specified if not options: - options = "" + options = {} use_UDP = False - if "udp" in options: - cmd += " --udp" - use_UDP = True - if "bandwidth" in options: - cmd += " --bandwidth %s" % options["bandwidth"] - else: - # tcp obviously + try: + protocol = options.get("protocol") + bandwidth = options.get('bandwidth') + use_UDP = protocol == 'udp' + if protocol: + cmd += " --" + protocol + if use_UDP and bandwidth: + cmd += " --bandwidth " + bandwidth + # if nodelay in the option, protocal maybe null or 'tcp' if "nodelay" in options: cmd += " --nodelay" + except AttributeError: + LOG.warning("Can't parser the options in your config file!!!") # these options are mutually exclusive in iperf3 if time: -- cgit 1.2.3-korg