"""
@author: meili
@contact: meili02@corp.netease.com
@file: global.py
@date: 2023/2/20 17:58
@desc:
"""
import os
import time
from autoease.utils.logger import get_logger
from autoease.core.stage import StageManager
from autoease.utils.file import FileManager
from autoease.core import reporter as autoease_reporter
from autoease.core.case_resource_manager import CaseResourceManager
from autoease.device.device import Device
[docs]class RunMode(object):
LOCAL = "local"
DEPLOY = "deploy"
[docs]class AutoEaseG(object):
"""Represent the globals variables"""
MODE = RunMode.LOCAL # choice: RunMode.LOCAL or RunMode.DEPLOY
PLATFORM: Platform = None
CASE_NAME = None
RECORD_ID = None
REPORT_URL = None
IS_RECORD = True
IS_UPLOAD_VIDEO = True
LOGS_SAVED = None
CASE_START_TIME = None
LOG_FILE_PATH: str = ""
LOGGING = get_logger(__name__)
DEVICE: Device = None
STAGE_MANAGER = StageManager
PERFORMANCE_TOOL = None
RECORDER = None
GAME_PATH = None # local deploy
GAME_NAME = None # local deploy
GAME_PROJECT_NAME = None
LOG_PATH = None # local deploy
GAME_PID = None # local deploy
FILE_MANAGER: FileManager = None
CASE_RESOURCE_MANAGER: CaseResourceManager = None
HAS_SEND_REPORT = False
CASE_LOG = None
CASE_ERROR_LOG = None
[docs]def import_device_cls(platform):
if platform == Platform.WIN64:
print(f"initial {platform}")
from autoease.device.win.win import Windows as cls
elif platform == Platform.XSX:
print(f"initial {platform}")
from autoease.device.xbox.xbox import Xbox as cls
else:
raise RuntimeError("Unknown platform: %s" % platform)
return cls
[docs]def get_actual_mode(exp_mode, record_id: int) -> str:
mode = RunMode.LOCAL
if exp_mode == RunMode.DEPLOY and record_id is not None:
mode = RunMode.DEPLOY
return mode
[docs]def init_autoease_global(exp_mode,
platform,
is_record,
is_upload_video,
record_id,
case_name,
report_url,
logs_saved,
game_project_name,
case_info_log,
case_error_log,
**kwargs):
print("Init AutoEase Global...")
actual_mode = get_actual_mode(exp_mode, record_id)
# mode parse
AutoEaseG.MODE = actual_mode
AutoEaseG.PLATFORM = platform
AutoEaseG.IS_RECORD = is_record
AutoEaseG.IS_UPLOAD_VIDEO = is_upload_video
AutoEaseG.RECORD_ID = record_id
AutoEaseG.CASE_NAME = case_name
AutoEaseG.LOGS_SAVED = logs_saved
AutoEaseG.GAME_NAME = game_project_name
AutoEaseG.REPORT_URL = report_url
AutoEaseG.CASE_INFO_LOG = case_info_log
AutoEaseG.CASE_ERROR_LOG = case_error_log
print(f"AutoEase mode: {actual_mode}")
print(f"AutoEase platform: {platform}")
print(f"AutoEase is_record: {AutoEaseG.IS_RECORD}")
print(f"AutoEase is_upload_video: {AutoEaseG.IS_UPLOAD_VIDEO}")
print(f"AutoEase record_id: {AutoEaseG.RECORD_ID}")
print(f"AutoEase case_name: {AutoEaseG.CASE_NAME}")
print(f"AutoEase report_url: {report_url}")
print(f"AutoEase logs_saved: {logs_saved}")
print(f"AutoEase case_info_log: {AutoEaseG.CASE_INFO_LOG}")
print(f"Autoease case_error_log: {AutoEaseG.CASE_ERROR_LOG}")
AutoEaseG.FILE_MANAGER = FileManager(logs_saved)
platform_cls = import_device_cls(platform)
dev = platform_cls(is_record=is_record,
game_project_name=game_project_name,
file_manager=AutoEaseG.FILE_MANAGER,
**kwargs)
AutoEaseG.DEVICE = dev
if dev.get_game_name is not None:
performance_tool_cls = import_performance_tool_cls(platform)
performance_tool = performance_tool_cls(dev.get_game_name, **kwargs)
AutoEaseG.PERFORMANCE_TOOL = performance_tool
# init case resource manager
AutoEaseG.CASE_RESOURCE_MANAGER = CaseResourceManager()
AutoEaseG.CASE_START_TIME = time.time()
[docs]def close_and_send_report():
print("AutoEase close and send report")
# stop record
if AutoEaseG.IS_RECORD is True:
AutoEaseG.DEVICE.stop_record()
start_time = AutoEaseG.CASE_START_TIME
end_time = time.time()
# deploy mode
if AutoEaseG.MODE == RunMode.DEPLOY:
print("deploy mode, send report")
autoease_reporter.send_report(AutoEaseG.CASE_NAME,
AutoEaseG.REPORT_URL,
AutoEaseG.RECORD_ID,
AutoEaseG.DEVICE.get_game_log_path,
start_time,
end_time,
AutoEaseG.GAME_NAME,
AutoEaseG.FILE_MANAGER,
AutoEaseG.CASE_INFO_LOG,
AutoEaseG.CASE_ERROR_LOG)
if __name__ == '__main__':
pass