wic: selftest: add tests for --fixed-size partition flags
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. (From OE-Core rev: 84c2184546779ece3eb23c5628e4c9d177568043) Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
17fe3eb453
commit
19090446da
|
@ -29,6 +29,7 @@ import unittest
|
|||
from glob import glob
|
||||
from shutil import rmtree
|
||||
from functools import wraps, lru_cache
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
from oeqa.selftest.base import oeSelfTest
|
||||
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu
|
||||
|
@ -64,10 +65,13 @@ class Wic(oeSelfTest):
|
|||
|
||||
resultdir = "/var/tmp/wic.oe-selftest/"
|
||||
image_is_ready = False
|
||||
native_sysroot = None
|
||||
wicenv_cache = {}
|
||||
|
||||
def setUpLocal(self):
|
||||
"""This code is executed before each test method."""
|
||||
if not self.native_sysroot:
|
||||
Wic.native_sysroot = get_bb_var('STAGING_DIR_NATIVE', 'wic-tools')
|
||||
|
||||
# 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
|
||||
|
@ -618,3 +622,62 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
|
|||
status, output = qemu.run_serial(cmd)
|
||||
self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))
|
||||
self.assertEqual(output, '3')
|
||||
|
||||
@staticmethod
|
||||
def _make_fixed_size_wks(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 tempf:
|
||||
wkspath = tempf.name
|
||||
tempf.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 = Wic._make_fixed_size_wks(200)
|
||||
|
||||
self.assertEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
|
||||
% (wkspath, self.resultdir)).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 = Wic._make_fixed_size_wks(1)
|
||||
|
||||
self.assertEqual(1, runCmd("wic create %s -e core-image-minimal -o %s" \
|
||||
% (wkspath, self.resultdir), ignore_status=True).status)
|
||||
os.remove(wkspath)
|
||||
wicout = glob(self.resultdir + "%s-*direct" % wksname)
|
||||
self.assertEqual(0, len(wicout))
|
||||
|
|
Loading…
Reference in New Issue