diff options
author | Ed Bartosh <ed.bartosh@linux.intel.com> | 2017-04-06 14:58:49 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-04-12 15:09:57 +0100 |
commit | 8838dd2dbd7ff2a3c93e0bdc6d8b181ee8079c3f (patch) | |
tree | a5917cf90829e91b3e4b6b69fd644cec71e7b153 /meta | |
parent | 7792688ac24931cdf70b61839b55120c50e8e10d (diff) | |
download | poky-8838dd2dbd7ff2a3c93e0bdc6d8b181ee8079c3f.tar.gz |
oe-selftest: test wic sparse_copy API
Added new parameter 'api' to sparse_copy function to specify
underlying filemap API to use. By default sparse_copy will
try both available APIs.
Added test case for sparse_copy to wic test suite.
(From OE-Core rev: 88701cef6ba399e82f96ed1b0eef9a44ed8c1687)
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/lib/oeqa/selftest/wic.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py index 8030c35117..c1ff512f81 100644 --- a/meta/lib/oeqa/selftest/wic.py +++ b/meta/lib/oeqa/selftest/wic.py | |||
@@ -24,6 +24,7 @@ | |||
24 | """Test cases for wic.""" | 24 | """Test cases for wic.""" |
25 | 25 | ||
26 | import os | 26 | import os |
27 | import sys | ||
27 | import unittest | 28 | import unittest |
28 | 29 | ||
29 | from glob import glob | 30 | from glob import glob |
@@ -761,3 +762,31 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r | |||
761 | self.assertEqual(0, runCmd(cmd).status) | 762 | self.assertEqual(0, runCmd(cmd).status) |
762 | self.remove_config(config) | 763 | self.remove_config(config) |
763 | self.assertEqual(1, len(glob(self.resultdir + "sdimage-bootpart-*direct"))) | 764 | self.assertEqual(1, len(glob(self.resultdir + "sdimage-bootpart-*direct"))) |
765 | |||
766 | def test_sparse_copy(self): | ||
767 | """Test sparse_copy with FIEMAP and SEEK_HOLE filemap APIs""" | ||
768 | libpath = os.path.join(get_bb_var('COREBASE'), 'scripts', 'lib', 'wic') | ||
769 | sys.path.insert(0, libpath) | ||
770 | from filemap import FilemapFiemap, FilemapSeek, sparse_copy, ErrorNotSupp | ||
771 | with NamedTemporaryFile("w", suffix=".wic-sparse") as sparse: | ||
772 | src_name = sparse.name | ||
773 | src_size = 1024 * 10 | ||
774 | sparse.truncate(src_size) | ||
775 | # write one byte to the file | ||
776 | with open(src_name, 'r+b') as sfile: | ||
777 | sfile.seek(1024 * 4) | ||
778 | sfile.write(b'\x00') | ||
779 | dest = sparse.name + '.out' | ||
780 | # copy src file to dest using different filemap APIs | ||
781 | for api in (FilemapFiemap, FilemapSeek, None): | ||
782 | if os.path.exists(dest): | ||
783 | os.unlink(dest) | ||
784 | try: | ||
785 | sparse_copy(sparse.name, dest, api=api) | ||
786 | except ErrorNotSupp: | ||
787 | continue # skip unsupported API | ||
788 | dest_stat = os.stat(dest) | ||
789 | self.assertEqual(dest_stat.st_size, src_size) | ||
790 | # 8 blocks is 4K (physical sector size) | ||
791 | self.assertEqual(dest_stat.st_blocks, 8) | ||
792 | os.unlink(dest) | ||