зеркало из https://github.com/mozilla/gecko-dev.git
128 строки
4.4 KiB
Python
128 строки
4.4 KiB
Python
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()
|