1
+ from tests .ut .base import TestBase
2
+ from unittest .mock import patch
3
+ import os
4
+ # 替换为你的实际模块路径
5
+ from vllm_ascend .envs import env_variables
6
+
7
+
8
+ class TestEnvVariables (TestBase ):
9
+ """验证 env_variables 中所有环境变量的解析逻辑"""
10
+
11
+ # 与 env_variables 完全匹配的默认值映射
12
+ _default_values = {
13
+ "MAX_JOBS" : None ,
14
+ "CMAKE_BUILD_TYPE" : None ,
15
+ "COMPILE_CUSTOM_KERNELS" : True ,
16
+ "CXX_COMPILER" : None ,
17
+ "C_COMPILER" : None ,
18
+ "SOC_VERSION" : "ASCEND910B1" ,
19
+ "VERBOSE" : False ,
20
+ "ASCEND_HOME_PATH" : None ,
21
+ "HCCN_PATH" : "/usr/local/Ascend/driver/tools/hccn_tool" ,
22
+ "HCCL_SO_PATH" : None ,
23
+ "PROMPT_DEVICE_ID" : None ,
24
+ "DECODE_DEVICE_ID" : None ,
25
+ "LLMDATADIST_COMM_PORT" : "26000" ,
26
+ "LLMDATADIST_SYNC_CACHE_WAIT_TIME" : "5000" ,
27
+ "VLLM_VERSION" : None ,
28
+ "VLLM_ASCEND_TRACE_RECOMPILES" : False ,
29
+ "VLLM_ENABLE_FUSED_EXPERTS_ALLGATHER_EP" : False ,
30
+ "VLLM_ASCEND_ENABLE_DBO" : False ,
31
+ "VLLM_ASCEND_MODEL_EXECUTE_TIME_OBSERVE" : False ,
32
+ "MOE_ALL2ALL_BUFFER" : False ,
33
+ "USE_OPTIMIZED_MODEL" : True ,
34
+ "SELECT_GATING_TOPK_SOTFMAX_EXPERTS" : False ,
35
+ "VLLM_ASCEND_KV_CACHE_MEGABYTES_FLOATING_TOLERANCE" : 64 ,
36
+ "VLLM_ASCEND_ENABLE_TOPK_TOPP_OPTIMIZATION" : False ,
37
+ "DISAGGREGATED_PREFILL_RANK_TABLE_PATH" : None ,
38
+ "VLLM_ASCEND_LLMDD_RPC_IP" : "0.0.0.0" ,
39
+ "VLLM_LLMDD_RPC_PORT" : 5557 ,
40
+ "VLLM_ASCEND_MLA_PA" : False ,
41
+ "VLLM_ASCEND_ENABLE_MATMUL_ALLREDUCE" : False
42
+ }
43
+
44
+ # 与 env_variables 完全匹配的测试值映射
45
+ _test_values = {
46
+ "MAX_JOBS" : ("8" , "8" ),
47
+ "CMAKE_BUILD_TYPE" : ("Debug" , "Debug" ),
48
+ "COMPILE_CUSTOM_KERNELS" : ("0" , False ),
49
+ "CXX_COMPILER" : ("/usr/bin/g++" , "/usr/bin/g++" ),
50
+ "C_COMPILER" : ("/usr/bin/gcc" , "/usr/bin/gcc" ),
51
+ "SOC_VERSION" : ("ASCEND910A" , "ASCEND910A" ),
52
+ "VERBOSE" : ("1" , True ),
53
+ "ASCEND_HOME_PATH" : ("/opt/ascend" , "/opt/ascend" ),
54
+ "HCCN_PATH" : ("/custom/hccn_tool" , "/custom/hccn_tool" ),
55
+ "HCCL_SO_PATH" : ("libhccl_custom.so" , "libhccl_custom.so" ),
56
+ "PROMPT_DEVICE_ID" : ("1" , "1" ),
57
+ "DECODE_DEVICE_ID" : ("2" , "2" ),
58
+ "LLMDATADIST_COMM_PORT" : ("27000" , "27000" ),
59
+ "LLMDATADIST_SYNC_CACHE_WAIT_TIME" : ("6000" , "6000" ),
60
+ "VLLM_VERSION" : ("0.9.1" , "0.9.1" ),
61
+ "VLLM_ASCEND_TRACE_RECOMPILES" : ("1" , True ),
62
+ "VLLM_ENABLE_FUSED_EXPERTS_ALLGATHER_EP" : ("1" , True ),
63
+ "VLLM_ASCEND_ENABLE_DBO" : ("1" , True ),
64
+ "VLLM_ASCEND_MODEL_EXECUTE_TIME_OBSERVE" : ("1" , True ),
65
+ "MOE_ALL2ALL_BUFFER" : ("1" , True ),
66
+ "USE_OPTIMIZED_MODEL" : ("0" , False ),
67
+ "SELECT_GATING_TOPK_SOTFMAX_EXPERTS" : ("1" , True ),
68
+ "VLLM_ASCEND_KV_CACHE_MEGABYTES_FLOATING_TOLERANCE" : ("128" , 128 ),
69
+ "VLLM_ASCEND_ENABLE_TOPK_TOPP_OPTIMIZATION" : ("1" , True ),
70
+ "DISAGGREGATED_PREFILL_RANK_TABLE_PATH" : ("/path/to/rank_table.json" , "/path/to/rank_table.json" ),
71
+ "VLLM_ASCEND_LLMDD_RPC_IP" : ("192.168.1.1" , "192.168.1.1" ),
72
+ "VLLM_LLMDD_RPC_PORT" : ("5558" , 5558 ),
73
+ "VLLM_ASCEND_MLA_PA" : ("1" , True ),
74
+ "VLLM_ASCEND_ENABLE_MATMUL_ALLREDUCE" : ("1" , True )
75
+ }
76
+
77
+ def setUp (self ):
78
+ env_keys = set (env_variables .keys ())
79
+ # 检查默认值是否覆盖所有变量
80
+ self .assertEqual (
81
+ env_keys , set (self ._default_values .keys ()),
82
+ "错误:_default_values 未覆盖所有环境变量,请检查是否有遗漏或多余的键"
83
+ )
84
+ # 检查测试值是否覆盖所有变量
85
+ self .assertEqual (
86
+ env_keys , set (self ._test_values .keys ()),
87
+ "错误:_test_values 未覆盖所有环境变量,请检查是否有遗漏或多余的键"
88
+ )
89
+
90
+ def test_default_values (self ):
91
+ """测试所有环境变量未设置时的默认值"""
92
+ for var_name , getter in env_variables .items ():
93
+ with self .subTest (var_name = var_name ):
94
+ with patch .dict (os .environ , {}, clear = True ): # 清空环境变量
95
+ actual = getter ()
96
+ expected = self ._default_values [var_name ]
97
+ self .assertEqual (
98
+ actual , expected ,
99
+ f"{ var_name } 默认值错误:预期 { expected } ,实际 { actual } "
100
+ )
101
+
102
+ def test_set_values (self ):
103
+ """测试所有环境变量设置后的解析结果"""
104
+ for var_name , getter in env_variables .items ():
105
+ with self .subTest (var_name = var_name ):
106
+ input_val , expected = self ._test_values [var_name ]
107
+ with patch .dict (os .environ , {var_name : input_val }): # 设置环境变量
108
+ actual = getter ()
109
+ self .assertEqual (
110
+ actual , expected ,
111
+ f"{ var_name } 解析错误:输入 { input_val } ,预期 { expected } ,实际 { actual } "
112
+ )
0 commit comments