Allow generating OTA package from non-sparse images.
Test: build OTA package in cuttlefish Bug: 120041578 Change-Id: I246c38e08376c837b7f126aa19cb8c1d73ed1e26
This commit is contained in:
@@ -14,9 +14,13 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
import os
|
||||
from hashlib import sha1
|
||||
|
||||
import common
|
||||
from blockimgdiff import (
|
||||
BlockImageDiff, DataImage, EmptyImage, HeapItem, ImgdiffStats, Transfer)
|
||||
BlockImageDiff, DataImage, EmptyImage, FileImage, HeapItem, ImgdiffStats,
|
||||
Transfer)
|
||||
from rangelib import RangeSet
|
||||
from test_utils import ReleaseToolsTestCase
|
||||
|
||||
@@ -264,7 +268,42 @@ class ImgdiffStatsTest(ReleaseToolsTestCase):
|
||||
|
||||
|
||||
class DataImageTest(ReleaseToolsTestCase):
|
||||
def test_read_range_set(self):
|
||||
data = "file" + ('\0' * 4092)
|
||||
image = DataImage(data)
|
||||
self.assertEqual(data, "".join(image.ReadRangeSet(image.care_map)))
|
||||
def test_read_range_set(self):
|
||||
data = "file" + ('\0' * 4092)
|
||||
image = DataImage(data)
|
||||
self.assertEqual(data, "".join(image.ReadRangeSet(image.care_map)))
|
||||
|
||||
|
||||
class FileImageTest(ReleaseToolsTestCase):
|
||||
def setUp(self):
|
||||
self.file_path = common.MakeTempFile()
|
||||
self.data = os.urandom(4096 * 4)
|
||||
with open(self.file_path, 'w') as f:
|
||||
f.write(self.data)
|
||||
self.file = FileImage(self.file_path)
|
||||
|
||||
def test_totalsha1(self):
|
||||
self.assertEqual(sha1(self.data).hexdigest(), self.file.TotalSha1())
|
||||
|
||||
def test_ranges(self):
|
||||
blocksize = self.file.blocksize
|
||||
for s in range(4):
|
||||
for e in range(s, 4):
|
||||
expected_data = self.data[s * blocksize : e * blocksize]
|
||||
|
||||
rs = RangeSet([s, e])
|
||||
data = "".join(self.file.ReadRangeSet(rs))
|
||||
self.assertEqual(expected_data, data)
|
||||
|
||||
sha1sum = self.file.RangeSha1(rs)
|
||||
self.assertEqual(sha1(expected_data).hexdigest(), sha1sum)
|
||||
|
||||
tmpfile = common.MakeTempFile()
|
||||
with open(tmpfile, 'w') as f:
|
||||
self.file.WriteRangeDataToFd(rs, f)
|
||||
with open(tmpfile, 'r') as f:
|
||||
self.assertEqual(expected_data, f.read())
|
||||
|
||||
def test_read_all(self):
|
||||
data = "".join(self.file.ReadRangeSet(self.file.care_map))
|
||||
self.assertEqual(self.data, data)
|
||||
|
Reference in New Issue
Block a user