Merge "ssh.py: add flag to request for a pseudo terminal (pty) for ssh connection"
[yardstick.git] / yardstick / benchmark / scenarios / networking / networkcapacity.py
index 57d3b50..250f7ea 100644 (file)
@@ -1,69 +1,70 @@
-##############################################################################\r
-# Copyright (c) 2016 Huawei Technologies Co.,Ltd and others.\r
-#\r
-# All rights reserved. This program and the accompanying materials\r
-# are made available under the terms of the Apache License, Version 2.0\r
-# which accompanies this distribution, and is available at\r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-##############################################################################\r
-import pkg_resources\r
-import logging\r
-import json\r
-\r
-import yardstick.ssh as ssh\r
-from yardstick.benchmark.scenarios import base\r
-\r
-LOG = logging.getLogger(__name__)\r
-\r
-\r
-class NetworkCapacity(base.Scenario):\r
-    """Measure Network capacity and scale.\r
-\r
-    This scenario reads network status including number of connections,\r
-    number of frames sent/received.\r
-    """\r
-    __scenario_type__ = "NetworkCapacity"\r
-    TARGET_SCRIPT = "networkcapacity.bash"\r
-\r
-    def __init__(self, scenario_cfg, context_cfg):\r
-        self.scenario_cfg = scenario_cfg\r
-        self.context_cfg = context_cfg\r
-        self.setup_done = False\r
-\r
-    def setup(self):\r
-        """scenario setup"""\r
-        self.target_script = pkg_resources.resource_filename(\r
-            "yardstick.benchmark.scenarios.networking",\r
-            NetworkCapacity.TARGET_SCRIPT)\r
-\r
-        host = self.context_cfg['host']\r
-        if host is None:\r
-            raise RuntimeError('No right node.please check the configuration')\r
-        host_user = host.get('user', 'ubuntu')\r
-        host_ip = host.get('ip', None)\r
-        host_pwd = host.get('password', None)\r
-\r
-        LOG.debug("user:%s, host:%s", host_user, host_ip)\r
-        self.client = ssh.SSH(host_user, host_ip, password=host_pwd)\r
-        self.client.wait(timeout=600)\r
-\r
-        # copy script to host\r
-        self.client.run("cat > ~/networkcapacity.sh",\r
-                        stdin=open(self.target_script, 'rb'))\r
-\r
-        self.setup_done = True\r
-\r
-    def run(self, result):\r
-        """execute the benchmark"""\r
-\r
-        if not self.setup_done:\r
-            self.setup()\r
-\r
-        cmd = "sudo bash networkcapacity.sh"\r
-\r
-        LOG.debug("Executing command: %s", cmd)\r
-        status, stdout, stderr = self.client.execute(cmd)\r
-        if status:\r
-            raise RuntimeError(stderr)\r
-\r
-        result.update(json.loads(stdout))\r
+##############################################################################
+# Copyright (c) 2016 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+import pkg_resources
+import logging
+import json
+
+import yardstick.ssh as ssh
+from yardstick.benchmark.scenarios import base
+
+LOG = logging.getLogger(__name__)
+
+
+class NetworkCapacity(base.Scenario):
+    """Measure Network capacity and scale.
+
+    This scenario reads network status including number of connections,
+    number of frames sent/received.
+    """
+    __scenario_type__ = "NetworkCapacity"
+    TARGET_SCRIPT = "networkcapacity.bash"
+
+    def __init__(self, scenario_cfg, context_cfg):
+        self.scenario_cfg = scenario_cfg
+        self.context_cfg = context_cfg
+        self.setup_done = False
+
+    def setup(self):
+        """scenario setup"""
+        self.target_script = pkg_resources.resource_filename(
+            "yardstick.benchmark.scenarios.networking",
+            NetworkCapacity.TARGET_SCRIPT)
+
+        host = self.context_cfg['host']
+        if host is None:
+            raise RuntimeError('No right node.please check the configuration')
+        host_user = host.get('user', 'ubuntu')
+        ssh_port = host.get("ssh_port", ssh.DEFAULT_PORT)
+        host_ip = host.get('ip', None)
+        host_pwd = host.get('password', None)
+
+        LOG.debug("user:%s, host:%s", host_user, host_ip)
+        self.client = ssh.SSH(host_user, host_ip, password=host_pwd,
+                              port=ssh_port)
+        self.client.wait(timeout=600)
+
+        # copy script to host
+        self.client._put_file_shell(self.target_script, '~/networkcapacity.sh')
+
+        self.setup_done = True
+
+    def run(self, result):
+        """execute the benchmark"""
+
+        if not self.setup_done:
+            self.setup()
+
+        cmd = "sudo bash networkcapacity.sh"
+
+        LOG.debug("Executing command: %s", cmd)
+        status, stdout, stderr = self.client.execute(cmd)
+        if status:
+            raise RuntimeError(stderr)
+
+        result.update(json.loads(stdout))