示例#1
0
    async def test_alert_mask(self) -> None:
        config = lib.create_isolated_config()
        config["session_alert_mask"] = 2

        session_service = session_lib.SessionService(alert_mask=1, config=config)

        # Test required mask was added
        settings = session_service.session.get_settings()
        self.assertEqual(settings["alert_mask"], 1 | 2)

        # Test we can add a runtime mask
        session_service.inc_alert_mask(1 | 8)
        settings = session_service.session.get_settings()
        self.assertEqual(settings["alert_mask"], 1 | 2 | 8)

        # Test we can unset alert mask via config
        config["session_alert_mask"] = 0
        async with session_service.stage_config(config):
            pass
        settings = session_service.session.get_settings()
        self.assertEqual(settings["alert_mask"], 1 | 8)

        # Test we can change alert mask via config
        config["session_alert_mask"] = 4
        async with session_service.stage_config(config):
            pass
        settings = session_service.session.get_settings()
        self.assertEqual(settings["alert_mask"], 1 | 4 | 8)

        # Test we can remove the runtime mask
        session_service.dec_alert_mask(1 | 8)
        settings = session_service.session.get_settings()
        self.assertEqual(settings["alert_mask"], 1 | 4)
示例#2
0
    async def test_blacklist(self) -> None:
        config = lib.create_isolated_config()
        config["session_user_agent"] = "test"
        session_service = session_lib.SessionService(config=config)

        # Test blacklisted setting gets replaced by libtorrent default
        settings = session_service.session.get_settings()
        self.assertNotEqual(settings["user_agent"], "test")
示例#3
0
    async def test_overrides(self) -> None:
        config = lib.create_isolated_config()
        config["session_handshake_client_version"] = "test-version"
        session_service = session_lib.SessionService(config=config)

        # Test overrides are applied
        settings = session_service.session.get_settings()
        self.assertEqual(settings["handshake_client_version"], "")
示例#4
0
    async def test_session(self) -> None:
        init_alert_mask = lt.alert_category.error | lt.alert_category.peer
        config = lib.create_isolated_config()
        config["session_handshake_client_version"] = "test-version"
        session_service = session_lib.SessionService(
            config=config, alert_mask=init_alert_mask
        )

        # Test default config is added
        session_service.session.get_settings()
        self.assertEqual(config["session_settings_base"], "default_settings")
示例#5
0
    async def test_settings_base(self) -> None:
        config = lib.create_isolated_config()
        config["session_settings_base"] = "high_performance_seed"
        session_service = session_lib.SessionService(config=config)

        settings = session_service.session.get_settings()

        # Check settings pack was applied as default
        self.assertEqual(
            settings["cache_size"], lt.high_performance_seed()["cache_size"]
        )

        # Check base pack name didn't get overwritten
        self.assertEqual(config["session_settings_base"], "high_performance_seed")
示例#6
0
    async def test_stage_revert(self) -> None:
        config = lib.create_isolated_config()
        session_service = session_lib.SessionService(config=config)

        config["session_close_redundant_connections"] = False

        async def stage_and_fail() -> None:
            async with session_service.stage_config(config):
                _raise_dummy()

        with self.assertRaises(DummyException):
            await stage_and_fail()

        settings = session_service.session.get_settings()
        self.assertEqual(settings["close_redundant_connections"], True)
示例#7
0
    async def test_reconfigure(self) -> None:
        config = lib.create_isolated_config()
        session_service = session_lib.SessionService(config=config)

        # Sanity check: close_redundant_connections should be True by default
        settings = session_service.session.get_settings()
        self.assertEqual(settings["close_redundant_connections"], True)

        # Change config
        config["session_close_redundant_connections"] = False
        async with session_service.stage_config(config):
            pass

        settings = session_service.session.get_settings()
        self.assertEqual(settings["close_redundant_connections"], False)

        # Test we can set_config with no changes
        async with session_service.stage_config(config):
            pass
        settings = session_service.session.get_settings()
        self.assertEqual(settings["close_redundant_connections"], False)
示例#8
0
def create_isolated_session_service(
    *, alert_mask: int = 0
) -> session_lib.SessionService:
    return session_lib.SessionService(
        alert_mask=alert_mask, config=create_isolated_config()
    )
示例#9
0
 async def test_alert_mask_invalid_type(self) -> None:
     with self.assertRaises(config_lib.InvalidConfigError):
         session_lib.SessionService(
             config=config_lib.Config(session_alert_mask="invalid")
         )
示例#10
0
 async def test_setting_invalid_type(self) -> None:
     with self.assertRaises(config_lib.InvalidConfigError):
         session_lib.SessionService(
             config=config_lib.Config(session_cache_size="invalid")
         )
示例#11
0
 async def test_settings_base_invalid(self) -> None:
     with self.assertRaises(config_lib.InvalidConfigError):
         session_lib.SessionService(
             config=config_lib.Config(session_settings_base="invalid")
         )