STEP_NAME(Crash)
};
+#define OVERRIDE_STEPS_BLOCK(STEPS) \
+ void STEPS() override { \
+ tpk::TpkInstaller::STEPS(); \
+ if (crash_at_ > -1) \
+ AddStepAtIndex<StepCrash>(crash_at_); \
+ else \
+ AddStep<StepCrash>(); \
+ } \
+
+class CrashTpkInstaller : public tpk::TpkInstaller {
+ public:
+ explicit CrashTpkInstaller(ci::PkgMgrPtr pkgmgr, int crash_at)
+ : tpk::TpkInstaller(pkgmgr), crash_at_(crash_at) { }
+
+ 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_;
+};
+
} // namespace
// This version of backend will crash in the end
return -1;
}
- tpk::TpkInstaller t(pkgmgr);
- if (index != -1) {
- t.AddStepAtIndex<StepCrash>(index);
- } else {
- t.AddStep<StepCrash>();
- }
+ ::CrashTpkInstaller t(pkgmgr, index);
if (t.Run() != ci::AppInstaller::Result::OK) {
- LOG(ERROR) << "TpkInstaller run failure";
+ LOG(ERROR) << "CrashTpkInstaller run failure";
return -1;
}
return 0;