summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/orm/tests.py')
-rw-r--r--bitbake/lib/toaster/orm/tests.py131
1 files changed, 130 insertions, 1 deletions
diff --git a/bitbake/lib/toaster/orm/tests.py b/bitbake/lib/toaster/orm/tests.py
index b965d8e50e..7b1b9633f9 100644
--- a/bitbake/lib/toaster/orm/tests.py
+++ b/bitbake/lib/toaster/orm/tests.py
@@ -2,6 +2,12 @@ from django.test import TestCase
2from orm.models import LocalLayerSource, LayerIndexLayerSource, ImportedLayerSource, LayerSource 2from orm.models import LocalLayerSource, LayerIndexLayerSource, ImportedLayerSource, LayerSource
3from orm.models import Branch 3from orm.models import Branch
4 4
5from orm.models import Project, Build, Layer, Layer_Version, Branch, ProjectLayer
6from orm.models import Release, ReleaseLayerSourcePriority, BitbakeVersion
7
8from django.utils import timezone
9
10# tests to verify inheritance for the LayerSource proxy-inheritance classes
5class LayerSourceVerifyInheritanceSaveLoad(TestCase): 11class LayerSourceVerifyInheritanceSaveLoad(TestCase):
6 def test_object_creation(self): 12 def test_object_creation(self):
7 lls = LayerSource.objects.create(name = "a1", sourcetype = LayerSource.TYPE_LOCAL, apiurl = "") 13 lls = LayerSource.objects.create(name = "a1", sourcetype = LayerSource.TYPE_LOCAL, apiurl = "")
@@ -23,7 +29,7 @@ class LayerSourceVerifyInheritanceSaveLoad(TestCase):
23 self.assertRaises(Exception, duplicate) 29 self.assertRaises(Exception, duplicate)
24 30
25 31
26 32# test to verify the layer source update functionality for layerindex. edit to pass the URL to a layerindex application
27class LILSUpdateTestCase(TestCase): 33class LILSUpdateTestCase(TestCase):
28 def test_update(self): 34 def test_update(self):
29 lils = LayerSource.objects.create(name = "b1", sourcetype = LayerSource.TYPE_LAYERINDEX, apiurl = "http://adamian-desk.local:8080/layerindex/api/") 35 lils = LayerSource.objects.create(name = "b1", sourcetype = LayerSource.TYPE_LAYERINDEX, apiurl = "http://adamian-desk.local:8080/layerindex/api/")
@@ -34,3 +40,126 @@ class LILSUpdateTestCase(TestCase):
34 40
35 # print vars(lils) 41 # print vars(lils)
36 #print map(lambda x: vars(x), Branch.objects.all()) 42 #print map(lambda x: vars(x), Branch.objects.all())
43
44 # run asserts
45 self.assertTrue(lils.branch_set.all().count() > 0, "update() needs to fetch some branches")
46
47
48
49# tests to verify layer_version priority selection
50class LayerVersionEquivalenceTestCase(TestCase):
51 def setUp(self):
52 # create layer sources
53 ls = LayerSource.objects.create(name = "dummy-layersource", sourcetype = LayerSource.TYPE_LOCAL)
54
55 # create bitbake version
56 bbv = BitbakeVersion.objects.create(name="master", giturl="git://git.openembedded.org/bitbake")
57 # create release
58 release = Release.objects.create(name="default-release", bitbake_version = bbv, branch_name = "master")
59 # attach layer source to release
60 ReleaseLayerSourcePriority.objects.create(release = release, layer_source = ls, priority = 1)
61
62 # create layer attach
63 self.layer = Layer.objects.create(name="meta-testlayer", layer_source = ls)
64 # create branch
65 self.branch = Branch.objects.create(name="master", layer_source = ls)
66
67 # set a layer version for the layer on the specified branch
68 self.layerversion = Layer_Version.objects.create(layer = self.layer, layer_source = ls, up_branch = self.branch)
69
70 # create spoof layer that should not appear in the search results
71 Layer_Version.objects.create(layer = Layer.objects.create(name="meta-notvalid", layer_source = ls), layer_source = ls, up_branch = self.branch)
72
73
74 # create a project ...
75 self.project = Project.objects.create_project(name="test-project", release = release)
76 # ... and set it up with a single layer version
77 ProjectLayer.objects.create(project= self.project, layercommit = self.layerversion)
78
79 def test_single_layersource(self):
80 # when we have a single layer version, get_equivalents_wpriority() should return a list with just this layer_version
81 equivalent_list = self.layerversion.get_equivalents_wpriority(self.project)
82 self.assertTrue(len(equivalent_list) == 1)
83 self.assertTrue(equivalent_list[0] == self.layerversion)
84
85 def test_dual_layersource(self):
86 # if we have two layers with the same name, from different layer sources, we expect both layers in, in increasing priority of the layer source
87 ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL)
88
89 # assign a lower priority for the second layer source
90 Release.objects.get(name="default-release").releaselayersourcepriority_set.create(layer_source = ls2, priority = 2)
91
92 # create a new layer_version for a layer with the same name coming from the second layer source
93 self.layer2 = Layer.objects.create(name="meta-testlayer", layer_source = ls2)
94 self.layerversion2 = Layer_Version.objects.create(layer = self.layer2, layer_source = ls2, up_branch = self.branch)
95
96 # expect two layer versions, in the priority order
97 equivalent_list = self.layerversion.get_equivalents_wpriority(self.project)
98 self.assertTrue(len(equivalent_list) == 2)
99 self.assertTrue(equivalent_list[0] == self.layerversion2)
100 self.assertTrue(equivalent_list[1] == self.layerversion)
101
102 def test_build_layerversion(self):
103 # any layer version coming from the build should show up before any layer version coming from upstream
104 build = Build.objects.create(project = self.project, started_on = timezone.now(), completed_on = timezone.now())
105 self.layerversion_build = Layer_Version.objects.create(layer = self.layer, build = build, commit = "deadbeef")
106
107 # a build layerversion must be in the equivalence list for the original layerversion
108 equivalent_list = self.layerversion.get_equivalents_wpriority(self.project)
109 self.assertTrue(len(equivalent_list) == 2)
110 self.assertTrue(equivalent_list[0] == self.layerversion)
111 self.assertTrue(equivalent_list[1] == self.layerversion_build)
112
113 # getting the build layerversion equivalent list must return the same list as the original layer
114 build_equivalent_list = self.layerversion_build.get_equivalents_wpriority(self.project)
115
116 self.assertTrue(equivalent_list == build_equivalent_list, "%s is not %s" % (equivalent_list, build_equivalent_list))
117
118class ProjectLVSelectionTestCase(TestCase):
119 def setUp(self):
120 # create layer sources
121 ls = LayerSource.objects.create(name = "dummy-layersource", sourcetype = LayerSource.TYPE_LOCAL)
122
123 # create bitbake version
124 bbv = BitbakeVersion.objects.create(name="master", giturl="git://git.openembedded.org/bitbake")
125 # create release
126 release = Release.objects.create(name="default-release", bitbake_version = bbv, branch_name="master")
127 # attach layer source to release
128 ReleaseLayerSourcePriority.objects.create(release = release, layer_source = ls, priority = 1)
129
130 # create layer attach
131 self.layer = Layer.objects.create(name="meta-testlayer", layer_source = ls)
132 # create branch
133 self.branch = Branch.objects.create(name="master", layer_source = ls)
134
135 # set a layer version for the layer on the specified branch
136 self.layerversion = Layer_Version.objects.create(layer = self.layer, layer_source = ls, up_branch = self.branch)
137
138
139 # create a project ...
140 self.project = Project.objects.create_project(name="test-project", release = release)
141 # ... and set it up with a single layer version
142 ProjectLayer.objects.create(project= self.project, layercommit = self.layerversion)
143
144 def test_single_layersource(self):
145 compatible_layerversions = self.project.compatible_layerversions()
146 self.assertTrue(len(compatible_layerversions) == 1)
147 self.assertTrue(compatible_layerversions[0] == self.layerversion)
148
149
150 def test_dual_layersource(self):
151 # if we have two layers with the same name, from different layer sources, we expect both layers in, in increasing priority of the layer source
152 ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL)
153
154 # assign a lower priority for the second layer source
155 Release.objects.get(name="default-release").releaselayersourcepriority_set.create(layer_source = ls2, priority = 2)
156
157 # create a new layer_version for a layer with the same name coming from the second layer source
158 self.layer2 = Layer.objects.create(name="meta-testlayer", layer_source = ls2)
159 self.layerversion2 = Layer_Version.objects.create(layer = self.layer2, layer_source = ls2, up_branch = self.branch)
160
161 # expect two layer versions, in the priority order
162 equivalent_list = self.project.compatible_layerversions()
163 self.assertTrue(len(equivalent_list) == 2)
164 self.assertTrue(equivalent_list[0] == self.layerversion2)
165 self.assertTrue(equivalent_list[1] == self.layerversion)