Skip to content

Commit 1546436

Browse files
Merge branch 'master' into test-syncer-k8s
2 parents baa92e3 + 6a83937 commit 1546436

File tree

16 files changed

+205
-61
lines changed

16 files changed

+205
-61
lines changed

Pipfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pipenv = "==2022.8.5"
2323
pyfakefs = "==4.4.0"
2424
pylint = "~=2.4"
2525
pylint-protobuf = "==0.21.0"
26-
pyright = "==1.1.378"
26+
pyright = "==1.1.393"
2727
selenium = "==3.141.0"
2828
twine = "*"
2929
WebTest = "==3.0.0"

Pipfile.lock

Lines changed: 28 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

infra/terraform/variables.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ variable "ip_cidr_range" {
3636
}
3737

3838
variable "gke_num_nodes" {
39-
default = 2
39+
default = 5
4040
description = "The number of gke nodes"
4141
}
4242

4343
variable "machine_type" {
44-
default = "e2-standard-2"
44+
default = "e2-standard-4"
4545
description = "The machine type"
4646
}
4747

pyrightconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
"executionEnvironments": [{
1010
"root": "src",
1111
"extraPaths": [ "src/third_party" ],
12-
"pythonVersion": "3.7"
12+
"pythonVersion": "3.11"
1313
}]
1414
}

src/appengine/handlers/jobs.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,3 +298,22 @@ def post(self):
298298
"""Get and render the jobs in JSON."""
299299
result, _ = get_results()
300300
return self.render_json(result)
301+
302+
303+
class GetEnvironmentHandler(base_handler.Handler):
304+
"""Handler that gets the computed environment for a job."""
305+
306+
@handler.get(handler.JSON)
307+
@handler.check_user_access(need_privileged_access=True)
308+
def get(self):
309+
"""Get and render the computed environment in JSON."""
310+
name = request.args.get('name')
311+
if not name:
312+
raise helpers.EarlyExitError('No job name provided.', 400)
313+
314+
job = data_types.Job.query(data_types.Job.name == name).get()
315+
if not job:
316+
raise helpers.EarlyExitError('Job not found.', 404)
317+
318+
environment = job.get_environment()
319+
return self.render_json({'environment': environment})

src/appengine/private/components/jobs/jobs.html

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
<link rel="import" href="../../bower_components/iron-icon/iron-icon.html">
1919
<link rel="import" href="../../bower_components/paper-button/paper-button.html">
2020
<link rel="import" href="../../bower_components/paper-checkbox/paper-checkbox.html">
21+
<link rel="import" href="../../bower_components/paper-dialog/paper-dialog.html">
22+
<link rel="import" href="../../bower_components/paper-dialog-scrollable/paper-dialog-scrollable.html">
2123
<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
2224
<link rel="import" href="../../bower_components/paper-input/paper-input.html">
2325
<link rel="import" href="../../bower_components/paper-input/paper-textarea.html">
@@ -100,9 +102,30 @@
100102
on-response="handleResponse"
101103
debounce-duration="500"></iron-ajax>
102104

105+
<iron-ajax
106+
id="environmentAjax"
107+
url="/jobs/environment"
108+
method="GET"
109+
content-type="application/json"
110+
loading="{{envLoading}}"
111+
last-error="{{envError}}"
112+
last-response="{{envResponse}}"
113+
on-error="handleEnvError"
114+
on-response="handleEnvResponse"></iron-ajax>
115+
103116
<delete-job-dialog id="deleteJobDialog" field-values="[[fieldValues]]" job="[[toDelete]]">
104117
</delete-job-dialog>
105118

119+
<paper-dialog id="envDialog" with-backdrop>
120+
<h2>Computed Environment</h2>
121+
<paper-dialog-scrollable>
122+
<pre id="envContent"></pre>
123+
</paper-dialog-scrollable>
124+
<div class="buttons">
125+
<paper-button dialog-dismiss>Close</paper-button>
126+
</div>
127+
</paper-dialog>
128+
106129
<h2>Templates</h2>
107130

108131
<div class="section">
@@ -334,6 +357,7 @@ <h2>Jobs</h2>
334357

335358
<paper-button raised on-tap="submitForm" data-index$="[[index]]">Save</paper-button>
336359
<paper-button class="info" job="[[item]]" raised on-tap="deleteJobTapped">Delete</paper-button>
360+
<paper-button raised on-tap="viewEnvironment" data-job-name$="[[item.name]]">View inherited environment</paper-button>
337361
</div>
338362

339363
<div class="right">
@@ -368,6 +392,10 @@ <h2>Jobs</h2>
368392
type: Boolean,
369393
value: false
370394
},
395+
envLoading: {
396+
type: Boolean,
397+
value: false
398+
},
371399
submitId: {
372400
type: Number,
373401
value: 0
@@ -539,6 +567,30 @@ <h2>Jobs</h2>
539567
stopEventPropagation(ev) {
540568
ev.stopPropagation();
541569
}
570+
571+
handleEnvError(event) {
572+
var response = event.detail.request.xhr.response;
573+
if (response.error) {
574+
this.$.envContent.textContent = 'Error: ' + response.error.message;
575+
} else {
576+
this.$.envContent.textContent = 'Error fetching environment';
577+
}
578+
this.$.envDialog.open();
579+
}
580+
581+
handleEnvResponse(event) {
582+
var response = event.detail.response;
583+
this.$.envContent.textContent = Object.entries(response.environment)
584+
.map(([key, value]) => `${key} = ${value}`)
585+
.join('\n');
586+
this.$.envDialog.open();
587+
}
588+
589+
viewEnvironment(event) {
590+
var jobName = event.target.dataset.jobName;
591+
this.$.environmentAjax.params = {name: jobName};
592+
this.$.environmentAjax.generateRequest();
593+
}
542594
}
543595

544596
customElements.define(JobsPage.is, JobsPage);

src/appengine/server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ def register_routes(flask_app, routes):
162162
('/jobs', jobs.Handler),
163163
('/jobs/load', jobs.JsonHandler),
164164
('/jobs/delete-job', jobs.DeleteJobHandler),
165+
('/jobs/environment', jobs.GetEnvironmentHandler),
165166
('/login', login.Handler),
166167
('/logout', login.LogoutHandler),
167168
('/report-bug', help_redirector.ReportBugHandler),

src/clusterfuzz/_internal/bot/minimizer/minimizer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ def _deadline_exceeded(self, cleanup_function=None, soft_check=False):
183183
"""Check to see if we have exceeded the deadline for execution."""
184184
if self.minimizer.deadline and time.time() > self.minimizer.deadline:
185185
if soft_check:
186+
logs.warning(f'Minimization deadline exceeded. soft_check={soft_check}')
186187
return True
187188

188189
# If we are here, we have exceeded the deadline on a hard check. Clean up.
@@ -192,6 +193,7 @@ def _deadline_exceeded(self, cleanup_function=None, soft_check=False):
192193
if self.minimizer.cleanup_function:
193194
self.minimizer.cleanup_function()
194195

196+
logs.warning('Minimization deadline exceeded.')
195197
# Raise an exception if this is not a soft deadline check.
196198
raise errors.MinimizationDeadlineExceededError(self)
197199

@@ -558,6 +560,7 @@ def minimize(self, data):
558560
# minimized test case is stored with it so that we can recover the work
559561
# that had been done up to that point.
560562
testcase = error.testcase
563+
logs.warning('Minimization Deadline Exceeded.')
561564
except errors.TokenizationFailureError:
562565
logs.info('Tokenized data did not match original data. Defaulting to line'
563566
'minimization.')

src/clusterfuzz/_internal/bot/tasks/utasks/minimize_task.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,10 @@ def utask_main(uworker_input: uworker_msg_pb2.Input): # pylint: disable=no-memb
445445
' should have been detected in preprocess.')
446446
return None
447447

448-
max_threads = utils.maximum_parallel_processes_allowed()
448+
# TODO(alhijazi): re-install multithreaded runs
449+
# max_threads = utils.maximum_parallel_processes_allowed()
450+
# Temporarily run minimization single threaded.
451+
max_threads = 1
449452

450453
# Prepare the test case runner.
451454
crash_retries = environment.get_value('CRASH_RETRIES')
@@ -1748,8 +1751,10 @@ def do_html_minimization(test_function, get_temp_file, data, deadline, threads,
17481751
delete_temp_files=delete_temp_files,
17491752
progress_report_function=logs.info)
17501753
try:
1754+
logs.info('Launching html minimization.')
17511755
return current_minimizer.minimize(data)
17521756
except minimizer_errors.AntlrDecodeError:
1757+
logs.info('Launching line minimization.')
17531758
return do_line_minimization(test_function, get_temp_file, data, deadline,
17541759
threads, cleanup_interval, delete_temp_files)
17551760

src/clusterfuzz/_internal/bot/tasks/utasks/progression_task.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,6 @@ def find_fixed_range(uworker_input):
522522

523523
logs.info(
524524
f'min_revision is {min_revision} and max_revision is {max_revision}.')
525-
logs.info(f'revision_list is {revision_list}.')
526525

527526
min_index = revisions.find_min_revision_index(revision_list, min_revision)
528527
if min_index is None:

0 commit comments

Comments
 (0)