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));
 }