def reimport_torrents(self): """Import all torrent files in the collected torrent dir, all the files already in the database will be ignored. """ self.status_update_func("Opening TorrentDBHandler...") # TODO(emilon): That's a freakishly ugly hack. torrent_db_handler = TorrentDBHandler(self.session) torrent_db_handler.category = Category() # TODO(emilon): It would be nice to drop the corrupted torrent data from the store as a bonus. self.status_update_func("Registering recovered torrents...") try: for infoshash_str, torrent_data in self.torrent_store.iteritems(): self.status_update_func("> %s" % infoshash_str) torrentdef = TorrentDef.load_from_memory(torrent_data) if torrentdef.is_finalized(): infohash = torrentdef.get_infohash() if not torrent_db_handler.hasTorrent(infohash): self.status_update_func( u"Registering recovered torrent: %s" % hexlify(infohash)) torrent_db_handler._addTorrentToDB( torrentdef, extra_info={"filename": infoshash_str}) finally: torrent_db_handler.close() self.db.commit_now() return self.torrent_store.flush()
def setUp(self): yield super(TestTorrentDBHandler, self).setUp() from Tribler.Core.APIImplementation.LaunchManyCore import TriblerLaunchMany from Tribler.Core.Modules.tracker_manager import TrackerManager self.session.lm = TriblerLaunchMany() self.session.lm.tracker_manager = TrackerManager(self.session) self.tdb = TorrentDBHandler(self.session) self.tdb.torrent_dir = TESTS_DATA_DIR self.tdb.category = Category() self.tdb.mypref_db = MyPreferenceDBHandler(self.session)
def setUp(self): yield super(TestTorrentChecker, self).setUp() self.session.lm.torrent_db = TorrentDBHandler(self.session) self.session.lm.torrent_checker = TorrentChecker(self.session) self.session.lm.tracker_manager = TrackerManager(self.session) self.session.lm.popularity_community = MockObject() self.torrent_checker = self.session.lm.torrent_checker self.torrent_checker._torrent_db = self.session.open_dbhandler( NTFY_TORRENTS) self.torrent_checker._torrent_db.category = Category() self.torrent_checker.listen_on_udp = lambda: None
class TriblerCategoryTest(AbstractServer): def setUp(self): super(TriblerCategoryTest, self).setUp() self.category = Category() self.category.xxx_filter.xxx_terms.add("term1") def test_category_names_none_names(self): self.category.category_info = None self.assertFalse(self.category.getCategoryNames()) def test_get_category_names(self): self.assertEquals(len(self.category.category_info), 9) def test_calculate_category_multi_file(self): torrent_info = {"info": {"files": [{"path": "/my/path/video.avi", "length": 1234}]}, "announce": "http://tracker.org", "comment": "lorem ipsum"} self.assertEquals(self.category.calculateCategory(torrent_info, "my torrent"), 'other') def test_calculate_category_single_file(self): torrent_info = {"info": {"name": "my_torrent", "length": 1234}, "announce-list": ["http://tracker.org"], "comment": "lorem ipsum"} self.assertEquals(self.category.calculateCategory(torrent_info, "my torrent"), 'other') def test_calculate_category_xxx(self): torrent_info = {"info": {"name": "term1", "length": 1234}, "announce-list": ["http://tracker.org"], "comment": "lorem ipsum"} self.assertEquals(self.category.calculateCategory(torrent_info, "my torrent"), 'xxx') def test_get_family_filter_sql(self): self.assertFalse(self.category.get_family_filter_sql()) self.category.set_family_filter(b=True) self.assertTrue(self.category.get_family_filter_sql()) def test_cmp_rank(self): self.assertEquals(cmp_rank({'bla': 3}, {'bla': 4}), 1) self.assertEquals(cmp_rank({'rank': 3}, {'bla': 4}), -1) def test_non_existent_conf_file(self): import Tribler.Core.Category.Category as category_file category_file.CATEGORY_CONFIG_FILE = "thisfiledoesnotexist.conf" test_category = Category() self.assertEqual(test_category.category_info, []) @inlineCallbacks def tearDown(self): import Tribler.Core.Category.Category as category_file category_file.CATEGORY_CONFIG_FILE = "category.conf" yield super(TriblerCategoryTest, self).tearDown()
def setUp(self, annotate=True): super(TestTorrentChecker, self).setUp(annotate=annotate) config = SessionStartupConfig() config.set_state_dir(self.getStateDir()) config.set_megacache(True) self.session = Session(config, ignore_singleton=True) self.session.start_database() self.session.lm.torrent_db = TorrentDBHandler(self.session) self.session.lm.torrent_checker = TorrentChecker(self.session) self.session.lm.tracker_manager = TrackerManager(self.session) self.torrent_checker = self.session.lm.torrent_checker self.torrent_checker._torrent_db = self.session.open_dbhandler(NTFY_TORRENTS) self.torrent_checker._torrent_db.category = Category()
def setUp(self, annotate=True): super(TestTorrentChecker, self).setUp(annotate=annotate) config = TriblerConfig() config.set_state_dir(self.getStateDir()) config.set_megacache_enabled(True) self.session = Session(config) self.session.start_database() self.session.lm.torrent_db = TorrentDBHandler(self.session) self.session.lm.torrent_checker = TorrentChecker(self.session) self.session.lm.tracker_manager = TrackerManager(self.session) self.session.lm.popularity_community = MockObject() self.torrent_checker = self.session.lm.torrent_checker self.torrent_checker._torrent_db = self.session.open_dbhandler(NTFY_TORRENTS) self.torrent_checker._torrent_db.category = Category() self.torrent_checker.listen_on_udp = lambda: None
def register(self, session, session_lock): assert isInIOThread() if not self.registered: self.registered = True self.session = session self.session_lock = session_lock # On Mac, we bundle the root certificate for the SSL validation since Twisted is not using the root # certificates provided by the system trust store. if sys.platform == 'darwin': os.environ['SSL_CERT_FILE'] = os.path.join( get_lib_path(), 'root_certs_mac.pem') if self.session.config.get_torrent_store_enabled(): from Tribler.Core.leveldbstore import LevelDbStore self.torrent_store = LevelDbStore( self.session.config.get_torrent_store_dir()) if not self.torrent_store.get_db(): raise RuntimeError( "Torrent store (leveldb) is None which should not normally happen" ) if self.session.config.get_metadata_enabled(): from Tribler.Core.leveldbstore import LevelDbStore self.metadata_store = LevelDbStore( self.session.config.get_metadata_store_dir()) if not self.metadata_store.get_db(): raise RuntimeError( "Metadata store (leveldb) is None which should not normally happen" ) # torrent collecting: RemoteTorrentHandler if self.session.config.get_torrent_collecting_enabled(): from Tribler.Core.RemoteTorrentHandler import RemoteTorrentHandler self.rtorrent_handler = RemoteTorrentHandler(self.session) # TODO(emilon): move this to a megacache component or smth if self.session.config.get_megacache_enabled(): from Tribler.Core.CacheDB.SqliteCacheDBHandler import ( PeerDBHandler, TorrentDBHandler, MyPreferenceDBHandler, VoteCastDBHandler, ChannelCastDBHandler) from Tribler.Core.Category.Category import Category self._logger.debug('tlm: Reading Session state from %s', self.session.config.get_state_dir()) self.category = Category() # create DBHandlers self.peer_db = PeerDBHandler(self.session) self.torrent_db = TorrentDBHandler(self.session) self.mypref_db = MyPreferenceDBHandler(self.session) self.votecast_db = VoteCastDBHandler(self.session) self.channelcast_db = ChannelCastDBHandler(self.session) # initializes DBHandlers self.peer_db.initialize() self.torrent_db.initialize() self.mypref_db.initialize() self.votecast_db.initialize() self.channelcast_db.initialize() from Tribler.Core.Modules.tracker_manager import TrackerManager self.tracker_manager = TrackerManager(self.session) if self.session.config.get_video_server_enabled(): self.video_server = VideoServer( self.session.config.get_video_server_port(), self.session) self.video_server.start() # IPv8 if self.session.config.get_ipv8_enabled(): from Tribler.pyipv8.ipv8.configuration import get_default_configuration ipv8_config = get_default_configuration() ipv8_config['port'] = self.session.config.get_dispersy_port() ipv8_config['address'] = self.session.config.get_ipv8_address() ipv8_config['overlays'] = [] ipv8_config['keys'] = [] # We load the keys ourselves if self.session.config.get_ipv8_bootstrap_override(): import Tribler.pyipv8.ipv8.deprecated.community as community_file community_file._DEFAULT_ADDRESSES = [ self.session.config.get_ipv8_bootstrap_override() ] community_file._DNS_ADDRESSES = [] self.ipv8 = IPv8(ipv8_config) self.session.config.set_anon_proxy_settings( 2, ("127.0.0.1", self.session.config. get_tunnel_community_socks5_listen_ports())) # Dispersy self.tftp_handler = None if self.session.config.get_dispersy_enabled(): from Tribler.dispersy.dispersy import Dispersy from Tribler.dispersy.endpoint import MIMEndpoint from Tribler.dispersy.endpoint import IPv8toDispersyAdapter # set communication endpoint if self.session.config.get_ipv8_enabled(): dispersy_endpoint = IPv8toDispersyAdapter( self.ipv8.endpoint) else: dispersy_endpoint = MIMEndpoint( self.session.config.get_dispersy_port()) working_directory = unicode( self.session.config.get_state_dir()) self.dispersy = Dispersy(dispersy_endpoint, working_directory) self.dispersy.statistics.enable_debug_statistics(False) # register TFTP service from Tribler.Core.TFTP.handler import TftpHandler self.tftp_handler = TftpHandler(self.session, dispersy_endpoint, "fffffffd".decode('hex'), block_size=1024) self.tftp_handler.initialize() # Torrent search if self.session.config.get_torrent_search_enabled( ) or self.session.config.get_channel_search_enabled(): self.search_manager = SearchManager(self.session) self.search_manager.initialize() if not self.initComplete: self.init() self.session.add_observer(self.on_tribler_started, NTFY_TRIBLER, [NTFY_STARTED]) self.session.notifier.notify(NTFY_TRIBLER, NTFY_STARTED, None) return self.startup_deferred
def test_non_existent_conf_file(self): import Tribler.Core.Category.Category as category_file category_file.CATEGORY_CONFIG_FILE = "thisfiledoesnotexist.conf" test_category = Category() self.assertEqual(test_category.category_info, [])
def setUp(self, annotate=True): super(TriblerCategoryTest, self).setUp(annotate=annotate) self.category = Category() self.category.xxx_filter.xxx_terms.add("term1")
def register(self, session, session_lock): assert isInIOThread() if not self.registered: self.registered = True self.session = session self.session_lock = session_lock # On Mac, we bundle the root certificate for the SSL validation since Twisted is not using the root # certificates provided by the system trust store. if sys.platform == 'darwin': os.environ['SSL_CERT_FILE'] = os.path.join( get_lib_path(), 'root_certs_mac.pem') if self.session.config.get_torrent_store_enabled(): from Tribler.Core.leveldbstore import LevelDbStore self.torrent_store = LevelDbStore( self.session.config.get_torrent_store_dir()) if self.session.config.get_metadata_enabled(): from Tribler.Core.leveldbstore import LevelDbStore self.metadata_store = LevelDbStore( self.session.config.get_metadata_store_dir()) # torrent collecting: RemoteTorrentHandler if self.session.config.get_torrent_collecting_enabled(): from Tribler.Core.RemoteTorrentHandler import RemoteTorrentHandler self.rtorrent_handler = RemoteTorrentHandler(self.session) # TODO(emilon): move this to a megacache component or smth if self.session.config.get_megacache_enabled(): from Tribler.Core.CacheDB.SqliteCacheDBHandler import ( PeerDBHandler, TorrentDBHandler, MyPreferenceDBHandler, VoteCastDBHandler, ChannelCastDBHandler) from Tribler.Core.Category.Category import Category self._logger.debug('tlm: Reading Session state from %s', self.session.config.get_state_dir()) self.category = Category() # create DBHandlers self.peer_db = PeerDBHandler(self.session) self.torrent_db = TorrentDBHandler(self.session) self.mypref_db = MyPreferenceDBHandler(self.session) self.votecast_db = VoteCastDBHandler(self.session) self.channelcast_db = ChannelCastDBHandler(self.session) # initializes DBHandlers self.peer_db.initialize() self.torrent_db.initialize() self.mypref_db.initialize() self.votecast_db.initialize() self.channelcast_db.initialize() from Tribler.Core.Modules.tracker_manager import TrackerManager self.tracker_manager = TrackerManager(self.session) if self.session.config.get_video_server_enabled(): self.video_server = VideoServer( self.session.config.get_video_server_port(), self.session) self.video_server.start() # Dispersy self.tftp_handler = None if self.session.config.get_dispersy_enabled(): from Tribler.dispersy.dispersy import Dispersy from Tribler.dispersy.endpoint import StandaloneEndpoint # set communication endpoint endpoint = StandaloneEndpoint( self.session.config.get_dispersy_port()) working_directory = unicode( self.session.config.get_state_dir()) self.dispersy = Dispersy(endpoint, working_directory) # register TFTP service from Tribler.Core.TFTP.handler import TftpHandler self.tftp_handler = TftpHandler(self.session, endpoint, "fffffffd".decode('hex'), block_size=1024) self.tftp_handler.initialize() if self.session.config.get_torrent_search_enabled( ) or self.session.config.get_channel_search_enabled(): self.search_manager = SearchManager(self.session) self.search_manager.initialize() if not self.initComplete: self.init() self.session.add_observer(self.on_tribler_started, NTFY_TRIBLER, [NTFY_STARTED]) self.session.notifier.notify(NTFY_TRIBLER, NTFY_STARTED, None) return self.startup_deferred
def register(self, session, sesslock): assert isInIOThread() if not self.registered: self.registered = True self.session = session self.sesslock = sesslock if self.session.get_torrent_store(): from Tribler.Core.leveldbstore import LevelDbStore self.torrent_store = LevelDbStore( self.session.get_torrent_store_dir()) if self.session.get_enable_metadata(): from Tribler.Core.leveldbstore import LevelDbStore self.metadata_store = LevelDbStore( self.session.get_metadata_store_dir()) # torrent collecting: RemoteTorrentHandler if self.session.get_torrent_collecting(): from Tribler.Core.RemoteTorrentHandler import RemoteTorrentHandler self.rtorrent_handler = RemoteTorrentHandler(self.session) # TODO(emilon): move this to a megacache component or smth if self.session.get_megacache(): from Tribler.Core.CacheDB.SqliteCacheDBHandler import ( PeerDBHandler, TorrentDBHandler, MyPreferenceDBHandler, VoteCastDBHandler, ChannelCastDBHandler) from Tribler.Core.Category.Category import Category self._logger.debug('tlm: Reading Session state from %s', self.session.get_state_dir()) self.category = Category() # create DBHandlers self.peer_db = PeerDBHandler(self.session) self.torrent_db = TorrentDBHandler(self.session) self.mypref_db = MyPreferenceDBHandler(self.session) self.votecast_db = VoteCastDBHandler(self.session) self.channelcast_db = ChannelCastDBHandler(self.session) # initializes DBHandlers self.peer_db.initialize() self.torrent_db.initialize() self.mypref_db.initialize() self.votecast_db.initialize() self.channelcast_db.initialize() from Tribler.Core.Modules.tracker_manager import TrackerManager self.tracker_manager = TrackerManager(self.session) self.tracker_manager.initialize() if self.session.get_videoserver_enabled(): self.video_server = VideoServer( self.session.get_videoserver_port(), self.session) self.video_server.start() # Dispersy self.tftp_handler = None if self.session.get_dispersy(): from Tribler.dispersy.dispersy import Dispersy from Tribler.dispersy.endpoint import StandaloneEndpoint # set communication endpoint endpoint = StandaloneEndpoint(self.session.get_dispersy_port(), ip=self.session.get_ip()) working_directory = unicode(self.session.get_state_dir()) self.dispersy = Dispersy(endpoint, working_directory) # register TFTP service from Tribler.Core.TFTP.handler import TftpHandler self.tftp_handler = TftpHandler(self.session, endpoint, "fffffffd".decode('hex'), block_size=1024) self.tftp_handler.initialize() if self.session.get_enable_torrent_search( ) or self.session.get_enable_channel_search(): self.search_manager = SearchManager(self.session) self.search_manager.initialize() if not self.initComplete: self.init() self.session.add_observer(self.on_tribler_started, NTFY_TRIBLER, [NTFY_STARTED]) self.session.notifier.notify(NTFY_TRIBLER, NTFY_STARTED, None) return self.startup_deferred
def setUp(self): super(TriblerCategoryTest, self).setUp() self.category = Category() self.category.xxx_filter.xxx_terms.add("term1")