Skip to contentSkip to conversation

Prevent removal of all columns on tasks and recipe tables

PATCH In review Elliot Smith 2 participants 8 messages Jul 18, 2016 – Jul 19, 2016

lore
Share & tools
lore
#0 lore raw

cover Prevent removal of all columns on tasks and recipe tables

All of the columns for the tasks and recipes tables (sub-pages of the build-dashboard) are optional. This means you can remove all the columns for those tables and make them disappear from the page.

Set the non-hideable columns and add some UI tests to check that those columns are disabled in the edit columns drop-down.

The following changes since commit 562c6e06be41026f59bee3703ee553b57896872a (toaster-next):

toaster-tests: package count/size shouldn't show for non-image builds (2016-07-15 11:16:28 -0700)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib elliot/toaster/9833-remove_columns
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=elliot/toaster/9833-remove_columns

Related bug: https://bugzilla.yoctoproject.org/show_bug.cgi?id=9833

Elliot Smith (3):
toaster: set non-hideable columns for build tasks table
toaster: set non-hideable columns for built recipes table
toaster-tests: add tasks and recipes sub-page tests

 .../browser/test_builddashboard_page_recipes.py    | 66 ++++++++++++++++++++++
 .../browser/test_builddashboard_page_tasks.py      | 65 +++++++++++++++++++++
 bitbake/lib/toaster/toastergui/buildtables.py      |  7 ++-
 3 files changed, 137 insertions(+), 1 deletion(-)
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py

--
2.7.4

#1 lore raw

PATCH 1/3 toaster: set non-hideable columns for build tasks table

The task, recipe and order columns in the build tasks table should not be hideable. If they are, it's possible for the table to have all of its columns hidden so that it no longer displays.

Set the hideable property to prevent these columns from being hidden.

[YOCTO #9833]

---
 bitbake/lib/toaster/toastergui/buildtables.py | 3 +++
 1 file changed, 3 insertions(+)
bitbake/lib/toaster/toastergui/buildtables.py +3 -0
index f3d7236..f845c66 100644
@@ -431,17 +431,20 @@ class BuildTasksTable(BuildTablesMixin):
         self.add_column(title="Order",
                         static_data_name="order",
                         static_data_template='{{data.order}}',
+                        hideable=False,
                         orderable=True)
 
         self.add_column(title="Task",
                         static_data_name="task_name",
                         static_data_template=task_link_tmpl(
                             "{{data.task_name}}"),
+                        hideable=False,
                         orderable=True)
 
         self.add_column(title="Recipe",
                         static_data_name='recipe__name',
                         static_data_template=recipe_name_tmpl,
+                        hideable=False,
                         orderable=True)
 
         self.add_column(title="Recipe version",
Signature · 1 line
2.7.4
#2 lore raw

PATCH 2/3 toaster: set non-hideable columns for built recipes table

In reply to Elliot Smith

None of the columns in the built recipes table are marked as not hideable, so it is possible to remove all the columns and make the table disappear.

Set the recipe name and version columns as not hideable.

Also rename the "Name" column to "Recipe", for consistency with the design and with other recipe tables.

[YOCTO #9833]

---
 bitbake/lib/toaster/toastergui/buildtables.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
bitbake/lib/toaster/toastergui/buildtables.py +3 -1
index f845c66..82a8ba5 100644
@@ -295,13 +295,15 @@ class BuiltRecipesTable(BuildTablesMixin):
         {% endif %}{% endwith %}{% endwith %}
         '''
 
-        self.add_column(title="Name",
+        self.add_column(title="Recipe",
                         field_name="name",
                         static_data_name='name',
                         orderable=True,
+                        hideable=False,
                         static_data_template=recipe_name_tmpl)
 
         self.add_column(title="Version",
+                        hideable=False,
                         field_name="version")
 
         self.add_column(title="Dependencies",
Signature · 1 line
2.7.4
#3 lore raw

PATCH 3/3 toaster-tests: add tasks and recipes sub-page tests

In reply to Elliot Smith

Add tests for the tasks and recipes sub-pages of the build dashboard.

[YOCTO #9833]

---
 .../browser/test_builddashboard_page_recipes.py    | 66 ++++++++++++++++++++++
 .../browser/test_builddashboard_page_tasks.py      | 65 +++++++++++++++++++++
 2 files changed, 131 insertions(+)
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py
bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py new file +66 -0
new file mode 100644
index 0000000..ed18324
@@ -0,0 +1,66 @@
+#! /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 orm.models import Project, Build, Recipe, Task, Layer, Layer_Version
+from orm.models import Target
+
+class TestBuilddashboardPageRecipes(SeleniumTestCase):
+    """ Test build dashboard recipes sub-page """
+
+    def setUp(self):
+        project = Project.objects.get_or_create_default_project()
+
+        now = timezone.now()
+
+        self.build = Build.objects.create(project=project,
+                                          started_on=now,
+                                          completed_on=now)
+
+        layer = Layer.objects.create()
+
+        layer_version = Layer_Version.objects.create(layer=layer,
+            build=self.build)
+
+        recipe = Recipe.objects.create(layer_version=layer_version)
+
+        task = Task.objects.create(build=self.build, recipe=recipe, order=1)
+
+        Target.objects.create(build=self.build, task=task, target='do_build')
+
+    def test_build_recipes_columns(self):
+        """
+        Check that non-hideable columns of the table on the recipes sub-page
+        are disabled on the edit columns dropdown.
+        """
+        url = reverse('recipes', args=(self.build.id,))
+        self.get(url)
+
+        self.wait_until_visible('#edit-columns-button')
+
+        # check that options for the non-hideable columns are disabled
+        non_hideable = ['name', 'version']
+
+        for column in non_hideable:
+            selector = 'input#checkbox-%s[disabled="disabled"]' % column
+            self.wait_until_present(selector)
bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py new file +65 -0

65 lines not on this page · raw message

Signature · 1 line
2.7.4
#4 lore raw
In reply to Elliot Smith
Quoted 16 lines · On 18/07/2016 11:54, "[email protected] on behalf of Elliot…

All of the columns for the tasks and recipes tables (sub-pages of the build-dashboard) are optional. This means you can remove all the columns for
those tables and make them disappear from the page.

Set the non-hideable columns and add some UI tests to check that those columns
are disabled in the edit columns drop-down.

The following changes since commit
562c6e06be41026f59bee3703ee553b57896872a
(toaster-next):

toaster-tests: package count/size shouldn't show for non-image builds
(2016-07-15 11:16:28 -0700)

Quoted 7 lines

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib
elliot/toaster/9833-remove_columns

http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=elliot/toaster/98
33-remove_columns

This works, but we have a small problem with the tasks tables: tasks, time, CPU usage and Disk I/O. They all have the same "core columns" (the ones you cannot hide), but that's not the right thing to do, since their purpose is to display different information. The original designs (back in the day) asked for the following core columns:

Tasks table: order, recipe and task
Time table: recipe, task and time
CPU usage: recipe, task, system CPU and user CPU
Disk I/O: recipe, task and disk I/O

I understand the 4 are implemented using the same base table, but having the same core columns across the 4 causes 2 issues:

1. You can have a table called 'Time' where you can show no time information. That makes little sense, and applies also to cpu and disk I/O tables

2. You can never show the 'order' column in the time, cpu and disk I/O tables, because the 'order' checkbox is disabled in the 'edit columns' menu

Hopefully there is something we can do.

Thanks!

Belén

Quoted 27 lines

Related bug: https://bugzilla.yoctoproject.org/show_bug.cgi?id=9833

Elliot Smith (3):
toaster: set non-hideable columns for build tasks table
toaster: set non-hideable columns for built recipes table
toaster-tests: add tasks and recipes sub-page tests

.../browser/test_builddashboard_page_recipes.py | 66
++++++++++++++++++++++
.../browser/test_builddashboard_page_tasks.py | 65
+++++++++++++++++++++
bitbake/lib/toaster/toastergui/buildtables.py | 7 ++-

3 files changed, 137 insertions(+), 1 deletion(-)

create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py

--
2.7.4

Signature · 4 lines
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster
#5 lore raw
Quoted 28 lines · Belen
Quoted 13 lines · On 18/07/2016 11:54, "[email protected] on behalf of Elliot…

All of the columns for the tasks and recipes tables (sub-pages of the build-dashboard) are optional. This means you can remove all the columns for
those tables and make them disappear from the page.

Set the non-hideable columns and add some UI tests to check that those columns
are disabled in the edit columns drop-down.

The following changes since commit
562c6e06be41026f59bee3703ee553b57896872a
(toaster-next):

Quoted 9 lines

toaster-tests: package count/size shouldn't show for non-image builds
(2016-07-15 11:16:28 -0700)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib
elliot/toaster/9833-remove_columns

Quoted 9 lines

http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=elliot/toaster/98

Quoted 1 line

33-remove_columns

This works, but we have a small problem with the tasks tables: tasks, time, CPU usage and Disk I/O. They all have the same "core columns" (the ones you cannot hide), but that's not the right thing to do, since their purpose is to display different information. The original designs (back in the day) asked for the following core columns:

Thanks for looking Belen.

The core columns being incorrect on those other tables is a separate issue, so could you please raise a bug for it?

(NB the bug was introduced when the tables were migrated to ToasterTable recently, but doesn't have any bearing on 9833.)

Note that I set the default columns for the tasks and recipes table, so if they're wrong, I'll change them (I went by the designs on yoctoproject.org/toaster, which may be out of date).

Thanks.
Elliot

Quoted 52 lines

Tasks table: order, recipe and task
Time table: recipe, task and time
CPU usage: recipe, task, system CPU and user CPU
Disk I/O: recipe, task and disk I/O

I understand the 4 are implemented using the same base table, but having the same core columns across the 4 causes 2 issues:

1. You can have a table called 'Time' where you can show no time information. That makes little sense, and applies also to cpu and disk I/O tables

2. You can never show the 'order' column in the time, cpu and disk I/O tables, because the 'order' checkbox is disabled in the 'edit columns' menu

Hopefully there is something we can do.

Thanks!

Belén

Quoted 27 lines

Related bug: https://bugzilla.yoctoproject.org/show_bug.cgi?id=9833

Elliot Smith (3):
toaster: set non-hideable columns for build tasks table
toaster: set non-hideable columns for built recipes table
toaster-tests: add tasks and recipes sub-page tests

.../browser/test_builddashboard_page_recipes.py | 66
++++++++++++++++++++++
.../browser/test_builddashboard_page_tasks.py | 65
+++++++++++++++++++++
bitbake/lib/toaster/toastergui/buildtables.py | 7 ++-

3 files changed, 137 insertions(+), 1 deletion(-)

create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py

--
2.7.4

--
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster

Signature · 3 lines
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
#6 lore raw
Quoted 47 lines · Elliot

On 19 July 2016 at 14:39, Barros Pena, Belen
<[email protected]> wrote:

Quoted 18 lines · On 18/07/2016 11:54, "[email protected] on behalf of Elliot…

All of the columns for the tasks and recipes tables (sub-pages of the build-dashboard) are optional. This means you can remove all the columns for
those tables and make them disappear from the page.

Set the non-hideable columns and add some UI tests to check that those columns
are disabled in the edit columns drop-down.

The following changes since commit
562c6e06be41026f59bee3703ee553b57896872a
(toaster-next):

toaster-tests: package count/size shouldn't show for non-image builds
(2016-07-15 11:16:28 -0700)

are available in the git repository at:

Quoted 7 lines

git://git.yoctoproject.org/poky-contrib
<http://git.yoctoproject.org/poky-contrib>
elliot/toaster/9833-remove_columns

http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=elliot/toaster/9
8
33-remove_columns

This works, but we have a small problem with the tasks tables: tasks, time, CPU usage and Disk I/O. They all have the same "core columns" (the ones you cannot hide), but that's not the right thing to do, since their purpose is to display different information. The original designs (back in the day) asked for the following core columns:

Thanks for looking Belen.

Quoted 6 lines

The core columns being incorrect on those other tables is a separate issue, so could you please raise a bug for it?

(NB the bug was introduced when the tables were migrated to ToasterTable recently, but doesn't have any bearing on 9833.)

Very true. Here is the bug:

https://bugzilla.yoctoproject.org/show_bug.cgi?id=9977

Quoted 6 lines

Note that I set the default columns for the tasks and recipes table, so if they're wrong, I'll change them (I went by the designs on yoctoproject.org/toaster <http://yoctoproject.org/toaster>, which may be out of date).

Well, it is in general quite out of date, but not on that specific thing. If you look at the tasks, time, cpu and disk I/O tables in the design prototype, they still show the correct core columns (the same ones I listed below).

Cheers

Belén

Quoted 75 lines

Thanks.
Elliot

Tasks table: order, recipe and task
Time table: recipe, task and time
CPU usage: recipe, task, system CPU and user CPU
Disk I/O: recipe, task and disk I/O

I understand the 4 are implemented using the same base table, but having the same core columns across the 4 causes 2 issues:

1. You can have a table called 'Time' where you can show no time information. That makes little sense, and applies also to cpu and disk I/O tables

2. You can never show the 'order' column in the time, cpu and disk I/O tables, because the 'order' checkbox is disabled in the 'edit columns' menu

Hopefully there is something we can do.

Thanks!

Belén

Quoted 2 lines

Related bug:

https://bugzilla.yoctoproject.org/show_bug.cgi?id=9833
<https://bugzilla.yoctoproject.org/show_bug.cgi?id=9833>

Quoted 25 lines

Elliot Smith (3):
toaster: set non-hideable columns for build tasks table
toaster: set non-hideable columns for built recipes table
toaster-tests: add tasks and recipes sub-page tests

.../browser/test_builddashboard_page_recipes.py | 66
++++++++++++++++++++++
.../browser/test_builddashboard_page_tasks.py | 65
+++++++++++++++++++++
bitbake/lib/toaster/toastergui/buildtables.py | 7 ++-

3 files changed, 137 insertions(+), 1 deletion(-)

create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py

--
2.7.4

--
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster

Signature · 3 lines
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
#7 lore raw
Quoted 7 lines · Belen
Quoted 2 lines · Elliot

(NB the bug was introduced when the tables were migrated to ToasterTable recently, but doesn't have any bearing on 9833.)

Very true. Here is the bug:

https://bugzilla.yoctoproject.org/show_bug.cgi?id=9977

Thanks for raising that.

Quoted 10 lines
Quoted 4 lines

Note that I set the default columns for the tasks and recipes table, so if they're wrong, I'll change them (I went by the designs on yoctoproject.org/toaster <http://yoctoproject.org/toaster>, which may be out of date).

Well, it is in general quite out of date, but not on that specific thing. If you look at the tasks, time, cpu and disk I/O tables in the design prototype, they still show the correct core columns (the same ones I listed below).

Excellent, that will help when fixing the bug.

Cheers.
Elliot