Add post-install verification for BBOTAs

Similar to the assertations in file-based OTA, we perform verification
for block-based OTAs (BBOTAs) after updating a partition, for both of
the incremental and full OTAs. It increases the update time (~20s on
Nexus 6), but will capture unnoticed errors right away.

Bug: 21500869
Change-Id: I0f8b27734caaa0f41f9c1b904d55af2112784a68
(cherry picked from commit 68658c0f4f)
This commit is contained in:
Tao Bao
2015-06-01 13:40:49 -07:00
parent ad2494bb79
commit 5fcaaeffc3
3 changed files with 35 additions and 9 deletions

View File

@@ -118,11 +118,16 @@ class SparseImage(object):
def ReadRangeSet(self, ranges):
return [d for d in self._GetRangeData(ranges)]
def TotalSha1(self):
"""Return the SHA-1 hash of all data in the 'care' regions but not in
clobbered_blocks of this image."""
def TotalSha1(self, include_clobbered_blocks=False):
"""Return the SHA-1 hash of all data in the 'care' regions.
If include_clobbered_blocks is True, it returns the hash including the
clobbered_blocks."""
ranges = self.care_map
if not include_clobbered_blocks:
ranges.subtract(self.clobbered_blocks)
h = sha1()
for d in self._GetRangeData(self.care_map.subtract(self.clobbered_blocks)):
for d in self._GetRangeData(ranges):
h.update(d)
return h.hexdigest()