diff --git a/EDMarketConnector.py b/EDMarketConnector.py index a44a465d..ab893b50 100755 --- a/EDMarketConnector.py +++ b/EDMarketConnector.py @@ -127,8 +127,19 @@ if __name__ == '__main__': # noqa: C901 nargs='*' ) + parser.add_argument( + '--capi-pretend-down', + help='Force to raise ServerError on any CAPI query', + action='store_true' + ) + args = parser.parse_args() + if args.capi_pretend_down: + import config as conf_module + logger.info('Pretending CAPI is down') + conf_module.capi_pretend_down = True + level_to_set: Optional[int] = None if args.trace or args.trace_on: level_to_set = logging.TRACE # type: ignore # it exists diff --git a/companion.py b/companion.py index 6ad2bc01..08c92b7d 100644 --- a/companion.py +++ b/companion.py @@ -24,6 +24,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, OrderedDic import requests +import config as conf_module from config import appname, appversion, config from edmc_data import companion_category_map as category_map from EDMCLogging import get_main_logger @@ -563,8 +564,11 @@ class Session(object): logger.error('cannot make a query when unauthorized') raise CredentialsError('cannot make a query when unauthorized') + logger.trace_if('capi.query', 'Trying...') + if conf_module.capi_pretend_down: + raise ServerConnectionError(f'Pretending CAPI down: {endpoint}') + try: - logger.trace_if('capi.query', 'Trying...') r = self.session.get(self.server + endpoint, timeout=timeout) # type: ignore except requests.ConnectionError as e: diff --git a/config.py b/config.py index 012eb84d..d1cfd403 100644 --- a/config.py +++ b/config.py @@ -45,6 +45,7 @@ debug_senders: List[str] = [] # *all* if only interested in some things. trace_on: List[str] = [] +capi_pretend_down: bool = False # This must be done here in order to avoid an import cycle with EDMCLogging. # Other code should use EDMCLogging.get_main_logger if os.getenv("EDMC_NO_UI"):