]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
Add Remote._sftp_get_size()
authorZack Cerza <zack@redhat.com>
Wed, 18 May 2016 15:05:04 +0000 (09:05 -0600)
committerZack Cerza <zack@redhat.com>
Wed, 18 May 2016 17:40:53 +0000 (11:40 -0600)
Signed-off-by: Zack Cerza <zack@redhat.com>
teuthology/orchestra/remote.py
teuthology/orchestra/test/test_remote.py

index 668ba56ff8493931ab8cf30fd8a11b25f3fe566a..39f2d05a4ced31348f8f003e9adaceda4abcb8c1 100644 (file)
@@ -276,6 +276,13 @@ class Remote(object):
         sftp = self.ssh.open_sftp()
         return sftp.open(remote_path)
 
+    def _sftp_get_size(self, remote_path):
+        """
+        Via _sftp_open_file, return the filesize in bytes
+        """
+        with self._sftp_open_file(remote_path) as f:
+            return f.stat().st_size
+
     def remove(self, path):
         self.run(args=['rm', '-fr', path])
 
index 612a0ca4008e615a060e84da7bb78f14ac6a4105..fd693ec059713c084e0c4be334d534070272d755 100644 (file)
@@ -163,3 +163,16 @@ class TestRemote(object):
             assert rem._sftp_open_file('x').stat().st_size == 42
             with rem._sftp_open_file('x') as f:
                 assert f == m_file_obj
+
+    def test_sftp_get_size(self):
+        m_file_obj = MagicMock()
+        m_stat = Mock()
+        m_stat.st_size = 42
+        m_file_obj.stat.return_value = m_stat
+        m_open = MagicMock()
+        m_open.return_value = m_file_obj
+        m_open.return_value.__enter__.return_value = m_file_obj
+        with patch.object(remote.Remote, '_sftp_open_file', new=m_open):
+            rem = remote.Remote(name='jdoe@xyzzy.example.com', ssh=self.m_ssh)
+            assert rem._sftp_get_size('/fake/file') == 42
+