* [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes
@ 2016-11-23 7:46 Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 1/7] oe-selftest: enforce en_US.UTF-8 locale Maciej Borzecki
` (6 more replies)
0 siblings, 7 replies; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
v4 of patch series previously posted here [1].
Some of the patches that were posted as part of v3 are already in master. This
version contains only the patches that were not merged yet.
Changes since v3:
* Running wic tests on Ubuntu resulted in test_fixed_size to fail. The reason
was that `parted` is not a part of the base system, but is needed for
verification of wic-produced partition layout. Parted is built as part of wic
dependencies, hence oeqa/utils/commands.py:runCmd() was extended to include a
new paramter - native_sysroot. This allows runCmd() to run binaries from
STAGING_DIR_NATIVE{/sbin,/usr/bin,/usr/sbin}.
[1]. http://lists.openembedded.org/pipermail/openembedded-core/2016-November/128785.html
Maciej Borzecki (7):
oe-selftest: enforce en_US.UTF-8 locale
oeqa/utils/commands.py: allow use of binaries from native sysroot
wic: add --fixed-size wks option
wic: selftest: avoid COMPATIBLE_HOST issues
wic: selftest: do not repeat core-image-minimal
wic: selftest: do not assume bzImage kernel image
wic: selftest: add tests for --fixed-size partition flags
meta/lib/oeqa/selftest/wic.py | 234 +++++++++++++++++++++++++++------
meta/lib/oeqa/utils/commands.py | 9 +-
scripts/lib/wic/help.py | 14 +-
scripts/lib/wic/imager/direct.py | 2 +-
scripts/lib/wic/ksparser.py | 41 +++++-
scripts/lib/wic/partition.py | 88 ++++++++-----
scripts/lib/wic/utils/partitionedfs.py | 2 +-
scripts/oe-selftest | 3 +
8 files changed, 307 insertions(+), 86 deletions(-)
--
2.5.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v4 1/7] oe-selftest: enforce en_US.UTF-8 locale
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
@ 2016-11-23 7:46 ` Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 2/7] oeqa/utils/commands.py: allow use of binaries from native sysroot Maciej Borzecki
` (5 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
Replicate bitbake and eforce en_US.UTF-8 locale so that ouptut of locale-aware
tools remains stable.
Signed-off-by: Maciej Birzecki <maciej.borzecki@rndity.com>
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
scripts/oe-selftest | 3 +++
1 file changed, 3 insertions(+)
diff --git a/scripts/oe-selftest b/scripts/oe-selftest
index c3215ea6592e128d17da550d778272985f5bd1a6..deaa4324cc888ea261687f90f83e8759c4436a15 100755
--- a/scripts/oe-selftest
+++ b/scripts/oe-selftest
@@ -468,6 +468,9 @@ def main():
sys.path.extend(layer_libdirs)
imp.reload(oeqa.selftest)
+ # act like bitbake and enforce en_US.UTF-8 locale
+ os.environ["LC_ALL"] = "en_US.UTF-8"
+
if args.run_tests_by and len(args.run_tests_by) >= 2:
valid_options = ['name', 'class', 'module', 'id', 'tag']
if args.run_tests_by[0] not in valid_options:
--
2.5.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 2/7] oeqa/utils/commands.py: allow use of binaries from native sysroot
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 1/7] oe-selftest: enforce en_US.UTF-8 locale Maciej Borzecki
@ 2016-11-23 7:46 ` Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 3/7] wic: add --fixed-size wks option Maciej Borzecki
` (4 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
Tests may need to run a native tool that is not available on the host
filesystem, but can be built using one of the *-native recipes. In such case,
the tool will be available in native sysroot, and running in from that location
will require adjustments to PATH.
runCmd() can now take a path to native sysroot as one of its arguments and
setup PATH accordingly.
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
meta/lib/oeqa/utils/commands.py | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py
index 5cd0f7477baa5bb45f2b2b5b93fb1ff0efd02923..657c9dba34ea9d42aa416f3b889f4b04129e8da9 100644
--- a/meta/lib/oeqa/utils/commands.py
+++ b/meta/lib/oeqa/utils/commands.py
@@ -97,9 +97,16 @@ class Result(object):
pass
-def runCmd(command, ignore_status=False, timeout=None, assert_error=True, **options):
+def runCmd(command, ignore_status=False, timeout=None, assert_error=True, native_sysroot=None, **options):
result = Result()
+ if native_sysroot:
+ extra_paths = "%s/sbin:%s/usr/sbin:%s/usr/bin" % \
+ (native_sysroot, native_sysroot, native_sysroot)
+ nenv = dict(options.get('env', os.environ))
+ nenv['PATH'] = extra_paths + ':' + nenv.get('PATH', '')
+ options['env'] = nenv
+
cmd = Command(command, timeout=timeout, **options)
cmd.run()
--
2.5.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 3/7] wic: add --fixed-size wks option
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 1/7] oe-selftest: enforce en_US.UTF-8 locale Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 2/7] oeqa/utils/commands.py: allow use of binaries from native sysroot Maciej Borzecki
@ 2016-11-23 7:46 ` Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 4/7] wic: selftest: avoid COMPATIBLE_HOST issues Maciej Borzecki
` (3 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
Added new option --fixed-size to wks. The option can be used to indicate
the exact size of a partition. The option cannot be added together with
--size, in which case an error will be raised. Other options that
influence automatic partition size (--extra-space, --overhead-factor),
if specifiec along with --fixed-size, will raise an error.
If it partition data is larger than the amount of space specified with
--fixed-size option wic will raise an error.
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
scripts/lib/wic/help.py | 14 ++++--
scripts/lib/wic/imager/direct.py | 2 +-
scripts/lib/wic/ksparser.py | 41 ++++++++++++++--
scripts/lib/wic/partition.py | 88 +++++++++++++++++++++-------------
scripts/lib/wic/utils/partitionedfs.py | 2 +-
5 files changed, 105 insertions(+), 42 deletions(-)
diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
index e5347ec4b7c900c68fc64351a5293e75de0672b3..daa11bf489c135627ddfe4cef968e48f8e3ad1d8 100644
--- a/scripts/lib/wic/help.py
+++ b/scripts/lib/wic/help.py
@@ -646,6 +646,12 @@ DESCRIPTION
not specified, the size is in MB.
You do not need this option if you use --source.
+ --fixed-size: Exact partition size. Value format is the same
+ as for --size option. This option cannot be
+ specified along with --size. If partition data
+ is larger than --fixed-size and error will be
+ raised when assembling disk image.
+
--source: This option is a wic-specific option that names the
source of the data that will populate the
partition. The most common value for this option
@@ -719,13 +725,15 @@ DESCRIPTION
space after the space filled by the content
of the partition. The final size can go
beyond the size specified by --size.
- By default, 10MB.
+ By default, 10MB. This option cannot be used
+ with --fixed-size option.
--overhead-factor: This option is specific to wic. The
size of the partition is multiplied by
this factor. It has to be greater than or
- equal to 1.
- The default value is 1.3.
+ equal to 1. The default value is 1.3.
+ This option cannot be used with --fixed-size
+ option.
--part-type: This option is specific to wic. It specifies partition
type GUID for GPT partitions.
diff --git a/scripts/lib/wic/imager/direct.py b/scripts/lib/wic/imager/direct.py
index 2bedef08d6450096c786def6f75a9ee53fcd4b3b..11ec15e33f65885618c7adc83e55c6a39fedbe99 100644
--- a/scripts/lib/wic/imager/direct.py
+++ b/scripts/lib/wic/imager/direct.py
@@ -290,7 +290,7 @@ class DirectImageCreator(BaseImageCreator):
self.bootimg_dir, self.kernel_dir, self.native_sysroot)
- self.__image.add_partition(int(part.size),
+ self.__image.add_partition(part.disk_size,
part.disk,
part.mountpoint,
part.source_file,
diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
index 0894e2b199a299fbbed272f2e1c95e9d692e3ab1..62c490274aa92bf82aac304d9323250e3b728d0c 100644
--- a/scripts/lib/wic/ksparser.py
+++ b/scripts/lib/wic/ksparser.py
@@ -113,6 +113,9 @@ def systemidtype(arg):
class KickStart():
""""Kickstart parser implementation."""
+ DEFAULT_EXTRA_SPACE = 10*1024
+ DEFAULT_OVERHEAD_FACTOR = 1.3
+
def __init__(self, confpath):
self.partitions = []
@@ -127,16 +130,24 @@ class KickStart():
part.add_argument('mountpoint', nargs='?')
part.add_argument('--active', action='store_true')
part.add_argument('--align', type=int)
- part.add_argument("--extra-space", type=sizetype, default=10*1024)
+ part.add_argument("--extra-space", type=sizetype)
part.add_argument('--fsoptions', dest='fsopts')
part.add_argument('--fstype')
part.add_argument('--label')
part.add_argument('--no-table', action='store_true')
part.add_argument('--ondisk', '--ondrive', dest='disk')
- part.add_argument("--overhead-factor", type=overheadtype, default=1.3)
+ part.add_argument("--overhead-factor", type=overheadtype)
part.add_argument('--part-type')
part.add_argument('--rootfs-dir')
- part.add_argument('--size', type=sizetype, default=0)
+
+ # --size and --fixed-size cannot be specified together; options
+ # ----extra-space and --overhead-factor should also raise a parser
+ # --error, but since nesting mutually exclusive groups does not work,
+ # ----extra-space/--overhead-factor are handled later
+ sizeexcl = part.add_mutually_exclusive_group()
+ sizeexcl.add_argument('--size', type=sizetype, default=0)
+ sizeexcl.add_argument('--fixed-size', type=sizetype, default=0)
+
part.add_argument('--source')
part.add_argument('--sourceparams')
part.add_argument('--system-id', type=systemidtype)
@@ -170,11 +181,33 @@ class KickStart():
lineno += 1
if line and line[0] != '#':
try:
- parsed = parser.parse_args(shlex.split(line))
+ line_args = shlex.split(line)
+ parsed = parser.parse_args(line_args)
except ArgumentError as err:
raise KickStartError('%s:%d: %s' % \
(confpath, lineno, err))
if line.startswith('part'):
+ # using ArgumentParser one cannot easily tell if option
+ # was passed as argument, if said option has a default
+ # value; --overhead-factor/--extra-space cannot be used
+ # with --fixed-size, so at least detect when these were
+ # passed with non-0 values ...
+ if parsed.fixed_size:
+ if parsed.overhead_factor or parsed.extra_space:
+ err = "%s:%d: arguments --overhead-factor and --extra-space not "\
+ "allowed with argument --fixed-size" \
+ % (confpath, lineno)
+ raise KickStartError(err)
+ else:
+ # ... and provide defaults if not using
+ # --fixed-size iff given option was not used
+ # (again, one cannot tell if option was passed but
+ # with value equal to 0)
+ if '--overhead-factor' not in line_args:
+ parsed.overhead_factor = self.DEFAULT_OVERHEAD_FACTOR
+ if '--extra-space' not in line_args:
+ parsed.extra_space = self.DEFAULT_EXTRA_SPACE
+
self.partnum += 1
self.partitions.append(Partition(parsed, self.partnum))
elif line.startswith('include'):
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index ac4c836bdb53300d3a4e4c09926b7b1514b8faf2..8cf966ebc6d07490c44cefc93acbe5868be30ac7 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -54,6 +54,7 @@ class Partition():
self.part_type = args.part_type
self.rootfs_dir = args.rootfs_dir
self.size = args.size
+ self.fixed_size = args.fixed_size
self.source = args.source
self.sourceparams = args.sourceparams
self.system_id = args.system_id
@@ -87,6 +88,41 @@ class Partition():
else:
return 0
+ def get_rootfs_size(self, actual_rootfs_size=0):
+ """
+ Calculate the required size of rootfs taking into consideration
+ --size/--fixed-size flags as well as overhead and extra space, as
+ specified in kickstart file. Raises an error if the
+ `actual_rootfs_size` is larger than fixed-size rootfs.
+
+ """
+ if self.fixed_size:
+ rootfs_size = self.fixed_size
+ if actual_rootfs_size > rootfs_size:
+ msger.error("Actual rootfs size (%d kB) is larger than allowed size %d kB" \
+ %(actual_rootfs_size, rootfs_size))
+ else:
+ extra_blocks = self.get_extra_block_count(actual_rootfs_size)
+ if extra_blocks < self.extra_space:
+ extra_blocks = self.extra_space
+
+ rootfs_size = actual_rootfs_size + extra_blocks
+ rootfs_size *= self.overhead_factor
+
+ msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
+ (extra_blocks, self.mountpoint, rootfs_size))
+
+ return rootfs_size
+
+ @property
+ def disk_size(self):
+ """
+ Obtain on-disk size of partition taking into consideration
+ --size/--fixed-size options.
+
+ """
+ return self.fixed_size if self.fixed_size else self.size
+
def prepare(self, creator, cr_workdir, oe_builddir, rootfs_dir,
bootimg_dir, kernel_dir, native_sysroot):
"""
@@ -97,9 +133,9 @@ class Partition():
self.sourceparams_dict = parse_sourceparams(self.sourceparams)
if not self.source:
- if not self.size:
- msger.error("The %s partition has a size of zero. Please "
- "specify a non-zero --size for that partition." % \
+ if not self.size and not self.fixed_size:
+ msger.error("The %s partition has a size of zero. Please "
+ "specify a non-zero --size/--fixed-size for that partition." % \
self.mountpoint)
if self.fstype and self.fstype == "swap":
self.prepare_swap_partition(cr_workdir, oe_builddir,
@@ -146,6 +182,7 @@ class Partition():
oe_builddir,
bootimg_dir, kernel_dir, rootfs_dir,
native_sysroot)
+
# further processing required Partition.size to be an integer, make
# sure that it is one
if type(self.size) is not int:
@@ -153,6 +190,12 @@ class Partition():
"This a bug in source plugin %s and needs to be fixed." \
% (self.mountpoint, self.source))
+ if self.fixed_size and self.size > self.fixed_size:
+ msger.error("File system image of partition %s is larger (%d kB) than its"\
+ "allowed size %d kB" % (self.mountpoint,
+ self.size, self.fixed_size))
+
+
def prepare_rootfs_from_fs_image(self, cr_workdir, oe_builddir,
rootfs_dir):
"""
@@ -217,15 +260,7 @@ class Partition():
out = exec_cmd(du_cmd)
actual_rootfs_size = int(out.split()[0])
- extra_blocks = self.get_extra_block_count(actual_rootfs_size)
- if extra_blocks < self.extra_space:
- extra_blocks = self.extra_space
-
- rootfs_size = actual_rootfs_size + extra_blocks
- rootfs_size *= self.overhead_factor
-
- msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
- (extra_blocks, self.mountpoint, rootfs_size))
+ rootfs_size = self.get_rootfs_size(actual_rootfs_size)
with open(rootfs, 'w') as sparse:
os.ftruncate(sparse.fileno(), rootfs_size * 1024)
@@ -251,15 +286,7 @@ class Partition():
out = exec_cmd(du_cmd)
actual_rootfs_size = int(out.split()[0])
- extra_blocks = self.get_extra_block_count(actual_rootfs_size)
- if extra_blocks < self.extra_space:
- extra_blocks = self.extra_space
-
- rootfs_size = actual_rootfs_size + extra_blocks
- rootfs_size *= self.overhead_factor
-
- msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
- (extra_blocks, self.mountpoint, rootfs_size))
+ rootfs_size = self.get_rootfs_size(actual_rootfs_size)
with open(rootfs, 'w') as sparse:
os.ftruncate(sparse.fileno(), rootfs_size * 1024)
@@ -281,20 +308,13 @@ class Partition():
out = exec_cmd(du_cmd)
blocks = int(out.split()[0])
- extra_blocks = self.get_extra_block_count(blocks)
- if extra_blocks < self.extra_space:
- extra_blocks = self.extra_space
-
- blocks += extra_blocks
-
- msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
- (extra_blocks, self.mountpoint, blocks))
+ rootfs_size = self.get_rootfs_size(blocks)
label_str = "-n boot"
if self.label:
label_str = "-n %s" % self.label
- dosfs_cmd = "mkdosfs %s -S 512 -C %s %d" % (label_str, rootfs, blocks)
+ dosfs_cmd = "mkdosfs %s -S 512 -C %s %d" % (label_str, rootfs, rootfs_size)
exec_native_cmd(dosfs_cmd, native_sysroot)
mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (rootfs, rootfs_dir)
@@ -317,8 +337,9 @@ class Partition():
"""
Prepare an empty ext2/3/4 partition.
"""
+ size = self.disk_size
with open(rootfs, 'w') as sparse:
- os.ftruncate(sparse.fileno(), self.size * 1024)
+ os.ftruncate(sparse.fileno(), size * 1024)
extra_imagecmd = "-i 8192"
@@ -335,8 +356,9 @@ class Partition():
"""
Prepare an empty btrfs partition.
"""
+ size = self.disk_size
with open(rootfs, 'w') as sparse:
- os.ftruncate(sparse.fileno(), self.size * 1024)
+ os.ftruncate(sparse.fileno(), size * 1024)
label_str = ""
if self.label:
@@ -351,7 +373,7 @@ class Partition():
"""
Prepare an empty vfat partition.
"""
- blocks = self.size
+ blocks = self.disk_size
label_str = "-n boot"
if self.label:
diff --git a/scripts/lib/wic/utils/partitionedfs.py b/scripts/lib/wic/utils/partitionedfs.py
index 9e76487844eebfffc7227d053a65dc9fdab3678b..cfa5f5ce09b764c1c2a9b7a3f7bf7d677a6811c4 100644
--- a/scripts/lib/wic/utils/partitionedfs.py
+++ b/scripts/lib/wic/utils/partitionedfs.py
@@ -209,7 +209,7 @@ class Image():
msger.debug("Assigned %s to %s%d, sectors range %d-%d size %d "
"sectors (%d bytes)." \
% (part['mountpoint'], part['disk_name'], part['num'],
- part['start'], part['start'] + part['size'] - 1,
+ part['start'], disk['offset'] - 1,
part['size'], part['size'] * self.sector_size))
# Once all the partitions have been layed out, we can calculate the
--
2.5.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 4/7] wic: selftest: avoid COMPATIBLE_HOST issues
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
` (2 preceding siblings ...)
2016-11-23 7:46 ` [PATCH v4 3/7] wic: add --fixed-size wks option Maciej Borzecki
@ 2016-11-23 7:46 ` Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal Maciej Borzecki
` (2 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
wic tests will unconditionally attempt to build syslinux and add
configuration options that may not be compatible with current machine.
Resolve this by consulting HOST_ARCH (which defaults to TARGET_ARCH) and build
recipes, add configuration options or skip tests conditionally.
A convenience decorator onlyForArch() can be used to skip test cases for
specific architectures.
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
meta/lib/oeqa/selftest/wic.py | 51 +++++++++++++++++++++++++++++++++++++++----
1 file changed, 47 insertions(+), 4 deletions(-)
diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index faac11e21643e4c32a83b649b6ae986fead498f1..2db14445956bc5adcf1e755844bbdb69edcb468f 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -24,15 +24,33 @@
"""Test cases for wic."""
import os
+import unittest
from glob import glob
from shutil import rmtree
+from functools import wraps
from oeqa.selftest.base import oeSelfTest
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
from oeqa.utils.decorators import testcase
+class onlyForArch(object):
+
+ def __init__(self, *args):
+ self.archs = args
+
+ def __call__(self,f):
+ @wraps(f)
+ def wrapped_f(*args, **kwargs):
+ arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
+ if self.archs and arch not in self.archs :
+ raise unittest.SkipTest("Testcase arch dependency not met: %s" % arch)
+ return f(*args, **kwargs)
+ wrapped_f.__name__ = f.__name__
+ return wrapped_f
+
+
class Wic(oeSelfTest):
"""Wic test class."""
@@ -41,15 +59,22 @@ class Wic(oeSelfTest):
def setUpLocal(self):
"""This code is executed before each test method."""
- self.write_config('IMAGE_FSTYPES += " hddimg"\n'
- 'MACHINE_FEATURES_append = " efi"\n')
+ arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
+ is_x86 = arch in ['i586', 'i686', 'x86_64']
+ if is_x86:
+ self.write_config('IMAGE_FSTYPES += " hddimg"\n' \
+ 'MACHINE_FEATURES_append = " efi"\n')
# Do this here instead of in setUpClass as the base setUp does some
# clean up which can result in the native tools built earlier in
# setUpClass being unavailable.
if not Wic.image_is_ready:
- bitbake('syslinux syslinux-native parted-native gptfdisk-native '
- 'dosfstools-native mtools-native bmap-tools-native')
+ tools = 'parted-native gptfdisk-native ' \
+ 'dosfstools-native mtools-native bmap-tools-native'
+ if is_x86:
+ tools += ' syslinux syslinux-native'
+ bitbake(tools)
+
bitbake('core-image-minimal')
Wic.image_is_ready = True
@@ -71,6 +96,7 @@ class Wic(oeSelfTest):
self.assertEqual(0, runCmd('wic list --help').status)
@testcase(1211)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_build_image_name(self):
"""Test wic create directdisk --image-name core-image-minimal"""
self.assertEqual(0, runCmd("wic create directdisk "
@@ -78,6 +104,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
@testcase(1212)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_build_artifacts(self):
"""Test wic create directdisk providing all artifacts."""
bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
@@ -92,6 +119,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
@testcase(1157)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_gpt_image(self):
"""Test creation of core-image-minimal with gpt table and UUID boot"""
self.assertEqual(0, runCmd("wic create directdisk-gpt "
@@ -125,6 +153,7 @@ class Wic(oeSelfTest):
self.assertEqual(0, runCmd('wic help kickstart').status)
@testcase(1264)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_compress_gzip(self):
"""Test compressing an image with gzip"""
self.assertEqual(0, runCmd("wic create directdisk "
@@ -134,6 +163,7 @@ class Wic(oeSelfTest):
"directdisk-*.direct.gz")))
@testcase(1265)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_compress_bzip2(self):
"""Test compressing an image with bzip2"""
self.assertEqual(0, runCmd("wic create directdisk "
@@ -143,6 +173,7 @@ class Wic(oeSelfTest):
"directdisk-*.direct.bz2")))
@testcase(1266)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_compress_xz(self):
"""Test compressing an image with xz"""
self.assertEqual(0, runCmd("wic create directdisk "
@@ -152,6 +183,7 @@ class Wic(oeSelfTest):
"directdisk-*.direct.xz")))
@testcase(1267)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_wrong_compressor(self):
"""Test how wic breaks if wrong compressor is provided"""
self.assertEqual(2, runCmd("wic create directdisk "
@@ -159,6 +191,7 @@ class Wic(oeSelfTest):
"-c wrong", ignore_status=True).status)
@testcase(1268)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_rootfs_indirect_recipes(self):
"""Test usage of rootfs plugin with rootfs recipes"""
wks = "directdisk-multi-rootfs"
@@ -170,6 +203,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "%s*.direct" % wks)))
@testcase(1269)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_rootfs_artifacts(self):
"""Test usage of rootfs plugin with rootfs paths"""
bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
@@ -188,6 +222,7 @@ class Wic(oeSelfTest):
"%(wks)s-*.direct" % bbvars)))
@testcase(1346)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_iso_image(self):
"""Test creation of hybrid iso image with legacy and EFI boot"""
self.assertEqual(0, runCmd("wic create mkhybridiso "
@@ -220,6 +255,7 @@ class Wic(oeSelfTest):
self.assertTrue(content[var])
@testcase(1351)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_wic_image_type(self):
"""Test building wic images by bitbake"""
self.assertEqual(0, bitbake('wic-image-minimal').status)
@@ -235,6 +271,7 @@ class Wic(oeSelfTest):
self.assertTrue(os.path.isfile(os.path.realpath(path)))
@testcase(1348)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_qemux86_directdisk(self):
"""Test creation of qemux-86-directdisk image"""
image = "qemux86-directdisk"
@@ -243,6 +280,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1349)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_mkgummidisk(self):
"""Test creation of mkgummidisk image"""
image = "mkgummidisk"
@@ -251,6 +289,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1350)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_mkefidisk(self):
"""Test creation of mkefidisk image"""
image = "mkefidisk"
@@ -259,6 +298,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1385)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_directdisk_bootloader_config(self):
"""Test creation of directdisk-bootloader-config image"""
image = "directdisk-bootloader-config"
@@ -267,6 +307,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1422)
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_qemu(self):
"""Test wic-image-minimal under qemu"""
self.assertEqual(0, bitbake('wic-image-minimal').status)
@@ -277,6 +318,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, status, 'Failed to run command "%s": %s' % (command, output))
self.assertEqual(output, '/dev/root /\r\n/dev/vda3 /mnt')
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_bmap(self):
"""Test generation of .bmap file"""
image = "directdisk"
@@ -285,6 +327,7 @@ class Wic(oeSelfTest):
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct.bmap" % image)))
+ @onlyForArch('i586', 'i686', 'x86_64')
def test_systemd_bootdisk(self):
"""Test creation of systemd-bootdisk image"""
image = "systemd-bootdisk"
--
2.5.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
` (3 preceding siblings ...)
2016-11-23 7:46 ` [PATCH v4 4/7] wic: selftest: avoid COMPATIBLE_HOST issues Maciej Borzecki
@ 2016-11-23 7:46 ` Maciej Borzecki
2016-11-23 11:23 ` Ed Bartosh
2016-11-23 7:46 ` [PATCH v4 6/7] wic: selftest: do not assume bzImage kernel image Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 7/7] wic: selftest: add tests for --fixed-size partition flags Maciej Borzecki
6 siblings, 1 reply; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
Replace repeated core-image-minimal with Wic class field.
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
meta/lib/oeqa/selftest/wic.py | 111 +++++++++++++++++++++++++++---------------
1 file changed, 73 insertions(+), 38 deletions(-)
diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index 2db14445956bc5adcf1e755844bbdb69edcb468f..37ed2c6de5a7f22f982f921476fa392304995b2e 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -57,6 +57,8 @@ class Wic(oeSelfTest):
resultdir = "/var/tmp/wic/build/"
image_is_ready = False
+ OE_IMAGE = "core-image-minimal"
+
def setUpLocal(self):
"""This code is executed before each test method."""
arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
@@ -75,7 +77,7 @@ class Wic(oeSelfTest):
tools += ' syslinux syslinux-native'
bitbake(tools)
- bitbake('core-image-minimal')
+ bitbake(self.OE_IMAGE)
Wic.image_is_ready = True
rmtree(self.resultdir, ignore_errors=True)
@@ -100,14 +102,14 @@ class Wic(oeSelfTest):
def test_build_image_name(self):
"""Test wic create directdisk --image-name core-image-minimal"""
self.assertEqual(0, runCmd("wic create directdisk "
- "--image-name core-image-minimal").status)
+ "--image-name %s" % self.OE_IMAGE).status)
self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
@testcase(1212)
@onlyForArch('i586', 'i686', 'x86_64')
def test_build_artifacts(self):
"""Test wic create directdisk providing all artifacts."""
- bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
+ bbvars = dict((var.lower(), get_bb_var(var, self.OE_IMAGE)) \
for var in ('STAGING_DATADIR', 'DEPLOY_DIR_IMAGE',
'STAGING_DIR_NATIVE', 'IMAGE_ROOTFS'))
status = runCmd("wic create directdisk "
@@ -123,7 +125,7 @@ class Wic(oeSelfTest):
def test_gpt_image(self):
"""Test creation of core-image-minimal with gpt table and UUID boot"""
self.assertEqual(0, runCmd("wic create directdisk-gpt "
- "--image-name core-image-minimal").status)
+ "--image-name %s" % self.OE_IMAGE).status)
self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
@testcase(1213)
@@ -157,8 +159,8 @@ class Wic(oeSelfTest):
def test_compress_gzip(self):
"""Test compressing an image with gzip"""
self.assertEqual(0, runCmd("wic create directdisk "
- "--image-name core-image-minimal "
- "-c gzip").status)
+ "--image-name %s "
+ "-c gzip" % self.OE_IMAGE).status)
self.assertEqual(1, len(glob(self.resultdir + \
"directdisk-*.direct.gz")))
@@ -167,8 +169,8 @@ class Wic(oeSelfTest):
def test_compress_bzip2(self):
"""Test compressing an image with bzip2"""
self.assertEqual(0, runCmd("wic create directdisk "
- "--image-name core-image-minimal "
- "-c bzip2").status)
+ "--image-name %s "
+ "-c bzip2" % self.OE_IMAGE).status)
self.assertEqual(1, len(glob(self.resultdir + \
"directdisk-*.direct.bz2")))
@@ -177,8 +179,8 @@ class Wic(oeSelfTest):
def test_compress_xz(self):
"""Test compressing an image with xz"""
self.assertEqual(0, runCmd("wic create directdisk "
- "--image-name core-image-minimal "
- "-c xz").status)
+ "--image-name %s "
+ "-c xz" % self.OE_IMAGE).status)
self.assertEqual(1, len(glob(self.resultdir + \
"directdisk-*.direct.xz")))
@@ -187,26 +189,31 @@ class Wic(oeSelfTest):
def test_wrong_compressor(self):
"""Test how wic breaks if wrong compressor is provided"""
self.assertEqual(2, runCmd("wic create directdisk "
- "--image-name core-image-minimal "
- "-c wrong", ignore_status=True).status)
+ "--image-name %s "
+ "-c wrong" % self.OE_IMAGE,
+ ignore_status=True).status)
@testcase(1268)
@onlyForArch('i586', 'i686', 'x86_64')
def test_rootfs_indirect_recipes(self):
"""Test usage of rootfs plugin with rootfs recipes"""
wks = "directdisk-multi-rootfs"
- self.assertEqual(0, runCmd("wic create %s "
- "--image-name core-image-minimal "
- "--rootfs rootfs1=core-image-minimal "
- "--rootfs rootfs2=core-image-minimal" \
- % wks).status)
+ wic_cmd_vars = {
+ 'wks': wks,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s "
+ "--image-name %(image)s "
+ "--rootfs rootfs1=%(image)s "
+ "--rootfs rootfs2=%(image)s" \
+ % wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s*.direct" % wks)))
@testcase(1269)
@onlyForArch('i586', 'i686', 'x86_64')
def test_rootfs_artifacts(self):
"""Test usage of rootfs plugin with rootfs paths"""
- bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
+ bbvars = dict((var.lower(), get_bb_var(var, self.OE_IMAGE)) \
for var in ('STAGING_DATADIR', 'DEPLOY_DIR_IMAGE',
'STAGING_DIR_NATIVE', 'IMAGE_ROOTFS'))
bbvars['wks'] = "directdisk-multi-rootfs"
@@ -226,24 +233,23 @@ class Wic(oeSelfTest):
def test_iso_image(self):
"""Test creation of hybrid iso image with legacy and EFI boot"""
self.assertEqual(0, runCmd("wic create mkhybridiso "
- "--image-name core-image-minimal").status)
+ "--image-name %s" % self.OE_IMAGE).status)
self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.direct")))
self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.iso")))
@testcase(1347)
def test_image_env(self):
"""Test generation of <image>.env files."""
- image = 'core-image-minimal'
- self.assertEqual(0, bitbake('%s -c do_rootfs_wicenv' % image).status)
- stdir = get_bb_var('STAGING_DIR_TARGET', image)
+ self.assertEqual(0, bitbake('%s -c do_rootfs_wicenv' % self.OE_IMAGE).status)
+ stdir = get_bb_var('STAGING_DIR_TARGET', self.OE_IMAGE)
imgdatadir = os.path.join(stdir, 'imgdata')
- basename = get_bb_var('IMAGE_BASENAME', image)
- self.assertEqual(basename, image)
+ basename = get_bb_var('IMAGE_BASENAME', self.OE_IMAGE)
+ self.assertEqual(basename, self.OE_IMAGE)
path = os.path.join(imgdatadir, basename) + '.env'
self.assertTrue(os.path.isfile(path))
- wicvars = set(get_bb_var('WICVARS', image).split())
+ wicvars = set(get_bb_var('WICVARS', self.OE_IMAGE).split())
# filter out optional variables
wicvars = wicvars.difference(('HDDDIR', 'IMAGE_BOOT_FILES',
'INITRD', 'ISODIR'))
@@ -275,8 +281,12 @@ class Wic(oeSelfTest):
def test_qemux86_directdisk(self):
"""Test creation of qemux-86-directdisk image"""
image = "qemux86-directdisk"
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
- % image).status)
+ wic_cmd_vars = {
+ 'wks': image,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1349)
@@ -284,8 +294,12 @@ class Wic(oeSelfTest):
def test_mkgummidisk(self):
"""Test creation of mkgummidisk image"""
image = "mkgummidisk"
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
- % image).status)
+ wic_cmd_vars = {
+ 'wks': image,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1350)
@@ -293,8 +307,12 @@ class Wic(oeSelfTest):
def test_mkefidisk(self):
"""Test creation of mkefidisk image"""
image = "mkefidisk"
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
- % image).status)
+ wic_cmd_vars = {
+ 'wks': image,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1385)
@@ -302,8 +320,12 @@ class Wic(oeSelfTest):
def test_directdisk_bootloader_config(self):
"""Test creation of directdisk-bootloader-config image"""
image = "directdisk-bootloader-config"
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
- % image).status)
+ wic_cmd_vars = {
+ 'wks': image,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
@testcase(1422)
@@ -322,7 +344,12 @@ class Wic(oeSelfTest):
def test_bmap(self):
"""Test generation of .bmap file"""
image = "directdisk"
- status = runCmd("wic create %s -e core-image-minimal --bmap" % image).status
+ wic_cmd_vars = {
+ 'wks': image,
+ 'image': self.OE_IMAGE,
+ }
+ status = runCmd("wic create %(wks)s -e %(image)s --bmap" \
+ % wic_cmd_vars).status
self.assertEqual(0, status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct.bmap" % image)))
@@ -331,14 +358,22 @@ class Wic(oeSelfTest):
def test_systemd_bootdisk(self):
"""Test creation of systemd-bootdisk image"""
image = "systemd-bootdisk"
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
- % image).status)
+ wic_cmd_vars = {
+ 'wks': image,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
def test_sdimage_bootpart(self):
"""Test creation of sdimage-bootpart image"""
image = "sdimage-bootpart"
self.write_config('IMAGE_BOOT_FILES = "bzImage"\n')
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
- % image).status)
+ wic_cmd_vars = {
+ 'wks': image,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
--
2.5.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 6/7] wic: selftest: do not assume bzImage kernel image
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
` (4 preceding siblings ...)
2016-11-23 7:46 ` [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal Maciej Borzecki
@ 2016-11-23 7:46 ` Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 7/7] wic: selftest: add tests for --fixed-size partition flags Maciej Borzecki
6 siblings, 0 replies; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
Instead of assuming that bzImage is available, query bitbake enviroment
for KERNEL_IMAGETYPE.
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
meta/lib/oeqa/selftest/wic.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index 37ed2c6de5a7f22f982f921476fa392304995b2e..ad783043b92130a023fd70120becec479c6253a7 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -369,7 +369,8 @@ class Wic(oeSelfTest):
def test_sdimage_bootpart(self):
"""Test creation of sdimage-bootpart image"""
image = "sdimage-bootpart"
- self.write_config('IMAGE_BOOT_FILES = "bzImage"\n')
+ kimgtype = get_bb_var('KERNEL_IMAGETYPE', self.OE_IMAGE)
+ self.write_config('IMAGE_BOOT_FILES = "%s"\n' % kimgtype)
wic_cmd_vars = {
'wks': image,
'image': self.OE_IMAGE,
--
2.5.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 7/7] wic: selftest: add tests for --fixed-size partition flags
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
` (5 preceding siblings ...)
2016-11-23 7:46 ` [PATCH v4 6/7] wic: selftest: do not assume bzImage kernel image Maciej Borzecki
@ 2016-11-23 7:46 ` Maciej Borzecki
2016-11-23 11:36 ` Ed Bartosh
6 siblings, 1 reply; 13+ messages in thread
From: Maciej Borzecki @ 2016-11-23 7:46 UTC (permalink / raw)
To: openembedded-core; +Cc: Paul Eggleton, Maciej Borzecki
wic has a new flag for setting a fixed parition size --fixed-size. Add
tests that verify if partition is indeed sized properly and that errors
are signaled when there is not enough space to fit partition data.
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
meta/lib/oeqa/selftest/wic.py | 69 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index ad783043b92130a023fd70120becec479c6253a7..45f68df1e74828e11401f57dd732a88a50dd1f00 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -29,6 +29,7 @@ import unittest
from glob import glob
from shutil import rmtree
from functools import wraps
+from tempfile import NamedTemporaryFile
from oeqa.selftest.base import oeSelfTest
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
@@ -61,6 +62,8 @@ class Wic(oeSelfTest):
def setUpLocal(self):
"""This code is executed before each test method."""
+ self.native_sysroot = get_bb_var('STAGING_DIR_NATIVE', 'core-image-minimal')
+
arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
is_x86 = arch in ['i586', 'i686', 'x86_64']
if is_x86:
@@ -378,3 +381,69 @@ class Wic(oeSelfTest):
self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
% wic_cmd_vars).status)
self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
+
+ def _make_fixed_size_wks(self, size):
+ """
+ Create a wks of an image with a single partition. Size of the partition is set
+ using --fixed-size flag. Returns a tuple: (path to wks file, wks image name)
+ """
+ with NamedTemporaryFile("w", suffix=".wks", delete=False) as tf:
+ wkspath = tf.name
+ tf.write("part " \
+ "--source rootfs --ondisk hda --align 4 --fixed-size %d "
+ "--fstype=ext4\n" % size)
+ wksname = os.path.splitext(os.path.basename(wkspath))[0]
+
+ return (wkspath, wksname)
+
+ def test_fixed_size(self):
+ """
+ Test creation of a simple image with partition size controlled through
+ --fixed-size flag
+ """
+ wkspath, wksname = self._make_fixed_size_wks(200)
+
+ wic_cmd_vars = {
+ 'wks': wkspath,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars).status)
+ os.remove(wkspath)
+ wicout = glob(self.resultdir + "%s-*direct" % wksname)
+ self.assertEqual(1, len(wicout))
+
+ wicimg = wicout[0]
+
+ # verify partition size with wic
+ res = runCmd("parted -m %s unit mib p 2>/dev/null" % wicimg,
+ ignore_status=True,
+ native_sysroot=self.native_sysroot)
+ self.assertEqual(0, res.status)
+
+ # parse parted output which looks like this:
+ # BYT;\n
+ # /var/tmp/wic/build/tmpfwvjjkf_-201611101222-hda.direct:200MiB:file:512:512:msdos::;\n
+ # 1:0.00MiB:200MiB:200MiB:ext4::;\n
+ partlns = res.output.splitlines()[2:]
+
+ self.assertEqual(1, len(partlns))
+ self.assertEqual("1:0.00MiB:200MiB:200MiB:ext4::;", partlns[0])
+
+ def test_fixed_size_error(self):
+ """
+ Test creation of a simple image with partition size controlled through
+ --fixed-size flag. The size of partition is intentionally set to 1MiB
+ in order to trigger an error in wic.
+ """
+ wkspath, wksname = self._make_fixed_size_wks(1)
+
+ wic_cmd_vars = {
+ 'wks': wkspath,
+ 'image': self.OE_IMAGE,
+ }
+ self.assertEqual(1, runCmd("wic create %(wks)s -e %(image)s" \
+ % wic_cmd_vars, ignore_status=True).status)
+ os.remove(wkspath)
+ wicout = glob(self.resultdir + "%s-*direct" % wksname)
+ self.assertEqual(0, len(wicout))
--
2.5.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal
2016-11-23 7:46 ` [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal Maciej Borzecki
@ 2016-11-23 11:23 ` Ed Bartosh
2016-11-23 11:39 ` Maciej Borzęcki
0 siblings, 1 reply; 13+ messages in thread
From: Ed Bartosh @ 2016-11-23 11:23 UTC (permalink / raw)
To: Maciej Borzecki; +Cc: Paul Eggleton, Maciej Borzecki, openembedded-core
On Wed, Nov 23, 2016 at 08:46:31AM +0100, Maciej Borzecki wrote:
> Replace repeated core-image-minimal with Wic class field.
>
> Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
> ---
> meta/lib/oeqa/selftest/wic.py | 111 +++++++++++++++++++++++++++---------------
> 1 file changed, 73 insertions(+), 38 deletions(-)
>
> diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
> index 2db14445956bc5adcf1e755844bbdb69edcb468f..37ed2c6de5a7f22f982f921476fa392304995b2e 100644
> --- a/meta/lib/oeqa/selftest/wic.py
> +++ b/meta/lib/oeqa/selftest/wic.py
> @@ -57,6 +57,8 @@ class Wic(oeSelfTest):
> resultdir = "/var/tmp/wic/build/"
> image_is_ready = False
>
> + OE_IMAGE = "core-image-minimal"
> +
> def setUpLocal(self):
> """This code is executed before each test method."""
> arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
> @@ -75,7 +77,7 @@ class Wic(oeSelfTest):
> tools += ' syslinux syslinux-native'
> bitbake(tools)
>
> - bitbake('core-image-minimal')
> + bitbake(self.OE_IMAGE)
> Wic.image_is_ready = True
I'd agree with Ross here - it looks less readable.
How it would look if we decide to add test case for another image?
>
> rmtree(self.resultdir, ignore_errors=True)
> @@ -100,14 +102,14 @@ class Wic(oeSelfTest):
> def test_build_image_name(self):
> """Test wic create directdisk --image-name core-image-minimal"""
> self.assertEqual(0, runCmd("wic create directdisk "
> - "--image-name core-image-minimal").status)
> + "--image-name %s" % self.OE_IMAGE).status)
> self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
>
> @testcase(1212)
> @onlyForArch('i586', 'i686', 'x86_64')
> def test_build_artifacts(self):
> """Test wic create directdisk providing all artifacts."""
> - bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
> + bbvars = dict((var.lower(), get_bb_var(var, self.OE_IMAGE)) \
> for var in ('STAGING_DATADIR', 'DEPLOY_DIR_IMAGE',
> 'STAGING_DIR_NATIVE', 'IMAGE_ROOTFS'))
> status = runCmd("wic create directdisk "
> @@ -123,7 +125,7 @@ class Wic(oeSelfTest):
> def test_gpt_image(self):
> """Test creation of core-image-minimal with gpt table and UUID boot"""
> self.assertEqual(0, runCmd("wic create directdisk-gpt "
> - "--image-name core-image-minimal").status)
> + "--image-name %s" % self.OE_IMAGE).status)
> self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
>
> @testcase(1213)
> @@ -157,8 +159,8 @@ class Wic(oeSelfTest):
> def test_compress_gzip(self):
> """Test compressing an image with gzip"""
> self.assertEqual(0, runCmd("wic create directdisk "
> - "--image-name core-image-minimal "
> - "-c gzip").status)
> + "--image-name %s "
> + "-c gzip" % self.OE_IMAGE).status)
> self.assertEqual(1, len(glob(self.resultdir + \
> "directdisk-*.direct.gz")))
>
> @@ -167,8 +169,8 @@ class Wic(oeSelfTest):
> def test_compress_bzip2(self):
> """Test compressing an image with bzip2"""
> self.assertEqual(0, runCmd("wic create directdisk "
> - "--image-name core-image-minimal "
> - "-c bzip2").status)
> + "--image-name %s "
> + "-c bzip2" % self.OE_IMAGE).status)
> self.assertEqual(1, len(glob(self.resultdir + \
> "directdisk-*.direct.bz2")))
>
> @@ -177,8 +179,8 @@ class Wic(oeSelfTest):
> def test_compress_xz(self):
> """Test compressing an image with xz"""
> self.assertEqual(0, runCmd("wic create directdisk "
> - "--image-name core-image-minimal "
> - "-c xz").status)
> + "--image-name %s "
> + "-c xz" % self.OE_IMAGE).status)
> self.assertEqual(1, len(glob(self.resultdir + \
> "directdisk-*.direct.xz")))
>
> @@ -187,26 +189,31 @@ class Wic(oeSelfTest):
> def test_wrong_compressor(self):
> """Test how wic breaks if wrong compressor is provided"""
> self.assertEqual(2, runCmd("wic create directdisk "
> - "--image-name core-image-minimal "
> - "-c wrong", ignore_status=True).status)
> + "--image-name %s "
> + "-c wrong" % self.OE_IMAGE,
> + ignore_status=True).status)
>
> @testcase(1268)
> @onlyForArch('i586', 'i686', 'x86_64')
> def test_rootfs_indirect_recipes(self):
> """Test usage of rootfs plugin with rootfs recipes"""
> wks = "directdisk-multi-rootfs"
> - self.assertEqual(0, runCmd("wic create %s "
> - "--image-name core-image-minimal "
> - "--rootfs rootfs1=core-image-minimal "
> - "--rootfs rootfs2=core-image-minimal" \
> - % wks).status)
> + wic_cmd_vars = {
> + 'wks': wks,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s "
> + "--image-name %(image)s "
> + "--rootfs rootfs1=%(image)s "
> + "--rootfs rootfs2=%(image)s" \
> + % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s*.direct" % wks)))
>
> @testcase(1269)
> @onlyForArch('i586', 'i686', 'x86_64')
> def test_rootfs_artifacts(self):
> """Test usage of rootfs plugin with rootfs paths"""
> - bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
> + bbvars = dict((var.lower(), get_bb_var(var, self.OE_IMAGE)) \
> for var in ('STAGING_DATADIR', 'DEPLOY_DIR_IMAGE',
> 'STAGING_DIR_NATIVE', 'IMAGE_ROOTFS'))
> bbvars['wks'] = "directdisk-multi-rootfs"
> @@ -226,24 +233,23 @@ class Wic(oeSelfTest):
> def test_iso_image(self):
> """Test creation of hybrid iso image with legacy and EFI boot"""
> self.assertEqual(0, runCmd("wic create mkhybridiso "
> - "--image-name core-image-minimal").status)
> + "--image-name %s" % self.OE_IMAGE).status)
> self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.direct")))
> self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.iso")))
>
> @testcase(1347)
> def test_image_env(self):
> """Test generation of <image>.env files."""
> - image = 'core-image-minimal'
> - self.assertEqual(0, bitbake('%s -c do_rootfs_wicenv' % image).status)
> - stdir = get_bb_var('STAGING_DIR_TARGET', image)
> + self.assertEqual(0, bitbake('%s -c do_rootfs_wicenv' % self.OE_IMAGE).status)
> + stdir = get_bb_var('STAGING_DIR_TARGET', self.OE_IMAGE)
> imgdatadir = os.path.join(stdir, 'imgdata')
>
> - basename = get_bb_var('IMAGE_BASENAME', image)
> - self.assertEqual(basename, image)
> + basename = get_bb_var('IMAGE_BASENAME', self.OE_IMAGE)
> + self.assertEqual(basename, self.OE_IMAGE)
> path = os.path.join(imgdatadir, basename) + '.env'
> self.assertTrue(os.path.isfile(path))
>
> - wicvars = set(get_bb_var('WICVARS', image).split())
> + wicvars = set(get_bb_var('WICVARS', self.OE_IMAGE).split())
> # filter out optional variables
> wicvars = wicvars.difference(('HDDDIR', 'IMAGE_BOOT_FILES',
> 'INITRD', 'ISODIR'))
> @@ -275,8 +281,12 @@ class Wic(oeSelfTest):
> def test_qemux86_directdisk(self):
> """Test creation of qemux-86-directdisk image"""
> image = "qemux86-directdisk"
> - self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
> - % image).status)
> + wic_cmd_vars = {
> + 'wks': image,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
>
> @testcase(1349)
> @@ -284,8 +294,12 @@ class Wic(oeSelfTest):
> def test_mkgummidisk(self):
> """Test creation of mkgummidisk image"""
> image = "mkgummidisk"
> - self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
> - % image).status)
> + wic_cmd_vars = {
> + 'wks': image,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
>
> @testcase(1350)
> @@ -293,8 +307,12 @@ class Wic(oeSelfTest):
> def test_mkefidisk(self):
> """Test creation of mkefidisk image"""
> image = "mkefidisk"
> - self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
> - % image).status)
> + wic_cmd_vars = {
> + 'wks': image,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
>
> @testcase(1385)
> @@ -302,8 +320,12 @@ class Wic(oeSelfTest):
> def test_directdisk_bootloader_config(self):
> """Test creation of directdisk-bootloader-config image"""
> image = "directdisk-bootloader-config"
> - self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
> - % image).status)
> + wic_cmd_vars = {
> + 'wks': image,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
>
> @testcase(1422)
> @@ -322,7 +344,12 @@ class Wic(oeSelfTest):
> def test_bmap(self):
> """Test generation of .bmap file"""
> image = "directdisk"
> - status = runCmd("wic create %s -e core-image-minimal --bmap" % image).status
> + wic_cmd_vars = {
> + 'wks': image,
> + 'image': self.OE_IMAGE,
> + }
> + status = runCmd("wic create %(wks)s -e %(image)s --bmap" \
> + % wic_cmd_vars).status
> self.assertEqual(0, status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct.bmap" % image)))
> @@ -331,14 +358,22 @@ class Wic(oeSelfTest):
> def test_systemd_bootdisk(self):
> """Test creation of systemd-bootdisk image"""
> image = "systemd-bootdisk"
> - self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
> - % image).status)
> + wic_cmd_vars = {
> + 'wks': image,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
>
> def test_sdimage_bootpart(self):
> """Test creation of sdimage-bootpart image"""
> image = "sdimage-bootpart"
> self.write_config('IMAGE_BOOT_FILES = "bzImage"\n')
> - self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
> - % image).status)
> + wic_cmd_vars = {
> + 'wks': image,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
> --
> 2.5.0
>
--
--
Regards,
Ed
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 7/7] wic: selftest: add tests for --fixed-size partition flags
2016-11-23 7:46 ` [PATCH v4 7/7] wic: selftest: add tests for --fixed-size partition flags Maciej Borzecki
@ 2016-11-23 11:36 ` Ed Bartosh
2016-11-23 11:47 ` Maciej Borzęcki
0 siblings, 1 reply; 13+ messages in thread
From: Ed Bartosh @ 2016-11-23 11:36 UTC (permalink / raw)
To: Maciej Borzecki; +Cc: Paul Eggleton, Maciej Borzecki, openembedded-core
Hi Maciej,
Thank you for the patchset!
The changes and the tests look good to me.
I have little suggestions, but most of them just a matter of taste, so
feel free to ignore them.
On Wed, Nov 23, 2016 at 08:46:33AM +0100, Maciej Borzecki wrote:
> wic has a new flag for setting a fixed parition size --fixed-size. Add
> tests that verify if partition is indeed sized properly and that errors
> are signaled when there is not enough space to fit partition data.
>
> Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
> ---
> meta/lib/oeqa/selftest/wic.py | 69 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 69 insertions(+)
>
> diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
> index ad783043b92130a023fd70120becec479c6253a7..45f68df1e74828e11401f57dd732a88a50dd1f00 100644
> --- a/meta/lib/oeqa/selftest/wic.py
> +++ b/meta/lib/oeqa/selftest/wic.py
> @@ -29,6 +29,7 @@ import unittest
> from glob import glob
> from shutil import rmtree
> from functools import wraps
> +from tempfile import NamedTemporaryFile
>
> from oeqa.selftest.base import oeSelfTest
> from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
> @@ -61,6 +62,8 @@ class Wic(oeSelfTest):
>
> def setUpLocal(self):
> """This code is executed before each test method."""
> + self.native_sysroot = get_bb_var('STAGING_DIR_NATIVE', 'core-image-minimal')
> +
> arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
> is_x86 = arch in ['i586', 'i686', 'x86_64']
> if is_x86:
> @@ -378,3 +381,69 @@ class Wic(oeSelfTest):
> self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> % wic_cmd_vars).status)
> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
> +
> + def _make_fixed_size_wks(self, size):
> + """
> + Create a wks of an image with a single partition. Size of the partition is set
> + using --fixed-size flag. Returns a tuple: (path to wks file, wks image name)
> + """
> + with NamedTemporaryFile("w", suffix=".wks", delete=False) as tf:
> + wkspath = tf.name
> + tf.write("part " \
> + "--source rootfs --ondisk hda --align 4 --fixed-size %d "
> + "--fstype=ext4\n" % size)
> + wksname = os.path.splitext(os.path.basename(wkspath))[0]
> +
> + return (wkspath, wksname)
Would 'return wkspath, wksname' be a bit more readable?
> +
> + def test_fixed_size(self):
> + """
> + Test creation of a simple image with partition size controlled through
> + --fixed-size flag
> + """
> + wkspath, wksname = self._make_fixed_size_wks(200)
> +
> + wic_cmd_vars = {
> + 'wks': wkspath,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars).status)
> + os.remove(wkspath)
> + wicout = glob(self.resultdir + "%s-*direct" % wksname)
> + self.assertEqual(1, len(wicout))
> +
> + wicimg = wicout[0]
> +
> + # verify partition size with wic
> + res = runCmd("parted -m %s unit mib p 2>/dev/null" % wicimg,
> + ignore_status=True,
> + native_sysroot=self.native_sysroot)
> + self.assertEqual(0, res.status)
> +
> + # parse parted output which looks like this:
> + # BYT;\n
> + # /var/tmp/wic/build/tmpfwvjjkf_-201611101222-hda.direct:200MiB:file:512:512:msdos::;\n
> + # 1:0.00MiB:200MiB:200MiB:ext4::;\n
> + partlns = res.output.splitlines()[2:]
> +
> + self.assertEqual(1, len(partlns))
> + self.assertEqual("1:0.00MiB:200MiB:200MiB:ext4::;", partlns[0])
> +
> + def test_fixed_size_error(self):
> + """
> + Test creation of a simple image with partition size controlled through
> + --fixed-size flag. The size of partition is intentionally set to 1MiB
> + in order to trigger an error in wic.
> + """
> + wkspath, wksname = self._make_fixed_size_wks(1)
> +
> + wic_cmd_vars = {
> + 'wks': wkspath,
> + 'image': self.OE_IMAGE,
> + }
> + self.assertEqual(1, runCmd("wic create %(wks)s -e %(image)s" \
> + % wic_cmd_vars, ignore_status=True).status)
> + os.remove(wkspath)
> + wicout = glob(self.resultdir + "%s-*direct" % wksname)
> + self.assertEqual(0, len(wicout))
--
Regards,
Ed
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal
2016-11-23 11:23 ` Ed Bartosh
@ 2016-11-23 11:39 ` Maciej Borzęcki
2016-11-23 13:26 ` Ed Bartosh
0 siblings, 1 reply; 13+ messages in thread
From: Maciej Borzęcki @ 2016-11-23 11:39 UTC (permalink / raw)
To: Ed Bartosh
Cc: Paul Eggleton, Maciej Borzecki,
Patches and discussions about the oe-core layer
On Wed, Nov 23, 2016 at 12:23 PM, Ed Bartosh <ed.bartosh@linux.intel.com> wrote:
> On Wed, Nov 23, 2016 at 08:46:31AM +0100, Maciej Borzecki wrote:
>> Replace repeated core-image-minimal with Wic class field.
>>
>> Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
>> ---
>> meta/lib/oeqa/selftest/wic.py | 111 +++++++++++++++++++++++++++---------------
>> 1 file changed, 73 insertions(+), 38 deletions(-)
>>
>> diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
>> index 2db14445956bc5adcf1e755844bbdb69edcb468f..37ed2c6de5a7f22f982f921476fa392304995b2e 100644
>> --- a/meta/lib/oeqa/selftest/wic.py
>> +++ b/meta/lib/oeqa/selftest/wic.py
>> @@ -57,6 +57,8 @@ class Wic(oeSelfTest):
>> resultdir = "/var/tmp/wic/build/"
>> image_is_ready = False
>>
>> + OE_IMAGE = "core-image-minimal"
>> +
>> def setUpLocal(self):
>> """This code is executed before each test method."""
>> arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
>> @@ -75,7 +77,7 @@ class Wic(oeSelfTest):
>> tools += ' syslinux syslinux-native'
>> bitbake(tools)
>>
>> - bitbake('core-image-minimal')
>> + bitbake(self.OE_IMAGE)
>> Wic.image_is_ready = True
> I'd agree with Ross here - it looks less readable.
> How it would look if we decide to add test case for another image?
>
The usual way would be to:
class WicSatoImage(Wic):
OE_IMAGE = "core-image-sato"
But I think you make a fair point. The patch introduces unnecessary
complexity, and is not really needed right now. I'll drop this patch if next
version will be necessary.
Can you take a look at the rest of the patchset as well?
Thanks,
--
Maciej Borzecki
RnDity
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 7/7] wic: selftest: add tests for --fixed-size partition flags
2016-11-23 11:36 ` Ed Bartosh
@ 2016-11-23 11:47 ` Maciej Borzęcki
0 siblings, 0 replies; 13+ messages in thread
From: Maciej Borzęcki @ 2016-11-23 11:47 UTC (permalink / raw)
To: Ed Bartosh
Cc: Paul Eggleton, Maciej Borzecki,
Patches and discussions about the oe-core layer
On Wed, Nov 23, 2016 at 12:36 PM, Ed Bartosh <ed.bartosh@linux.intel.com> wrote:
> Hi Maciej,
>
> Thank you for the patchset!
> The changes and the tests look good to me.
> I have little suggestions, but most of them just a matter of taste, so
> feel free to ignore them.
>
> On Wed, Nov 23, 2016 at 08:46:33AM +0100, Maciej Borzecki wrote:
>> wic has a new flag for setting a fixed parition size --fixed-size. Add
>> tests that verify if partition is indeed sized properly and that errors
>> are signaled when there is not enough space to fit partition data.
>>
>> Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
>> ---
>> meta/lib/oeqa/selftest/wic.py | 69 +++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 69 insertions(+)
>>
>> diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
>> index ad783043b92130a023fd70120becec479c6253a7..45f68df1e74828e11401f57dd732a88a50dd1f00 100644
>> --- a/meta/lib/oeqa/selftest/wic.py
>> +++ b/meta/lib/oeqa/selftest/wic.py
>> @@ -29,6 +29,7 @@ import unittest
>> from glob import glob
>> from shutil import rmtree
>> from functools import wraps
>> +from tempfile import NamedTemporaryFile
>>
>> from oeqa.selftest.base import oeSelfTest
>> from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
>> @@ -61,6 +62,8 @@ class Wic(oeSelfTest):
>>
>> def setUpLocal(self):
>> """This code is executed before each test method."""
>> + self.native_sysroot = get_bb_var('STAGING_DIR_NATIVE', 'core-image-minimal')
>> +
>> arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
>> is_x86 = arch in ['i586', 'i686', 'x86_64']
>> if is_x86:
>> @@ -378,3 +381,69 @@ class Wic(oeSelfTest):
>> self.assertEqual(0, runCmd("wic create %(wks)s -e %(image)s" \
>> % wic_cmd_vars).status)
>> self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
>> +
>> + def _make_fixed_size_wks(self, size):
>> + """
>> + Create a wks of an image with a single partition. Size of the partition is set
>> + using --fixed-size flag. Returns a tuple: (path to wks file, wks image name)
>> + """
>> + with NamedTemporaryFile("w", suffix=".wks", delete=False) as tf:
>> + wkspath = tf.name
>> + tf.write("part " \
>> + "--source rootfs --ondisk hda --align 4 --fixed-size %d "
>> + "--fstype=ext4\n" % size)
>> + wksname = os.path.splitext(os.path.basename(wkspath))[0]
>> +
>> + return (wkspath, wksname)
> Would 'return wkspath, wksname' be a bit more readable?
Agreed.
--
Maciej Borzecki
RnDity
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal
2016-11-23 11:39 ` Maciej Borzęcki
@ 2016-11-23 13:26 ` Ed Bartosh
0 siblings, 0 replies; 13+ messages in thread
From: Ed Bartosh @ 2016-11-23 13:26 UTC (permalink / raw)
To: Maciej Borzęcki
Cc: Paul Eggleton, Maciej Borzecki,
Patches and discussions about the oe-core layer
On Wed, Nov 23, 2016 at 12:39:26PM +0100, Maciej Borzęcki wrote:
> On Wed, Nov 23, 2016 at 12:23 PM, Ed Bartosh <ed.bartosh@linux.intel.com> wrote:
> > On Wed, Nov 23, 2016 at 08:46:31AM +0100, Maciej Borzecki wrote:
> >> Replace repeated core-image-minimal with Wic class field.
> >>
> >> Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
> >> ---
> >> meta/lib/oeqa/selftest/wic.py | 111 +++++++++++++++++++++++++++---------------
> >> 1 file changed, 73 insertions(+), 38 deletions(-)
> >>
> >> diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
> >> index 2db14445956bc5adcf1e755844bbdb69edcb468f..37ed2c6de5a7f22f982f921476fa392304995b2e 100644
> >> --- a/meta/lib/oeqa/selftest/wic.py
> >> +++ b/meta/lib/oeqa/selftest/wic.py
> >> @@ -57,6 +57,8 @@ class Wic(oeSelfTest):
> >> resultdir = "/var/tmp/wic/build/"
> >> image_is_ready = False
> >>
> >> + OE_IMAGE = "core-image-minimal"
> >> +
> >> def setUpLocal(self):
> >> """This code is executed before each test method."""
> >> arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
> >> @@ -75,7 +77,7 @@ class Wic(oeSelfTest):
> >> tools += ' syslinux syslinux-native'
> >> bitbake(tools)
> >>
> >> - bitbake('core-image-minimal')
> >> + bitbake(self.OE_IMAGE)
> >> Wic.image_is_ready = True
> > I'd agree with Ross here - it looks less readable.
> > How it would look if we decide to add test case for another image?
> >
>
> The usual way would be to:
>
> class WicSatoImage(Wic):
> OE_IMAGE = "core-image-sato"
>
> But I think you make a fair point. The patch introduces unnecessary
> complexity, and is not really needed right now. I'll drop this patch if next
> version will be necessary.
>
> Can you take a look at the rest of the patchset as well?
>
I already did. The patchset looks good to me. Thank you for your work!
+1
--
Regards,
Ed
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2016-11-23 13:26 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-23 7:46 [PATCH v4 0/7] wic: bugfixes & --fixed-size support, tests, oe-selftest: minor fixes Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 1/7] oe-selftest: enforce en_US.UTF-8 locale Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 2/7] oeqa/utils/commands.py: allow use of binaries from native sysroot Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 3/7] wic: add --fixed-size wks option Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 4/7] wic: selftest: avoid COMPATIBLE_HOST issues Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 5/7] wic: selftest: do not repeat core-image-minimal Maciej Borzecki
2016-11-23 11:23 ` Ed Bartosh
2016-11-23 11:39 ` Maciej Borzęcki
2016-11-23 13:26 ` Ed Bartosh
2016-11-23 7:46 ` [PATCH v4 6/7] wic: selftest: do not assume bzImage kernel image Maciej Borzecki
2016-11-23 7:46 ` [PATCH v4 7/7] wic: selftest: add tests for --fixed-size partition flags Maciej Borzecki
2016-11-23 11:36 ` Ed Bartosh
2016-11-23 11:47 ` Maciej Borzęcki
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.