From 5877e248d5487a03e3f37ef34faca8c8247d5091 Mon Sep 17 00:00:00 2001 From: Ilho Kim Date: Thu, 13 Oct 2022 19:19:25 +0900 Subject: [PATCH] Merge SmokeTestHelperRunner into BackendInterface Change-Id: I1c3984c0d891d876980dc77f949939f57d42c40c Signed-off-by: Ilho Kim --- test/smoke_tests/common/smoke_utils.cc | 117 +++++++++++++++++---------------- test/smoke_tests/common/smoke_utils.h | 78 +++++++++++----------- 2 files changed, 100 insertions(+), 95 deletions(-) diff --git a/test/smoke_tests/common/smoke_utils.cc b/test/smoke_tests/common/smoke_utils.cc index 21dac7f..b0004d1 100644 --- a/test/smoke_tests/common/smoke_utils.cc +++ b/test/smoke_tests/common/smoke_utils.cc @@ -1001,7 +1001,7 @@ static boost::filesystem::path GetTrashPath( return path.string() + ".trash"; } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::RunSubprocess( +BackendInterface::SubProcessResult BackendInterface::RunSubprocess( std::vector args) const { args.push_back("-remove_plugin_steps"); ci::Subprocess backend = CreateSubprocess(); @@ -1009,14 +1009,14 @@ SmokeTestHelperRunner::Result SmokeTestHelperRunner::RunSubprocess( int status = backend.Wait(); if (WIFEXITED(status)) { if (WEXITSTATUS(status) == 0) - return SmokeTestHelperRunner::Result::SUCCESS; + return BackendInterface::SubProcessResult::SUCCESS; else - return SmokeTestHelperRunner::Result::FAIL; + return BackendInterface::SubProcessResult::FAIL; } - return SmokeTestHelperRunner::Result::UnKnown; + return BackendInterface::SubProcessResult::UnKnown; } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::RunSubprocessAndKill( +BackendInterface::SubProcessResult BackendInterface::RunSubprocessAndKill( std::vector args, useconds_t delay) const { args.push_back("-remove_plugin_steps"); ci::Subprocess backend = CreateSubprocess(); @@ -1026,134 +1026,141 @@ SmokeTestHelperRunner::Result SmokeTestHelperRunner::RunSubprocessAndKill( int status = backend.Wait(); if (WIFEXITED(status)) { if (WEXITSTATUS(status) == 0) - return SmokeTestHelperRunner::Result::SUCCESS; + return BackendInterface::SubProcessResult::SUCCESS; else - return SmokeTestHelperRunner::Result::FAIL; + return BackendInterface::SubProcessResult::FAIL; } else { if (WTERMSIG(status) == SIGKILL) - return SmokeTestHelperRunner::Result::KILLED; + return BackendInterface::SubProcessResult::KILLED; else - return SmokeTestHelperRunner::Result::UnKnown; + return BackendInterface::SubProcessResult::UnKnown; } } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::InstallWithSubprocess( - const bf::path& path, uid_t uid) const { +BackendInterface::SubProcessResult BackendInterface::InstallWithSubprocess( + const bf::path& path) const { std::vector args = - { "-i", path.string(), "-u", std::to_string(uid) }; + { "-i", path.string(), "-u", uid_str_ }; return RunSubprocess(args); } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::MountInstallWithSubprocess( - const bf::path& path, uid_t uid) const { +BackendInterface::SubProcessResult BackendInterface::MountInstallWithSubprocess( + const bf::path& path) const { std::vector args = - { "-w", path.string(), "-u", std::to_string(uid) }; + { "-w", path.string(), "-u", uid_str_ }; return RunSubprocess(args); } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::RecoveryWithSubprocess( - const bf::path& path, uid_t uid) const { +BackendInterface::SubProcessResult BackendInterface::RecoverWithSubprocess( + const bf::path& path) const { std::vector args = - { "-b", path.string(), "-u", std::to_string(uid) }; + { "-b", path.string(), "-u", uid_str_ }; + return RunSubprocess(args); +} + +BackendInterface::SubProcessResult BackendInterface::UninstallWithSubprocess( + const std::string& pkgid) const { + std::vector args = { "-d", pkgid, "-u", uid_str_ }; return RunSubprocess(args); } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::UninstallWithSubprocess( - const std::string& pkgid, uid_t uid) const { - std::vector args = { "-d", pkgid, "-u", std::to_string(uid) }; +BackendInterface::SubProcessResult +BackendInterface::InstallPreloadWithSubprocess( + const boost::filesystem::path& path) const { + std::vector args = { "", "-i", path.string(), "--preload" }; return RunSubprocess(args); } -SmokeTestHelperRunner::Result - SmokeTestHelperRunner::InstallWithSubprocessAndKill( - const bf::path& path, uid_t uid, useconds_t delay) const { +BackendInterface::SubProcessResult + BackendInterface::InstallWithSubprocessAndKill( + const bf::path& path, useconds_t delay) const { std::vector args = - { "-i", path.string(), "-u", std::to_string(uid) }; + { "-i", path.string(), "-u", uid_str_ }; return RunSubprocessAndKill(args, delay); } -SmokeTestHelperRunner::Result - SmokeTestHelperRunner::MountInstallWithSubprocessAndKill( - const bf::path& path, uid_t uid, useconds_t delay) const { +BackendInterface::SubProcessResult + BackendInterface::MountInstallWithSubprocessAndKill( + const bf::path& path, useconds_t delay) const { std::vector args = - { "-w", path.string(), "-u", std::to_string(uid) }; + { "-w", path.string(), "-u", uid_str_ }; return RunSubprocessAndKill(args, delay); } -SmokeTestHelperRunner::Result - SmokeTestHelperRunner::UninstallWithSubprocessAndKill( - const std::string& pkgid, uid_t uid, useconds_t delay) const { +BackendInterface::SubProcessResult + BackendInterface::UninstallWithSubprocessAndKill( + const std::string& pkgid, useconds_t delay) const { std::vector args = - { "-d", pkgid, "-u", std::to_string(uid) }; + { "-d", pkgid, "-u", uid_str_ }; return RunSubprocessAndKill(args, delay); } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::InstallPkgsWithSubprocess( - const std::vector& paths, uid_t uid) const { +BackendInterface::SubProcessResult BackendInterface::InstallPkgsWithSubprocess( + const std::vector& paths) const { std::vector args; args.emplace_back("-i"); for (const bf::path& p : paths) args.emplace_back(p.string()); args.emplace_back("-u"); - args.emplace_back(std::to_string(uid)); + args.emplace_back(uid_str_); return RunSubprocess(args); } -SmokeTestHelperRunner::Result - SmokeTestHelperRunner::MountInstallPkgsWithSubprocess( - const std::vector& paths, uid_t uid) const { +BackendInterface::SubProcessResult + BackendInterface::MountInstallPkgsWithSubprocess( + const std::vector& paths) const { std::vector args; args.emplace_back("-w"); for (const bf::path& p : paths) args.emplace_back(p.string()); args.emplace_back("-u"); - args.emplace_back(std::to_string(uid)); + args.emplace_back(uid_str_); return RunSubprocess(args); } -SmokeTestHelperRunner::Result SmokeTestHelperRunner::RecoveryPkgsWithSubprocess( - const std::vector& paths, uid_t uid) const { +BackendInterface::SubProcessResult BackendInterface::RecoverPkgsWithSubprocess( + const std::vector& paths) const { std::vector args; args.emplace_back("-b"); for (const bf::path& p : paths) args.emplace_back(p.string()); args.emplace_back("-u"); - args.emplace_back(std::to_string(uid)); + args.emplace_back(uid_str_); return RunSubprocess(args); } -SmokeTestHelperRunner::Result - SmokeTestHelperRunner::UninstallPkgsWithSubprocess( - const std::vector& pkgids, uid_t uid) const { +BackendInterface::SubProcessResult + BackendInterface::UninstallPkgsWithSubprocess( + const std::vector& pkgids) const { std::vector args; args.emplace_back("-d"); args.insert(args.end(), pkgids.begin(), pkgids.end()); args.emplace_back("-u"); - args.emplace_back(std::to_string(uid)); + args.emplace_back(uid_str_); return RunSubprocess(args); } -SmokeTestHelperRunner::Result - SmokeTestHelperRunner::InstallPkgsWithSubprocessAndKill( - const std::vector& paths, uid_t uid, useconds_t delay) const { +BackendInterface::SubProcessResult + BackendInterface::InstallPkgsWithSubprocessAndKill( + const std::vector& paths, useconds_t delay) const { std::vector args; args.emplace_back("-i"); for (const bf::path& p : paths) args.emplace_back(p.string()); args.emplace_back("-u"); - args.emplace_back(std::to_string(uid)); + args.emplace_back(uid_str_); return RunSubprocessAndKill(args, delay); } -SmokeTestHelperRunner::Result - SmokeTestHelperRunner::MountInstallPkgsWithSubprocessAndKill( - const std::vector& paths, uid_t uid, useconds_t delay) const { +BackendInterface::SubProcessResult + BackendInterface::MountInstallPkgsWithSubprocessAndKill( + const std::vector& paths, useconds_t delay) const { std::vector args; args.emplace_back("-w"); for (const bf::path& p : paths) args.emplace_back(p.string()); args.emplace_back("-u"); - args.emplace_back(std::to_string(uid)); + args.emplace_back(uid_str_); return RunSubprocessAndKill(args, delay); } diff --git a/test/smoke_tests/common/smoke_utils.h b/test/smoke_tests/common/smoke_utils.h index 0674247..94f7569 100644 --- a/test/smoke_tests/common/smoke_utils.h +++ b/test/smoke_tests/common/smoke_utils.h @@ -236,6 +236,13 @@ class SmokeInstallerFactory { class BackendInterface { public: + enum class SubProcessResult { + SUCCESS, + FAIL, + KILLED, + UnKnown + }; + using CommandResult = common_installer::AppInstaller::Result; using SmokeInstallerFactoryPtr = std::unique_ptr; explicit BackendInterface(std::string uid, @@ -282,6 +289,31 @@ class BackendInterface { CommandResult Recover(const boost::filesystem::path& recovery_file) const; + SubProcessResult InstallWithSubprocess(const bf::path& path) const; + SubProcessResult MountInstallWithSubprocess(const bf::path& path) const; + SubProcessResult RecoverWithSubprocess(const bf::path& path) const; + SubProcessResult UninstallWithSubprocess(const std::string& pkgid) const; + SubProcessResult InstallPreloadWithSubprocess( + const boost::filesystem::path& path) const; + SubProcessResult InstallWithSubprocessAndKill( + const bf::path& path, useconds_t delay) const; + SubProcessResult MountInstallWithSubprocessAndKill( + const bf::path& path, useconds_t delay) const; + SubProcessResult UninstallWithSubprocessAndKill( + const std::string& pkgid, useconds_t delay) const; + SubProcessResult InstallPkgsWithSubprocess( + const std::vector& paths) const; + SubProcessResult MountInstallPkgsWithSubprocess( + const std::vector& paths) const; + SubProcessResult RecoverPkgsWithSubprocess( + const std::vector& paths) const; + SubProcessResult UninstallPkgsWithSubprocess( + const std::vector& pkgids) const; + SubProcessResult InstallPkgsWithSubprocessAndKill( + const std::vector& paths, useconds_t delay) const; + SubProcessResult MountInstallPkgsWithSubprocessAndKill( + const std::vector& paths, useconds_t delay) const; + protected: CommandResult CallBackend(int argc, const char* argv[]) const; CommandResult CallBackendWithRunner(int argc, const char* argv[]) const; @@ -292,7 +324,7 @@ class BackendInterface { std::string uid_str_; RequestResult mode_; - private: + protected: CommandResult RunInstallerWithPkgrmgr( common_installer::PkgMgrPtr pkgmgr) const; virtual AppQueryInterfacePtr CreateQueryInterface() const = 0; @@ -302,46 +334,12 @@ class BackendInterface { common_installer::PkgMgrPtr pkgmgr, int fail_at = -1) const = 0; CommandResult RunInstallersWithPkgmgr( common_installer::PkgMgrPtr pkgmgr) const; -}; - -class SmokeTestHelperRunner { - public: - enum class Result { - SUCCESS, - FAIL, - KILLED, - UnKnown - }; - - virtual ~SmokeTestHelperRunner() = default; - Result InstallWithSubprocess(const bf::path& path, uid_t uid) const; - Result MountInstallWithSubprocess(const bf::path& path, uid_t uid) const; - Result RecoveryWithSubprocess(const bf::path& path, uid_t uid) const; - Result UninstallWithSubprocess(const std::string& pkgid, uid_t uid) const; - Result InstallWithSubprocessAndKill( - const bf::path& path, uid_t uid, useconds_t delay) const; - Result MountInstallWithSubprocessAndKill( - const bf::path& path, uid_t uid, useconds_t delay) const; - Result UninstallWithSubprocessAndKill( - const std::string& pkgid, uid_t uid, useconds_t delay) const; - Result InstallPkgsWithSubprocess( - const std::vector& paths, uid_t uid) const; - Result MountInstallPkgsWithSubprocess( - const std::vector& paths, uid_t uid) const; - Result RecoveryPkgsWithSubprocess( - const std::vector& paths, uid_t uid) const; - Result UninstallPkgsWithSubprocess( - const std::vector& pkgids, uid_t uid) const; - Result InstallPkgsWithSubprocessAndKill( - const std::vector& paths, uid_t uid, useconds_t delay) const; - Result MountInstallPkgsWithSubprocessAndKill( - const std::vector& paths, uid_t uid, useconds_t delay) const; - - private: - Result RunSubprocess(std::vector args) const; - Result RunSubprocessAndKill(std::vector args, + SubProcessResult RunSubprocess(std::vector args) const; + SubProcessResult RunSubprocessAndKill(std::vector args, useconds_t delay) const; - virtual common_installer::Subprocess CreateSubprocess() const = 0; + virtual common_installer::Subprocess CreateSubprocess() const { + return common_installer::Subprocess(""); + } }; bool CheckAvailableExternalPath(); -- 2.7.4