diff options
Diffstat (limited to 'import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py')
-rw-r--r-- | import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py b/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py deleted file mode 100644 index abc0b0bc8..000000000 --- a/import-layers/yocto-poky/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py +++ /dev/null @@ -1,211 +0,0 @@ -#! /usr/bin/env python -# ex:ts=4:sw=4:sts=4:et -# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- -# -# BitBake Toaster Implementation -# -# Copyright (C) 2013-2016 Intel Corporation -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -from django.core.urlresolvers import reverse -from django.utils import timezone -from tests.browser.selenium_helpers import SeleniumTestCase -from tests.browser.selenium_helpers_base import Wait -from orm.models import Project, Build, Task, Recipe, Layer, Layer_Version -from bldcontrol.models import BuildRequest - -class TestMostRecentBuildsStates(SeleniumTestCase): - """ Test states update correctly in most recent builds area """ - - def _create_build_request(self): - project = Project.objects.get_or_create_default_project() - - now = timezone.now() - - build = Build.objects.create(project=project, build_name='fakebuild', - started_on=now, completed_on=now) - - return BuildRequest.objects.create(build=build, project=project, - state=BuildRequest.REQ_QUEUED) - - def _create_recipe(self): - """ Add a recipe to the database and return it """ - layer = Layer.objects.create() - layer_version = Layer_Version.objects.create(layer=layer) - return Recipe.objects.create(name='foo', layer_version=layer_version) - - def _check_build_states(self, build_request): - recipes_to_parse = 10 - url = reverse('all-builds') - self.get(url) - - build = build_request.build - base_selector = '[data-latest-build-result="%s"] ' % build.id - - # build queued; check shown as queued - selector = base_selector + '[data-build-state="Queued"]' - element = self.wait_until_visible(selector) - self.assertRegexpMatches(element.get_attribute('innerHTML'), - 'Build queued', 'build should show queued status') - - # waiting for recipes to be parsed - build.outcome = Build.IN_PROGRESS - build.recipes_to_parse = recipes_to_parse - build.recipes_parsed = 0 - - build_request.state = BuildRequest.REQ_INPROGRESS - build_request.save() - - self.get(url) - - selector = base_selector + '[data-build-state="Parsing"]' - element = self.wait_until_visible(selector) - - bar_selector = '#recipes-parsed-percentage-bar-%s' % build.id - bar_element = element.find_element_by_css_selector(bar_selector) - self.assertEqual(bar_element.value_of_css_property('width'), '0px', - 'recipe parse progress should be at 0') - - # recipes being parsed; check parse progress - build.recipes_parsed = 5 - build.save() - - self.get(url) - - element = self.wait_until_visible(selector) - bar_element = element.find_element_by_css_selector(bar_selector) - recipe_bar_updated = lambda driver: \ - bar_element.get_attribute('style') == 'width: 50%;' - msg = 'recipe parse progress bar should update to 50%' - element = Wait(self.driver).until(recipe_bar_updated, msg) - - # all recipes parsed, task started, waiting for first task to finish; - # check status is shown as "Tasks starting..." - build.recipes_parsed = recipes_to_parse - build.save() - - recipe = self._create_recipe() - task1 = Task.objects.create(build=build, recipe=recipe, - task_name='Lionel') - task2 = Task.objects.create(build=build, recipe=recipe, - task_name='Jeffries') - - self.get(url) - - selector = base_selector + '[data-build-state="Starting"]' - element = self.wait_until_visible(selector) - self.assertRegexpMatches(element.get_attribute('innerHTML'), - 'Tasks starting', 'build should show "tasks starting" status') - - # first task finished; check tasks progress bar - task1.order = 1 - task1.save() - - self.get(url) - - selector = base_selector + '[data-build-state="In Progress"]' - element = self.wait_until_visible(selector) - - bar_selector = '#build-pc-done-bar-%s' % build.id - bar_element = element.find_element_by_css_selector(bar_selector) - - task_bar_updated = lambda driver: \ - bar_element.get_attribute('style') == 'width: 50%;' - msg = 'tasks progress bar should update to 50%' - element = Wait(self.driver).until(task_bar_updated, msg) - - # last task finished; check tasks progress bar updates - task2.order = 2 - task2.save() - - self.get(url) - - element = self.wait_until_visible(selector) - bar_element = element.find_element_by_css_selector(bar_selector) - task_bar_updated = lambda driver: \ - bar_element.get_attribute('style') == 'width: 100%;' - msg = 'tasks progress bar should update to 100%' - element = Wait(self.driver).until(task_bar_updated, msg) - - def test_states_to_success(self): - """ - Test state transitions in the recent builds area for a build which - completes successfully. - """ - build_request = self._create_build_request() - - self._check_build_states(build_request) - - # all tasks complete and build succeeded; check success state shown - build = build_request.build - build.outcome = Build.SUCCEEDED - build.save() - - selector = '[data-latest-build-result="%s"] ' \ - '[data-build-state="Succeeded"]' % build.id - element = self.wait_until_visible(selector) - - def test_states_to_failure(self): - """ - Test state transitions in the recent builds area for a build which - completes in a failure. - """ - build_request = self._create_build_request() - - self._check_build_states(build_request) - - # all tasks complete and build succeeded; check fail state shown - build = build_request.build - build.outcome = Build.FAILED - build.save() - - selector = '[data-latest-build-result="%s"] ' \ - '[data-build-state="Failed"]' % build.id - element = self.wait_until_visible(selector) - - def test_states_cancelling(self): - """ - Test that most recent build area updates correctly for a build - which is cancelled. - """ - url = reverse('all-builds') - - build_request = self._create_build_request() - build = build_request.build - - # cancel the build - build_request.state = BuildRequest.REQ_CANCELLING - build_request.save() - - self.get(url) - - # check cancelling state - selector = '[data-latest-build-result="%s"] ' \ - '[data-build-state="Cancelling"]' % build.id - element = self.wait_until_visible(selector) - self.assertRegexpMatches(element.get_attribute('innerHTML'), - 'Cancelling the build', 'build should show "cancelling" status') - - # check cancelled state - build.outcome = Build.CANCELLED - build.save() - - self.get(url) - - selector = '[data-latest-build-result="%s"] ' \ - '[data-build-state="Cancelled"]' % build.id - element = self.wait_until_visible(selector) - self.assertRegexpMatches(element.get_attribute('innerHTML'), - 'Build cancelled', 'build should show "cancelled" status') |