Skip to content

Commit de135fe

Browse files
author
chengyuan
committed
add ut for envs.py
1 parent 359c157 commit de135fe

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

tests/ut/test_envs.py

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
#
2+
# Licensed under the Apache License, Version 2.0 (the "License");
3+
# you may not use this file except in compliance with the License.
4+
# You may obtain a copy of the License at
5+
#
6+
# http://www.apache.org/licenses/LICENSE-2.0
7+
#
8+
# Unless required by applicable law or agreed to in writing, software
9+
# distributed under the License is distributed on an "AS IS" BASIS,
10+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
# See the License for the specific language governing permissions and
12+
# limitations under the License.
13+
# This file is a part of the vllm-ascend project.
14+
# Adapted from vllm/tests/lora/test_layers.py
15+
16+
17+
from unittest.mock import patch
18+
import os
19+
20+
from tests.ut.base import TestBase
21+
from vllm_ascend.envs import env_variables
22+
23+
24+
class TestEnvVariables(TestBase):
25+
"""验证 env_variables 中所有环境变量的解析逻辑"""
26+
27+
# 与 env_variables 完全匹配的默认值映射
28+
_default_values = {
29+
"MAX_JOBS": None,
30+
"CMAKE_BUILD_TYPE": None,
31+
"COMPILE_CUSTOM_KERNELS": True,
32+
"CXX_COMPILER": None,
33+
"C_COMPILER": None,
34+
"SOC_VERSION": "ASCEND910B1",
35+
"VERBOSE": False,
36+
"ASCEND_HOME_PATH": None,
37+
"HCCN_PATH": "/usr/local/Ascend/driver/tools/hccn_tool",
38+
"HCCL_SO_PATH": None,
39+
"PROMPT_DEVICE_ID": None,
40+
"DECODE_DEVICE_ID": None,
41+
"LLMDATADIST_COMM_PORT": "26000",
42+
"LLMDATADIST_SYNC_CACHE_WAIT_TIME": "5000",
43+
"VLLM_VERSION": None,
44+
"VLLM_ASCEND_TRACE_RECOMPILES": False,
45+
"VLLM_ENABLE_FUSED_EXPERTS_ALLGATHER_EP": False,
46+
"VLLM_ASCEND_ENABLE_DBO": False,
47+
"VLLM_ASCEND_MODEL_EXECUTE_TIME_OBSERVE": False,
48+
"MOE_ALL2ALL_BUFFER": False,
49+
"USE_OPTIMIZED_MODEL": True,
50+
"SELECT_GATING_TOPK_SOTFMAX_EXPERTS": False,
51+
"VLLM_ASCEND_KV_CACHE_MEGABYTES_FLOATING_TOLERANCE": 64,
52+
"VLLM_ASCEND_ENABLE_TOPK_TOPP_OPTIMIZATION": False,
53+
"DISAGGREGATED_PREFILL_RANK_TABLE_PATH": None,
54+
"VLLM_ASCEND_LLMDD_RPC_IP": "0.0.0.0",
55+
"VLLM_LLMDD_RPC_PORT": 5557,
56+
"VLLM_ASCEND_MLA_PA": False,
57+
"VLLM_ASCEND_ENABLE_MATMUL_ALLREDUCE": False
58+
}
59+
60+
# 与 env_variables 完全匹配的测试值映射
61+
_test_values = {
62+
"MAX_JOBS": ("8", "8"),
63+
"CMAKE_BUILD_TYPE": ("Debug", "Debug"),
64+
"COMPILE_CUSTOM_KERNELS": ("0", False),
65+
"CXX_COMPILER": ("/usr/bin/g++", "/usr/bin/g++"),
66+
"C_COMPILER": ("/usr/bin/gcc", "/usr/bin/gcc"),
67+
"SOC_VERSION": ("ASCEND910A", "ASCEND910A"),
68+
"VERBOSE": ("1", True),
69+
"ASCEND_HOME_PATH": ("/opt/ascend", "/opt/ascend"),
70+
"HCCN_PATH": ("/custom/hccn_tool", "/custom/hccn_tool"),
71+
"HCCL_SO_PATH": ("libhccl_custom.so", "libhccl_custom.so"),
72+
"PROMPT_DEVICE_ID": ("1", "1"),
73+
"DECODE_DEVICE_ID": ("2", "2"),
74+
"LLMDATADIST_COMM_PORT": ("27000", "27000"),
75+
"LLMDATADIST_SYNC_CACHE_WAIT_TIME": ("6000", "6000"),
76+
"VLLM_VERSION": ("0.9.1", "0.9.1"),
77+
"VLLM_ASCEND_TRACE_RECOMPILES": ("1", True),
78+
"VLLM_ENABLE_FUSED_EXPERTS_ALLGATHER_EP": ("1", True),
79+
"VLLM_ASCEND_ENABLE_DBO": ("1", True),
80+
"VLLM_ASCEND_MODEL_EXECUTE_TIME_OBSERVE": ("1", True),
81+
"MOE_ALL2ALL_BUFFER": ("1", True),
82+
"USE_OPTIMIZED_MODEL": ("0", False),
83+
"SELECT_GATING_TOPK_SOTFMAX_EXPERTS": ("1", True),
84+
"VLLM_ASCEND_KV_CACHE_MEGABYTES_FLOATING_TOLERANCE": ("128", 128),
85+
"VLLM_ASCEND_ENABLE_TOPK_TOPP_OPTIMIZATION": ("1", True),
86+
"DISAGGREGATED_PREFILL_RANK_TABLE_PATH": ("/path/to/rank_table.json", "/path/to/rank_table.json"),
87+
"VLLM_ASCEND_LLMDD_RPC_IP": ("192.168.1.1", "192.168.1.1"),
88+
"VLLM_LLMDD_RPC_PORT": ("5558", 5558),
89+
"VLLM_ASCEND_MLA_PA": ("1", True),
90+
"VLLM_ASCEND_ENABLE_MATMUL_ALLREDUCE": ("1", True)
91+
}
92+
93+
def setUp(self):
94+
env_keys = set(env_variables.keys())
95+
# 检查默认值是否覆盖所有变量
96+
self.assertEqual(
97+
env_keys, set(self._default_values.keys()),
98+
"错误:_default_values 未覆盖所有环境变量,请检查是否有遗漏或多余的键"
99+
)
100+
# 检查测试值是否覆盖所有变量
101+
self.assertEqual(
102+
env_keys, set(self._test_values.keys()),
103+
"错误:_test_values 未覆盖所有环境变量,请检查是否有遗漏或多余的键"
104+
)
105+
106+
def test_default_values(self):
107+
"""测试所有环境变量未设置时的默认值"""
108+
for var_name, getter in env_variables.items():
109+
with self.subTest(var_name=var_name):
110+
with patch.dict(os.environ, {}, clear=True): # 清空环境变量
111+
actual = getter()
112+
expected = self._default_values[var_name]
113+
self.assertEqual(
114+
actual, expected,
115+
f"{var_name} 默认值错误:预期 {expected},实际 {actual}"
116+
)
117+
118+
def test_set_values(self):
119+
"""测试所有环境变量设置后的解析结果"""
120+
for var_name, getter in env_variables.items():
121+
with self.subTest(var_name=var_name):
122+
input_val, expected = self._test_values[var_name]
123+
with patch.dict(os.environ, {var_name: input_val}): # 设置环境变量
124+
actual = getter()
125+
self.assertEqual(
126+
actual, expected,
127+
f"{var_name} 解析错误:输入 {input_val},预期 {expected},实际 {actual}"
128+
)

0 commit comments

Comments
 (0)