blob: 00aa36f60d93942a8663ae4ccba3c3f8760fe3b0 [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001from oeqa.selftest.base import oeSelfTest
2from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
3from oeqa.utils.decorators import testcase
4import re
5import os
6import sys
7import logging
8
9
10class 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)