Check whether PkgFinder::Find() failed in PkgUpgraderFactory::MakeList() 35/297735/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Wed, 23 Aug 2023 09:28:09 +0000 (18:28 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Wed, 23 Aug 2023 10:36:34 +0000 (19:36 +0900)
Change-Id: Id98de814d67f81807802663e0c7c577baba60011
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/pkg_upgrade/include/pkg_upgrader_factory.hh
src/pkg_upgrade/src/pkg_upgrader_factory.cc
src/pkg_upgrade/src/upgrader.cc
tests/unit_tests/pkg_upgrade/src/test_pkg_upgrader.cc

index 580a3fa..042e995 100644 (file)
@@ -30,6 +30,7 @@ namespace common_fota {
 class PkgUpgraderFactory {
  public:
   std::list<std::unique_ptr<PkgUpgrader>> MakeList(PkgFinder* finder);
+  bool IsFailed();
 
  private:
   std::list<std::unique_ptr<PkgUpgrader>> Merge(
@@ -37,6 +38,8 @@ class PkgUpgraderFactory {
       const std::list<PkgContext>& new_pkgs);
   const PkgContext* FindPkgById(const std::list<PkgContext>& pkgs,
       std::string id);
+
+  bool failed_ = false;
 };
 
 }  // common_fota
index 42f17cb..c02c694 100644 (file)
@@ -64,11 +64,16 @@ namespace common_fota {
 list<unique_ptr<PkgUpgrader>> PkgUpgraderFactory::MakeList(PkgFinder* finder) {
   if (finder->Find() != 0) {
     LOG(ERROR) << "PkgFinder::Find() failed";
+    failed_ = true;
     return {};
   }
   return Merge(finder->GetOldPkgs(), finder->GetNewPkgs());
 }
 
+bool PkgUpgraderFactory::IsFailed() {
+  return failed_;
+}
+
 list<unique_ptr<PkgUpgrader>> PkgUpgraderFactory::Merge(
     const list<PkgContext>& old_pkgs, const list<PkgContext>& new_pkgs) {
   list<unique_ptr<PkgUpgrader>> pkgs;
index 968e4d6..36c66e9 100644 (file)
@@ -131,6 +131,10 @@ bool Upgrader::Process(PkgFinder* finder) {
 
   PkgUpgraderFactory factory;
   auto list = factory.MakeList(finder);
+  if (factory.IsFailed()) {
+    RemoveBackupDbs();
+    return false;
+  }
 
   for (auto& pkg : list) {
     if (pkg->Upgrade()) {
index e9e3454..bb5c081 100644 (file)
@@ -616,7 +616,7 @@ TEST_F(PkgUpgraderTestForDBBackup, WithNotBackupFlag) {
 
   Upgrader upgrader;
   upgrader.SetDbPath(db_path);
-  EXPECT_TRUE(upgrader.Process(&finder_));
+  EXPECT_FALSE(upgrader.Process(&finder_));
 
   std::string new_user_version = GetUserVersion(parser_db_path);
   EXPECT_EQ(backup_user_version, new_user_version);
@@ -635,7 +635,7 @@ TEST_F(PkgUpgraderTestForDBBackup, WithBackupFlag) {
 
   Upgrader upgrader;
   upgrader.SetDbPath(db_path);
-  EXPECT_TRUE(upgrader.Process(&finder_));
+  EXPECT_FALSE(upgrader.Process(&finder_));
 
   std::string new_user_version = GetUserVersion(parser_db_path);
   EXPECT_EQ(origin_user_version, new_user_version);
@@ -650,7 +650,7 @@ TEST_F(PkgUpgraderTestForDBBackup, WithMalformedBackupDB) {
 
   Upgrader upgrader;
   upgrader.SetDbPath(db_path);
-  EXPECT_TRUE(upgrader.Process(&finder_));
+  EXPECT_FALSE(upgrader.Process(&finder_));
 
   std::string new_user_version = GetUserVersion(parser_db_path);
   EXPECT_EQ(origin_user_version, new_user_version);