4901d45bbf
This patch adds UI templates directory and utils, which serve and unify HTML generation. Also, there are some fixes and improvements for HTML task report. In this patch: * Base mako templates (package rally.ui) * Rework tests/ci/rally-gate templates in order to use base template with generic header and styles * Show scenario errors (if any) in task report tab * Show scenario output (if any) in task report tab * Show SLA data in Overview tab * Show total scenario duration value (after the scenario name, above tabs) * If got some iteration error, save exception class name in the database instead of its repr() * Prevent layout from breaking and show proper message if JS libs can not be loaded for some reason * Fix bug 1387661 - the cause of the bug is wrong input json data, generated by plot.py. This happens when some atomic actions data missed (which is a result of scenario errors) - and we have different atomic actions sets between iterations. The fix saves atomic actions integrity by adding missed atomic actions (with 0 value). * Fix: if unexistend task uuid is specified in `task report' command, then proper exception is raised Closes-Bug: 1387661 Change-Id: I4bcbf86e6fad844e6752306eb6c1ccfefa6c6909
39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
# Copyright 2014: Mirantis Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
import mock
|
|
|
|
from rally.ui import utils
|
|
from tests.unit import test
|
|
|
|
|
|
class PlotTestCase(test.TestCase):
|
|
|
|
def test_lookup(self):
|
|
self.assertIsInstance(utils.lookup, utils.mako.lookup.TemplateLookup)
|
|
self.assertIsInstance(utils.lookup.get_template("/base.mako"),
|
|
utils.mako.lookup.Template)
|
|
self.assertRaises(
|
|
utils.mako.lookup.exceptions.TopLevelLookupException,
|
|
utils.lookup.get_template, "absent_template")
|
|
|
|
@mock.patch("rally.ui.utils.lookup")
|
|
def test_get_template(self, mock_lookup):
|
|
mock_lookup.get_template.return_value = "foo_template"
|
|
template = utils.get_template("foo_path")
|
|
self.assertEqual(template, "foo_template")
|
|
mock_lookup.get_template.assert_called_once_with("foo_path")
|