From f1113e97aec23156667bae28081687756607c8c4 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Tue, 18 Jun 2019 12:10:14 -0700 Subject: [PATCH] releasetools: Update partitions in deterministic order. Previously it was using regular dict. Test: python -m unittest test_common.DynamicPartitionsDifferenceTest Change-Id: If108a4512aeaf9d3c8775c030cad6e44342b9d3d --- tools/releasetools/common.py | 8 +++++--- tools/releasetools/test_common.py | 11 ++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 80f80029f0..8dcbd0b1bd 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -2370,14 +2370,16 @@ class DynamicPartitionsDifference(object): def __init__(self, info_dict, block_diffs, progress_dict=None, source_info_dict=None): if progress_dict is None: - progress_dict = dict() + progress_dict = {} self._remove_all_before_apply = False if source_info_dict is None: self._remove_all_before_apply = True - source_info_dict = dict() + source_info_dict = {} + + block_diff_dict = collections.OrderedDict( + [(e.partition, e) for e in block_diffs]) - block_diff_dict = {e.partition:e for e in block_diffs} assert len(block_diff_dict) == len(block_diffs), \ "Duplicated BlockDifference object for {}".format( [partition for partition, count in diff --git a/tools/releasetools/test_common.py b/tools/releasetools/test_common.py index 9b76734fab..7ce361bd48 100644 --- a/tools/releasetools/test_common.py +++ b/tools/releasetools/test_common.py @@ -1151,7 +1151,7 @@ class FakeSparseImage(object): class DynamicPartitionsDifferenceTest(test_utils.ReleaseToolsTestCase): @staticmethod def get_op_list(output_path): - with zipfile.ZipFile(output_path, 'r') as output_zip: + with zipfile.ZipFile(output_path) as output_zip: with output_zip.open("dynamic_partitions_op_list") as op_list: return [line.strip() for line in op_list.readlines() if not line.startswith("#")] @@ -1176,12 +1176,12 @@ super_group_foo_partition_list=system vendor self.assertEqual(str(self.script).strip(), """ assert(update_dynamic_partitions(package_extract_file("dynamic_partitions_op_list"))); -patch(vendor); -verify(vendor); -unmap_partition("vendor"); patch(system); verify(system); unmap_partition("system"); +patch(vendor); +verify(vendor); +unmap_partition("vendor"); """.strip()) lines = self.get_op_list(self.output_path) @@ -1229,7 +1229,8 @@ super_group_qux_group_size={group_qux_size} grown = lines.index("resize_group group_baz 4294967296") added = lines.index("add_group group_qux 1073741824") - self.assertLess(max(removed, shrunk) < min(grown, added), + self.assertLess(max(removed, shrunk), + min(grown, added), "ops that remove / shrink partitions must precede ops that " "grow / add partitions")