diff options
-rw-r--r-- | lava_results_app/dbutils.py | 24 | ||||
-rw-r--r-- | lava_results_app/templates/lava_results_app/case.html | 4 | ||||
-rw-r--r-- | lava_results_app/templatetags/results_accessibility_tags.py | 9 | ||||
-rw-r--r-- | lava_results_app/tests/test_names.py | 3 | ||||
-rw-r--r-- | lava_results_app/views/__init__.py | 5 |
5 files changed, 24 insertions, 21 deletions
diff --git a/lava_results_app/dbutils.py b/lava_results_app/dbutils.py index 6c1bd1834..3c8cbe400 100644 --- a/lava_results_app/dbutils.py +++ b/lava_results_app/dbutils.py @@ -171,24 +171,14 @@ def map_scanned_results(results, job, meta_filename): # pylint: disable=too-man if 'duration' in results: measurement = results['duration'] units = 'seconds' - try: - # For lava test suite, the test (actions) can be seen two times. - case = TestCase.objects.get(name=name, suite=suite) - case.test_set = testset - case.metadata = yaml.dump(results) - case.result = result_val - case.measurement = measurement - case.units = units - except TestCase.DoesNotExist: - case = TestCase.objects.create(name=name, - suite=suite, - test_set=testset, - metadata=yaml.dump(results), - measurement=measurement, - units=units, - result=result_val) + case = TestCase.objects.create(name=name, + suite=suite, + test_set=testset, + metadata=yaml.dump(results), + measurement=measurement, + units=units, + result=result_val) with transaction.atomic(): - case.save() if match_action: match_action.testcase = case match_action.save(update_fields=['testcase', 'duration', 'timeout']) diff --git a/lava_results_app/templates/lava_results_app/case.html b/lava_results_app/templates/lava_results_app/case.html index 3dea7c5d7..73ac24d9d 100644 --- a/lava_results_app/templates/lava_results_app/case.html +++ b/lava_results_app/templates/lava_results_app/case.html @@ -1,5 +1,6 @@ {% extends "layouts/content-bootstrap.html" %} {% load i18n %} +{% load results_accessibility_tags %} {% block content %} <h1>Test suite <a href="{{ suite.get_absolute_url }}">{{ suite.name }}</a> for job {{ job_link }}</h1> @@ -33,8 +34,9 @@ {% if testcase.action_metadata %} <ul class="list-unstyled"> {% for key, value in testcase.action_metadata.items %} + {% get_extra_source testcase extra_source as testcase_extra %} {% if key == 'extra' and extra_source %} - <li><strong>{{ key }}:</strong><pre style="white-space: pre-wrap; word-wrap: break-word;">{{ extra_source }}</pre></li> + <li><strong>{{ key }}:</strong><pre style="white-space: pre-wrap; word-wrap: break-word;">{{ testcase_extra }}</pre></li> {% elif key == 'level' %} <li><strong>{{ key }}</strong>: <a href="{% url 'lava.scheduler.job.definition' job.pk %}#pipeline:{{ value }}">{{ value }}</a></li> diff --git a/lava_results_app/templatetags/results_accessibility_tags.py b/lava_results_app/templatetags/results_accessibility_tags.py index 4d6fa29c0..f945068be 100644 --- a/lava_results_app/templatetags/results_accessibility_tags.py +++ b/lava_results_app/templatetags/results_accessibility_tags.py @@ -19,3 +19,12 @@ def check_chart_access(record, user): if not query.is_accessible_by(user): access = False return access + + +@register.assignment_tag() +def get_extra_source(record, data): + if not data: + return '' + if record.id in data: + return data[record.id] + return '' diff --git a/lava_results_app/tests/test_names.py b/lava_results_app/tests/test_names.py index 97aaee5f2..e0393b607 100644 --- a/lava_results_app/tests/test_names.py +++ b/lava_results_app/tests/test_names.py @@ -125,7 +125,8 @@ class TestTestSuite(TestCaseWithFactory): for sample in result_samples: ret = map_scanned_results(results=sample, job=job, meta_filename=None) self.assertTrue(ret) - self.assertEqual(4, TestCase.objects.count()) + # the duplicate smoke-tests-basic is allowed here as the lava test suite supports multiples + self.assertEqual(5, TestCase.objects.count()) val = URLValidator() for testcase in TestCase.objects.all(): self.assertIsNotNone(testcase.name) diff --git a/lava_results_app/views/__init__.py b/lava_results_app/views/__init__.py index ebe35aff7..a57f1638a 100644 --- a/lava_results_app/views/__init__.py +++ b/lava_results_app/views/__init__.py @@ -335,7 +335,7 @@ def testcase(request, job, pk, case): job = get_restricted_job(request.user, pk=job, request=request) test_cases = TestCase.objects.filter(name=case, suite=test_suite) test_sets = TestSet.objects.filter(name=case, suite=test_suite) - extra_source = '' + extra_source = {} logger = logging.getLogger('dispatcher-master') for extra_case in test_cases: try: @@ -349,7 +349,8 @@ def testcase(request, job, pk, case): items = yaml.load(extra_file, Loader=yaml.CLoader) # hide the !!python OrderedDict prefix from the output. for key, value in items.items(): - extra_source += "%s: %s\n" % (key, value) + extra_source.setdefault(extra_case.id, '') + extra_source[extra_case.id] += "%s: %s\n" % (key, value) template = loader.get_template("lava_results_app/case.html") return HttpResponse(template.render( { |