[oe-commits] [bitbake] 14/44: toaster: tests Add new build tables to tests

git at git.openembedded.org git at git.openembedded.org
Mon Jun 13 21:11:02 UTC 2016


rpurdie pushed a commit to branch master-next
in repository bitbake.

commit 7cf23671659666b27b5629fecd5f947f9bdb94e0
Author: Michael Wood <michael.g.wood at intel.com>
AuthorDate: Thu May 26 16:12:25 2016 +0100

    toaster: tests Add new build tables to tests
    
    - Add new build tables to be tested
    - Add required data into the fixture and clean up a few empty fields
    - Fix the SoftwareRecipesTable specific test so as not to rely on two
      particular defined recipes
    
    Signed-off-by: Michael Wood <michael.g.wood at intel.com>
---
 .../fixtures/toastergui-unittest-data.xml          | 91 ++++++++++++++++------
 lib/toaster/toastergui/tests.py                    | 40 ++++++----
 2 files changed, 94 insertions(+), 37 deletions(-)

diff --git a/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml b/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml
index cf35be4..213bf0f 100644
--- a/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml
+++ b/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml
@@ -82,9 +82,8 @@
     <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
     <field type="CharField" name="target">a image recipe</field>
     <field type="CharField" name="task"><None></None></field>
-    <field type="BooleanField" name="is_image">False</field>
-    <field type="IntegerField" name="image_size">0</field>
-    <field type="CharField" name="license_manifest_path"><None></None></field>
+    <field type="BooleanField" name="is_image">True</field>
+    <field type="IntegerField" name="image_size">290</field>
   </object>
   <object pk="2" model="orm.target">
     <field to="orm.build" name="build" rel="ManyToOneRel">2</field>
@@ -118,9 +117,9 @@
   </object>
   <object pk="2" model="orm.package">
     <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
-    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">2</field>
+    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">1</field>
     <field type="CharField" name="name">f pkg</field>
-    <field type="CharField" name="installed_name"></field>
+    <field type="CharField" name="installed_name">f</field>
     <field type="CharField" name="version"></field>
     <field type="CharField" name="revision"></field>
     <field type="TextField" name="summary"></field>
@@ -297,6 +296,16 @@
     <field type="CharField" name="pathflags"></field>
     <field type="BooleanField" name="is_image">False</field>
   </object>
+  <!-- Added for an additional built recipe -->
+  <object pk="6" model="orm.recipe">
+    <field type="CharField" name="name">g recipe</field>
+    <field type="CharField" name="version">1.2.3</field>
+    <field to="orm.layer_version" name="layer_version" rel="ManyToOneRel">3</field>
+    <field type="CharField" name="license">g license</field>
+    <field type="FilePathField" name="file_path">/g</field>
+    <field type="BooleanField" name="is_image">False</field>
+  </object>
+
   <object pk="1" model="orm.machine">
     <field to="orm.layersource" name="layer_source" rel="ManyToOneRel"><None></None></field>
     <field type="IntegerField" name="up_id"><None></None></field>
@@ -353,8 +362,6 @@
   </object>
   <object pk="1" model="orm.branch">
     <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
-    <field type="IntegerField" name="up_id"><None></None></field>
-    <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">master</field>
     <field type="CharField" name="short_description"></field>
   </object>
@@ -363,13 +370,7 @@
     <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field type="CharField" name="name">a layer</field>
-    <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">/tmp/</field>
-    <field type="CharField" name="vcs_web_url"><None></None></field>
-    <field type="CharField" name="vcs_web_tree_base_url"><None></None></field>
-    <field type="CharField" name="vcs_web_file_base_url"><None></None></field>
-    <field type="TextField" name="summary"><None></None></field>
-    <field type="TextField" name="description"><None></None></field>
   </object>
   <object pk="2" model="orm.layer">
     <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
@@ -378,21 +379,16 @@
     <field type="CharField" name="name">z layer</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://two/</field>
-    <field type="CharField" name="vcs_web_url"><None></None></field>
-    <field type="CharField" name="vcs_web_tree_base_url"><None></None></field>
-    <field type="CharField" name="vcs_web_file_base_url"><None></None></field>
-    <field type="TextField" name="summary"><None></None></field>
-    <field type="TextField" name="description"><None></None></field>
   </object>
   <object pk="1" model="orm.layer_version">
-    <field to="orm.build" name="build" rel="ManyToOneRel"><None></None></field>
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
     <field to="orm.layer" name="layer" rel="ManyToOneRel">1</field>
     <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
     <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field to="orm.branch" name="up_branch" rel="ManyToOneRel">1</field>
-    <field type="CharField" name="branch"></field>
-    <field type="CharField" name="commit">master</field>
+    <field type="CharField" name="branch">master</field>
+    <field type="CharField" name="commit">abcdef123</field>
     <field type="CharField" name="dirpath">/tmp/</field>
     <field type="IntegerField" name="priority">0</field>
     <field type="FilePathField" name="local_path">/</field>
@@ -405,8 +401,22 @@
     <field type="IntegerField" name="up_id"><None></None></field>
     <field type="DateTimeField" name="up_date"><None></None></field>
     <field to="orm.branch" name="up_branch" rel="ManyToOneRel">1</field>
-    <field type="CharField" name="branch"></field>
-    <field type="CharField" name="commit">master</field>
+    <field type="CharField" name="branch">testing-branch</field>
+    <field type="CharField" name="commit">9876fedcba</field>
+    <field type="CharField" name="dirpath"><None></None></field>
+    <field type="IntegerField" name="priority">0</field>
+    <field type="FilePathField" name="local_path">/</field>
+    <field to="orm.project" name="project" rel="ManyToOneRel"><None></None></field>
+  </object>
+  <object pk="3" model="orm.layer_version">
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
+    <field to="orm.layer" name="layer" rel="ManyToOneRel">2</field>
+    <field to="orm.layersource" name="layer_source" rel="ManyToOneRel">1</field>
+    <field type="IntegerField" name="up_id"><None></None></field>
+    <field type="DateTimeField" name="up_date"><None></None></field>
+    <field to="orm.branch" name="up_branch" rel="ManyToOneRel">1</field>
+    <field type="CharField" name="branch">testing-branch</field>
+    <field type="CharField" name="commit">9876fedcba</field>
     <field type="CharField" name="dirpath"><None></None></field>
     <field type="IntegerField" name="priority">0</field>
     <field type="FilePathField" name="local_path">/</field>
@@ -443,4 +453,39 @@
     <field type="FilePathField" name="pathname"></field>
     <field type="IntegerField" name="lineno"><None></None></field>
   </object>
+  <!-- Some tasks for build 1 to test build tables -->
+  <object pk="1" model="orm.task">
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
+    <field type="IntegerField" name="order">1</field>
+    <field type="BooleanField" name="task_executed">False</field>
+    <field type="IntegerField" name="outcome">-1</field>
+    <field type="CharField" name="sstate_checksum">abcdef123</field>
+    <field type="FilePathField" name="path_to_sstate_obj">34/wefw.tar</field>
+    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">1</field>
+    <field type="CharField" name="task_name">a_do_compile</field>
+    <field type="DecimalField" name="elapsed_time">100</field>
+    <field type="IntegerField" name="disk_io">10</field>
+    <field type="IntegerField" name="disk_io_read">11</field>
+    <field type="IntegerField" name="disk_io_write">12</field>
+    <field type="DecimalField" name="cpu_time_user">10.1</field>
+    <field type="DecimalField" name="cpu_time_system">10.2</field>
+    <field type="IntegerField" name="sstate_result">3</field>
+  </object>
+  <object pk="2" model="orm.task">
+    <field to="orm.build" name="build" rel="ManyToOneRel">1</field>
+    <field type="IntegerField" name="order">2</field>
+    <field type="BooleanField" name="task_executed">True</field>
+    <field type="IntegerField" name="outcome">2</field>
+    <field type="CharField" name="sstate_checksum">85bccb7802fd5f48</field>
+    <field type="FilePathField" name="path_to_sstate_obj">85/sstarpm.tgz</field>
+    <field to="orm.recipe" name="recipe" rel="ManyToOneRel">2</field>
+    <field type="CharField" name="task_name">z_do_package_write_rpm</field>
+    <field type="DecimalField" name="elapsed_time">245</field>
+    <field type="IntegerField" name="disk_io">12424</field>
+    <field type="IntegerField" name="disk_io_read">23423</field>
+    <field type="IntegerField" name="disk_io_write">83943</field>
+    <field type="DecimalField" name="cpu_time_user">20394.3</field>
+    <field type="DecimalField" name="cpu_time_system">5363.3</field>
+    <field type="IntegerField" name="sstate_result">1</field>
+  </object>
 </django-objects>
diff --git a/lib/toaster/toastergui/tests.py b/lib/toaster/toastergui/tests.py
index 869c39d..9af1018 100644
--- a/lib/toaster/toastergui/tests.py
+++ b/lib/toaster/toastergui/tests.py
@@ -25,6 +25,7 @@ from django.test import TestCase
 from django.test.client import RequestFactory
 from django.core.urlresolvers import reverse
 from django.utils import timezone
+from django.db.models import Q
 
 from orm.models import Project, Release, BitbakeVersion, Package, LogMessage
 from orm.models import ReleaseLayerSourcePriority, LayerSource, Layer, Build
@@ -57,7 +58,6 @@ class ViewTests(TestCase):
 
         self.project = Project.objects.first()
         self.recipe1 = Recipe.objects.get(pk=2)
-        self.recipe2 = Recipe.objects.last()
         self.customr = CustomImageRecipe.objects.first()
         self.cust_package = CustomImagePackage.objects.first()
         self.package = Package.objects.first()
@@ -311,7 +311,6 @@ class ViewTests(TestCase):
 
         self.assertEqual(response.status_code, 200)
 
-
     def test_software_recipes_table(self):
         """Test structure returned for Software RecipesTable"""
         table = SoftwareRecipesTable()
@@ -319,27 +318,35 @@ class ViewTests(TestCase):
         response = table.get(request, pid=self.project.id)
         data = json.loads(response.content)
 
+        recipes = Recipe.objects.filter(Q(is_image=False))
+        self.assertTrue(len(recipes) > 1,
+                        "Need more than one software recipe to test "
+                        "SoftwareRecipesTable")
+
+        recipe1 = recipes[0]
+        recipe2 = recipes[1]
+
         rows = data['rows']
-        row1 = next(x for x in rows if x['name'] == self.recipe1.name)
-        row2 = next(x for x in rows if x['name'] == self.recipe2.name)
+        row1 = next(x for x in rows if x['name'] == recipe1.name)
+        row2 = next(x for x in rows if x['name'] == recipe2.name)
 
         self.assertEqual(response.status_code, 200, 'should be 200 OK status')
 
         # check other columns have been populated correctly
-        self.assertTrue(self.recipe1.name in row1['name'])
-        self.assertTrue(self.recipe1.version in row1['version'])
-        self.assertTrue(self.recipe1.description in
+        self.assertTrue(recipe1.name in row1['name'])
+        self.assertTrue(recipe1.version in row1['version'])
+        self.assertTrue(recipe1.description in
                         row1['get_description_or_summary'])
 
-        self.assertTrue(self.recipe1.layer_version.layer.name in
+        self.assertTrue(recipe1.layer_version.layer.name in
                         row1['layer_version__layer__name'])
 
-        self.assertTrue(self.recipe2.name in row2['name'])
-        self.assertTrue(self.recipe2.version in row2['version'])
-        self.assertTrue(self.recipe2.description in
+        self.assertTrue(recipe2.name in row2['name'])
+        self.assertTrue(recipe2.version in row2['version'])
+        self.assertTrue(recipe2.description in
                         row2['get_description_or_summary'])
 
-        self.assertTrue(self.recipe2.layer_version.layer.name in
+        self.assertTrue(recipe2.layer_version.layer.name in
                         row2['layer_version__layer__name'])
 
     def test_toaster_tables(self):
@@ -360,7 +367,9 @@ class ViewTests(TestCase):
                     'layerid': self.lver.pk,
                     'recipeid': self.recipe1.pk,
                     'recipe_id': image_recipe.pk,
-                    'custrecipeid': self.customr.pk}
+                    'custrecipeid': self.customr.pk,
+                    'build_id': 1,
+                    'target_id': 1}
 
             response = table.get(request, **args)
             return json.loads(response.content)
@@ -386,11 +395,14 @@ class ViewTests(TestCase):
 
         # Get a list of classes in tables module
         tables = inspect.getmembers(toastergui.tables, inspect.isclass)
+        tables.extend(inspect.getmembers(toastergui.buildtables,
+                                         inspect.isclass))
 
         for name, table_cls in tables:
             # Filter out the non ToasterTables from the tables module
             if not issubclass(table_cls, toastergui.widgets.ToasterTable) or \
-                table_cls == toastergui.widgets.ToasterTable:
+                table_cls == toastergui.widgets.ToasterTable or \
+               'Mixin' in name:
                 continue
 
             # Get the table data without any options, this also does the

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list