[Toaster] [PATCH 3/3] toaster-tests: add test for cputime subpage
Elliot Smith
elliot.smith at intel.com
Mon Mar 7 04:21:41 PST 2016
Add a basic test which checks that the CPU time subpage for
the build dashboard shows both the User and System CPU time columns
by default.
[YOCTO #8842]
Signed-off-by: Elliot Smith <elliot.smith at intel.com>
---
bitbake/lib/toaster/toastergui/tests.py | 45 ++++++++++++++++++++++++++++++++-
1 file changed, 44 insertions(+), 1 deletion(-)
diff --git a/bitbake/lib/toaster/toastergui/tests.py b/bitbake/lib/toaster/toastergui/tests.py
index 6b05916..b5862b7 100644
--- a/bitbake/lib/toaster/toastergui/tests.py
+++ b/bitbake/lib/toaster/toastergui/tests.py
@@ -29,7 +29,7 @@ from django.utils import timezone
from orm.models import Project, Release, BitbakeVersion, Package, LogMessage
from orm.models import ReleaseLayerSourcePriority, LayerSource, Layer, Build
from orm.models import Layer_Version, Recipe, Machine, ProjectLayer, Target
-from orm.models import CustomImageRecipe, ProjectVariable
+from orm.models import CustomImageRecipe, ProjectVariable, Task
from orm.models import Branch, CustomImagePackage
import toastermain
@@ -1054,6 +1054,16 @@ class BuildDashboardTests(TestCase):
started_on=now,
completed_on=now)
+ # target for build, so breadcrumb can display
+ Target.objects.create(build=self.build1, target='bash', task='build')
+
+ # layer_version, recipe and task for build, so CPU time data can display
+ layer = Layer.objects.create()
+ layer_version = Layer_Version.objects.create(layer=layer)
+ recipe = Recipe.objects.create(name='zlib', layer_version=layer_version)
+ Task.objects.create(build=self.build1, recipe=recipe, order=1,
+ outcome=Task.OUTCOME_SUCCESS)
+
# exception
msg1 = 'an exception was thrown'
self.exception_message = LogMessage.objects.create(
@@ -1123,3 +1133,36 @@ class BuildDashboardTests(TestCase):
section of the page
"""
self._check_for_log_message(self.critical_message)
+
+ def test_cputime(self):
+ """
+ Check that the system and user CPU time columns are displayed
+ when the cputime subpage is shown
+ """
+ url = reverse('cputime', args=(self.build1.id,))
+ response = self.client.get(url, follow=True)
+ soup = BeautifulSoup(response.content)
+
+ # check nav item is highlighted
+ elements = soup.select('#nav li.active')
+ self.assertEquals(len(elements), 1,
+ 'should be one active nav element, ' +
+ 'but found %s' % len(elements))
+ link_text = elements[0].find('a').text.strip()
+ self.assertEquals(link_text, 'CPU time',
+ 'active nav element should have text "CPU time", ' +
+ 'but text was %s' % link_text)
+
+ # check page heading
+ heading = soup.select('.page-header h1')[0]
+ self.assertEquals(heading.text.strip(), 'CPU time')
+
+ # check CPU column headings are both present
+ cpu_time_headings = ['System CPU time', 'User CPU time']
+ table_heading_links = soup.select('#otable th a')
+ for link in table_heading_links:
+ if link.text.strip() in cpu_time_headings:
+ cpu_time_headings.remove(link.text)
+ self.assertEquals(len(cpu_time_headings), 0,
+ 'Both CPU time headings (user, system) ' +
+ 'must be present; missing %s' % cpu_time_headings)
--
Elliot Smith
Software Engineer
Intel OTC
---------------------------------------------------------------------
Intel Corporation (UK) Limited
Registered No. 1134945 (England)
Registered Office: Pipers Way, Swindon SN3 1RJ
VAT No: 860 2173 47
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
More information about the toaster
mailing list