Fix Virtual A/B size checks

Test: build
Test: test_check_partition_sizes
Bug: 143111912
Change-Id: I4e056c25948e4169a0b5b098168141e27c31a0d4
This commit is contained in:
Yifan Hong 2019-10-28 14:52:16 -07:00
parent f5ad6e5443
commit 96527f375f
2 changed files with 48 additions and 0 deletions

View File

@ -76,11 +76,17 @@ class Expression(object):
class DeviceType(object):
NONE = 0
AB = 1
RVAB = 2 # retrofit Virtual-A/B
VAB = 3
@staticmethod
def Get(info_dict):
if info_dict.get("ab_update") != "true":
return DeviceType.NONE
if info_dict.get("virtual_ab_retrofit") == "true":
return DeviceType.RVAB
if info_dict.get("virtual_ab") == "true":
return DeviceType.VAB
return DeviceType.AB
@ -175,6 +181,14 @@ class DynamicPartitionSizeChecker(object):
if slot == DeviceType.AB:
return 2
# DAP + retrofit Virtual A/B: same as A/B
if slot == DeviceType.RVAB:
return 2
# DAP + Launch Virtual A/B: 1 *real* slot in super (2 virtual slots)
if slot == DeviceType.VAB:
return 1
# DAP + non-A/B: 1 slot in super
assert slot == DeviceType.NONE
return 1

View File

@ -92,3 +92,37 @@ class CheckPartitionSizesTest(test_utils.ReleaseToolsTestCase):
""".split("\n")))
with self.assertRaises(RuntimeError):
CheckPartitionSizes(self.info_dict)
def test_retrofit_vab(self):
self.info_dict.update(common.LoadDictionaryFromLines("""
virtual_ab=true
virtual_ab_retrofit=true
""".split("\n")))
CheckPartitionSizes(self.info_dict)
def test_retrofit_vab_too_big(self):
self.info_dict.update(common.LoadDictionaryFromLines("""
virtual_ab=true
virtual_ab_retrofit=true
system_image_size=100
""".split("\n")))
with self.assertRaises(RuntimeError):
CheckPartitionSizes(self.info_dict)
def test_vab(self):
self.info_dict.update(common.LoadDictionaryFromLines("""
virtual_ab=true
super_partition_size=100
super_super_device_size=100
""".split("\n")))
CheckPartitionSizes(self.info_dict)
def test_vab_too_big(self):
self.info_dict.update(common.LoadDictionaryFromLines("""
virtual_ab=true
super_partition_size=100
super_super_device_size=100
system_image_size=100
""".split("\n")))
with self.assertRaises(RuntimeError):
CheckPartitionSizes(self.info_dict)