diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/lib/oeqa/selftest/wic.py | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py index 0fdd0e65eb..224610c9d7 100644 --- a/meta/lib/oeqa/selftest/wic.py +++ b/meta/lib/oeqa/selftest/wic.py | |||
@@ -24,15 +24,41 @@ | |||
24 | """Test cases for wic.""" | 24 | """Test cases for wic.""" |
25 | 25 | ||
26 | import os | 26 | import os |
27 | import unittest | ||
27 | 28 | ||
28 | from glob import glob | 29 | from glob import glob |
29 | from shutil import rmtree | 30 | from shutil import rmtree |
31 | from functools import wraps, lru_cache | ||
30 | 32 | ||
31 | from oeqa.selftest.base import oeSelfTest | 33 | from oeqa.selftest.base import oeSelfTest |
32 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu | 34 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu |
33 | from oeqa.utils.decorators import testcase | 35 | from oeqa.utils.decorators import testcase |
34 | 36 | ||
35 | 37 | ||
38 | @lru_cache(maxsize=32) | ||
39 | def get_host_arch(recipe): | ||
40 | """A cached call to get_bb_var('HOST_ARCH', <recipe>)""" | ||
41 | return get_bb_var('HOST_ARCH', recipe) | ||
42 | |||
43 | |||
44 | def only_for_arch(archs, image='core-image-minimal'): | ||
45 | """Decorator for wrapping test cases that can be run only for specific target | ||
46 | architectures. A list of compatible architectures is passed in `archs`. | ||
47 | Current architecture will be determined by parsing bitbake output for | ||
48 | `image` recipe. | ||
49 | """ | ||
50 | def wrapper(func): | ||
51 | @wraps(func) | ||
52 | def wrapped_f(*args, **kwargs): | ||
53 | arch = get_host_arch(image) | ||
54 | if archs and arch not in archs: | ||
55 | raise unittest.SkipTest("Testcase arch dependency not met: %s" % arch) | ||
56 | return func(*args, **kwargs) | ||
57 | wrapped_f.__name__ = func.__name__ | ||
58 | return wrapped_f | ||
59 | return wrapper | ||
60 | |||
61 | |||
36 | class Wic(oeSelfTest): | 62 | class Wic(oeSelfTest): |
37 | """Wic test class.""" | 63 | """Wic test class.""" |
38 | 64 | ||
@@ -42,13 +68,13 @@ class Wic(oeSelfTest): | |||
42 | 68 | ||
43 | def setUpLocal(self): | 69 | def setUpLocal(self): |
44 | """This code is executed before each test method.""" | 70 | """This code is executed before each test method.""" |
45 | self.write_config('MACHINE_FEATURES_append = " efi"\n') | ||
46 | 71 | ||
47 | # Do this here instead of in setUpClass as the base setUp does some | 72 | # Do this here instead of in setUpClass as the base setUp does some |
48 | # clean up which can result in the native tools built earlier in | 73 | # clean up which can result in the native tools built earlier in |
49 | # setUpClass being unavailable. | 74 | # setUpClass being unavailable. |
50 | if not Wic.image_is_ready: | 75 | if not Wic.image_is_ready: |
51 | bitbake('wic-tools') | 76 | bitbake('wic-tools') |
77 | |||
52 | bitbake('core-image-minimal') | 78 | bitbake('core-image-minimal') |
53 | Wic.image_is_ready = True | 79 | Wic.image_is_ready = True |
54 | 80 | ||
@@ -141,6 +167,7 @@ class Wic(oeSelfTest): | |||
141 | self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct"))) | 167 | self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct"))) |
142 | 168 | ||
143 | @testcase(1157) | 169 | @testcase(1157) |
170 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
144 | def test_gpt_image(self): | 171 | def test_gpt_image(self): |
145 | """Test creation of core-image-minimal with gpt table and UUID boot""" | 172 | """Test creation of core-image-minimal with gpt table and UUID boot""" |
146 | cmd = "wic create directdisk-gpt --image-name core-image-minimal -o %s" % self.resultdir | 173 | cmd = "wic create directdisk-gpt --image-name core-image-minimal -o %s" % self.resultdir |
@@ -148,6 +175,7 @@ class Wic(oeSelfTest): | |||
148 | self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct"))) | 175 | self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct"))) |
149 | 176 | ||
150 | @testcase(1346) | 177 | @testcase(1346) |
178 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
151 | def test_iso_image(self): | 179 | def test_iso_image(self): |
152 | """Test creation of hybrid iso image with legacy and EFI boot""" | 180 | """Test creation of hybrid iso image with legacy and EFI boot""" |
153 | config = 'INITRAMFS_IMAGE = "core-image-minimal-initramfs"\n'\ | 181 | config = 'INITRAMFS_IMAGE = "core-image-minimal-initramfs"\n'\ |
@@ -161,6 +189,7 @@ class Wic(oeSelfTest): | |||
161 | self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.iso"))) | 189 | self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.iso"))) |
162 | 190 | ||
163 | @testcase(1348) | 191 | @testcase(1348) |
192 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
164 | def test_qemux86_directdisk(self): | 193 | def test_qemux86_directdisk(self): |
165 | """Test creation of qemux-86-directdisk image""" | 194 | """Test creation of qemux-86-directdisk image""" |
166 | cmd = "wic create qemux86-directdisk -e core-image-minimal -o %s" % self.resultdir | 195 | cmd = "wic create qemux86-directdisk -e core-image-minimal -o %s" % self.resultdir |
@@ -168,6 +197,7 @@ class Wic(oeSelfTest): | |||
168 | self.assertEqual(1, len(glob(self.resultdir + "qemux86-directdisk-*direct"))) | 197 | self.assertEqual(1, len(glob(self.resultdir + "qemux86-directdisk-*direct"))) |
169 | 198 | ||
170 | @testcase(1350) | 199 | @testcase(1350) |
200 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
171 | def test_mkefidisk(self): | 201 | def test_mkefidisk(self): |
172 | """Test creation of mkefidisk image""" | 202 | """Test creation of mkefidisk image""" |
173 | cmd = "wic create mkefidisk -e core-image-minimal -o %s" % self.resultdir | 203 | cmd = "wic create mkefidisk -e core-image-minimal -o %s" % self.resultdir |
@@ -175,6 +205,7 @@ class Wic(oeSelfTest): | |||
175 | self.assertEqual(1, len(glob(self.resultdir + "mkefidisk-*direct"))) | 205 | self.assertEqual(1, len(glob(self.resultdir + "mkefidisk-*direct"))) |
176 | 206 | ||
177 | @testcase(1385) | 207 | @testcase(1385) |
208 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
178 | def test_directdisk_bootloader_config(self): | 209 | def test_directdisk_bootloader_config(self): |
179 | """Test creation of directdisk-bootloader-config image""" | 210 | """Test creation of directdisk-bootloader-config image""" |
180 | cmd = "wic create directdisk-bootloader-config -e core-image-minimal -o %s" % self.resultdir | 211 | cmd = "wic create directdisk-bootloader-config -e core-image-minimal -o %s" % self.resultdir |
@@ -182,6 +213,7 @@ class Wic(oeSelfTest): | |||
182 | self.assertEqual(1, len(glob(self.resultdir + "directdisk-bootloader-config-*direct"))) | 213 | self.assertEqual(1, len(glob(self.resultdir + "directdisk-bootloader-config-*direct"))) |
183 | 214 | ||
184 | @testcase(1560) | 215 | @testcase(1560) |
216 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
185 | def test_systemd_bootdisk(self): | 217 | def test_systemd_bootdisk(self): |
186 | """Test creation of systemd-bootdisk image""" | 218 | """Test creation of systemd-bootdisk image""" |
187 | config = 'MACHINE_FEATURES_append = " efi"\n' | 219 | config = 'MACHINE_FEATURES_append = " efi"\n' |
@@ -201,6 +233,7 @@ class Wic(oeSelfTest): | |||
201 | self.assertEqual(1, len(glob(self.resultdir + "sdimage-bootpart-*direct"))) | 233 | self.assertEqual(1, len(glob(self.resultdir + "sdimage-bootpart-*direct"))) |
202 | 234 | ||
203 | @testcase(1562) | 235 | @testcase(1562) |
236 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
204 | def test_default_output_dir(self): | 237 | def test_default_output_dir(self): |
205 | """Test default output location""" | 238 | """Test default output location""" |
206 | for fname in glob("directdisk-*.direct"): | 239 | for fname in glob("directdisk-*.direct"): |
@@ -210,6 +243,7 @@ class Wic(oeSelfTest): | |||
210 | self.assertEqual(1, len(glob("directdisk-*.direct"))) | 243 | self.assertEqual(1, len(glob("directdisk-*.direct"))) |
211 | 244 | ||
212 | @testcase(1212) | 245 | @testcase(1212) |
246 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
213 | def test_build_artifacts(self): | 247 | def test_build_artifacts(self): |
214 | """Test wic create directdisk providing all artifacts.""" | 248 | """Test wic create directdisk providing all artifacts.""" |
215 | bb_vars = get_bb_vars(['STAGING_DATADIR', 'RECIPE_SYSROOT_NATIVE'], | 249 | bb_vars = get_bb_vars(['STAGING_DATADIR', 'RECIPE_SYSROOT_NATIVE'], |
@@ -307,6 +341,7 @@ class Wic(oeSelfTest): | |||
307 | self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct"))) | 341 | self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct"))) |
308 | 342 | ||
309 | @testcase(1268) | 343 | @testcase(1268) |
344 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
310 | def test_rootfs_indirect_recipes(self): | 345 | def test_rootfs_indirect_recipes(self): |
311 | """Test usage of rootfs plugin with rootfs recipes""" | 346 | """Test usage of rootfs plugin with rootfs recipes""" |
312 | status = runCmd("wic create directdisk-multi-rootfs " | 347 | status = runCmd("wic create directdisk-multi-rootfs " |
@@ -318,6 +353,7 @@ class Wic(oeSelfTest): | |||
318 | self.assertEqual(1, len(glob(self.resultdir + "directdisk-multi-rootfs*.direct"))) | 353 | self.assertEqual(1, len(glob(self.resultdir + "directdisk-multi-rootfs*.direct"))) |
319 | 354 | ||
320 | @testcase(1269) | 355 | @testcase(1269) |
356 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
321 | def test_rootfs_artifacts(self): | 357 | def test_rootfs_artifacts(self): |
322 | """Test usage of rootfs plugin with rootfs paths""" | 358 | """Test usage of rootfs plugin with rootfs paths""" |
323 | bb_vars = get_bb_vars(['STAGING_DATADIR', 'RECIPE_SYSROOT_NATIVE'], | 359 | bb_vars = get_bb_vars(['STAGING_DATADIR', 'RECIPE_SYSROOT_NATIVE'], |
@@ -531,6 +567,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r | |||
531 | self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct"))) | 567 | self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct"))) |
532 | 568 | ||
533 | @testcase(1351) | 569 | @testcase(1351) |
570 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
534 | def test_wic_image_type(self): | 571 | def test_wic_image_type(self): |
535 | """Test building wic images by bitbake""" | 572 | """Test building wic images by bitbake""" |
536 | config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "wic-image-minimal"\n'\ | 573 | config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "wic-image-minimal"\n'\ |
@@ -551,6 +588,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r | |||
551 | self.assertTrue(os.path.isfile(os.path.realpath(path))) | 588 | self.assertTrue(os.path.isfile(os.path.realpath(path))) |
552 | 589 | ||
553 | @testcase(1422) | 590 | @testcase(1422) |
591 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
554 | def test_qemu(self): | 592 | def test_qemu(self): |
555 | """Test wic-image-minimal under qemu""" | 593 | """Test wic-image-minimal under qemu""" |
556 | config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "wic-image-minimal"\n'\ | 594 | config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "wic-image-minimal"\n'\ |
@@ -565,6 +603,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r | |||
565 | self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) | 603 | self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) |
566 | self.assertEqual(output, '/dev/root /\r\n/dev/vda3 /mnt') | 604 | self.assertEqual(output, '/dev/root /\r\n/dev/vda3 /mnt') |
567 | 605 | ||
606 | @only_for_arch(['i586', 'i686', 'x86_64']) | ||
568 | def test_qemu_efi(self): | 607 | def test_qemu_efi(self): |
569 | """Test core-image-minimal efi image under qemu""" | 608 | """Test core-image-minimal efi image under qemu""" |
570 | config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "mkefidisk.wks"\n' | 609 | config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "mkefidisk.wks"\n' |