Add partition name field to MergeSequenceGenerator
This field does not change functional logic of merge sequence
generation, it's only for logging/statistics.
Test: th
Bug: 289236484
Change-Id: I74e5f1d29ccd9ff01c448ea5c68aaf8bc81631a7
diff --git a/payload_generator/delta_diff_generator.cc b/payload_generator/delta_diff_generator.cc
index 46dfb0f..cfec1b9 100644
--- a/payload_generator/delta_diff_generator.cc
+++ b/payload_generator/delta_diff_generator.cc
@@ -110,7 +110,7 @@
return;
}
if (!old_part_.path.empty()) {
- auto generator = MergeSequenceGenerator::Create(*aops_);
+ auto generator = MergeSequenceGenerator::Create(*aops_, new_part_.name);
if (!generator || !generator->Generate(cow_merge_sequence_)) {
LOG(FATAL) << "Failed to generate merge sequence";
}
diff --git a/payload_generator/merge_sequence_generator.cc b/payload_generator/merge_sequence_generator.cc
index 1fda252..be8a50f 100644
--- a/payload_generator/merge_sequence_generator.cc
+++ b/payload_generator/merge_sequence_generator.cc
@@ -176,7 +176,8 @@
}
std::unique_ptr<MergeSequenceGenerator> MergeSequenceGenerator::Create(
- const std::vector<AnnotatedOperation>& aops) {
+ const std::vector<AnnotatedOperation>& aops,
+ std::string_view partition_name) {
std::vector<CowMergeOperation> sequence;
for (const auto& aop : aops) {
@@ -192,7 +193,7 @@
}
return std::unique_ptr<MergeSequenceGenerator>(
- new MergeSequenceGenerator(sequence));
+ new MergeSequenceGenerator(sequence, partition_name));
}
bool MergeSequenceGenerator::FindDependency(
@@ -345,7 +346,8 @@
}
LOG(INFO) << "Blocks in merge sequence " << blocks_in_sequence
- << ", blocks in raw " << blocks_in_raw;
+ << ", blocks in raw " << blocks_in_raw << ", partition "
+ << partition_name_;
if (!ValidateSequence(merge_sequence)) {
LOG(ERROR) << "Invalid Sequence";
return false;
diff --git a/payload_generator/merge_sequence_generator.h b/payload_generator/merge_sequence_generator.h
index 44a9980..1ee6861 100644
--- a/payload_generator/merge_sequence_generator.h
+++ b/payload_generator/merge_sequence_generator.h
@@ -56,9 +56,12 @@
// Creates an object from a list of OTA InstallOperations. Returns nullptr
// on failure.
static std::unique_ptr<MergeSequenceGenerator> Create(
- const std::vector<AnnotatedOperation>& aops);
- explicit MergeSequenceGenerator(std::vector<CowMergeOperation> transfers)
- : operations_(std::move(Sort(transfers))) {}
+ const std::vector<AnnotatedOperation>& aops,
+ std::string_view partition_name = "");
+ explicit MergeSequenceGenerator(std::vector<CowMergeOperation> transfers,
+ std::string_view partition_name)
+ : operations_(std::move(Sort(transfers))),
+ partition_name_(partition_name) {}
// Checks that no read after write happens in the given sequence.
static bool ValidateSequence(const std::vector<CowMergeOperation>& sequence);
@@ -75,6 +78,7 @@
merge_after) const;
// The list of CowMergeOperations to sort.
const std::vector<CowMergeOperation> operations_;
+ const std::string_view partition_name_;
};
void SplitSelfOverlapping(const Extent& src_extent,
diff --git a/payload_generator/merge_sequence_generator_unittest.cc b/payload_generator/merge_sequence_generator_unittest.cc
index 81bcfe7..e1e11c0 100644
--- a/payload_generator/merge_sequence_generator_unittest.cc
+++ b/payload_generator/merge_sequence_generator_unittest.cc
@@ -46,13 +46,13 @@
std::vector<CowMergeOperation> transfers,
std::map<CowMergeOperation, std::set<CowMergeOperation>>* result) {
std::sort(transfers.begin(), transfers.end());
- MergeSequenceGenerator generator(std::move(transfers));
+ MergeSequenceGenerator generator(std::move(transfers), "");
ASSERT_TRUE(generator.FindDependency(result));
}
void GenerateSequence(std::vector<CowMergeOperation> transfers) {
std::sort(transfers.begin(), transfers.end());
- MergeSequenceGenerator generator(std::move(transfers));
+ MergeSequenceGenerator generator(std::move(transfers), "");
std::vector<CowMergeOperation> sequence;
ASSERT_TRUE(generator.Generate(&sequence));
}
@@ -428,7 +428,7 @@
for (const auto& op : part.merge_operations()) {
ops.emplace_back(op);
}
- MergeSequenceGenerator generator(ops);
+ MergeSequenceGenerator generator(ops, part.partition_name());
std::vector<CowMergeOperation> sequence;
ASSERT_TRUE(generator.Generate(&sequence));
}