Merge SmokeTestHelperRunner into BackendInterface
[platform/core/appfw/app-installers.git] / test / smoke_tests / common / smoke_utils.h
index 59efc2e..94f7569 100644 (file)
@@ -2,8 +2,8 @@
 // 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>
@@ -227,6 +227,7 @@ bool TouchFile(const boost::filesystem::path& path);
 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(
@@ -235,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<SmokeInstallerFactory>;
   explicit BackendInterface(std::string uid,
@@ -244,7 +252,7 @@ class BackendInterface {
       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;
@@ -281,17 +289,42 @@ 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<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;
@@ -301,45 +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
-  };
-
-  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();
@@ -350,6 +350,8 @@ bool BackupPathCopyAndRemove(const boost::filesystem::path& path);
 
 bool BackupPath(const boost::filesystem::path& path);
 
+void CreateDatabase();
+
 bool RestorePathCopyAndRemove(const boost::filesystem::path& path);
 
 bool RestorePath(const boost::filesystem::path& path);
@@ -379,12 +381,12 @@ class StepCrash : public common_installer::Step {
 
   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 {
@@ -402,4 +404,4 @@ class StepCrash : public common_installer::Step {
 
 }  // namespace smoke_test
 
-#endif  // SMOKE_TESTS_COMMON_SMOKE_UTILS_H_
+#endif  // TEST_SMOKE_TESTS_COMMON_SMOKE_UTILS_H_