21
21
22
22
from appengine .libs import form
23
23
from appengine .libs import gcs
24
- from appengine .libs import helpers
25
24
from clusterfuzz ._internal .config import local_config
26
25
from clusterfuzz ._internal .issue_management .google_issue_tracker import \
27
26
issue_tracker
27
+ from clusterfuzz ._internal .metrics import logs
28
28
29
29
ACCEPTED_FILETYPES = [
30
30
'text/javascript' , 'application/pdf' , 'text/html' , 'application/zip'
31
31
]
32
32
ISSUETRACKER_ACCEPTED_STATE = 'ACCEPTED'
33
33
ISSUETRACKER_WONTFIX_STATE = 'NOT_REPRODUCIBLE'
34
+ UPLOAD_REQUEST_COMPONENT_FILTER = 'componentid:1600865'
35
+ CLUSTERFUZZ_COMPONENT_FILTER = 'componentid:1457062+'
34
36
35
37
36
38
def get_vrp_uploaders (config ):
@@ -125,7 +127,7 @@ def submit_testcase(issue_id, file, filename, filetype, cmds):
125
127
elif filetype == 'application/zip' :
126
128
job = 'linux_asan_chrome_mp'
127
129
else :
128
- raise TypeError
130
+ return 0
129
131
upload_info = gcs .prepare_blob_upload ()._asdict ()
130
132
131
133
data = {
@@ -158,18 +160,23 @@ def handle_testcases(tracker, config):
158
160
# Handle bugs that were already submitted and still open.
159
161
older_issues = tracker .find_issues_with_filters (
160
162
keywords = [],
161
- query_filters = ['componentid:1600865' , 'status:accepted' ],
163
+ query_filters = [
164
+ UPLOAD_REQUEST_COMPONENT_FILTER , CLUSTERFUZZ_COMPONENT_FILTER ,
165
+ 'status:accepted'
166
+ ],
162
167
only_open = True )
163
168
for issue in older_issues :
164
169
# Close out older bugs that may have failed to reproduce.
165
170
if close_issue_if_not_reproducible (issue , config ):
166
- helpers .log ('Closing issue {issue_id} as it failed to reproduce' ,
167
- issue .id )
171
+ logs .info (f'Closing issue { issue .id } as it failed to reproduce' )
168
172
169
173
# Handle new bugs that may need to be submitted.
170
174
issues = tracker .find_issues_with_filters (
171
175
keywords = [],
172
- query_filters = ['componentid:1600865' , 'status:new' ],
176
+ query_filters = [
177
+ UPLOAD_REQUEST_COMPONENT_FILTER , CLUSTERFUZZ_COMPONENT_FILTER ,
178
+ 'status:new'
179
+ ],
173
180
only_open = True )
174
181
if len (issues ) == 0 :
175
182
return
@@ -189,20 +196,33 @@ def handle_testcases(tracker, config):
189
196
reporters_map [issue .reporter ] = reporters_map .get (issue .reporter , 1 ) + 1
190
197
if close_issue_if_invalid (issue , attachment_metadata , commandline_flags ,
191
198
vrp_uploaders ):
192
- helpers . log ( 'Closing issue {issue_id } as it is invalid' , issue . id )
199
+ logs . info ( f 'Closing issue { issue . id } as it is invalid' )
193
200
continue
194
201
195
202
# Submit valid testcases.
196
203
attachment_metadata = attachment_metadata [0 ]
197
204
attachment = tracker .get_attachment (
198
205
attachment_metadata ['attachmentDataRef' ]['resourceName' ])
199
- submit_testcase (issue .id , attachment , attachment_metadata ['filename' ],
200
- attachment_metadata ['contentType' ], commandline_flags )
201
- comment_message = 'Testcase submitted to clusterfuzz'
202
- issue .status = ISSUETRACKER_ACCEPTED_STATE
203
- issue .assignee = 'clusterfuzz@chromium.org'
206
+ submit_result = submit_testcase (
207
+ issue .id , attachment , attachment_metadata ['filename' ],
208
+ attachment_metadata ['contentType' ], commandline_flags )
209
+ if submit_result and submit_result .status_code == 200 :
210
+ comment_message = 'Testcase submitted to clusterfuzz.'
211
+ issue .status = ISSUETRACKER_ACCEPTED_STATE
212
+ issue .assignee = 'clusterfuzz@chromium.org'
213
+ logs .info (f'Submitted testcase file for issue { issue .id } ' )
214
+ elif submit_result and submit_result .status_code != 200 :
215
+ comment_message = 'Testcase submission failed during upload.'
216
+ issue .status = ISSUETRACKER_WONTFIX_STATE
217
+ logs .info (f'Testcase submission failed with error code'
218
+ f'{ submit_result .status_code } for issue: { issue .id } ' )
219
+ else :
220
+ comment_message = (
221
+ 'Testcase submission failed due to unrecognized poc type.' )
222
+ issue .status = ISSUETRACKER_WONTFIX_STATE
223
+ logs .info (f'Testcase submission failed due to poc type error'
224
+ f'for issue: { issue .id } ' )
204
225
issue .save (new_comment = comment_message , notify = True )
205
- helpers .log ('Submitted testcase file for issue {issue_id}' , issue .id )
206
226
207
227
208
228
def main ():
0 commit comments