[Reports] Embed Rally version into HTML reports

This adds Rally version via meta tag into HTML reports:
  <meta name="generator" content="Rally version {{ version }}">.

This information can be very useful during report investigation.

Change-Id: Id9891cb7e050e5f3f3ca0c0a6d0e5b11992b35c9
This commit is contained in:
Alexander Maretskiy 2016-08-03 17:59:37 +03:00
parent 8c1161db5f
commit d91aa94ece
3 changed files with 19 additions and 9 deletions

View File

@ -21,6 +21,7 @@ import six
from rally.common import objects
from rally.common.plugin import plugin
from rally.common import version
from rally.task.processing import charts
from rally.ui import utils as ui_utils
@ -150,7 +151,9 @@ def plot(tasks_results, include_libs=False):
extended_results = _extend_results(tasks_results)
template = ui_utils.get_template("task/report.html")
source, data = _process_tasks(extended_results)
return template.render(source=json.dumps(source), data=json.dumps(data),
return template.render(version=version.version_string(),
source=json.dumps(source),
data=json.dumps(data),
include_libs=include_libs)
@ -159,7 +162,8 @@ def trends(tasks_results):
for i, scenario in enumerate(_extend_results(tasks_results), 1):
trends.add_result(scenario)
template = ui_utils.get_template("task/trends.html")
return template.render(data=json.dumps(trends.get_data()))
return template.render(version=version.version_string(),
data=json.dumps(trends.get_data()))
class Trends(object):

View File

@ -3,6 +3,9 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{%- if version %}
<meta name="generator" content="Rally version {{ version }}">
{%- endif %}
<title>Rally | {% block title_text %}{% endblock %}</title>
{% block libs %}{% endblock %}
<script type="text/javascript">{% block js_before %}{% endblock %}</script>

View File

@ -106,8 +106,9 @@ class PlotTestCase(test.TestCase):
@mock.patch(PLOT + "_extend_results")
@mock.patch(PLOT + "ui_utils.get_template")
@mock.patch(PLOT + "json.dumps", side_effect=lambda s: "json_" + s)
def test_plot(self, mock_dumps, mock_get_template, mock__extend_results,
mock__process_tasks, **ddt_kwargs):
@mock.patch("rally.common.version.version_string", return_value="42.0")
def test_plot(self, mock_version_string, mock_dumps, mock_get_template,
mock__extend_results, mock__process_tasks, **ddt_kwargs):
mock__process_tasks.return_value = "source", "scenarios"
mock_get_template.return_value.render.return_value = "tasks_html"
mock__extend_results.return_value = ["extended_result"]
@ -118,11 +119,11 @@ class PlotTestCase(test.TestCase):
mock__process_tasks.assert_called_once_with(["extended_result"])
if "include_libs" in ddt_kwargs:
mock_get_template.return_value.render.assert_called_once_with(
data="json_scenarios", source="json_source",
version="42.0", data="json_scenarios", source="json_source",
include_libs=ddt_kwargs["include_libs"])
else:
mock_get_template.return_value.render.assert_called_once_with(
data="json_scenarios", source="json_source",
version="42.0", data="json_scenarios", source="json_source",
include_libs=False)
@mock.patch(PLOT + "objects.Task.extend_results")
@ -153,8 +154,9 @@ class PlotTestCase(test.TestCase):
@mock.patch(PLOT + "Trends")
@mock.patch(PLOT + "ui_utils.get_template")
@mock.patch(PLOT + "_extend_results")
def test_trends(self, mock__extend_results, mock_get_template,
mock_trends):
@mock.patch("rally.common.version.version_string", return_value="42.0")
def test_trends(self, mock_version_string, mock__extend_results,
mock_get_template, mock_trends):
mock__extend_results.return_value = ["foo", "bar"]
trends = mock.Mock()
trends.get_data.return_value = ["foo", "bar"]
@ -167,7 +169,8 @@ class PlotTestCase(test.TestCase):
self.assertEqual([mock.call("foo"), mock.call("bar")],
trends.add_result.mock_calls)
mock_get_template.assert_called_once_with("task/trends.html")
template.render.assert_called_once_with(data="[\"foo\", \"bar\"]")
template.render.assert_called_once_with(version="42.0",
data="[\"foo\", \"bar\"]")
@ddt.ddt