Skip to content

Commit 6d35c54

Browse files
k0machifruch
authored andcommitted
run.py: Introduce metadata files for results
This commit adds metadata files to java matrix reports, allowing argus to correctly collect each version separately. Task: scylladb/argus#289
1 parent d20db5c commit 6d35c54

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

main.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,15 @@ def main(java_driver_git, scylla_install_dir, tests, versions, driver_type,scyll
2020

2121
for version in versions:
2222
logging.info("=== JAVA DRIVER VERSION %s ===", version)
23-
24-
try:
25-
report = run.Run(
23+
runner = run.Run(
2624
java_driver_git=java_driver_git,
2725
scylla_install_dir=scylla_install_dir,
2826
tag=version,
2927
tests=tests,
3028
driver_type=driver_type,
31-
scylla_version=scylla_version).run()
32-
29+
scylla_version=scylla_version)
30+
try:
31+
report = runner.run()
3332
logging.info("=== JAVA DRIVER MATRIX RESULTS FOR %s ===", version)
3433
logging.info(", ".join(f"{key}: {value}" for key, value in report.summary.items()))
3534
if report.is_failed:
@@ -42,7 +41,9 @@ def main(java_driver_git, scylla_install_dir, tests, versions, driver_type,scyll
4241
logging.exception(f"{version} failed")
4342
status = 1
4443
exc_type, exc_value, exc_traceback = sys.exc_info()
45-
results[version] = dict(exception=traceback.format_exception(exc_type, exc_value, exc_traceback))
44+
failure_reason = traceback.format_exception(exc_type, exc_value, exc_traceback)
45+
results[version] = dict(exception=failure_reason)
46+
runner.create_metadata_for_failure(reason="\n".join(failure_reason))
4647

4748
if recipients:
4849
email_report = create_report(results=results)

run.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import json
12
import logging
23
import os
34
import re
@@ -37,6 +38,10 @@ def _setup_out_dir(self):
3738
os.makedirs(xunit_dir)
3839
return xunit_dir
3940

41+
@property
42+
def metadata_file_name(self) -> str:
43+
return f'metadata_{self._tag}.json'
44+
4045
@cached_property
4146
def version(self) -> str:
4247
version = self._tag
@@ -116,6 +121,18 @@ def _apply_patch_files(self) -> bool:
116121
if is_dir_empty:
117122
logging.warning("The '%s' directory does not contain any files", self.version_folder)
118123

124+
def create_metadata_for_failure(self, reason: str) -> None:
125+
reports_dir = Path(os.path.dirname(__file__)) / "reports"
126+
if not reports_dir.exists():
127+
reports_dir.mkdir(exist_ok=True, parents=True)
128+
metadata_file = reports_dir / self.metadata_file_name
129+
metadata = {
130+
"driver_name": f"TEST-{self._tag}",
131+
"driver_type": "java",
132+
"failure_reason": reason,
133+
}
134+
metadata_file.write_text(json.dumps(metadata))
135+
119136
def run(self) -> ProcessJUnit:
120137
self._run_command_in_shell("git checkout .")
121138
self._run_command_in_shell(f"git checkout {self._tag}")
@@ -153,9 +170,15 @@ def run(self) -> ProcessJUnit:
153170
except AssertionError:
154171
# Some tests are failed
155172
pass
156-
173+
metadata_file = Path(os.path.dirname(__file__)) / "reports" / self.metadata_file_name
174+
metadata = {
175+
"driver_name": f"TEST-{self._tag}",
176+
"driver_type": "java",
177+
"junit_result": f"./TEST-{self._tag}.xml",
178+
}
157179
report = ProcessJUnit(
158180
new_report_xml_path=Path(os.path.dirname(__file__)) / "reports" / f"TEST-{self._tag}.xml",
159181
tests_result_path=self._report_path,
160182
tag=self._tag)
183+
metadata_file.write_text(json.dumps(metadata))
161184
return report

0 commit comments

Comments
 (0)