Skip to content

Commit e258984

Browse files
committed
Use new sketches report structure
The compile-examples action now uses an array of objects containing data for compilations associated with a board. This was done in order to allow for each report to contain data for multiple boards, rather than the current approach of each sketches report being limited to a single board.
1 parent 2a96b78 commit e258984

File tree

5 files changed

+409
-307
lines changed

5 files changed

+409
-307
lines changed

reportsizedeltas.py

Lines changed: 48 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class ReportSizeDeltas:
5757

5858
class ReportKeys:
5959
"""Key names used in the sketches report dictionary"""
60+
boards = "boards"
6061
board = "board"
6162
commit_hash = "commit_hash"
6263
commit_url = "commit_url"
@@ -254,14 +255,16 @@ def get_sketches_reports(self, artifact_folder_object):
254255
# Combine sketches reports into an array
255256
with open(file=artifact_folder + "/" + report_filename) as report_file:
256257
report_data = json.load(report_file)
257-
if self.ReportKeys.sketches not in report_data:
258+
if self.ReportKeys.boards not in report_data:
258259
# Sketches reports use the old format, skip
259260
print("Old format sketches report found, skipping")
260261
continue
261262

262-
if self.ReportKeys.sizes in report_data:
263-
# The report contains deltas data
264-
sketches_reports.append(report_data)
263+
for fqbn_data in report_data[self.ReportKeys.boards]:
264+
if self.ReportKeys.sizes in fqbn_data:
265+
# The report contains deltas data
266+
sketches_reports.append(report_data)
267+
break
265268

266269
if not sketches_reports:
267270
print("No size deltas data found in workflow artifact for this PR. The compile-examples action's "
@@ -279,46 +282,52 @@ def generate_report(self, sketches_reports):
279282

280283
# Generate summary report data
281284
summary_report_data = [[fqbn_column_heading]]
282-
for row_number, fqbn_data in enumerate(iterable=sketches_reports, start=1):
283-
# Add a row to the report
284-
row = ["" for _ in range(len(summary_report_data[0]))]
285-
row[0] = fqbn_data[self.ReportKeys.board]
286-
summary_report_data.append(row)
287-
288-
# Populate the row with data
289-
for size_data in fqbn_data[self.ReportKeys.sizes]:
290-
# Determine column number for this memory type
291-
column_number = get_report_column_number(report=summary_report_data,
292-
column_heading=size_data[self.ReportKeys.name])
293-
294-
# Add the memory data to the cell
295-
summary_report_data[row_number][column_number] = (
296-
get_summary_value(
297-
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][self.ReportKeys.minimum],
298-
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][self.ReportKeys.maximum])
299-
)
300-
301-
# Generate detailed report data
302-
full_report_data = [[fqbn_column_heading]]
303-
for row_number, fqbn_data in enumerate(iterable=sketches_reports, start=1):
304-
# Add a row to the report
305-
row = ["" for _ in range(len(full_report_data[0]))]
306-
row[0] = fqbn_data[self.ReportKeys.board]
307-
full_report_data.append(row)
308-
309-
# Populate the row with data
310-
for sketch in fqbn_data[self.ReportKeys.sketches]:
311-
for size_data in sketch[self.ReportKeys.sizes]:
285+
row_number = 0
286+
for fqbns_data in sketches_reports:
287+
for fqbn_data in fqbns_data[self.ReportKeys.boards]:
288+
row_number += 1
289+
# Add a row to the report
290+
row = ["" for _ in range(len(summary_report_data[0]))]
291+
row[0] = fqbn_data[self.ReportKeys.board]
292+
summary_report_data.append(row)
293+
294+
# Populate the row with data
295+
for size_data in fqbn_data[self.ReportKeys.sizes]:
312296
# Determine column number for this memory type
313-
column_number = get_report_column_number(
314-
report=full_report_data,
315-
column_heading=sketch[self.ReportKeys.name] + "<br>" + size_data[self.ReportKeys.name])
297+
column_number = get_report_column_number(report=summary_report_data,
298+
column_heading=size_data[self.ReportKeys.name])
316299

317300
# Add the memory data to the cell
318-
full_report_data[row_number][column_number] = (
319-
size_data[self.ReportKeys.delta][self.ReportKeys.absolute]
301+
summary_report_data[row_number][column_number] = (
302+
get_summary_value(
303+
minimum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][self.ReportKeys.minimum],
304+
maximum=size_data[self.ReportKeys.delta][self.ReportKeys.absolute][self.ReportKeys.maximum])
320305
)
321306

307+
# Generate detailed report data
308+
full_report_data = [[fqbn_column_heading]]
309+
row_number = 0
310+
for fqbns_data in sketches_reports:
311+
for fqbn_data in fqbns_data[self.ReportKeys.boards]:
312+
row_number += 1
313+
# Add a row to the report
314+
row = ["" for _ in range(len(full_report_data[0]))]
315+
row[0] = fqbn_data[self.ReportKeys.board]
316+
full_report_data.append(row)
317+
318+
# Populate the row with data
319+
for sketch in fqbn_data[self.ReportKeys.sketches]:
320+
for size_data in sketch[self.ReportKeys.sizes]:
321+
# Determine column number for this memory type
322+
column_number = get_report_column_number(
323+
report=full_report_data,
324+
column_heading=sketch[self.ReportKeys.name] + "<br>" + size_data[self.ReportKeys.name])
325+
326+
# Add the memory data to the cell
327+
full_report_data[row_number][column_number] = (
328+
size_data[self.ReportKeys.delta][self.ReportKeys.absolute]
329+
)
330+
322331
# Add comment heading
323332
report_markdown = self.report_key_beginning + sketches_reports[0][self.ReportKeys.commit_hash] + "**\n\n"
324333

Lines changed: 68 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,91 @@
11
{
2-
"board": "arduino:avr:leonardo",
32
"commit_hash": "d8fd302",
43
"commit_url": "https://example.com/foo",
5-
"sketches": [
4+
"boards": [
65
{
7-
"name": "examples/Bar",
8-
"compilation_success": true,
9-
"sizes": [
6+
"board": "arduino:avr:leonardo",
7+
"sketches": [
108
{
11-
"name": "flash",
12-
"current": {
13-
"absolute": 3494
14-
},
15-
"previous": {
16-
"absolute": "N/A"
17-
},
18-
"delta": {
19-
"absolute": "N/A"
20-
}
9+
"name": "examples/Bar",
10+
"compilation_success": true,
11+
"sizes": [
12+
{
13+
"name": "flash",
14+
"current": {
15+
"absolute": 3494
16+
},
17+
"previous": {
18+
"absolute": "N/A"
19+
},
20+
"delta": {
21+
"absolute": "N/A"
22+
}
23+
},
24+
{
25+
"name": "RAM for global variables",
26+
"current": {
27+
"absolute": 153
28+
},
29+
"previous": {
30+
"absolute": "N/A"
31+
},
32+
"delta": {
33+
"absolute": "N/A"
34+
}
35+
}
36+
]
2137
},
2238
{
23-
"name": "RAM for global variables",
24-
"current": {
25-
"absolute": 153
26-
},
27-
"previous": {
28-
"absolute": "N/A"
29-
},
30-
"delta": {
31-
"absolute": "N/A"
32-
}
39+
"name": "examples/Foo",
40+
"compilation_success": true,
41+
"sizes": [
42+
{
43+
"name": "flash",
44+
"current": {
45+
"absolute": 3462
46+
},
47+
"previous": {
48+
"absolute": 3474
49+
},
50+
"delta": {
51+
"absolute": -12
52+
}
53+
},
54+
{
55+
"name": "RAM for global variables",
56+
"current": {
57+
"absolute": 149
58+
},
59+
"previous": {
60+
"absolute": 149
61+
},
62+
"delta": {
63+
"absolute": 0
64+
}
65+
}
66+
]
3367
}
34-
]
35-
},
36-
{
37-
"name": "examples/Foo",
38-
"compilation_success": true,
68+
],
3969
"sizes": [
4070
{
4171
"name": "flash",
42-
"current": {
43-
"absolute": 3462
44-
},
45-
"previous": {
46-
"absolute": 3474
47-
},
4872
"delta": {
49-
"absolute": -12
73+
"absolute": {
74+
"minimum": -12,
75+
"maximum": -12
76+
}
5077
}
5178
},
5279
{
5380
"name": "RAM for global variables",
54-
"current": {
55-
"absolute": 149
56-
},
57-
"previous": {
58-
"absolute": 149
59-
},
6081
"delta": {
61-
"absolute": 0
82+
"absolute": {
83+
"minimum": 0,
84+
"maximum": 0
85+
}
6286
}
6387
}
6488
]
6589
}
66-
],
67-
"sizes": [
68-
{
69-
"name": "flash",
70-
"delta": {
71-
"absolute": {
72-
"minimum": -12,
73-
"maximum": -12
74-
}
75-
}
76-
},
77-
{
78-
"name": "RAM for global variables",
79-
"delta": {
80-
"absolute": {
81-
"minimum": 0,
82-
"maximum": 0
83-
}
84-
}
85-
}
8690
]
8791
}

0 commit comments

Comments
 (0)