Add get function in ssh.py 97/49597/2
authorJingLu5 <lvjing5@huawei.com>
Mon, 25 Dec 2017 01:47:16 +0000 (01:47 +0000)
committerJingLu5 <lvjing5@huawei.com>
Mon, 25 Dec 2017 01:55:52 +0000 (01:55 +0000)
JIRA: YARDSTICK-904

This task is about to implement a get function in ssh.py to
fetch desired files/folder in a remote VM to a local path.

In some test cases, test tools will produce results in files.
We want retain the original result files and archive them in
Yardstick docker for future usage.

Change-Id: Ifd333eb044ce31cffa6f5b2a8f6a46648a8858d1
Signed-off-by: JingLu5 <lvjing5@huawei.com>
tests/unit/test_ssh.py
yardstick/ssh.py

index b298c74..88699fd 100644 (file)
@@ -546,6 +546,15 @@ class TestAutoConnectSSH(unittest.TestCase):
         with mock_scp_client_type() as mock_scp_client:
             self.assertEqual(mock_scp_client.put.call_count, 1)
 
+    @mock.patch('yardstick.ssh.SCPClient')
+    def test_get(self, mock_scp_client_type):
+        auto_connect_ssh = AutoConnectSSH('user1', 'host1')
+        auto_connect_ssh._client = mock.Mock()
+
+        auto_connect_ssh.get('a', 'z')
+        with mock_scp_client_type() as mock_scp_client:
+            self.assertEqual(mock_scp_client.get.call_count, 1)
+
     def test_put_file(self):
         auto_connect_ssh = AutoConnectSSH('user1', 'host1')
         auto_connect_ssh._client = mock.Mock()
index e98ee98..6ddf327 100644 (file)
@@ -379,6 +379,12 @@ class SSH(object):
         with SCPClient(client.get_transport()) as scp:
             scp.put(files, remote_path, recursive)
 
+    def get(self, remote_path, local_path='/tmp/', recursive=True):
+        client = self._get_client()
+
+        with SCPClient(client.get_transport()) as scp:
+            scp.get(remote_path, local_path, recursive)
+
     # keep shell running in the background, e.g. screen
     def send_command(self, command):
         client = self._get_client()