Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | from oeqa.selftest.base import oeSelfTest |
| 2 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu |
| 3 | from oeqa.utils.decorators import testcase |
| 4 | import re |
| 5 | import os |
| 6 | import sys |
| 7 | import logging |
| 8 | |
| 9 | |
| 10 | class Gummiboot(oeSelfTest): |
| 11 | |
| 12 | def _common_setup(self): |
| 13 | """ |
| 14 | Common setup for test cases: 1101, 1103 |
| 15 | """ |
| 16 | |
| 17 | # Set EFI_PROVIDER = "gummiboot" and MACHINE = "genericx86-64" in conf/local.conf |
| 18 | features = 'EFI_PROVIDER = "gummiboot"\n' |
| 19 | features += 'MACHINE = "genericx86-64"' |
| 20 | self.append_config(features) |
| 21 | |
| 22 | def _common_build(self): |
| 23 | """ |
| 24 | Common build for test cases: 1101, 1103 |
| 25 | """ |
| 26 | |
| 27 | # Build a genericx86-64/efi gummiboot image |
| 28 | bitbake('syslinux syslinux-native parted-native dosfstools-native mtools-native core-image-minimal') |
| 29 | |
| 30 | |
| 31 | @testcase(1101) |
| 32 | def test_efi_gummiboot_images_can_be_built(self): |
| 33 | """ |
| 34 | Summary: Check if efi/gummiboot images can be built |
| 35 | Expected: 1. File gummibootx64.efi should be available in build/tmp/deploy/images/genericx86-64 |
| 36 | 2. Efi/gummiboot images can be built |
| 37 | Product: oe-core |
| 38 | Author: Ionut Chisanovici <ionutx.chisanovici@intel.com> |
| 39 | AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com> |
| 40 | """ |
| 41 | |
| 42 | # We'd use DEPLOY_DIR_IMAGE here, except that we need its value for |
| 43 | # MACHINE="genericx86-64 which is probably not the one configured |
| 44 | gummibootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64', 'gummibootx64.efi') |
| 45 | |
| 46 | self._common_setup() |
| 47 | |
| 48 | # Ensure we're actually testing that this gets built and not that |
| 49 | # it was around from an earlier build |
| 50 | bitbake('-c cleansstate gummiboot') |
| 51 | runCmd('rm -f %s' % gummibootfile) |
| 52 | |
| 53 | self._common_build() |
| 54 | |
| 55 | found = os.path.isfile(gummibootfile) |
| 56 | self.assertTrue(found, 'Gummiboot file %s not found' % gummibootfile) |
| 57 | |
| 58 | @testcase(1103) |
| 59 | def test_wic_command_can_create_efi_gummiboot_installation_images(self): |
| 60 | """ |
| 61 | Summary: Check that wic command can create efi/gummiboot installation images |
| 62 | Expected: A .direct file in folder /var/tmp/wic/ must be created. |
| 63 | Product: oe-core |
| 64 | Author: Ionut Chisanovici <ionutx.chisanovici@intel.com> |
| 65 | AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com> |
| 66 | """ |
| 67 | |
| 68 | self._common_setup() |
| 69 | self._common_build() |
| 70 | |
| 71 | # Create efi/gummiboot installation images |
| 72 | wic_create_cmd = 'wic create mkgummidisk -e core-image-minimal' |
| 73 | result = runCmd(wic_create_cmd) |
| 74 | |
| 75 | # Find file written by wic from output |
| 76 | res = re.search('(/var/tmp/wic/.*\.direct)', result.output) |
| 77 | if res: |
| 78 | direct_file = res.group(1) |
| 79 | # Check it actually exists |
| 80 | if not os.path.exists(direct_file): |
| 81 | self.fail('wic reported direct file "%s" does not exist; wic output:\n%s' % (direct_file, result.output)) |
| 82 | else: |
| 83 | self.fail('No .direct file reported in wic output:\n%s' % result.output) |