// Use of this source code is governed by an apache-2.0 license that can be
// found in the LICENSE file.
-#ifndef SMOKE_TESTS_COMMON_SMOKE_UTILS_H_
-#define SMOKE_TESTS_COMMON_SMOKE_UTILS_H_
+#ifndef TEST_SMOKE_TESTS_COMMON_SMOKE_UTILS_H_
+#define TEST_SMOKE_TESTS_COMMON_SMOKE_UTILS_H_
#include <pkgmgr-info.h>
#include <signal.h>
class SmokeInstallerFactory {
public:
using AppInstallerPtr = std::unique_ptr<common_installer::AppInstaller>;
+ virtual ~SmokeInstallerFactory() = default;
virtual AppInstallerPtr CreateInstaller(
int idx, common_installer::PkgMgrPtr pkgmgr) const = 0;
virtual AppInstallerPtr CreateFailExpectedInstaller(
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,
std::string uid,
RequestResult mode = RequestResult::NORMAL)
: factory_(std::move(factory)), uid_str_(uid), mode_(mode) {}
- virtual ~BackendInterface() {}
+ virtual ~BackendInterface() = default;
void TestRollbackAfterEachStep(int argc, const char* argv[],
std::function<bool()> validator) const;
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;
using AppQueryInterfacePtr =
- std::unique_ptr<common_installer::AppQueryInterface>;
+ std::shared_ptr<common_installer::AppQueryInterface>;
using AppInstallerPtr = std::unique_ptr<common_installer::AppInstaller>;
SmokeInstallerFactoryPtr factory_;
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
- };
-
- 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();
bool BackupPath(const boost::filesystem::path& path);
+void CreateDatabase();
+
bool RestorePathCopyAndRemove(const boost::filesystem::path& path);
bool RestorePath(const boost::filesystem::path& path);
common_installer::Step::Status process() override {
if (type_ == CrashStepType::PROCESS)
- raise(SIGSEGV);
+ raise(SIGKILL);
return Status::OK;
}
common_installer::Step::Status clean() override {
if (type_ == CrashStepType::CLEAN)
- raise(SIGSEGV);
+ raise(SIGKILL);
return Status::OK;
}
common_installer::Step::Status undo() override {
} // namespace smoke_test
-#endif // SMOKE_TESTS_COMMON_SMOKE_UTILS_H_
+#endif // TEST_SMOKE_TESTS_COMMON_SMOKE_UTILS_H_