[Toaster] [PATCH 3/3] toaster-tests: add test for cputime subpage

Smith, Elliot elliot.smith at intel.com
Mon Mar 7 12:04:24 PST 2016


I'll just remove them for now, and assume we'll eventually get round to
adding Selenium tests for these cases.

Elliot

On 7 March 2016 at 19:24, Smith, Elliot <elliot.smith at intel.com> wrote:

> So would you suggest removing these for now and adding a separate issue to
> create equivalent Selenium tests, once the UI test framework is cleaned up?
>
> Elliot
>
> On 7 March 2016 at 19:17, Michael Wood <michael.g.wood at intel.com> wrote:
>
>>
>> Not really that keen on mixing HTML/content tests with the django
>> functional unit tests. To me this would be better tested by the
>> selenium/front end tests.
>>
>>
>> On 07/03/16 12:21, Elliot Smith wrote:
>>
>>> 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)
>>>
>>
>> ---------------------------------------------------------------------
>> 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.
>>
>> --
>> _______________________________________________
>> toaster mailing list
>> toaster at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/toaster
>>
>
>
>
> --
> Elliot Smith
> Software Engineer
> Intel Open Source Technology Centre
>



-- 
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20160307/5a6077c6/attachment.html>


More information about the toaster mailing list