From: Sangyoon Jang Date: Fri, 7 Apr 2023 06:07:37 +0000 (+0900) Subject: Supprot RPK package X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fsandbox%2Flstelmach%2Ftest;p=platform%2Fcore%2Fappfw%2Fpkgmgr-tool.git Supprot RPK package Change-Id: I6443f1ddb731de472e8f5c12c031f8a995d675e7 Signed-off-by: Sangyoon Jang --- diff --git a/src/pkg_upgrade/include/common_type.hh b/src/pkg_upgrade/include/common_type.hh index a003d03..9ebbc89 100644 --- a/src/pkg_upgrade/include/common_type.hh +++ b/src/pkg_upgrade/include/common_type.hh @@ -25,6 +25,7 @@ namespace common_fota { enum class PkgType { TPK, WGT, + RPK, UNKNOWN }; @@ -64,6 +65,8 @@ class PkgContext { PkgType GetType() const { if (type_ == "wgt" ) return PkgType::WGT; + else if (type_ == "rpk") + return PkgType::RPK; return PkgType::TPK; } PkgLocation GetLocation() const { diff --git a/src/pkg_upgrade/src/backend_invoker.cc b/src/pkg_upgrade/src/backend_invoker.cc index f3a3e14..ee6b250 100644 --- a/src/pkg_upgrade/src/backend_invoker.cc +++ b/src/pkg_upgrade/src/backend_invoker.cc @@ -30,6 +30,8 @@ namespace { constexpr char kTpkBackendCmdStr[] = "/usr/bin/tpk-backend"; constexpr char kWgtBackendCmdStr[] = "/usr/bin/wgt-backend"; +// TODO: consider using unified-backend only +constexpr char kUnifiedBackendCmdStr[] = "/usr/bin/unified-backend"; constexpr char kManifestDirectInstallOptStr[] = "-y"; constexpr char kUninstallOptStr[] = "-d"; @@ -80,6 +82,8 @@ std::list BackendInvoker::GetParameter() { void BackendInvoker::SetBackend(PkgType type) { if (type == PkgType::WGT) parameters_.push_back(kWgtBackendCmdStr); + else if (type == PkgType::RPK) + parameters_.push_back(kUnifiedBackendCmdStr); else parameters_.push_back(kTpkBackendCmdStr); } diff --git a/src/pkg_upgrade/src/pkg_finder.cc b/src/pkg_upgrade/src/pkg_finder.cc index d359941..e539317 100644 --- a/src/pkg_upgrade/src/pkg_finder.cc +++ b/src/pkg_upgrade/src/pkg_finder.cc @@ -53,6 +53,7 @@ constexpr char kTokenVersionStr[] = "version="; constexpr char kTokenRemoveStr[] = "removable="; constexpr char kDefaultVersionStr[] = "0.0.1"; constexpr char kDefaultPkgTypeStr[] = "tpk"; +constexpr char kRpkTypeStr[] = "rpk"; } // namespace @@ -203,8 +204,13 @@ int PkgFinder::FindPreloadPkgidFromXml( version = kDefaultVersionStr; string type = FindInfoFromXml(buf, "type"); - if (type.empty()) - type = kDefaultPkgTypeStr; + if (type.empty()) { + string res_type = FindInfoFromXml(buf, "res-type"); + if (!res_type.empty()) + type = kRpkTypeStr; + else + type = kDefaultPkgTypeStr; + } new_pkgs_.emplace_back(pkgid, version, type, true); } diff --git a/tests/unit_tests/pkg_upgrade/src/test_backend_invoker.cc b/tests/unit_tests/pkg_upgrade/src/test_backend_invoker.cc index 3cd2d3f..99ae281 100644 --- a/tests/unit_tests/pkg_upgrade/src/test_backend_invoker.cc +++ b/tests/unit_tests/pkg_upgrade/src/test_backend_invoker.cc @@ -80,6 +80,22 @@ TEST_F(BackendInvokerTest, WGTPreloadRWUpdateRemovable) { expected_argument)); } +TEST_F(BackendInvokerTest, RPKPreloadRWUpdateRemovable) { + BackendInvoker update_backend("rpk_pkgid", PkgType::RPK, + PkgLocation::RW, PkgOperation::UPDATE, true); + + std::list expected_argument { "/usr/bin/unified-backend", "-y", + "rpk_pkgid", "--preload-rw", "--skip-check-reference"}; + + EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(), + expected_argument)); + + BackendInvoker install_backend("rpk_pkgid", PkgType::RPK, + PkgLocation::RW, PkgOperation::INSTALL, true); + EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(), + expected_argument)); +} + TEST_F(BackendInvokerTest, TPKPreloadROUpdate) { BackendInvoker update_backend("tpk_pkgid", PkgType::TPK, PkgLocation::RO, PkgOperation::UPDATE, false); @@ -111,6 +127,21 @@ TEST_F(BackendInvokerTest, WGTPreloadROUpdate) { expected_argument)); } +TEST_F(BackendInvokerTest, RPKPreloadROUpdate) { + BackendInvoker update_backend("rpk_pkgid", PkgType::RPK, + PkgLocation::RO, PkgOperation::UPDATE, false); + + std::list expected_argument { "/usr/bin/unified-backend", "-y", + "rpk_pkgid", "--preload", "--partial-rw", "--skip-check-reference"}; + EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(), + expected_argument)); + + BackendInvoker install_backend("rpk_pkgid", PkgType::RPK, + PkgLocation::RO, PkgOperation::INSTALL, false); + EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(), + expected_argument)); +} + TEST_F(BackendInvokerTest, TPKPreloadROUninstall) { BackendInvoker backend("tpk_pkgid", PkgType::TPK, PkgLocation::RO, PkgOperation::UNINSTALL, false); @@ -131,6 +162,16 @@ TEST_F(BackendInvokerTest, WGTPreloadROUninstall) { expected_argument)); } +TEST_F(BackendInvokerTest, RPKPreloadROUninstall) { + BackendInvoker backend("rpk_pkgid", PkgType::RPK, + PkgLocation::RO, PkgOperation::UNINSTALL, false); + + std::list expected_argument { "/usr/bin/unified-backend", "-d", + "rpk_pkgid", "--preload", "--force-remove", "--partial-rw"}; + EXPECT_TRUE(CompareArgumentList(backend.GetParameter(), + expected_argument)); +} + TEST_F(BackendInvokerTest, TPKRWUninstall) { BackendInvoker backend("tpk_pkgid", PkgType::TPK, PkgLocation::RW, PkgOperation::UNINSTALL, false); @@ -151,6 +192,16 @@ TEST_F(BackendInvokerTest, WGTRWUninstall) { expected_argument)); } +TEST_F(BackendInvokerTest, RPKRWUninstall) { + BackendInvoker backend("rpk_pkgid", PkgType::RPK, + PkgLocation::RW, PkgOperation::UNINSTALL, false); + + std::list expected_argument { "/usr/bin/unified-backend", "-d", + "rpk_pkgid", "--force-remove", "--partial-rw"}; + EXPECT_TRUE(CompareArgumentList(backend.GetParameter(), + expected_argument)); +} + TEST_F(BackendInvokerTest, TPKPreloadROUninstallKeepRWData) { BackendInvoker backend("tpk_pkgid", PkgType::TPK, PkgLocation::RO, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);