1212# limitations under the License.
1313# This file is a part of the vllm-ascend project.
1414
15+ import inspect
1516import os
16- from unittest .mock import patch
1717
1818from tests .ut .base import TestBase
19- from vllm_ascend . envs import env_variables
19+ from vllm_ascend import envs
2020
2121
2222class TestEnvVariables (TestBase ):
23- _default_values = {
24- "MAX_JOBS" : None ,
25- "CMAKE_BUILD_TYPE" : None ,
26- "COMPILE_CUSTOM_KERNELS" : True ,
27- "CXX_COMPILER" : None ,
28- "C_COMPILER" : None ,
29- "SOC_VERSION" : "ASCEND910B1" ,
30- "VERBOSE" : False ,
31- "ASCEND_HOME_PATH" : None ,
32- "HCCN_PATH" : "/usr/local/Ascend/driver/tools/hccn_tool" ,
33- "HCCL_SO_PATH" : None ,
34- "PROMPT_DEVICE_ID" : None ,
35- "DECODE_DEVICE_ID" : None ,
36- "LLMDATADIST_COMM_PORT" : "26000" ,
37- "LLMDATADIST_SYNC_CACHE_WAIT_TIME" : "5000" ,
38- "VLLM_VERSION" : None ,
39- "VLLM_ASCEND_TRACE_RECOMPILES" : False ,
40- "VLLM_ENABLE_FUSED_EXPERTS_ALLGATHER_EP" : False ,
41- "VLLM_ASCEND_ENABLE_DBO" : False ,
42- "VLLM_ASCEND_MODEL_EXECUTE_TIME_OBSERVE" : False ,
43- "MOE_ALL2ALL_BUFFER" : False ,
44- "USE_OPTIMIZED_MODEL" : True ,
45- "SELECT_GATING_TOPK_SOTFMAX_EXPERTS" : False ,
46- "VLLM_ASCEND_KV_CACHE_MEGABYTES_FLOATING_TOLERANCE" : 64 ,
47- "VLLM_ASCEND_ENABLE_TOPK_TOPP_OPTIMIZATION" : True ,
48- "DISAGGREGATED_PREFILL_RANK_TABLE_PATH" : None ,
49- "VLLM_ASCEND_LLMDD_RPC_IP" : "0.0.0.0" ,
50- "VLLM_LLMDD_RPC_PORT" : 5557 ,
51- "VLLM_ASCEND_MLA_PA" : False ,
52- "VLLM_ASCEND_ENABLE_MATMUL_ALLREDUCE" : False
53- }
54-
55- _test_values = {
56- "MAX_JOBS" : ("8" , "8" ),
57- "CMAKE_BUILD_TYPE" : ("Debug" , "Debug" ),
58- "COMPILE_CUSTOM_KERNELS" : ("0" , False ),
59- "CXX_COMPILER" : ("/usr/bin/g++" , "/usr/bin/g++" ),
60- "C_COMPILER" : ("/usr/bin/gcc" , "/usr/bin/gcc" ),
61- "SOC_VERSION" : ("ASCEND910A" , "ASCEND910A" ),
62- "VERBOSE" : ("1" , True ),
63- "ASCEND_HOME_PATH" : ("/opt/ascend" , "/opt/ascend" ),
64- "HCCN_PATH" : ("/custom/hccn_tool" , "/custom/hccn_tool" ),
65- "HCCL_SO_PATH" : ("libhccl_custom.so" , "libhccl_custom.so" ),
66- "PROMPT_DEVICE_ID" : ("1" , "1" ),
67- "DECODE_DEVICE_ID" : ("2" , "2" ),
68- "LLMDATADIST_COMM_PORT" : ("27000" , "27000" ),
69- "LLMDATADIST_SYNC_CACHE_WAIT_TIME" : ("6000" , "6000" ),
70- "VLLM_VERSION" : ("0.9.1" , "0.9.1" ),
71- "VLLM_ASCEND_TRACE_RECOMPILES" : ("1" , True ),
72- "VLLM_ENABLE_FUSED_EXPERTS_ALLGATHER_EP" : ("1" , True ),
73- "VLLM_ASCEND_ENABLE_DBO" : ("1" , True ),
74- "VLLM_ASCEND_MODEL_EXECUTE_TIME_OBSERVE" : ("1" , True ),
75- "MOE_ALL2ALL_BUFFER" : ("1" , True ),
76- "USE_OPTIMIZED_MODEL" : ("0" , False ),
77- "SELECT_GATING_TOPK_SOTFMAX_EXPERTS" : ("1" , True ),
78- "VLLM_ASCEND_KV_CACHE_MEGABYTES_FLOATING_TOLERANCE" : ("128" , 128 ),
79- "VLLM_ASCEND_ENABLE_TOPK_TOPP_OPTIMIZATION" : ("0" , False ),
80- "DISAGGREGATED_PREFILL_RANK_TABLE_PATH" :
81- ("/path/to/rank_table.json" , "/path/to/rank_table.json" ),
82- "VLLM_ASCEND_LLMDD_RPC_IP" : ("192.168.1.1" , "192.168.1.1" ),
83- "VLLM_LLMDD_RPC_PORT" : ("5558" , 5558 ),
84- "VLLM_ASCEND_MLA_PA" : ("1" , True ),
85- "VLLM_ASCEND_ENABLE_MATMUL_ALLREDUCE" : ("1" , True )
86- }
8723
8824 def setUp (self ):
89- env_keys = set (env_variables .keys ())
90- self .assertEqual (env_keys , set (self ._default_values .keys ()))
91- self .assertEqual (env_keys , set (self ._test_values .keys ()))
92-
93- def test_default_values (self ):
94- for var_name , getter in env_variables .items ():
95- with self .subTest (var_name = var_name ):
96- with patch .dict (os .environ , {}, clear = True ):
97- actual = getter ()
98- expected = self ._default_values [var_name ]
99- self .assertEqual (actual , expected )
100-
101- def test_set_values (self ):
102- for var_name , getter in env_variables .items ():
103- with self .subTest (var_name = var_name ):
104- input_val , expected = self ._test_values [var_name ]
105- with patch .dict (os .environ , {var_name : input_val }):
106- actual = getter ()
107- self .assertEqual (actual , expected )
25+ self .env_vars = list (envs .env_variables .keys ())
26+
27+ def test_env_vars_behavior (self ):
28+ for var_name in self .env_vars :
29+ with self .subTest (var = var_name ):
30+ original_val = os .environ .get (var_name )
31+ var_handler = envs .env_variables [var_name ]
32+
33+ try :
34+ if var_name in os .environ :
35+ del os .environ [var_name ]
36+ self .assertEqual (getattr (envs , var_name ), var_handler ())
37+
38+ handler_source = inspect .getsource (var_handler )
39+ if 'int(' in handler_source :
40+ test_vals = ["123" , "456" ]
41+ elif 'bool(int(' in handler_source :
42+ test_vals = ["0" , "1" ]
43+ else :
44+ test_vals = [f"test_{ var_name } " , f"custom_{ var_name } " ]
45+
46+ for test_val in test_vals :
47+ os .environ [var_name ] = test_val
48+ self .assertEqual (getattr (envs , var_name ),
49+ var_handler ())
50+
51+ finally :
52+ if original_val is None :
53+ os .environ .pop (var_name , None )
54+ else :
55+ os .environ [var_name ] = original_val
56+
57+ def test_dir_and_getattr (self ):
58+ self .assertEqual (sorted (envs .__dir__ ()), sorted (self .env_vars ))
59+ for var_name in self .env_vars :
60+ with self .subTest (var = var_name ):
61+ getattr (envs , var_name )
0 commit comments