return path.string() + ".trash";
}
-SmokeTestHelperRunner::Result SmokeTestHelperRunner::RunSubprocess(
+BackendInterface::SubProcessResult BackendInterface::RunSubprocess(
std::vector<std::string> args) const {
args.push_back("-remove_plugin_steps");
ci::Subprocess backend = CreateSubprocess();
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<std::string> args, useconds_t delay) const {
args.push_back("-remove_plugin_steps");
ci::Subprocess backend = CreateSubprocess();
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<std::string> 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<std::string> 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<std::string> 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<std::string> args = { "-d", pkgid, "-u", uid_str_ };
return RunSubprocess(args);
}
-SmokeTestHelperRunner::Result SmokeTestHelperRunner::UninstallWithSubprocess(
- const std::string& pkgid, uid_t uid) const {
- std::vector<std::string> args = { "-d", pkgid, "-u", std::to_string(uid) };
+BackendInterface::SubProcessResult
+BackendInterface::InstallPreloadWithSubprocess(
+ const boost::filesystem::path& path) const {
+ std::vector<std::string> 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<std::string> 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<std::string> 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<std::string> args =
- { "-d", pkgid, "-u", std::to_string(uid) };
+ { "-d", pkgid, "-u", uid_str_ };
return RunSubprocessAndKill(args, delay);
}
-SmokeTestHelperRunner::Result SmokeTestHelperRunner::InstallPkgsWithSubprocess(
- const std::vector<bf::path>& paths, uid_t uid) const {
+BackendInterface::SubProcessResult BackendInterface::InstallPkgsWithSubprocess(
+ const std::vector<bf::path>& paths) const {
std::vector<std::string> 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<bf::path>& paths, uid_t uid) const {
+BackendInterface::SubProcessResult
+ BackendInterface::MountInstallPkgsWithSubprocess(
+ const std::vector<bf::path>& paths) const {
std::vector<std::string> 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<bf::path>& paths, uid_t uid) const {
+BackendInterface::SubProcessResult BackendInterface::RecoverPkgsWithSubprocess(
+ const std::vector<bf::path>& paths) const {
std::vector<std::string> 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<std::string>& pkgids, uid_t uid) const {
+BackendInterface::SubProcessResult
+ BackendInterface::UninstallPkgsWithSubprocess(
+ const std::vector<std::string>& pkgids) const {
std::vector<std::string> 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<bf::path>& paths, uid_t uid, useconds_t delay) const {
+BackendInterface::SubProcessResult
+ BackendInterface::InstallPkgsWithSubprocessAndKill(
+ const std::vector<bf::path>& paths, useconds_t delay) const {
std::vector<std::string> 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<bf::path>& paths, uid_t uid, useconds_t delay) const {
+BackendInterface::SubProcessResult
+ BackendInterface::MountInstallPkgsWithSubprocessAndKill(
+ const std::vector<bf::path>& paths, useconds_t delay) const {
std::vector<std::string> 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);
}
class BackendInterface {
public:
+ enum class SubProcessResult {
+ SUCCESS,
+ FAIL,
+ KILLED,
+ UnKnown
+ };
+
using CommandResult = common_installer::AppInstaller::Result;
using SmokeInstallerFactoryPtr = std::unique_ptr<SmokeInstallerFactory>;
explicit BackendInterface(std::string uid,
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<bf::path>& paths) const;
+ SubProcessResult MountInstallPkgsWithSubprocess(
+ const std::vector<bf::path>& paths) const;
+ SubProcessResult RecoverPkgsWithSubprocess(
+ const std::vector<bf::path>& paths) const;
+ SubProcessResult UninstallPkgsWithSubprocess(
+ const std::vector<std::string>& pkgids) const;
+ SubProcessResult InstallPkgsWithSubprocessAndKill(
+ const std::vector<bf::path>& paths, useconds_t delay) const;
+ SubProcessResult MountInstallPkgsWithSubprocessAndKill(
+ const std::vector<bf::path>& paths, useconds_t delay) const;
+
protected:
CommandResult CallBackend(int argc, const char* argv[]) const;
CommandResult CallBackendWithRunner(int argc, const char* argv[]) const;
std::string uid_str_;
RequestResult mode_;
- private:
+ protected:
CommandResult RunInstallerWithPkgrmgr(
common_installer::PkgMgrPtr pkgmgr) const;
virtual AppQueryInterfacePtr CreateQueryInterface() const = 0;
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<bf::path>& paths, uid_t uid) const;
- Result MountInstallPkgsWithSubprocess(
- const std::vector<bf::path>& paths, uid_t uid) const;
- Result RecoveryPkgsWithSubprocess(
- const std::vector<bf::path>& paths, uid_t uid) const;
- Result UninstallPkgsWithSubprocess(
- const std::vector<std::string>& pkgids, uid_t uid) const;
- Result InstallPkgsWithSubprocessAndKill(
- const std::vector<bf::path>& paths, uid_t uid, useconds_t delay) const;
- Result MountInstallPkgsWithSubprocessAndKill(
- const std::vector<bf::path>& paths, uid_t uid, useconds_t delay) const;
-
- private:
- Result RunSubprocess(std::vector<std::string> args) const;
- Result RunSubprocessAndKill(std::vector<std::string> args,
+ SubProcessResult RunSubprocess(std::vector<std::string> args) const;
+ SubProcessResult RunSubprocessAndKill(std::vector<std::string> args,
useconds_t delay) const;
- virtual common_installer::Subprocess CreateSubprocess() const = 0;
+ virtual common_installer::Subprocess CreateSubprocess() const {
+ return common_installer::Subprocess("");
+ }
};
bool CheckAvailableExternalPath();