| # |
| # Copyright (C) 2019 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| import common |
| import test_utils |
| from check_partition_sizes import CheckPartitionSizes |
| |
| class CheckPartitionSizesTest(test_utils.ReleaseToolsTestCase): |
| def setUp(self): |
| self.info_dict = common.LoadDictionaryFromLines(""" |
| use_dynamic_partitions=true |
| ab_update=true |
| super_block_devices=super |
| dynamic_partition_list=system vendor product |
| super_partition_groups=group |
| super_group_partition_list=system vendor product |
| super_partition_size=202 |
| super_super_device_size=202 |
| super_group_group_size=100 |
| system_image_size=50 |
| vendor_image_size=20 |
| product_image_size=20 |
| system_other_image_size=10 |
| """.split("\n")) |
| |
| def test_ab(self): |
| CheckPartitionSizes(self.info_dict) |
| |
| def test_non_ab(self): |
| self.info_dict.update(common.LoadDictionaryFromLines(""" |
| ab_update=false |
| super_partition_size=101 |
| super_super_device_size=101 |
| """.split("\n"))) |
| CheckPartitionSizes(self.info_dict) |
| |
| def test_non_dap(self): |
| self.info_dict.update(common.LoadDictionaryFromLines(""" |
| use_dynamic_partitions=false |
| """.split("\n"))) |
| with self.assertRaises(RuntimeError): |
| CheckPartitionSizes(self.info_dict) |
| |
| def test_retrofit_dap(self): |
| self.info_dict.update(common.LoadDictionaryFromLines(""" |
| dynamic_partition_retrofit=true |
| super_block_devices=system vendor |
| super_system_device_size=75 |
| super_vendor_device_size=25 |
| super_partition_size=100 |
| """.split("\n"))) |
| CheckPartitionSizes(self.info_dict) |
| |
| def test_ab_partition_too_big(self): |
| self.info_dict.update(common.LoadDictionaryFromLines(""" |
| system_image_size=100 |
| """.split("\n"))) |
| with self.assertRaises(RuntimeError): |
| CheckPartitionSizes(self.info_dict) |
| |
| def test_ab_group_too_big(self): |
| self.info_dict.update(common.LoadDictionaryFromLines(""" |
| super_group_group_size=110 |
| """.split("\n"))) |
| with self.assertRaises(RuntimeError): |
| CheckPartitionSizes(self.info_dict) |
| |
| def test_no_image(self): |
| del self.info_dict["system_image_size"] |
| with self.assertRaises(KeyError): |
| CheckPartitionSizes(self.info_dict) |
| |
| def test_block_devices_not_match(self): |
| self.info_dict.update(common.LoadDictionaryFromLines(""" |
| dynamic_partition_retrofit=true |
| super_block_devices=system vendor |
| super_system_device_size=80 |
| super_vendor_device_size=25 |
| super_partition_size=100 |
| """.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=101 |
| super_super_device_size=101 |
| """.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) |
| |
| def test_vab_too_big_with_system_other(self): |
| self.info_dict.update(common.LoadDictionaryFromLines(""" |
| virtual_ab=true |
| system_other_image_size=20 |
| super_partition_size=101 |
| super_super_device_size=101 |
| """.split("\n"))) |
| with self.assertRaises(RuntimeError): |
| CheckPartitionSizes(self.info_dict) |