From 095a28d577fa3652692e44d32985e5216681901c Mon Sep 17 00:00:00 2001 From: Ilho Kim Date: Thu, 22 Aug 2019 20:57:30 +0900 Subject: [PATCH] Add recover test for crash after unzip requires: - https://review.tizen.org/gerrit/#/c/platform/core/appfw/app-installers/+/212535/ Change-Id: I842ef743a815a4ff040c554e1795d3bc5d443b93 Signed-off-by: Ilho Kim --- src/unit_tests/smoke_test.cc | 21 +++++++++++++++++++++ src/unit_tests/smoke_test_helper.cc | 17 ++++++++++++++--- .../smoke/RecoveryMode_CrashAfterUnzip.tpk | Bin 0 -> 33202 bytes 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_CrashAfterUnzip.tpk diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 1129003..afb77de 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -720,6 +720,27 @@ TEST_F(SmokeTest, InstallExtended_Tpk) { ASSERT_TRUE(ValidateExtendedPackage(pkgid, {appid, exec}, params)); } +TEST_F(SmokeTest, RecoveryMode_CrashAfterUnzip) { + bf::path path = kSmokePackagesDirectory / "RecoveryMode_CrashAfterUnzip.tpk"; + RemoveAllRecoveryFiles("/tpk-recovery", params.test_user.uid); + ci::Subprocess backend_crash("/usr/bin/tpk-backend-ut/smoke-test-helper"); + std::string test_uid_str = std::to_string(params.test_user.uid); + backend_crash.Run("-i", path.string(), "-u", test_uid_str.c_str(), + "-step_name", "Unzip"); + ASSERT_NE(backend_crash.Wait(), 0); + + std::string pkgid = "smokeapp47"; + bf::path recovery_file = FindRecoveryFile("/tpk-recovery", + params.test_user.uid); + ASSERT_FALSE(recovery_file.empty()); + std::unique_ptr recovery_info = + GetRecoverFileInfo(recovery_file); + ASSERT_TRUE(recovery_info); + ASSERT_EQ(backend.Recover(recovery_file), ci::AppInstaller::Result::OK); + ASSERT_TRUE(CheckPackageNonExistance(pkgid, params)); + ASSERT_FALSE(bf::exists(recovery_info->unpacked_dir())); +} + } // namespace smoke_test int main(int argc, char** argv) { diff --git a/src/unit_tests/smoke_test_helper.cc b/src/unit_tests/smoke_test_helper.cc index d826c9d..22b6252 100644 --- a/src/unit_tests/smoke_test_helper.cc +++ b/src/unit_tests/smoke_test_helper.cc @@ -35,14 +35,17 @@ class StepCrash : public ci::Step { tpk::TpkInstaller::STEPS(); \ if (crash_at_ > -1) \ AddStepAtIndex(crash_at_); \ + else if (step_name_.size()) \ + AddStepAfter(step_name_); \ else \ AddStep(); \ } \ class CrashTpkInstaller : public tpk::TpkInstaller { public: - explicit CrashTpkInstaller(ci::PkgMgrPtr pkgmgr, int crash_at) - : tpk::TpkInstaller(pkgmgr), crash_at_(crash_at) { } + explicit CrashTpkInstaller(ci::PkgMgrPtr pkgmgr, int crash_at, + std::string step_name) : tpk::TpkInstaller(pkgmgr), crash_at_(crash_at), + step_name_(step_name) { } private: OVERRIDE_STEPS_BLOCK(InstallSteps) @@ -67,6 +70,7 @@ class CrashTpkInstaller : public tpk::TpkInstaller { OVERRIDE_STEPS_BLOCK(RecoverDBSteps) int crash_at_; + std::string step_name_; }; } // namespace @@ -76,12 +80,19 @@ class CrashTpkInstaller : public tpk::TpkInstaller { int main(const int argc, char* argv[]) { int index = -1; int backend_argc = argc; + std::string step_name; if (!strcmp(argv[argc-2], "-idx")) { index = atoi(argv[argc-1]); backend_argc = argc-2; LOG(DEBUG) << "Step crash after " << index << " step."; } + if (!strcmp(argv[argc-2], "-step_name")) { + step_name = argv[argc-1]; + backend_argc = argc-2; + LOG(DEBUG) << "Step crash after " << step_name << " step."; + } + ci::PkgmgrInstaller pkgmgr_installer; tpk::TpkAppQueryInterface interface; ci::PkgMgrPtr pkgmgr = ci::PkgMgrInterface::Create(backend_argc, argv, @@ -92,7 +103,7 @@ int main(const int argc, char* argv[]) { return -1; } - ::CrashTpkInstaller t(pkgmgr, index); + ::CrashTpkInstaller t(pkgmgr, index, step_name); if (t.Run() != ci::AppInstaller::Result::OK) { LOG(ERROR) << "CrashTpkInstaller run failure"; diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_CrashAfterUnzip.tpk b/src/unit_tests/test_samples/smoke/RecoveryMode_CrashAfterUnzip.tpk new file mode 100644 index 0000000000000000000000000000000000000000..d46291eda4554fa1ccad7728f658ac97f86b3b73 GIT binary patch literal 33202 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 C!$(m7 literal 0 HcmV?d00001 -- 2.7.4