145 lines
5.4 KiB
Python
145 lines
5.4 KiB
Python
# mypy: allow-untyped-defs
|
|
|
|
import os
|
|
import logging
|
|
|
|
from . import configuration_loader
|
|
|
|
from .network.http_handler import HttpHandler
|
|
from .network.api.sessions_api_handler import SessionsApiHandler
|
|
from .network.api.tests_api_handler import TestsApiHandler
|
|
from .network.api.results_api_handler import ResultsApiHandler
|
|
from .network.api.devices_api_handler import DevicesApiHandler
|
|
from .network.api.general_api_handler import GeneralApiHandler
|
|
from .network.static_handler import StaticHandler
|
|
|
|
from .testing.sessions_manager import SessionsManager
|
|
from .testing.results_manager import ResultsManager
|
|
from .testing.tests_manager import TestsManager
|
|
from .testing.devices_manager import DevicesManager
|
|
from .testing.test_loader import TestLoader
|
|
from .testing.event_dispatcher import EventDispatcher
|
|
|
|
VERSION_STRING = "v3.3.0"
|
|
|
|
|
|
class WaveServer:
|
|
def initialize(self,
|
|
tests,
|
|
configuration_file_path=None,
|
|
application_directory_path=None,
|
|
reports_enabled=None):
|
|
if configuration_file_path is None:
|
|
configuration_file_path = ""
|
|
if application_directory_path is None:
|
|
application_directory_path = ""
|
|
if reports_enabled is None:
|
|
reports_enabled = False
|
|
|
|
logger = logging.getLogger("wave-server")
|
|
|
|
logger.debug("Loading configuration ...")
|
|
configuration = configuration_loader.load(configuration_file_path)
|
|
|
|
# Initialize Managers
|
|
event_dispatcher = EventDispatcher(
|
|
event_cache_duration=configuration["event_cache_duration"]
|
|
)
|
|
sessions_manager = SessionsManager()
|
|
results_manager = ResultsManager()
|
|
tests_manager = TestsManager()
|
|
devices_manager = DevicesManager()
|
|
test_loader = TestLoader()
|
|
|
|
sessions_manager.initialize(
|
|
test_loader=test_loader,
|
|
event_dispatcher=event_dispatcher,
|
|
tests_manager=tests_manager,
|
|
results_directory=configuration["results_directory_path"],
|
|
results_manager=results_manager,
|
|
configuration=configuration
|
|
)
|
|
|
|
results_manager.initialize(
|
|
results_directory_path=configuration["results_directory_path"],
|
|
sessions_manager=sessions_manager,
|
|
tests_manager=tests_manager,
|
|
import_results_enabled=configuration["import_results_enabled"],
|
|
reports_enabled=reports_enabled,
|
|
persisting_interval=configuration["persisting_interval"]
|
|
)
|
|
|
|
tests_manager.initialize(
|
|
test_loader,
|
|
results_manager=results_manager,
|
|
sessions_manager=sessions_manager,
|
|
event_dispatcher=event_dispatcher
|
|
)
|
|
|
|
devices_manager.initialize(event_dispatcher)
|
|
|
|
exclude_list_file_path = os.path.abspath("./excluded.json")
|
|
include_list_file_path = os.path.abspath("./included.json")
|
|
test_loader.initialize(
|
|
exclude_list_file_path,
|
|
include_list_file_path,
|
|
results_manager=results_manager,
|
|
api_titles=configuration["api_titles"]
|
|
)
|
|
|
|
test_loader.load_tests(tests)
|
|
|
|
# Initialize HTTP handlers
|
|
static_handler = StaticHandler(
|
|
web_root=configuration["web_root"],
|
|
http_port=configuration["wpt_port"],
|
|
https_port=configuration["wpt_ssl_port"]
|
|
)
|
|
sessions_api_handler = SessionsApiHandler(
|
|
sessions_manager=sessions_manager,
|
|
results_manager=results_manager,
|
|
event_dispatcher=event_dispatcher,
|
|
web_root=configuration["web_root"],
|
|
read_sessions_enabled=configuration["read_sessions_enabled"]
|
|
)
|
|
tests_api_handler = TestsApiHandler(
|
|
tests_manager=tests_manager,
|
|
sessions_manager=sessions_manager,
|
|
wpt_port=configuration["wpt_port"],
|
|
wpt_ssl_port=configuration["wpt_ssl_port"],
|
|
hostname=configuration["hostname"],
|
|
web_root=configuration["web_root"],
|
|
test_loader=test_loader
|
|
)
|
|
devices_api_handler = DevicesApiHandler(
|
|
devices_manager=devices_manager,
|
|
event_dispatcher=event_dispatcher,
|
|
web_root=configuration["web_root"]
|
|
)
|
|
results_api_handler = ResultsApiHandler(
|
|
results_manager,
|
|
sessions_manager,
|
|
web_root=configuration["web_root"]
|
|
)
|
|
general_api_handler = GeneralApiHandler(
|
|
web_root=configuration["web_root"],
|
|
read_sessions_enabled=configuration["read_sessions_enabled"],
|
|
import_results_enabled=configuration["import_results_enabled"],
|
|
reports_enabled=reports_enabled,
|
|
version_string=VERSION_STRING,
|
|
test_type_selection_enabled=configuration["enable_test_type_selection"],
|
|
test_file_selection_enabled=configuration["enable_test_file_selection"]
|
|
)
|
|
|
|
# Initialize HTTP server
|
|
http_handler = HttpHandler(
|
|
static_handler=static_handler,
|
|
sessions_api_handler=sessions_api_handler,
|
|
tests_api_handler=tests_api_handler,
|
|
results_api_handler=results_api_handler,
|
|
devices_api_handler=devices_api_handler,
|
|
general_api_handler=general_api_handler,
|
|
http_port=configuration["wpt_port"],
|
|
web_root=configuration["web_root"]
|
|
)
|
|
self.handle_request = http_handler.handle_request
|