Skip to content

Commit b3d20b6

Browse files
committed
src/regression_tracker: refine node search and regression generation
Restrict the search of past results to those with the same platform, defconfig, compiler, platform, etc than the original failed test. Use the submit_regression helper to generate and publish the regression. Signed-off-by: Ricardo Cañuelo <[email protected]>
1 parent a6dc5a3 commit b3d20b6

File tree

1 file changed

+27
-33
lines changed

1 file changed

+27
-33
lines changed

src/regression_tracker.py

+27-33
Original file line numberDiff line numberDiff line change
@@ -30,44 +30,38 @@ def _stop(self, sub_id):
3030
if sub_id:
3131
self._api_helper.unsubscribe_filters(sub_id)
3232

33-
def _create_regression(self, failed_node, last_successful_node):
34-
"""Method to create a regression"""
35-
regression = {}
36-
for field in self._regression_fields:
37-
regression[field] = failed_node[field]
38-
39-
regression['kind'] = 'regression'
40-
regression['data'] = {
41-
'fail_node': failed_node['id'],
42-
'pass_node': last_successful_node['id'],
43-
}
44-
reg = self._api_helper.submit_regression(regression)
45-
46-
def _detect_regression(self, node):
33+
def _detect_regression(self, fail_node):
4734
"""Method to check and detect regression"""
4835
previous_nodes = self._api.node.find({
49-
'name': node['name'],
50-
'group': node['group'],
51-
'path': node['path'],
36+
'name': fail_node['name'],
37+
'group': fail_node['group'],
38+
'path': fail_node['path'],
5239
'data.kernel_revision.tree':
53-
node['data']['kernel_revision']['tree'],
40+
fail_node['data']['kernel_revision']['tree'],
5441
'data.kernel_revision.branch':
55-
node['data']['kernel_revision']['branch'],
56-
'data.kernel_revision.url': node['data']['kernel_revision']['url'],
57-
'created__lt': node['created'],
42+
fail_node['data']['kernel_revision']['branch'],
43+
'data.kernel_revision.url':
44+
fail_node['data']['kernel_revision']['url'],
45+
'data.arch': fail_node['data']['arch'],
46+
'data.defconfig': fail_node['data']['defconfig'],
47+
'data.compiler': fail_node['data']['compiler'],
48+
'data.platform': fail_node['data']['platform'],
49+
'created__lt': fail_node['created'],
50+
'state': 'done'
5851
})
59-
60-
if previous_nodes:
61-
previous_nodes = sorted(
62-
previous_nodes,
63-
key=lambda node: node['created'],
64-
reverse=True
65-
)
66-
67-
if previous_nodes[0]['result'] == 'pass':
68-
self.log.info(f"Detected regression for node id: \
69-
{node['id']}")
70-
self._create_regression(node, previous_nodes[0])
52+
if not previous_nodes:
53+
return
54+
previous_node = sorted(
55+
previous_nodes,
56+
key=lambda node: node['created'],
57+
reverse=True
58+
)[0]
59+
if previous_node['result'] == 'pass':
60+
self.log.info("Detected regression for node id: "
61+
f"{fail_node['id']}")
62+
regression = self._api_helper.submit_regression(fail_node,
63+
previous_node)
64+
self.log.info(f"Regression submitted: {regression['id']}")
7165

7266
def _get_all_failed_child_nodes(self, failures, root_node):
7367
"""Method to get all failed nodes recursively from top-level node"""

0 commit comments

Comments
 (0)