diff options
| -rw-r--r-- | meta/lib/oeqa/selftest/cases/wic.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index aaefd4fde5..aa73ba4f7e 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py | |||
| @@ -938,3 +938,56 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r | |||
| 938 | wksname = os.path.splitext(os.path.basename(wks.name))[0] | 938 | wksname = os.path.splitext(os.path.basename(wks.name))[0] |
| 939 | out = glob(self.resultdir + "%s-*direct" % wksname) | 939 | out = glob(self.resultdir + "%s-*direct" % wksname) |
| 940 | self.assertEqual(1, len(out)) | 940 | self.assertEqual(1, len(out)) |
| 941 | |||
| 942 | def test_expand_mbr_image(self): | ||
| 943 | """Test wic write --expand command for mbr image""" | ||
| 944 | # build an image | ||
| 945 | config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "directdisk.wks"\n' | ||
| 946 | self.append_config(config) | ||
| 947 | self.assertEqual(0, bitbake('core-image-minimal').status) | ||
| 948 | |||
| 949 | # get path to the image | ||
| 950 | bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'MACHINE']) | ||
| 951 | deploy_dir = bb_vars['DEPLOY_DIR_IMAGE'] | ||
| 952 | machine = bb_vars['MACHINE'] | ||
| 953 | image_path = os.path.join(deploy_dir, 'core-image-minimal-%s.wic' % machine) | ||
| 954 | |||
| 955 | self.remove_config(config) | ||
| 956 | |||
| 957 | try: | ||
| 958 | # expand image to 1G | ||
| 959 | new_image_path = None | ||
| 960 | with NamedTemporaryFile(mode='wb', suffix='.wic.exp', | ||
| 961 | dir=deploy_dir, delete=False) as sparse: | ||
| 962 | sparse.truncate(1024 ** 3) | ||
| 963 | new_image_path = sparse.name | ||
| 964 | |||
| 965 | sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools') | ||
| 966 | cmd = "wic write -n %s --expand 1:0 %s %s" % (sysroot, image_path, new_image_path) | ||
| 967 | self.assertEqual(0, runCmd(cmd).status) | ||
| 968 | |||
| 969 | # check if partitions are expanded | ||
| 970 | orig = runCmd("wic ls %s -n %s" % (image_path, sysroot)) | ||
| 971 | exp = runCmd("wic ls %s -n %s" % (new_image_path, sysroot)) | ||
| 972 | orig_sizes = [int(line.split()[3]) for line in orig.output.split('\n')[1:]] | ||
| 973 | exp_sizes = [int(line.split()[3]) for line in exp.output.split('\n')[1:]] | ||
| 974 | self.assertEqual(orig_sizes[0], exp_sizes[0]) # first partition is not resized | ||
| 975 | self.assertTrue(orig_sizes[1] < exp_sizes[1]) | ||
| 976 | |||
| 977 | # Check if all free space is partitioned | ||
| 978 | result = runCmd("%s/usr/sbin/sfdisk -F %s" % (sysroot, new_image_path)) | ||
| 979 | self.assertTrue("0 B, 0 bytes, 0 sectors" in result.output) | ||
| 980 | |||
| 981 | os.rename(image_path, image_path + '.bak') | ||
| 982 | os.rename(new_image_path, image_path) | ||
| 983 | |||
| 984 | # Check if it boots in qemu | ||
| 985 | with runqemu('core-image-minimal', ssh=False) as qemu: | ||
| 986 | cmd = "ls /etc/" | ||
| 987 | status, output = qemu.run_serial('true') | ||
| 988 | self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) | ||
| 989 | finally: | ||
| 990 | if os.path.exists(new_image_path): | ||
| 991 | os.unlink(new_image_path) | ||
| 992 | if os.path.exists(image_path + '.bak'): | ||
| 993 | os.rename(image_path + '.bak', image_path) | ||
