316 lines
7.2 KiB
Python
316 lines
7.2 KiB
Python
import warnings
|
|
from enum import IntEnum
|
|
from typing import Optional, Union, List
|
|
|
|
from .dut_default_params import *
|
|
from .report import generate_html_report, TestAdditionalInfo, TestResult
|
|
|
|
|
|
class TestStatusEnum(IntEnum):
|
|
Idle = 0
|
|
Completed = 1
|
|
InProgress = 2
|
|
|
|
|
|
class TestGroupId(IntEnum):
|
|
"""
|
|
Class `TestGroupId` contains all possible variants of Test groups ID.
|
|
"""
|
|
UNKNOWN = -1
|
|
AUDIO_TEST = 0x00
|
|
DP_RX_ELECTRICAL = 0x01
|
|
HDMI_RX_ELECTRICAL = 0x02
|
|
DVI_RX_ELECTRICAL = 0x03
|
|
CEC_FUNCTIONAL = 0x05
|
|
DP_RX_CRC = 0x06
|
|
DP_RX_SIMPLE_LT = 0x07
|
|
DP_HDCP_CTS_AUTHENTICATION = 0x0A
|
|
HDMI_RX_CRC = 0x0B
|
|
USB_TYPE_C_ELECTRICAL = 0x0C
|
|
DP_RX_LL_CTS = 0x0E
|
|
DP_TX_LL_CTS = 0x0F
|
|
DP_TX_LL_CTS_DSC = 0x10
|
|
DP_RX_LL_CTS_DSC = 0x11
|
|
DP_2_1_RX_LL_CTS = 0x12
|
|
DP_2_1_TX_LL_CTS = 0x13
|
|
DP_2_1_LTTPR_CTS = 0x14
|
|
DP_HDCP_CTS_1A = 0x26
|
|
DP_HDCP_CTS_1B = 0x27
|
|
DP_HDCP_CTS_2C = 0x28
|
|
DP_HDCP_CTS_3A = 0x29
|
|
DP_HDCP_CTS_3B = 0x2A
|
|
DP_HDCP_CTS_3C = 0x2B
|
|
DP_TX_DISPLAYID = 0x32
|
|
DP_RX_DISPLAYID = 0x33
|
|
HDMI_RX_VRR = 0x34
|
|
HDMI_TX_VRR = 0x35
|
|
DP_TX_ADAPTIVESYNC = 0x36
|
|
DP_RX_ADAPTIVESYNC = 0x37
|
|
DP_2_1_RX_LTTPR_CTS = 0x38
|
|
DP_2_1_TX_LTTPR_CTS = 0x39
|
|
DP_2_1_RX_DSC_CTS = 0x3A
|
|
DP_2_1_TX_DSC_CTS = 0x3B
|
|
DP_2_1_TX_DISPAYID = 0x3C
|
|
DP_2_1_RX_DISPAYID = 0x3D
|
|
DP_2_1_TX_ADAPTIVESYNC = 0x3E
|
|
DP_2_1_RX_ADAPTIVESYNC = 0x3F
|
|
HD_RX_DSC_CTS = 0x40
|
|
HD_TX_DSC_CTS = 0x41
|
|
HD_TX_CONTINUITY = 0x42
|
|
HD_TX_CABLE_CHECK = 0x43
|
|
PIXEL_VIDEO_TEST = 0x3E8
|
|
HDR10_TEST = -2
|
|
|
|
@classmethod
|
|
def has_value(cls, value) -> bool:
|
|
return value in iter(cls)
|
|
|
|
|
|
class SubTestResultObject:
|
|
"""
|
|
Class `SubTestResultObject` contains information about testing of one test.
|
|
- Set and get Test result `test_result`.
|
|
- Set and get FW logs after testing `fw_logs`.
|
|
- Set and get Configuration information `config_info`.
|
|
- Set and get Error code `error_code`.
|
|
- Set and get Error logs `error_logs`.
|
|
- Set and get Test name `test_name`.
|
|
- Set and get Group name `group_name`.
|
|
"""
|
|
def __init__(self, group_name: str, debug: bool):
|
|
self.__test_result = TestResult.Unknown
|
|
self.__fw_logs = ""
|
|
self.__config_info = ""
|
|
self.__error_code = 0
|
|
self.__error_logs = ""
|
|
self.__test_name = ""
|
|
self.__group_name = group_name
|
|
self.__test_delay = 0
|
|
self.__debug = debug
|
|
self.__json_config_info = ""
|
|
|
|
@property
|
|
def test_result(self) -> TestResult:
|
|
"""
|
|
Returns result after testing.
|
|
|
|
Returns:
|
|
object of `TestResult` type
|
|
"""
|
|
return self.__test_result
|
|
|
|
@test_result.setter
|
|
def test_result(self, test_result: TestResult):
|
|
"""
|
|
Set new test result.
|
|
|
|
Args:
|
|
test_result (TestResult)
|
|
"""
|
|
self.__test_result = test_result
|
|
|
|
@property
|
|
def fw_logs(self) -> str:
|
|
"""
|
|
Returns FW logs after testing.
|
|
|
|
Returns:
|
|
object of str type
|
|
"""
|
|
return self.__fw_logs
|
|
|
|
@fw_logs.setter
|
|
def fw_logs(self, fw_logs: str):
|
|
"""
|
|
Set new test result.
|
|
|
|
Args:
|
|
fw_logs (str)
|
|
"""
|
|
self.__fw_logs = fw_logs
|
|
|
|
@property
|
|
def config_info(self) -> str:
|
|
"""
|
|
Returns config info after testing.
|
|
|
|
Returns:
|
|
object of str type
|
|
"""
|
|
return self.__config_info
|
|
|
|
@config_info.setter
|
|
def config_info(self, config_info: str):
|
|
"""
|
|
Set new config info.
|
|
|
|
Args:
|
|
config_info (str)
|
|
"""
|
|
self.__config_info = config_info
|
|
|
|
@property
|
|
def error_code(self) -> int:
|
|
"""
|
|
Returns error code after testing.
|
|
|
|
Returns:
|
|
object of int type
|
|
"""
|
|
return self.__error_code
|
|
|
|
@error_code.setter
|
|
def error_code(self, error_code: int):
|
|
"""
|
|
Set new error code.
|
|
|
|
Args:
|
|
error_code (int)
|
|
"""
|
|
self.__error_code = error_code
|
|
|
|
@property
|
|
def error_logs(self) -> str:
|
|
"""
|
|
Returns error logs after testing.
|
|
|
|
Returns:
|
|
object of str type
|
|
"""
|
|
return self.__error_logs
|
|
|
|
@error_logs.setter
|
|
def error_logs(self, error_logs: str):
|
|
"""
|
|
Set new error logs.
|
|
|
|
Args:
|
|
error_logs (str)
|
|
"""
|
|
self.__error_logs = error_logs
|
|
|
|
@property
|
|
def test_name(self) -> str:
|
|
"""
|
|
Returns test name.
|
|
|
|
Returns:
|
|
object of str type
|
|
"""
|
|
return self.__test_name
|
|
|
|
@test_name.setter
|
|
def test_name(self, test_name: str):
|
|
"""
|
|
Set new test name.
|
|
|
|
Args:
|
|
test_name (str)
|
|
"""
|
|
self.__test_name = test_name
|
|
|
|
@property
|
|
def group_name(self) -> str:
|
|
"""
|
|
Returns test group name.
|
|
|
|
Returns:
|
|
object of str type
|
|
"""
|
|
return self.__group_name
|
|
|
|
@group_name.setter
|
|
def group_name(self, group_name: str):
|
|
"""
|
|
Set new test group name.
|
|
|
|
Args:
|
|
group_name (str)
|
|
"""
|
|
self.__group_name = group_name
|
|
|
|
@property
|
|
def test_delay(self) -> int:
|
|
"""
|
|
Returns test delay.
|
|
|
|
Returns:
|
|
object of int type
|
|
"""
|
|
return self.__test_delay
|
|
|
|
@test_delay.setter
|
|
def test_delay(self, test_delay: int):
|
|
"""
|
|
Set new test delay.
|
|
|
|
Args:
|
|
test_delay (int)
|
|
"""
|
|
self.__test_delay = test_delay
|
|
|
|
@property
|
|
def debug(self) -> bool:
|
|
"""
|
|
Returns debug test state (if you want to use special debug flags, your report will not valid).
|
|
|
|
Returns:
|
|
object of bool type
|
|
"""
|
|
return self.__debug
|
|
|
|
@property
|
|
def json_config_info(self):
|
|
"""
|
|
Returns json test config info.
|
|
|
|
Returns:
|
|
object of base64 str type
|
|
"""
|
|
return self.__json_config_info
|
|
|
|
@json_config_info.setter
|
|
def json_config_info(self, json_config_info):
|
|
"""
|
|
Set new json config info.
|
|
|
|
Args:
|
|
json_config_info: base64 str type
|
|
"""
|
|
self.__json_config_info = json_config_info
|
|
|
|
|
|
class TestResultObject:
|
|
"""
|
|
Class `TestResultObject` allows get test results.
|
|
- Test result of selected test `test_result`.
|
|
- All test results `all_test_results`.
|
|
"""
|
|
def __init__(self, results: Union[SubTestResultObject, List[SubTestResultObject]]):
|
|
if isinstance(results, SubTestResultObject):
|
|
self.__sub_tests = [results]
|
|
else:
|
|
self.__sub_tests = results
|
|
|
|
def test_result(self, index: int) -> Optional[SubTestResultObject]:
|
|
"""
|
|
Test result of selected test.
|
|
|
|
Args:
|
|
index (int)
|
|
|
|
Returns:
|
|
object of `SubTestResultObject`|None type
|
|
"""
|
|
if index < 0 or index > len(self.__sub_tests) - 1:
|
|
warnings.warn("Incorrect test result object index. Please, select index again.")
|
|
return None
|
|
return self.__sub_tests[index]
|
|
|
|
def all_test_results(self) -> list:
|
|
"""
|
|
Returns:
|
|
object of list type
|
|
"""
|
|
return self.__sub_tests
|