Skip to content

Commit ad2e4ab

Browse files
add logs partial to param table
1 parent caf4815 commit ad2e4ab

File tree

6 files changed

+70
-3
lines changed

6 files changed

+70
-3
lines changed

src/feelpp/benchmarking/report/__main__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ def main_cli():
4444

4545

4646
report_renderer = RendererFactory.create("benchmark")
47+
logs_renderer = RendererFactory.create("logs")
4748

4849
atomic_reports.movePartials(os.path.join(parser.args.modules_path,"descriptions"))
50+
atomic_reports.createLogReports(os.path.join(parser.args.modules_path,"logs"),logs_renderer)
4951
atomic_reports.createReports(os.path.join(parser.args.modules_path,"reports"),report_renderer)
5052

5153
if parser.args.website:

src/feelpp/benchmarking/report/atomicReports/atomicReport.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,27 @@ def movePartials(self,base_dir):
112112
os.rename(os.path.join(self.partials_dir,description_filename), os.path.join(move_dir,description_file_basename))
113113
self.hash_param_map[description_file_basename_splitted]["partial_filepath"] = os.path.join(os.path.relpath(move_dir,start="./docs/modules/ROOT/pages"),description_file_basename)
114114

115+
def createLogReports(self,base_dir, renderer):
116+
for run in self.runs:
117+
for testcase in run["testcases"]:
118+
check_vars = testcase["check_vars"]
119+
if all(var not in check_vars for var in ["script","output_log","error_log"]):
120+
continue
121+
122+
logs_filepath = os.path.join(base_dir,self.machine_id,self.application_id,self.use_case_id,self.filename(),f"{testcase['hash']}.adoc").replace("-","_").replace(":","_").replace("+","Z")
123+
if not os.path.exists(os.path.dirname(logs_filepath)):
124+
os.makedirs(os.path.dirname(logs_filepath))
125+
126+
self.hash_param_map[testcase["hash"]]["logs_filepath"] = os.path.relpath(logs_filepath,start="./docs/modules/ROOT/pages")
127+
renderer.render(
128+
logs_filepath,
129+
dict(
130+
script = check_vars.get("script"),
131+
output_log = check_vars.get("output_log"),
132+
error_log = check_vars.get("error_log")
133+
)
134+
)
135+
115136

116137
def filename(self):
117138
""" Build the filename for the report
@@ -137,6 +158,8 @@ def parseHashMap(self):
137158
parsed_hashmap[hash] = self.flatten(v["check_params"])
138159
if "partial_filepath" in v:
139160
parsed_hashmap[hash]["partial_filepath"] = v["partial_filepath"]
161+
if "logs_filepath" in v:
162+
parsed_hashmap[hash]["logs_filepath"] = v["logs_filepath"]
140163

141164
headers = []
142165
for entry in parsed_hashmap.values():

src/feelpp/benchmarking/report/atomicReports/repository.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,18 @@ def movePartials(self,base_dir):
147147
for atomic_report in self.data:
148148
atomic_report.movePartials(base_dir)
149149

150+
def createLogReports(self,base_dir, renderer):
151+
""" Create all log reports under a single directory
152+
Args:
153+
base_dir (str): The base directory where the report will be created
154+
renderer (Renderer): The renderer to use
155+
"""
156+
if not os.path.exists(base_dir):
157+
os.mkdir(base_dir)
158+
159+
for atomic_report in self.data:
160+
atomic_report.createLogReports(base_dir,renderer)
161+
150162

151163
def patchPlotConfigs(self,plot_configs, patch_reports_ids, save = False):
152164
""" Replaces the plot configuration with a new one.

src/feelpp/benchmarking/report/renderer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ def create(renderer_type):
4141
templates = {
4242
"index" : "index.adoc.j2",
4343
"benchmark" : "benchmark.adoc.j2",
44-
"atomic_overview" : "atomicOverview.adoc.j2"
44+
"atomic_overview" : "atomicOverview.adoc.j2",
45+
"logs" : "logs.adoc.j2"
4546
}
4647
try:
4748
return Renderer(base, templates[renderer_type])

src/feelpp/benchmarking/report/templates/benchmark.adoc.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ include::ROOT:{{description_path}}[leveloffset=+1]
2424
{% if not empty %}
2525

2626
|===
27-
{% for header in hash_params_headers %} | {% if header == 'partial_filepath' %} {% else %} {{ header }} {% endif %} {% endfor %}
27+
{% for header in hash_params_headers %} | {% if header == 'partial_filepath' or header == 'logs_filepath' %} {% else %} {{ header }} {% endif %} {% endfor %}
2828

2929
{% for entry in flat_hash_param_map.values() %}
3030
{% for header in hash_params_headers %}
31-
{% if header == 'partial_filepath' %} | xref:{{ entry.get(header, '') }}[Description] {% else %} | {{ entry.get(header, '') }} {% endif %}
31+
{% if header == 'partial_filepath' %} | xref:{{ entry.get(header, '') }}[Description] {% elif header == 'logs_filepath' %} | xref:{{ entry.get(header, '') }}[Logs] {% else %} | {{ entry.get(header, '') }} {% endif %}
3232
{% endfor %}
3333

3434
{% endfor %}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
= ReFrame logs
2+
3+
{% if script != "" %}
4+
== ReFrame scheduler script
5+
6+
[source,bash]
7+
----
8+
{{ script }}
9+
----
10+
{% endif %}
11+
12+
{% if error_log != "" %}
13+
== ReFrame log
14+
15+
[source,bash]
16+
----
17+
{{ error_log }}
18+
----
19+
{% endif %}
20+
21+
{% if output_log != "" %}
22+
== ReFrame output log
23+
24+
[source,bash]
25+
----
26+
{{ output_log }}
27+
----
28+
29+
{% endif %}

0 commit comments

Comments
 (0)