// found in the LICENSE file.
#include <common/pkgmgr_interface.h>
-#include <cerrno>
+#include <manifest_parser/utils/logging.h>
+#include "unit_tests/wgt_smoke_utils.h"
#include "wgt/utils/wgt_app_query_interface.h"
#include "wgt/wgt_installer.h"
namespace ci = common_installer;
-namespace {
-
-enum class CrashStepType {
- PROCESS,
- CLEAN
-};
-
-class StepCrash : public ci::Step {
- public:
- using Step::Step;
-
- explicit StepCrash(ci::InstallerContext* context, CrashStepType type) :
- ci::Step::Step(context), type_(type) {}
-
- ci::Step::Status process() override {
- if (type_ == CrashStepType::PROCESS)
- raise(SIGSEGV);
- return Status::OK;
- }
- ci::Step::Status clean() override {
- if (type_ == CrashStepType::CLEAN)
- raise(SIGSEGV);
- return Status::OK;
- }
- ci::Step::Status undo() override { return ci::Step::Status::OK; }
- ci::Step::Status precheck() override { return ci::Step::Status::OK; }
-
- STEP_NAME(Crash)
-
- private:
- CrashStepType type_;
-};
-
-#define OVERRIDE_STEPS_BLOCK(STEPS) \
- void STEPS() override { \
- wgt::WgtInstaller::STEPS(); \
- if (crash_at_ > -1) \
- AddStepAtIndex<StepCrash>(crash_at_, type_); \
- else if (step_name_.size()) \
- AddStepAfter<StepCrash>(step_name_, type_); \
- else \
- AddStep<StepCrash>(type_); \
- } \
-
-class CrashWgtInstaller : public wgt::WgtInstaller {
- public:
- explicit CrashWgtInstaller(ci::PkgMgrPtr pkgmgr, int crash_at,
- std::string step_name, CrashStepType type) :
- wgt::WgtInstaller(pkgmgr), crash_at_(crash_at),
- step_name_(step_name), type_(type) { }
-
- private:
- OVERRIDE_STEPS_BLOCK(InstallSteps)
- OVERRIDE_STEPS_BLOCK(UpdateSteps)
- OVERRIDE_STEPS_BLOCK(UninstallSteps)
- OVERRIDE_STEPS_BLOCK(ReinstallSteps)
- OVERRIDE_STEPS_BLOCK(DeltaSteps)
- OVERRIDE_STEPS_BLOCK(MoveSteps)
- OVERRIDE_STEPS_BLOCK(RecoverySteps)
- OVERRIDE_STEPS_BLOCK(MountInstallSteps)
- OVERRIDE_STEPS_BLOCK(MountUpdateSteps)
- OVERRIDE_STEPS_BLOCK(ManifestDirectInstallSteps)
- OVERRIDE_STEPS_BLOCK(ManifestDirectUpdateSteps)
- OVERRIDE_STEPS_BLOCK(ManifestPartialInstallSteps)
- OVERRIDE_STEPS_BLOCK(ManifestPartialUpdateSteps)
- OVERRIDE_STEPS_BLOCK(PartialUninstallSteps)
- OVERRIDE_STEPS_BLOCK(ReadonlyUpdateInstallSteps)
- OVERRIDE_STEPS_BLOCK(ReadonlyUpdateUninstallSteps)
- OVERRIDE_STEPS_BLOCK(DisablePkgSteps)
- OVERRIDE_STEPS_BLOCK(EnablePkgSteps)
- OVERRIDE_STEPS_BLOCK(MigrateExtImgSteps)
- OVERRIDE_STEPS_BLOCK(RecoverDBSteps)
-
- int crash_at_;
- std::string step_name_;
- CrashStepType type_;
-};
-
-} // namespace
-
// this main of test binay in done purely for recovery smoke test.
int main(int argc, char** argv) {
int index = -1;
int backend_argc = argc;
std::string step_name;
- CrashStepType type = CrashStepType::PROCESS;
+ smoke_test::CrashStepType type = smoke_test::CrashStepType::PROCESS;
if (!strcmp(argv[backend_argc - 2], "-idx")) {
index = atoi(argv[argc - 1]);
if (!strcmp(argv[backend_argc - 1], "-type_clean")) {
backend_argc--;
- type = CrashStepType::CLEAN;
+ type = smoke_test::CrashStepType::CLEAN;
LOG(DEBUG) << "step will be crashed in clean operation";
}
return EINVAL;
}
- ::CrashWgtInstaller installer(pkgmgr, index, step_name, type);
+ smoke_test::CrashWgtInstaller installer(pkgmgr, index, step_name, type);
return (installer.Run() == ci::AppInstaller::Result::OK) ? 0 : 1;
}
int fail_at_;
};
+#ifdef OVERRIDE_STEPS_BLOCK
+#undef OVERRIDE_STEPS_BLOCK
+#endif
+#define OVERRIDE_STEPS_BLOCK(STEPS) \
+ void STEPS() override { \
+ wgt::WgtInstaller::STEPS(); \
+ if (crash_at_ > -1) \
+ AddStepAtIndex<StepCrash>(crash_at_, type_); \
+ else if (step_name_.size()) \
+ AddStepAfter<StepCrash>(step_name_, type_); \
+ else \
+ AddStep<StepCrash>(type_); \
+ } \
+
+class CrashWgtInstaller : public wgt::WgtInstaller {
+ public:
+ explicit CrashWgtInstaller(common_installer::PkgMgrPtr pkgmgr, int crash_at,
+ std::string step_name, CrashStepType type) :
+ wgt::WgtInstaller(pkgmgr), crash_at_(crash_at),
+ step_name_(step_name), type_(type) { }
+
+ private:
+ OVERRIDE_STEPS_BLOCK(InstallSteps)
+ OVERRIDE_STEPS_BLOCK(UpdateSteps)
+ OVERRIDE_STEPS_BLOCK(UninstallSteps)
+ OVERRIDE_STEPS_BLOCK(ReinstallSteps)
+ OVERRIDE_STEPS_BLOCK(DeltaSteps)
+ OVERRIDE_STEPS_BLOCK(MoveSteps)
+ OVERRIDE_STEPS_BLOCK(RecoverySteps)
+ OVERRIDE_STEPS_BLOCK(MountInstallSteps)
+ OVERRIDE_STEPS_BLOCK(MountUpdateSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestDirectInstallSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestDirectUpdateSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestPartialInstallSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestPartialUpdateSteps)
+ OVERRIDE_STEPS_BLOCK(PartialUninstallSteps)
+ OVERRIDE_STEPS_BLOCK(ReadonlyUpdateInstallSteps)
+ OVERRIDE_STEPS_BLOCK(ReadonlyUpdateUninstallSteps)
+ OVERRIDE_STEPS_BLOCK(DisablePkgSteps)
+ OVERRIDE_STEPS_BLOCK(EnablePkgSteps)
+ OVERRIDE_STEPS_BLOCK(MigrateExtImgSteps)
+ OVERRIDE_STEPS_BLOCK(RecoverDBSteps)
+
+ int crash_at_;
+ std::string step_name_;
+ CrashStepType type_;
+};
+
} // namespace smoke_test