Merge "Fix Virtual A/B size checks"

This commit is contained in:
Treehugger Robot 2019-11-07 21:17:45 +00:00 committed by Gerrit Code Review
commit 654fdb5edd
2 changed files with 48 additions and 0 deletions

View File

@ -76,11 +76,17 @@ class Expression(object):
class DeviceType(object): class DeviceType(object):
NONE = 0 NONE = 0
AB = 1 AB = 1
RVAB = 2 # retrofit Virtual-A/B
VAB = 3
@staticmethod @staticmethod
def Get(info_dict): def Get(info_dict):
if info_dict.get("ab_update") != "true": if info_dict.get("ab_update") != "true":
return DeviceType.NONE 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 return DeviceType.AB
@ -175,6 +181,14 @@ class DynamicPartitionSizeChecker(object):
if slot == DeviceType.AB: if slot == DeviceType.AB:
return 2 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 # DAP + non-A/B: 1 slot in super
assert slot == DeviceType.NONE assert slot == DeviceType.NONE
return 1 return 1

View File

@ -92,3 +92,37 @@ class CheckPartitionSizesTest(test_utils.ReleaseToolsTestCase):
""".split("\n"))) """.split("\n")))
with self.assertRaises(RuntimeError): with self.assertRaises(RuntimeError):
CheckPartitionSizes(self.info_dict) 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)