예제 #1
0
    def test_multifile_torrent(self):
        tdef = TorrentDef()

        dn = os.path.join(TESTS_DATA_DIR, "contentdir")
        tdef.add_content(dn, "dirintorrent")

        fn = os.path.join(TESTS_DATA_DIR, "video.avi")
        tdef.add_content(fn, os.path.join("dirintorrent", "video.avi"))

        tdef.set_tracker("http://tribler.org/announce")
        tdef.finalize()

        impl = LibtorrentDownloadImpl(self.session, tdef)
        # Override the add_torrent because it will be called
        impl.ltmgr = MockObject()
        impl.ltmgr.add_torrent = lambda _, _dummy2: fake_handler
        impl.set_selected_files = lambda: None
        fake_handler = MockObject()
        fake_handler.is_valid = lambda: True
        fake_handler.status = lambda: fake_status
        fake_handler.set_share_mode = lambda _: None
        fake_handler.resume = lambda: None
        fake_handler.resolve_countries = lambda _: None
        fake_status = MockObject()
        fake_status.share_mode = False
        # Create a dummy download config
        impl.dlconfig = DownloadStartupConfig().dlconfig.copy()
        # Create a dummy pstate
        pstate = CallbackConfigParser()
        pstate.add_section("state")
        test_dict = dict()
        test_dict["a"] = "b"
        pstate.set("state", "engineresumedata", test_dict)
        return impl.network_create_engine_wrapper(pstate)
예제 #2
0
    def test_downloadconfig(self):
        dlconf = CallbackConfigParser()
        dlconf.add_section('downloadconfig')
        dlconf.set('downloadconfig', 'hops', 5)
        dlcfg = DownloadConfigInterface(dlconf)

        self.assertIsInstance(dlcfg.get_dest_dir(), unicode)
        dlcfg.set_dest_dir(self.session_base_dir)
        self.assertEqual(dlcfg.get_dest_dir(), self.session_base_dir)

        dlcfg.set_corrected_filename("foobar")
        self.assertEqual(dlcfg.get_corrected_filename(), "foobar")

        dlcfg.set_mode(1)
        self.assertEqual(dlcfg.get_mode(), 1)

        dlcfg.set_hops(4)
        self.assertEqual(dlcfg.get_hops(), 4)

        dlcfg.set_safe_seeding(False)
        self.assertFalse(dlcfg.get_safe_seeding())

        dlcfg.set_selected_files("foo.bar")
        self.assertEqual(dlcfg.get_selected_files(), ["foo.bar"])

        dlcfg.set_max_speed(UPLOAD, 1337)
        dlcfg.set_max_speed(DOWNLOAD, 1338)
        self.assertEqual(dlcfg.get_max_speed(UPLOAD), 1337)
        self.assertEqual(dlcfg.get_max_speed(DOWNLOAD), 1338)
    def test_multifile_torrent(self):
        tdef = TorrentDef()

        tdef.add_content(os.path.join(TESTS_DATA_DIR, "video.avi"))
        tdef.set_tracker("http://tribler.org/announce")
        tdef.save()

        impl = LibtorrentDownloadImpl(self.session, tdef)
        # Override the add_torrent because it will be called
        impl.ltmgr = MockObject()
        impl.ltmgr.add_torrent = lambda _, _dummy2: succeed(fake_handler)
        impl.set_selected_files = lambda: None
        fake_handler = MockObject()
        fake_handler.is_valid = lambda: True
        fake_handler.status = lambda: fake_status
        fake_handler.set_share_mode = lambda _: None
        fake_handler.set_priority = lambda _: None
        fake_handler.set_sequential_download = lambda _: None
        fake_handler.resume = lambda: None
        fake_handler.set_max_connections = lambda _: None
        fake_status = MockObject()
        fake_status.share_mode = False
        # Create a dummy download config
        impl.dlconfig = DownloadStartupConfig().dlconfig.copy()
        # Create a dummy pstate
        pstate = CallbackConfigParser()
        pstate.add_section("state")
        test_dict = dict()
        test_dict["a"] = "b"
        pstate.set("state", "engineresumedata", test_dict)
        return impl.network_create_engine_wrapper(pstate)
예제 #4
0
    def setup_tribler_gui_config(self):
        """
        Initialize the TriblerGUI configuration file and make sure that we have all required values.
        """
        configfilepath = os.path.join(self.get_state_dir(), STATEDIR_GUICONFIG)
        gui_config = CallbackConfigParser()
        DefaultDownloadStartupConfig.getInstance().set_dest_dir(
            get_default_dest_dir())

        # Load the config file.
        if os.path.exists(configfilepath):
            gui_config.read_file(configfilepath, 'utf-8-sig')

        if not gui_config.has_section('Tribler'):
            gui_config.add_section('Tribler')

        for k, v in tribler_defaults['Tribler'].iteritems():
            if not gui_config.has_option(k, v):
                gui_config.set('Tribler', k, v)

        if not gui_config.has_section('downloadconfig'):
            gui_config.add_section('downloadconfig')

        for k, v in DefaultDownloadStartupConfig.getInstance(
        ).dlconfig._sections['downloadconfig'].iteritems():
            if not gui_config.has_option(k, v):
                gui_config.set('downloadconfig', k, v)

        # Make sure we use the same ConfigParser instance for both Utility and DefaultDownloadStartupConfig.
        DefaultDownloadStartupConfig.getInstance().dlconfig = gui_config

        gui_config.write_file(configfilepath)
예제 #5
0
    def test_get_settings(self):
        """
        Testing whether the API returns a correct settings dictionary when the settings are requested
        """
        self.should_check_equality = False
        tribler_config = CallbackConfigParser()
        tribler_config.add_section('Tribler')
        tribler_config.write_file(os.path.join(self.session.get_state_dir(), 'tribler.conf'))

        return self.do_request('settings', expected_code=200).addCallback(self.verify_settings)
예제 #6
0
    def test_session_config_init(self):
        sessconf = CallbackConfigParser()
        sessconf.add_section('mainline_dht')
        sessconf.set('mainline_dht', 'mainline_dht_port', 1234)
        sci = SessionConfigInterface(sessconf)
        self.assertTrue(sci)

        self.assertIsInstance(sci.get_listen_port(), int)
        self.assertIsInstance(sci.get_mainline_dht_listen_port(), int)
        self.assertIsInstance(sci.get_default_state_dir(), unicode)

        sci.set_state_dir(self.session_base_dir)
        self.assertEqual(sci.get_state_dir(), self.session_base_dir)

        default_log_dir = os.path.join(self.session_base_dir, "logs")
        self.assertEqual(sci.get_log_dir(), default_log_dir)

        sci.set_log_dir(self.LOG_DIR)
        self.assertEqual(sci.get_log_dir(), self.LOG_DIR)

        self.assertIsInstance(sci.get_install_dir(), (unicode, str))
        self.assertIsInstance(sci.get_permid_keypair_filename(), str)

        sci.set_listen_port(1337)
        self.assertEqual(sci.sessconfig.get('general', 'minport'), 1337)
        self.assertEqual(sci.sessconfig.get('general', 'maxport'), 1337)

        self.assertIsInstance(sci.get_tunnel_community_socks5_listen_ports(),
                              list)
        self.assertFalse(sci.get_tunnel_community_exitnode_enabled())

        sci.set_tunnel_community_enabled(False)
        self.assertFalse(sci.get_tunnel_community_enabled())

        sci.set_megacache(False)
        self.assertFalse(sci.get_megacache())

        sci.set_libtorrent(False)
        self.assertFalse(sci.get_libtorrent())

        sci.set_libtorrent_max_conn_download(5)
        self.assertEqual(sci.get_libtorrent_max_conn_download(), 5)

        sci.set_libtorrent_max_download_rate(200)
        self.assertEqual(sci.get_libtorrent_max_download_rate(), 200)

        sci.set_libtorrent_max_upload_rate(300)
        self.assertEqual(sci.get_libtorrent_max_upload_rate(), 300)

        sci.set_libtorrent_proxy_settings(3, ("127.0.0.1", 1337),
                                          ("foo", "bar"))
        self.assertEqual(sci.get_libtorrent_proxy_settings(),
                         (3, ("127.0.0.1", 1337), ("foo", "bar")))

        sci.set_anon_proxy_settings(5, ("127.0.0.1", 1337), ("foo", "bar"))
        self.assertEqual(sci.get_anon_proxy_settings(),
                         (5, ("127.0.0.1", 1337), ("foo", "bar")))

        sci.set_libtorrent_utp(False)
        self.assertFalse(sci.get_libtorrent_utp())

        sci.set_torrent_store(False)
        self.assertFalse(sci.get_torrent_store())

        sci.set_torrent_store_dir(self.session_base_dir)
        self.assertEqual(sci.get_torrent_store_dir(), self.session_base_dir)

        sci.set_torrent_collecting(False)
        self.assertFalse(sci.get_torrent_collecting())

        sci.set_dht_torrent_collecting(False)
        self.assertFalse(sci.get_dht_torrent_collecting())

        sci.set_torrent_collecting_max_torrents(1337)
        self.assertEqual(sci.get_torrent_collecting_max_torrents(), 1337)

        sci.set_torrent_collecting_dir(self.session_base_dir)
        self.assertEqual(sci.get_torrent_collecting_dir(),
                         self.session_base_dir)

        sci.set_torrent_checking(False)
        self.assertFalse(sci.get_torrent_checking())

        sci.set_stop_collecting_threshold(1337)
        self.assertEqual(sci.get_stop_collecting_threshold(), 1337)

        sci.set_nickname("foobar")
        self.assertEqual(sci.get_nickname(), "foobar")

        self.assertEqual(sci.get_mugshot(), (None, None))
        sci.set_mugshot("myimage", mime="image/png")
        self.assertEqual(sci.get_mugshot(), ("image/png", "myimage"))

        sci.set_peer_icon_path(self.session_base_dir)
        self.assertEqual(sci.get_peer_icon_path(), self.session_base_dir)

        sci.set_video_analyser_path(self.session_base_dir)
        self.assertEqual(sci.get_video_analyser_path(), self.session_base_dir)

        sci.set_mainline_dht(False)
        self.assertFalse(sci.get_mainline_dht())

        sci.set_mainline_dht_listen_port(1337)
        self.assertEqual(
            sci.sessconfig.get('mainline_dht', 'mainline_dht_port'), 1337)

        sci.set_multicast_local_peer_discovery(False)
        self.assertFalse(sci.get_multicast_local_peer_discovery())

        sci.set_dispersy(False)
        self.assertFalse(sci.get_dispersy())

        sci.set_dispersy_port(1337)
        self.assertIsInstance(sci.get_dispersy_port(), int)
        self.assertEqual(sci.sessconfig.get('dispersy', 'dispersy_port'), 1337)

        sci.set_videoserver_enabled(False)
        self.assertFalse(sci.get_videoserver_enabled())

        sci.set_videoplayer_path(self.session_base_dir)
        self.assertEqual(sci.get_videoplayer_path(), self.session_base_dir)

        sci.set_videoserver_port(1337)
        self.assertIsInstance(sci.get_videoserver_port(), int)
        self.assertEqual(sci.sessconfig.get('video', 'port'), 1337)

        sci.set_preferred_playback_mode(5)
        self.assertEqual(sci.get_preferred_playback_mode(), 5)

        sci.set_enable_torrent_search(False)
        self.assertFalse(sci.get_enable_torrent_search())

        sci.set_enable_channel_search(False)
        self.assertFalse(sci.get_enable_channel_search())

        sci.set_enable_metadata(False)
        self.assertFalse(sci.get_enable_metadata())

        sci.set_metadata_store_dir(self.session_base_dir)
        self.assertEqual(sci.get_metadata_store_dir(), self.session_base_dir)

        sci.set_channel_community_enabled(False)
        self.assertFalse(sci.get_channel_community_enabled())

        sci.set_preview_channel_community_enabled(False)
        self.assertFalse(sci.get_preview_channel_community_enabled())

        sci.set_http_api_enabled(True)
        self.assertTrue(sci.get_http_api_enabled())

        sci.set_http_api_port(1337)
        self.assertEqual(sci.sessconfig.get('http_api', 'port'), 1337)

        sci.set_resource_monitor_enabled(False)
        self.assertFalse(sci.get_resource_monitor_enabled())

        sci.set_resource_monitor_poll_interval(12)
        self.assertEqual(sci.get_resource_monitor_poll_interval(), 12)

        sci.set_resource_monitor_history_size(1234)
        self.assertEqual(sci.get_resource_monitor_history_size(), 1234)

        self.assertIsInstance(
            sci.get_default_config_filename(self.session_base_dir), str)
예제 #7
0
파일: utility.py 프로젝트: Antiade/tribler
class Utility(object):

    def __init__(self, abcpath, configpath, app=None, session=None):

        self.version = version_id
        self.abcpath = abcpath

        # Find the directory to save config files, etc.
        self.dir_root = configpath

        self.setupConfig()

        # Is ABC in the process of shutting down?
        self.abcquitting = False

        self.app = app
        self.session = session

    def setupConfig(self):
        self.configfilepath = os.path.join(self.getConfigPath(), STATEDIR_GUICONFIG)
        self.config = CallbackConfigParser()

        # Load the config file.
        if os.path.exists(self.configfilepath):
            self.config.read_file(self.configfilepath, 'utf-8-sig')

        if not self.config.has_section('Tribler'):
            self.config.add_section('Tribler')

        # Tribler.conf also contains the default download config. So we need to merge it now.
        if not self.config.has_section('downloadconfig'):
            self.config.add_section('downloadconfig')
            for k, v in DefaultDownloadStartupConfig.getInstance().dlconfig._sections['downloadconfig'].iteritems():
                self.config.set('downloadconfig', k, v)

        # Make sure we use the same ConfigParser instance for both Utility and DefaultDownloadStartupConfig.
        DefaultDownloadStartupConfig.getInstance().dlconfig = self.config

    def getVersion(self):
        return self.version

    def getConfigPath(self):
        return self.dir_root

    def getPath(self):
        return self.abcpath

    def set_session(self, session):
        self.session = session

    def set_app(self, app):
        self.app = app

    def read_config(self, option, section='Tribler', literal_eval=True):
        if not self.config.has_option(section, option):
            return tribler_defaults.get(section, {}).get(option, None)

        return self.config.get(section, option, literal_eval=literal_eval)

    def write_config(self, option, value, section='Tribler', flush=True):
        self.config.set(section, option, value)
        if flush:
            self.flush_config()

    def flush_config(self):
        self.config.write_file(self.configfilepath)
예제 #8
0
class Utility(object):
    def __init__(self, abcpath, configpath, app=None, session=None):

        self.version = version_id
        self.abcpath = abcpath

        # Find the directory to save config files, etc.
        self.dir_root = configpath

        self.setupConfig()

        # Is ABC in the process of shutting down?
        self.abcquitting = False

        self.app = app
        self.session = session

    def setupConfig(self):
        self.configfilepath = os.path.join(self.getConfigPath(),
                                           STATEDIR_GUICONFIG)
        self.config = CallbackConfigParser()

        # Load the config file.
        if os.path.exists(self.configfilepath):
            self.config.read_file(self.configfilepath, 'utf-8-sig')

        if not self.config.has_section('Tribler'):
            self.config.add_section('Tribler')

        # Tribler.conf also contains the default download config. So we need to merge it now.
        if not self.config.has_section('downloadconfig'):
            self.config.add_section('downloadconfig')
            for k, v in DefaultDownloadStartupConfig.getInstance(
            ).dlconfig._sections['downloadconfig'].iteritems():
                self.config.set('downloadconfig', k, v)

        # Make sure we use the same ConfigParser instance for both Utility and DefaultDownloadStartupConfig.
        DefaultDownloadStartupConfig.getInstance().dlconfig = self.config

    def getVersion(self):
        return self.version

    def getConfigPath(self):
        return self.dir_root

    def getPath(self):
        return self.abcpath

    def set_session(self, session):
        self.session = session

    def set_app(self, app):
        self.app = app

    def read_config(self, option, section='Tribler', literal_eval=True):
        if not self.config.has_option(section, option):
            return tribler_defaults.get(section, {}).get(option, None)

        return self.config.get(section, option, literal_eval=literal_eval)

    def write_config(self, option, value, section='Tribler', flush=True):
        self.config.set(section, option, value)
        if flush:
            self.flush_config()

    def flush_config(self):
        self.config.write_file(self.configfilepath)