11
11
12
12
from cli .lib .common .cli_helper import BaseRunner
13
13
from cli .lib .common .envs_helper import env_path_field , env_str_field , get_env
14
+ from cli .lib .common .gh_summary import (
15
+ gh_summary_path ,
16
+ summarize_failures_by_test_command ,
17
+ )
14
18
from cli .lib .common .path_helper import copy , remove_dir
15
19
from cli .lib .common .pip_helper import (
16
20
pip_install_first_match ,
17
21
pip_install_packages ,
18
22
pkg_exists ,
19
23
run_python ,
20
24
)
21
- from cli .lib .common .utils import run_command , working_directory
22
- from cli .lib .core .vllm .lib import clone_vllm , run_test_plan , sample_vllm_test_library
25
+ from cli .lib .common .utils import ensure_path , run_command , working_directory
26
+ from cli .lib .core .vllm .lib import (
27
+ clone_vllm ,
28
+ run_test_plan ,
29
+ sample_vllm_test_library ,
30
+ summarize_build_info ,
31
+ )
23
32
24
33
25
34
logger = logging .getLogger (__name__ )
@@ -41,13 +50,20 @@ class VllmTestParameters:
41
50
"VLLM_WHEELS_PATH" , "./dist/external/vllm/wheels"
42
51
)
43
52
53
+ # generate a file to store test summary
54
+ test_summary_file : Path = env_path_field (
55
+ "TEMP_GITHUB_STEP_SUMMARY" , "./generated_step_summary.md"
56
+ )
57
+
44
58
torch_cuda_arch_list : str = env_str_field ("TORCH_CUDA_ARCH_LIST" , "8.9" )
45
59
46
60
def __post_init__ (self ):
47
61
if not self .torch_whls_path .exists ():
48
62
raise ValueError ("missing torch_whls_path" )
49
63
if not self .vllm_whls_path .exists ():
50
64
raise ValueError ("missing vllm_whls_path" )
65
+ if self .test_summary_file :
66
+ ensure_path (self .test_summary_file , is_file = True )
51
67
52
68
53
69
class TestInpuType (Enum ):
@@ -91,33 +107,54 @@ def prepare(self):
91
107
logger .info ("Display VllmTestParameters %s" , params )
92
108
self ._set_envs (params )
93
109
94
- clone_vllm (dst = self .work_directory )
110
+ vllm_commit = clone_vllm (dst = self .work_directory )
95
111
with working_directory (self .work_directory ):
96
112
remove_dir (Path ("vllm" ))
97
113
self ._install_wheels (params )
98
114
self ._install_dependencies ()
99
115
# verify the torches are not overridden by test dependencies
100
116
check_versions ()
117
+ return vllm_commit
101
118
102
119
def run (self ):
103
120
"""
104
121
main function to run vllm test
105
122
"""
106
- self .prepare ()
107
- with working_directory (self .work_directory ):
108
- if self .test_type == TestInpuType .TEST_PLAN :
109
- if self .num_shards > 1 :
123
+ vllm_commit = self .prepare ()
124
+
125
+ # prepare test summary
126
+ test_summary_path = Path ("tmp_pytest_report" ).resolve ()
127
+ ensure_path (test_summary_path )
128
+ test_summary_result = []
129
+
130
+ try :
131
+ with working_directory (self .work_directory ):
132
+ if self .test_type == TestInpuType .TEST_PLAN :
110
133
run_test_plan (
111
134
self .test_plan ,
112
135
"vllm" ,
113
136
sample_vllm_test_library (),
114
137
self .shard_id ,
115
138
self .num_shards ,
139
+ test_summary_path = test_summary_path ,
140
+ test_summary_result = test_summary_result ,
116
141
)
117
142
else :
118
- run_test_plan (self .test_plan , "vllm" , sample_vllm_test_library ())
119
- else :
120
- raise ValueError (f"Unknown test type { self .test_type } " )
143
+ raise ValueError (f"Unknown test type { self .test_type } " )
144
+ except Exception as e :
145
+ logger .error ("Failed to run vllm test: %s" , e )
146
+ raise e
147
+ finally :
148
+ self .vllm_test_gh_summary (vllm_commit , test_summary_result )
149
+
150
+ def vllm_test_gh_summary (
151
+ self , vllm_commit : str , test_summary_results : list [tuple [str , str ]]
152
+ ):
153
+ if not gh_summary_path ():
154
+ return logger .info ("Skipping, not detect GH Summary env var...." )
155
+ logger .info ("Generate GH Summary ..." )
156
+ summarize_build_info (vllm_commit )
157
+ summarize_failures_by_test_command (test_summary_results )
121
158
122
159
def _install_wheels (self , params : VllmTestParameters ):
123
160
logger .info ("Running vllm test with inputs: %s" , params )
0 commit comments