Example #1
0
    def test_run_clean_directory_list(self, mock_print):
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!')
        ])

        remote_dirs = ['', 'S', 'files', 'files', 'tmp']
        result = comm._clean_directory_list("/home", remote_dirs)
        self.assertEqual(result, ['/home/files', '/home/tmp'])
    def test_run_execute(self, mock_print):
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)
        ftp = FtpAutomaton(comm, loop, self.remote_dir, self.local_dir)
        ftp.execute()

        file = os.path.join(
            self.remote_dir,
            os.path.basename(ftp._file_enumerator.get_current_file_name()))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed')
        ])

        self.assertEqual(ftp._file_state == FileState.NeedDownload, True)
    def test_run_execute_twice(self, mock_print):

        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)
        ftp = FtpAutomaton(comm, loop, self.remote_dir, self.local_dir)
        self.assertEqual(ftp.__active__, False)
        ftp.start()
        self.assertEqual(ftp.__active__, True)

        time.sleep(ftp._interval_sec * 2 * ftp._calls_per_execute)
        self.assertEqual(ftp.__active__, True)
        ftp.stop()
        self.assertEqual(ftp.__active__, False)

        time.sleep(ftp._interval_sec * ftp._calls_per_execute)
        self.assertEqual(ftp.__active__, False)

        file = os.path.join(
            self.remote_dir,
            os.path.basename(ftp._file_enumerator.get_current_file_name()))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed'),
            call('Downloading remote file', file, 'to local directory',
                 self.local_dir),
            call('Download file failed')
        ])

        self.setUp()
Example #4
0
    def test_run_delete_remote_file(self, mock_print):
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)

        loop.run_until_complete(self.run_delete_remote_file(comm))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('Deleting remote file', '/home/files/file1.txt'),
            call('Deleting file failed')
        ])
Example #5
0
    def test_run_are_files_identical(self, mock_print):
        self.setUp()
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)

        loop.run_until_complete(self.run_are_files_identical(comm))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('Checking if files are identical failed')
        ])
Example #6
0
    def test_run_list_directory(self, mock_print):
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)

        loop.run_until_complete(self.run_list_directory(comm))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('List remote directory for', '/home:'),
            call('List directory failed')
        ])
    def test_run_check_files_identical_file_does_not_exist(self, mock_print):
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)
        ftp = FtpAutomaton(comm, loop, self.remote_dir, self.local_dir)
        ftp._file_state = FileState.NeedIdenticalCheck

        loop.run_until_complete(self.check_files_identical(ftp))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('Local file does not exist. Retrying download')
        ])

        self.assertEqual(ftp._file_state == FileState.NeedDownload, True)

        self.setUp()
    def test_run_check_files_identical(self, mock_print):
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)
        ftp = FtpAutomaton(comm, loop, self.remote_dir, self.local_dir)
        ftp._file_state = FileState.NeedIdenticalCheck

        file = open(ftp._file_enumerator.get_current_file_name(), 'w')
        file.write("Test")
        file.close()

        loop.run_until_complete(self.check_files_identical(ftp))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('Checking if files are identical failed')
        ])

        self.assertEqual(ftp._file_state == FileState.NeedIdenticalCheck, True)

        self.setUp()
    def test_run_delete_remote_file(self, mock_print):
        loop = asyncio.get_event_loop()
        comm = Comm(loop, self.mavsdk_server_address, self.mavsdk_server_port,
                    self.device, self.baudrate)
        ftp = FtpAutomaton(comm, loop, self.remote_dir, self.local_dir)
        ftp._file_state = FileState.NeedDelete

        loop.run_until_complete(self.delete_remote_file(ftp))

        file = os.path.join(
            self.remote_dir,
            os.path.basename(ftp._file_enumerator.get_current_file_name()))

        self.assertEqual(mock_print.mock_calls, [
            call('Waiting for mavsdk_server to be ready...'),
            call('Connected to mavsdk_server!'),
            call('Deleting remote file', file),
            call('Deleting file failed')
        ])

        self.assertEqual(ftp._file_state == FileState.NeedDelete, True)

        self.setUp()
Example #10
0
def run_ground_mode(conf):
    loop = asyncio.get_event_loop()
    comm = Comm(loop, conf.mavsdk_server_address, conf.mavsdk_server_port,
                conf.comm_device, conf.comm_baudrate)
    a = FtpAutomaton(comm, loop, conf.sat_final_dir, conf.downloaded_files_dir)
    a.start()