diff options
Diffstat (limited to 'meta')
-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) | ||