tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

wave_server.py (5562B)


      1 # mypy: allow-untyped-defs
      2 
      3 import os
      4 import logging
      5 
      6 from . import configuration_loader
      7 
      8 from .network.http_handler import HttpHandler
      9 from .network.api.sessions_api_handler import SessionsApiHandler
     10 from .network.api.tests_api_handler import TestsApiHandler
     11 from .network.api.results_api_handler import ResultsApiHandler
     12 from .network.api.devices_api_handler import DevicesApiHandler
     13 from .network.api.general_api_handler import GeneralApiHandler
     14 from .network.static_handler import StaticHandler
     15 
     16 from .testing.sessions_manager import SessionsManager
     17 from .testing.results_manager import ResultsManager
     18 from .testing.tests_manager import TestsManager
     19 from .testing.devices_manager import DevicesManager
     20 from .testing.test_loader import TestLoader
     21 from .testing.event_dispatcher import EventDispatcher
     22 
     23 VERSION_STRING = "v3.3.0"
     24 
     25 
     26 class WaveServer:
     27    def initialize(self,
     28                   tests,
     29                   configuration_file_path=None,
     30                   application_directory_path=None,
     31                   reports_enabled=None):
     32        if configuration_file_path is None:
     33            configuration_file_path = ""
     34        if application_directory_path is None:
     35            application_directory_path = ""
     36        if reports_enabled is None:
     37            reports_enabled = False
     38 
     39        logger = logging.getLogger("wave-server")
     40 
     41        logger.debug("Loading configuration ...")
     42        configuration = configuration_loader.load(configuration_file_path)
     43 
     44        # Initialize Managers
     45        event_dispatcher = EventDispatcher(
     46            event_cache_duration=configuration["event_cache_duration"]
     47        )
     48        sessions_manager = SessionsManager()
     49        results_manager = ResultsManager()
     50        tests_manager = TestsManager()
     51        devices_manager = DevicesManager()
     52        test_loader = TestLoader()
     53 
     54        sessions_manager.initialize(
     55            test_loader=test_loader,
     56            event_dispatcher=event_dispatcher,
     57            tests_manager=tests_manager,
     58            results_directory=configuration["results_directory_path"],
     59            results_manager=results_manager,
     60            configuration=configuration
     61        )
     62 
     63        results_manager.initialize(
     64            results_directory_path=configuration["results_directory_path"],
     65            sessions_manager=sessions_manager,
     66            tests_manager=tests_manager,
     67            import_results_enabled=configuration["import_results_enabled"],
     68            reports_enabled=reports_enabled,
     69            persisting_interval=configuration["persisting_interval"]
     70        )
     71 
     72        tests_manager.initialize(
     73            test_loader,
     74            results_manager=results_manager,
     75            sessions_manager=sessions_manager,
     76            event_dispatcher=event_dispatcher
     77        )
     78 
     79        devices_manager.initialize(event_dispatcher)
     80 
     81        exclude_list_file_path = os.path.abspath("./excluded.json")
     82        include_list_file_path = os.path.abspath("./included.json")
     83        test_loader.initialize(
     84            exclude_list_file_path,
     85            include_list_file_path,
     86            results_manager=results_manager,
     87            api_titles=configuration["api_titles"]
     88        )
     89 
     90        test_loader.load_tests(tests)
     91 
     92        # Initialize HTTP handlers
     93        static_handler = StaticHandler(
     94            web_root=configuration["web_root"],
     95            http_port=configuration["wpt_port"],
     96            https_port=configuration["wpt_ssl_port"]
     97        )
     98        sessions_api_handler = SessionsApiHandler(
     99            sessions_manager=sessions_manager,
    100            results_manager=results_manager,
    101            event_dispatcher=event_dispatcher,
    102            web_root=configuration["web_root"],
    103            read_sessions_enabled=configuration["read_sessions_enabled"]
    104        )
    105        tests_api_handler = TestsApiHandler(
    106            tests_manager=tests_manager,
    107            sessions_manager=sessions_manager,
    108            wpt_port=configuration["wpt_port"],
    109            wpt_ssl_port=configuration["wpt_ssl_port"],
    110            hostname=configuration["hostname"],
    111            web_root=configuration["web_root"],
    112            test_loader=test_loader
    113        )
    114        devices_api_handler = DevicesApiHandler(
    115            devices_manager=devices_manager,
    116            event_dispatcher=event_dispatcher,
    117            web_root=configuration["web_root"]
    118        )
    119        results_api_handler = ResultsApiHandler(
    120            results_manager,
    121            sessions_manager,
    122            web_root=configuration["web_root"]
    123        )
    124        general_api_handler = GeneralApiHandler(
    125            web_root=configuration["web_root"],
    126            read_sessions_enabled=configuration["read_sessions_enabled"],
    127            import_results_enabled=configuration["import_results_enabled"],
    128            reports_enabled=reports_enabled,
    129            version_string=VERSION_STRING,
    130            test_type_selection_enabled=configuration["enable_test_type_selection"],
    131            test_file_selection_enabled=configuration["enable_test_file_selection"]
    132        )
    133 
    134        # Initialize HTTP server
    135        http_handler = HttpHandler(
    136            static_handler=static_handler,
    137            sessions_api_handler=sessions_api_handler,
    138            tests_api_handler=tests_api_handler,
    139            results_api_handler=results_api_handler,
    140            devices_api_handler=devices_api_handler,
    141            general_api_handler=general_api_handler,
    142            http_port=configuration["wpt_port"],
    143            web_root=configuration["web_root"]
    144        )
    145        self.handle_request = http_handler.handle_request