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.py140
1 files changed, 136 insertions, 4 deletions
diff --git a/bitbake/lib/toaster/orm/tests.py b/bitbake/lib/toaster/orm/tests.py
index f2f561bff9..7b1b9633f9 100644
--- a/bitbake/lib/toaster/orm/tests.py
+++ b/bitbake/lib/toaster/orm/tests.py
@@ -1,16 +1,25 @@
from django.test import TestCase
-from orm.models import LocalLayerSource, LayerIndexLayerSource, LayerSource
+from orm.models import LocalLayerSource, LayerIndexLayerSource, ImportedLayerSource, LayerSource
from orm.models import Branch
+from orm.models import Project, Build, Layer, Layer_Version, Branch, ProjectLayer
+from orm.models import Release, ReleaseLayerSourcePriority, BitbakeVersion
+
+from django.utils import timezone
+
+# tests to verify inheritance for the LayerSource proxy-inheritance classes
class LayerSourceVerifyInheritanceSaveLoad(TestCase):
def test_object_creation(self):
lls = LayerSource.objects.create(name = "a1", sourcetype = LayerSource.TYPE_LOCAL, apiurl = "")
- lils = LayerSource.objects.create(name = "a1", sourcetype = LayerSource.TYPE_LAYERINDEX, apiurl = "")
+ lils = LayerSource.objects.create(name = "a2", sourcetype = LayerSource.TYPE_LAYERINDEX, apiurl = "")
+ imls = LayerSource.objects.create(name = "a3", sourcetype = LayerSource.TYPE_IMPORTED, apiurl = "")
- print LayerSource.objects.all()
+ import pprint
+ pprint.pprint([(x.__class__,vars(x)) for x in LayerSource.objects.all()])
self.assertTrue(True in map(lambda x: isinstance(x, LocalLayerSource), LayerSource.objects.all()))
self.assertTrue(True in map(lambda x: isinstance(x, LayerIndexLayerSource), LayerSource.objects.all()))
+ self.assertTrue(True in map(lambda x: isinstance(x, ImportedLayerSource), LayerSource.objects.all()))
def test_duplicate_error(self):
def duplicate():
@@ -18,9 +27,9 @@ class LayerSourceVerifyInheritanceSaveLoad(TestCase):
LayerSource.objects.create(name = "a1", sourcetype = LayerSource.TYPE_LOCAL, apiurl = "")
self.assertRaises(Exception, duplicate)
-
+# test to verify the layer source update functionality for layerindex. edit to pass the URL to a layerindex application
class LILSUpdateTestCase(TestCase):
def test_update(self):
lils = LayerSource.objects.create(name = "b1", sourcetype = LayerSource.TYPE_LAYERINDEX, apiurl = "http://adamian-desk.local:8080/layerindex/api/")
@@ -31,3 +40,126 @@ class LILSUpdateTestCase(TestCase):
# print vars(lils)
#print map(lambda x: vars(x), Branch.objects.all())
+
+ # run asserts
+ self.assertTrue(lils.branch_set.all().count() > 0, "update() needs to fetch some branches")
+
+
+
+# tests to verify layer_version priority selection
+class LayerVersionEquivalenceTestCase(TestCase):
+ def setUp(self):
+ # create layer sources
+ ls = LayerSource.objects.create(name = "dummy-layersource", sourcetype = LayerSource.TYPE_LOCAL)
+
+ # create bitbake version
+ bbv = BitbakeVersion.objects.create(name="master", giturl="git://git.openembedded.org/bitbake")
+ # create release
+ release = Release.objects.create(name="default-release", bitbake_version = bbv, branch_name = "master")
+ # attach layer source to release
+ ReleaseLayerSourcePriority.objects.create(release = release, layer_source = ls, priority = 1)
+
+ # create layer attach
+ self.layer = Layer.objects.create(name="meta-testlayer", layer_source = ls)
+ # create branch
+ self.branch = Branch.objects.create(name="master", layer_source = ls)
+
+ # set a layer version for the layer on the specified branch
+ self.layerversion = Layer_Version.objects.create(layer = self.layer, layer_source = ls, up_branch = self.branch)
+
+ # create spoof layer that should not appear in the search results
+ Layer_Version.objects.create(layer = Layer.objects.create(name="meta-notvalid", layer_source = ls), layer_source = ls, up_branch = self.branch)
+
+
+ # create a project ...
+ self.project = Project.objects.create_project(name="test-project", release = release)
+ # ... and set it up with a single layer version
+ ProjectLayer.objects.create(project= self.project, layercommit = self.layerversion)
+
+ def test_single_layersource(self):
+ # when we have a single layer version, get_equivalents_wpriority() should return a list with just this layer_version
+ equivalent_list = self.layerversion.get_equivalents_wpriority(self.project)
+ self.assertTrue(len(equivalent_list) == 1)
+ self.assertTrue(equivalent_list[0] == self.layerversion)
+
+ def test_dual_layersource(self):
+ # 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
+ ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL)
+
+ # assign a lower priority for the second layer source
+ Release.objects.get(name="default-release").releaselayersourcepriority_set.create(layer_source = ls2, priority = 2)
+
+ # create a new layer_version for a layer with the same name coming from the second layer source
+ self.layer2 = Layer.objects.create(name="meta-testlayer", layer_source = ls2)
+ self.layerversion2 = Layer_Version.objects.create(layer = self.layer2, layer_source = ls2, up_branch = self.branch)
+
+ # expect two layer versions, in the priority order
+ equivalent_list = self.layerversion.get_equivalents_wpriority(self.project)
+ self.assertTrue(len(equivalent_list) == 2)
+ self.assertTrue(equivalent_list[0] == self.layerversion2)
+ self.assertTrue(equivalent_list[1] == self.layerversion)
+
+ def test_build_layerversion(self):
+ # any layer version coming from the build should show up before any layer version coming from upstream
+ build = Build.objects.create(project = self.project, started_on = timezone.now(), completed_on = timezone.now())
+ self.layerversion_build = Layer_Version.objects.create(layer = self.layer, build = build, commit = "deadbeef")
+
+ # a build layerversion must be in the equivalence list for the original layerversion
+ equivalent_list = self.layerversion.get_equivalents_wpriority(self.project)
+ self.assertTrue(len(equivalent_list) == 2)
+ self.assertTrue(equivalent_list[0] == self.layerversion)
+ self.assertTrue(equivalent_list[1] == self.layerversion_build)
+
+ # getting the build layerversion equivalent list must return the same list as the original layer
+ build_equivalent_list = self.layerversion_build.get_equivalents_wpriority(self.project)
+
+ self.assertTrue(equivalent_list == build_equivalent_list, "%s is not %s" % (equivalent_list, build_equivalent_list))
+
+class ProjectLVSelectionTestCase(TestCase):
+ def setUp(self):
+ # create layer sources
+ ls = LayerSource.objects.create(name = "dummy-layersource", sourcetype = LayerSource.TYPE_LOCAL)
+
+ # create bitbake version
+ bbv = BitbakeVersion.objects.create(name="master", giturl="git://git.openembedded.org/bitbake")
+ # create release
+ release = Release.objects.create(name="default-release", bitbake_version = bbv, branch_name="master")
+ # attach layer source to release
+ ReleaseLayerSourcePriority.objects.create(release = release, layer_source = ls, priority = 1)
+
+ # create layer attach
+ self.layer = Layer.objects.create(name="meta-testlayer", layer_source = ls)
+ # create branch
+ self.branch = Branch.objects.create(name="master", layer_source = ls)
+
+ # set a layer version for the layer on the specified branch
+ self.layerversion = Layer_Version.objects.create(layer = self.layer, layer_source = ls, up_branch = self.branch)
+
+
+ # create a project ...
+ self.project = Project.objects.create_project(name="test-project", release = release)
+ # ... and set it up with a single layer version
+ ProjectLayer.objects.create(project= self.project, layercommit = self.layerversion)
+
+ def test_single_layersource(self):
+ compatible_layerversions = self.project.compatible_layerversions()
+ self.assertTrue(len(compatible_layerversions) == 1)
+ self.assertTrue(compatible_layerversions[0] == self.layerversion)
+
+
+ def test_dual_layersource(self):
+ # 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
+ ls2 = LayerSource.objects.create(name = "dummy-layersource2", sourcetype = LayerSource.TYPE_LOCAL)
+
+ # assign a lower priority for the second layer source
+ Release.objects.get(name="default-release").releaselayersourcepriority_set.create(layer_source = ls2, priority = 2)
+
+ # create a new layer_version for a layer with the same name coming from the second layer source
+ self.layer2 = Layer.objects.create(name="meta-testlayer", layer_source = ls2)
+ self.layerversion2 = Layer_Version.objects.create(layer = self.layer2, layer_source = ls2, up_branch = self.branch)
+
+ # expect two layer versions, in the priority order
+ equivalent_list = self.project.compatible_layerversions()
+ self.assertTrue(len(equivalent_list) == 2)
+ self.assertTrue(equivalent_list[0] == self.layerversion2)
+ self.assertTrue(equivalent_list[1] == self.layerversion)