def test_httpsession_timeout(self): test_deferred = Deferred() def on_fake_connect_to_tracker(): session.start_timeout() session.result_deferred = Deferred() return session.result_deferred def on_fake_timeout(): session.timeout_called = True timeout_func() def on_error(failure): failure.trap(ValueError) self.assertTrue(session.timeout_called) test_deferred.callback(None) session = HttpTrackerSession("localhost", ("localhost", 80), "/announce", 1) timeout_func = session.on_timeout session.timeout_called = False session.on_timeout = on_fake_timeout session.connect_to_tracker = on_fake_connect_to_tracker session.connect_to_tracker().addErrback(on_error) return test_deferred
def test_httpsession_unicode_err(self): session = HttpTrackerSession("retracker.local", ("retracker.local", 80), u"/announce?comment=%26%23%3B%28%2C%29%5B%5D%E3%5B%D4%E8%EB%FC%EC%EE%E2", 5) test_deferred = Deferred() def on_error(failure): failure.trap(UnicodeEncodeError) self.assertTrue(isinstance(failure.value, UnicodeEncodeError)) test_deferred.callback(None) session.connect_to_tracker().addErrback(on_error) return test_deferred
def test_task_select_tracker(self): self.torrent_checker._torrent_db.addExternalTorrentNoDef( 'a' * 20, 'ubuntu.iso', [['a.test', 1234]], ['http://google.com/announce'], 5) controlled_session = HttpTrackerSession(None, None, None, None) controlled_session.connect_to_tracker = lambda: Deferred() self.torrent_checker._create_session_for_request = lambda *args, **kwargs: controlled_session self.torrent_checker._task_select_tracker() self.assertEqual(len(controlled_session.infohash_list), 1)
def test_task_select_tracker(self): with db_session: tracker = self.session.lm.mds.TrackerState(url="http://localhost/tracker") self.session.lm.mds.TorrentState(infohash='a' * 20, seeders=5, leechers=10, trackers={tracker}) controlled_session = HttpTrackerSession(None, None, None, None) controlled_session.connect_to_tracker = lambda: Deferred() self.torrent_checker._create_session_for_request = lambda *args, **kwargs: controlled_session self.torrent_checker.check_random_tracker() self.assertEqual(len(controlled_session.infohash_list), 1)