aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAce Lee <liyin11@huawei.com>2017-09-15 06:14:19 +0000
committerJing Lu <lvjing5@huawei.com>2017-10-12 01:38:29 +0000
commit4608b2d7a467344cde6208eaa5d0db58d7d7d42f (patch)
tree79215d5b7b02142d4dd1abd23277a1b591dbc5df
parentd6b148980fb78d99ed99985bf578ce285ead51d6 (diff)
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 <liyin11@huawei.com> (cherry picked from commit 10f85b332c4b1f55e651aeb9c45b328e1ebdc2af)
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml4
-rw-r--r--tests/unit/benchmark/scenarios/networking/test_iperf3.py22
-rw-r--r--yardstick/benchmark/scenarios/networking/iperf3.py20
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: