async def setUp(self): await TriblerCoreTest.setUp(self) self.download = Download(Mock(), None) mock_handle = MockObject() mock_status = MockObject() mock_status.pieces = [True, False, True, True, False] torrent_info = MockObject() file_info = MockObject() file_info.size = 1234 torrent_info.file_at = lambda _: file_info map_file_result = MockObject() map_file_result.piece = 123 torrent_info.map_file = lambda _dummy1, _dummy2, _dummy3: map_file_result torrent_info.num_pieces = lambda: 5 mock_handle.is_valid = lambda: True mock_handle.status = lambda: mock_status mock_handle.get_torrent_info = lambda: torrent_info mock_handle.set_sequential_download = lambda _: None mock_handle.set_priority = lambda _: None mock_handle.prioritize_pieces = lambda _: None mock_handle.save_resume_data = lambda: None self.download.handle = mock_handle # Create a fake tdef self.download.tdef = MockObject() self.download.tdef.get_name = lambda: "ubuntu.iso" self.download.tdef.get_name_as_unicode = lambda: "ubuntu.iso" self.download.tdef.get_infohash = lambda: b'a' * 20 self.download.tdef.is_multifile_torrent = lambda: False self.download.config = DownloadConfig()
def test_getters_setters_2(self): """ Testing various getters and setters in DownloadState """ lt_status = MockObject() lt_status.state = 3 lt_status.upload_rate = 123 lt_status.download_rate = 43 lt_status.total_upload = 100 lt_status.total_download = 200 lt_status.all_time_upload = 100 lt_status.all_time_download = 200 lt_status.list_peers = 10 lt_status.list_seeds = 5 lt_status.progress = 0.75 lt_status.error = False lt_status.paused = False lt_status.state = 3 lt_status.num_pieces = 0 lt_status.pieces = [] lt_status.finished_time = 10 download_state = DownloadState(self.mock_download, lt_status, None) self.assertEqual(download_state.get_status(), DLSTATUS_DOWNLOADING) self.assertEqual(download_state.get_current_speed(UPLOAD), 123) self.assertEqual(download_state.get_current_speed(DOWNLOAD), 43) self.assertEqual(download_state.get_total_transferred(UPLOAD), 100) self.assertEqual(download_state.get_total_transferred(DOWNLOAD), 200) self.assertEqual(download_state.get_seeding_ratio(), 0.5) self.assertEqual(download_state.get_eta(), 0.25) self.assertEqual(download_state.get_num_seeds_peers(), (5, 5)) self.assertEqual(download_state.get_pieces_complete(), []) self.assertEqual(download_state.get_pieces_total_complete(), (0, 0)) self.assertEqual(download_state.get_seeding_time(), 10) lt_status.num_pieces = 6 lt_status.pieces = [1, 1, 1, 0, 0, 0] self.assertEqual(download_state.get_pieces_complete(), [1, 1, 1, 0, 0, 0]) self.assertEqual(download_state.get_pieces_total_complete(), (6, 3)) self.mock_download.config = MockObject() self.mock_download.config.get_selected_files = lambda: ['test'] self.assertEqual(download_state.get_selected_files(), ['test']) self.assertEqual(download_state.get_progress(), 0.75)
def create_mock_status(self): status = MockObject() status.state = 3 status.upload_rate = 123 status.download_rate = 43 status.upload_payload_rate = 123 status.download_payload_rate = 43 status.total_upload = 100 status.total_download = 200 status.all_time_upload = 100 status.all_time_download = 200 status.list_peers = 10 status.list_seeds = 5 status.progress = 0.75 status.error = False status.paused = False status.state = 3 status.num_pieces = 0 status.pieces = [] return status
def test_get_availability(self): """ Testing whether the right availability of a file is returned """ mock_ltstate = MockObject() mock_ltstate.pieces = [True] download_state = DownloadState(self.mock_download, mock_ltstate, 0.6) download_state.get_peerlist = lambda: [] self.assertEqual(download_state.get_availability(), 0) download_state.get_peerlist = lambda: [{'completed': 1.0}] self.assertEqual(download_state.get_availability(), 1.0) download_state.get_peerlist = lambda: [{'completed': 0.6}] self.assertEqual(download_state.get_availability(), 0.0) download_state.lt_status.pieces = [0, 0, 0, 0, 0] download_state.get_peerlist = lambda: [{'completed': 0}, {'have': [1, 1, 1, 1, 0]}] self.assertEqual(download_state.get_availability(), 0.8) # Test whether inaccurate piece information from other peers is ignored download_state.get_peerlist = lambda: [{'completed': 0.5, 'have': [1, 0]}, {'completed': 0.9, 'have': [1, 0, 1]}] self.assertEqual(download_state.get_availability(), 0.0)