diff options
Diffstat (limited to 'bitbake/lib/toaster/orm/tests.py')
| -rw-r--r-- | bitbake/lib/toaster/orm/tests.py | 131 |
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 | |||
| 2 | from orm.models import LocalLayerSource, LayerIndexLayerSource, ImportedLayerSource, LayerSource | 2 | from orm.models import LocalLayerSource, LayerIndexLayerSource, ImportedLayerSource, LayerSource |
| 3 | from orm.models import Branch | 3 | from orm.models import Branch |
| 4 | 4 | ||
| 5 | from orm.models import Project, Build, Layer, Layer_Version, Branch, ProjectLayer | ||
| 6 | from orm.models import Release, ReleaseLayerSourcePriority, BitbakeVersion | ||
| 7 | |||
| 8 | from django.utils import timezone | ||
| 9 | |||
| 10 | # tests to verify inheritance for the LayerSource proxy-inheritance classes | ||
| 5 | class LayerSourceVerifyInheritanceSaveLoad(TestCase): | 11 | class 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 | |
| 27 | class LILSUpdateTestCase(TestCase): | 33 | class 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 | ||
| 50 | class 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 | |||
| 118 | class 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) | ||
