Merge "Bugfix: task_id parameter from API can not pass to yardstick core"
[yardstick.git] / yardstick / benchmark / scenarios / networking / netperf_node.py
index 1578da7..fd9fa0a 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,7 +61,7 @@ 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)
@@ -86,9 +90,8 @@ class NetperfNode(base.Scenario):
         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',
@@ -97,14 +100,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")
 
@@ -131,10 +134,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"),
@@ -151,7 +156,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)
@@ -167,13 +172,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",
@@ -199,7 +204,8 @@ def _test():    # pragma: no cover
 
     netperf = NetperfNode(args, ctx)
     netperf.run(result)
-    print result
+    print(result)
+
 
 if __name__ == '__main__':
     _test()