diff options
Diffstat (limited to 'testing/mozharness/test/test_base_transfer.py')
-rw-r--r-- | testing/mozharness/test/test_base_transfer.py | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/testing/mozharness/test/test_base_transfer.py b/testing/mozharness/test/test_base_transfer.py new file mode 100644 index 000000000..f3f907254 --- /dev/null +++ b/testing/mozharness/test/test_base_transfer.py @@ -0,0 +1,127 @@ +import unittest +import mock + +from mozharness.base.transfer import TransferMixin + + +class GoodMockMixin(object): + def query_abs_dirs(self): + return {'abs_work_dir': ''} + + def query_exe(self, exe): + return exe + + def info(self, msg): + pass + + def log(self, msg, level): + pass + + def run_command(*args, **kwargs): + return 0 + + +class BadMockMixin(GoodMockMixin): + def run_command(*args, **kwargs): + return 1 + + +class GoodTransferMixin(TransferMixin, GoodMockMixin): + pass + + +class BadTransferMixin(TransferMixin, BadMockMixin): + pass + + +class TestTranferMixin(unittest.TestCase): + @mock.patch('mozharness.base.transfer.os') + def test_rsync_upload_dir_not_a_dir(self, os_mock): + # simulates upload dir but dir is a file + os_mock.path.isdir.return_value = False + tm = GoodTransferMixin() + self.assertEqual(tm.rsync_upload_directory( + local_path='', + ssh_key='my ssh key', + ssh_user='my ssh user', + remote_host='remote host', + remote_path='remote path',), -1) + + @mock.patch('mozharness.base.transfer.os') + def test_rsync_upload_fails_create_remote_dir(self, os_mock): + # we cannot create the remote directory + os_mock.path.isdir.return_value = True + tm = BadTransferMixin() + self.assertEqual(tm.rsync_upload_directory( + local_path='', + ssh_key='my ssh key', + ssh_user='my ssh user', + remote_host='remote host', + remote_path='remote path', + create_remote_directory=True), -2) + + @mock.patch('mozharness.base.transfer.os') + def test_rsync_upload_fails_do_not_create_remote_dir(self, os_mock): + # upload fails, remote directory is not created + os_mock.path.isdir.return_value = True + tm = BadTransferMixin() + self.assertEqual(tm.rsync_upload_directory( + local_path='', + ssh_key='my ssh key', + ssh_user='my ssh user', + remote_host='remote host', + remote_path='remote path', + create_remote_directory=False), -3) + + @mock.patch('mozharness.base.transfer.os') + def test_rsync_upload(self, os_mock): + # simulates an upload with no errors + os_mock.path.isdir.return_value = True + tm = GoodTransferMixin() + self.assertEqual(tm.rsync_upload_directory( + local_path='', + ssh_key='my ssh key', + ssh_user='my ssh user', + remote_host='remote host', + remote_path='remote path', + create_remote_directory=False), None) + + @mock.patch('mozharness.base.transfer.os') + def test_rsync_download_in_not_a_dir(self, os_mock): + # local path is not a directory + os_mock.path.isdir.return_value = False + tm = GoodTransferMixin() + self.assertEqual(tm.rsync_download_directory( + local_path='', + ssh_key='my ssh key', + ssh_user='my ssh user', + remote_host='remote host', + remote_path='remote path',), -1) + + @mock.patch('mozharness.base.transfer.os') + def test_rsync_download(self, os_mock): + # successful rsync + os_mock.path.isdir.return_value = True + tm = GoodTransferMixin() + self.assertEqual(tm.rsync_download_directory( + local_path='', + ssh_key='my ssh key', + ssh_user='my ssh user', + remote_host='remote host', + remote_path='remote path',), None) + + @mock.patch('mozharness.base.transfer.os') + def test_rsync_download_fail(self, os_mock): + # ops download has failed + os_mock.path.isdir.return_value = True + tm = BadTransferMixin() + self.assertEqual(tm.rsync_download_directory( + local_path='', + ssh_key='my ssh key', + ssh_user='my ssh user', + remote_host='remote host', + remote_path='remote path',), -3) + + +if __name__ == '__main__': + unittest.main() |