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 68658c0f4fe5420226df5849b642f98fb7f5d984)
diff --git a/tools/releasetools/sparse_img.py b/tools/releasetools/sparse_img.py
index 2ac97ac..51a1643 100644
--- a/tools/releasetools/sparse_img.py
+++ b/tools/releasetools/sparse_img.py
@@ -118,11 +118,16 @@
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()