Merge "Add host&targer in scenario['options']['server_name'] support"
[yardstick.git] / yardstick / benchmark / scenarios / networking / netperf_node.py
index 87aa8d7..d52e6b9 100755 (executable)
@@ -7,9 +7,13 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 # bulk data test and req/rsp test are supported
-import pkg_resources
+from __future__ import absolute_import
+from __future__ import print_function
+
 import logging
-import json
+
+import pkg_resources
+from oslo_serialization import jsonutils
 
 import yardstick.ssh as ssh
 from yardstick.benchmark.scenarios import base
@@ -57,36 +61,26 @@ class NetperfNode(base.Scenario):
         self.setup_done = False
 
     def setup(self):
-        '''scenario setup'''
+        """scenario setup"""
         self.target_script = pkg_resources.resource_filename(
             'yardstick.benchmark.scenarios.networking',
             NetperfNode.TARGET_SCRIPT)
         host = self.context_cfg['host']
-        host_user = host.get('user', 'ubuntu')
-        host_ip = host.get('ip', None)
         target = self.context_cfg['target']
-        target_user = target.get('user', 'ubuntu')
-        target_ip = target.get('ip', None)
-        self.target_ip = target.get('ip', None)
-        host_password = host.get('password', None)
-        target_password = target.get('password', None)
+        self.target_ip = target['ip']
 
-        LOG.info("host_pw:%s, target_pw:%s", host_password, target_password)
         # netserver start automatically during the vm boot
-        LOG.info("user:%s, target:%s", target_user, target_ip)
-        self.server = ssh.SSH(target_user, target_ip,
-                              password=target_password)
+        LOG.info("user:%s, target:%s", target['user'], target['ip'])
+        self.server = ssh.SSH.from_node(target, defaults={"user": "ubuntu"})
         self.server.wait(timeout=600)
 
-        LOG.info("user:%s, host:%s", host_user, host_ip)
-        self.client = ssh.SSH(host_user, host_ip,
-                              password=host_password)
+        LOG.info("user:%s, host:%s", host['user'], host['ip'])
+        self.client = ssh.SSH.from_node(host, defaults={"user": "ubuntu"})
         self.client.wait(timeout=600)
 
         # copy script to host
-        self.client.run("cat > ~/netperf.sh",
-                        stdin=open(self.target_script, "rb"))
-
+        with open(self.target_script, "rb") as file_run:
+            self.client.run("cat > ~/netperf.sh", stdin=file_run)
         # copy script to host and client
         self.install_script = pkg_resources.resource_filename(
             'yardstick.benchmark.scenarios.networking',
@@ -95,14 +89,14 @@ class NetperfNode(base.Scenario):
             'yardstick.benchmark.scenarios.networking',
             NetperfNode.REMOVE_SCRIPT)
 
-        self.server.run("cat > ~/netperf_install.sh",
-                        stdin=open(self.install_script, "rb"))
-        self.client.run("cat > ~/netperf_install.sh",
-                        stdin=open(self.install_script, "rb"))
-        self.server.run("cat > ~/netperf_remove.sh",
-                        stdin=open(self.remove_script, "rb"))
-        self.client.run("cat > ~/netperf_remove.sh",
-                        stdin=open(self.remove_script, "rb"))
+        with open(self.install_script, "rb") as file_install:
+            self.server.run("cat > ~/netperf_install.sh", stdin=file_install)
+        with open(self.install_script, "rb") as file_install:
+            self.client.run("cat > ~/netperf_install.sh", stdin=file_install)
+        with open(self.remove_script, "rb") as file_remove:
+            self.server.run("cat > ~/netperf_remove.sh", stdin=file_remove)
+        with open(self.remove_script, "rb") as file_remove:
+            self.client.run("cat > ~/netperf_remove.sh", stdin=file_remove)
         self.server.execute("sudo bash netperf_install.sh")
         self.client.execute("sudo bash netperf_install.sh")
 
@@ -129,10 +123,12 @@ class NetperfNode(base.Scenario):
         else:
             testlen = 20
 
-        cmd_args = "-H %s -l %s -t %s" % (ipaddr, testlen, testname)
+        cmd_args = "-H %s -l %s -t %s -c -C" % (ipaddr, testlen, testname)
 
         # get test specific options
-        default_args = "-O 'THROUGHPUT,THROUGHPUT_UNITS,MEAN_LATENCY'"
+        output_opt = options.get(
+            "output_opt", "THROUGHPUT,THROUGHPUT_UNITS,MEAN_LATENCY")
+        default_args = "-O %s" % output_opt
         cmd_args += " -- %s" % default_args
         option_pair_list = [("send_msg_size", "-m"),
                             ("recv_msg_size", "-M"),
@@ -149,7 +145,7 @@ class NetperfNode(base.Scenario):
         if status:
             raise RuntimeError(stderr)
 
-        result.update(json.loads(stdout))
+        result.update(jsonutils.loads(stdout))
 
         if result['mean_latency'] == '':
             raise RuntimeError(stdout)
@@ -165,13 +161,13 @@ class NetperfNode(base.Scenario):
                 (mean_latency, sla_max_mean_latency)
 
     def teardown(self):
-        '''remove netperf from nodes after test'''
+        """remove netperf from nodes after test"""
         self.server.execute("sudo bash netperf_remove.sh")
         self.client.execute("sudo bash netperf_remove.sh")
 
 
 def _test():    # pragma: no cover
-    '''internal test function'''
+    """internal test function"""
     ctx = {
         "host": {
             "ip": "192.168.10.10",
@@ -197,7 +193,8 @@ def _test():    # pragma: no cover
 
     netperf = NetperfNode(args, ctx)
     netperf.run(result)
-    print result
+    print(result)
+
 
 if __name__ == '__main__':
     _test()