Add extensive smoke test 35/315335/1
authorilho kim <ilho159.kim@samsung.com>
Wed, 15 Nov 2023 01:40:49 +0000 (10:40 +0900)
committerIlho Kim <ilho159.kim@samsung.com>
Sun, 1 Dec 2024 23:35:51 +0000 (08:35 +0900)
SmokeTest.UninstallationMode_Rollback

Change-Id: Id6dba3894e643010a9beb6ed8f8f28830d316967
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
test/smoke_tests/extensive_smoke_test.cc
test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback.tpk [new file with mode: 0644]
test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback_2.tpk [new file with mode: 0644]
test/smoke_tests/test_samples/smoke/UninstallationMode_Rollback.tpk [new file with mode: 0644]

index 182681488654ce8b92459b18a690bea64af17c1f..f3599be68378de0304cfcc62bf10d1ddacbf3a4f 100644 (file)
@@ -787,6 +787,82 @@ TEST_F(SmokeTest, RecoveryMode_RemoveResControl) {
   }, params.pkg_type);
 }
 
+TEST_F(SmokeTest, UninstallationMode_Rollback) {
+  fs::path path = kSmokePackagesDirectory / "UninstallationMode_Rollback.tpk";
+  std::string pkgid = "smoketpk52";
+  std::string appid = "smoketpk52.UninstallationMode_Rollback";
+  std::string exec = "smoketpk52";
+  std::string test_uid_str = std::to_string(params.test_user.uid);
+  ASSERT_EQ(BackendInterface::SubProcessResult::SUCCESS,
+      backend.InstallWithSubprocess(path));
+  FileInfoCollector expected_file_status(pkgid, params);
+  ASSERT_TRUE(expected_file_status.Init());
+  const char* argv[] = {"", "-d", pkgid.c_str(), "-u", test_uid_str.c_str()};
+  backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool  {
+    fs::path recovery_file = FindRecoveryFile("/tpk-recovery",
+        params.test_user.uid);
+    if (!recovery_file.empty()) {
+      std::cout << "Find recovery file : " << recovery_file << std::endl;
+      std::unique_ptr<ci::recovery::RecoveryFile> recovery_info =
+          GetRecoverFileInfo(recovery_file);
+      EXTENDED_ASSERT_EQ(backend.RecoverWithSubprocess(recovery_file),
+          BackendInterface::SubProcessResult::SUCCESS);
+      EXTENDED_ASSERT_EQ(BackendInterface::SubProcessResult::SUCCESS,
+          backend.InstallWithSubprocess(path));
+    }
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(expected_file_status.IsEqual(new_file_status));
+    EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid, exec}, params));
+    return true;
+  });
+}
+
+TEST_F(PreloadSmokeTest, ReadonlyUpdateUninstallMode_Rollback) {
+  fs::path path_old = kSmokePackagesDirectory /
+      "ReadonlyUpdateUninstallMode_Rollback.tpk";
+  fs::path path_new = kSmokePackagesDirectory /
+      "ReadonlyUpdateUninstallMode_Rollback_2.tpk";
+  std::string pkgid = "smoketpk53";
+  std::string appid = "smoketpk53.ReadonlyUpdateUninstallMode_Rollback";
+  std::string exec = "smoketpk53";
+  ASSERT_EQ(backend.InstallPreloadWithSubprocess(path_old),
+      BackendInterface::SubProcessResult::SUCCESS);
+  FileInfoCollector expected_file_status_old(pkgid, params);
+  ASSERT_TRUE(expected_file_status_old.Init());
+  ASSERT_EQ(backend.InstallWithSubprocess(path_new),
+      BackendInterface::SubProcessResult::SUCCESS);
+  params.is_readonly = false;
+  FileInfoCollector expected_file_status_new(pkgid, params);
+  ASSERT_TRUE(expected_file_status_new.Init());
+
+  std::string test_uid_str = std::to_string(params.test_user.uid);
+  const char* argv[] = {"", "-d", pkgid.c_str(), "-u", test_uid_str.c_str()};
+  backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool  {
+    fs::path recovery_file = FindRecoveryFile("/tpk-recovery",
+        params.test_user.uid);
+    if (!recovery_file.empty()) {
+      std::cout << "Find recovery file : " << recovery_file << std::endl;
+      std::unique_ptr<ci::recovery::RecoveryFile> recovery_info =
+          GetRecoverFileInfo(recovery_file);
+      EXTENDED_ASSERT_EQ(backend.RecoverWithSubprocess(recovery_file),
+          BackendInterface::SubProcessResult::SUCCESS);
+      params.is_readonly = true;
+      FileInfoCollector new_file_status(pkgid, params);
+      EXTENDED_ASSERT_TRUE(new_file_status.Init());
+      EXTENDED_ASSERT_TRUE(expected_file_status_old.IsEqual(new_file_status));
+      EXTENDED_ASSERT_EQ(backend.InstallWithSubprocess(path_new),
+          BackendInterface::SubProcessResult::SUCCESS);
+      params.is_readonly = false;
+    }
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(expected_file_status_new.IsEqual(new_file_status));
+    EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid, exec}, params));
+    return true;
+  });
+}
+
 }  // namespace smoke_test
 
 const char kHelpMessage[] = R"(Allowed options:
diff --git a/test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback.tpk b/test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback.tpk
new file mode 100644 (file)
index 0000000..4bc5504
Binary files /dev/null and b/test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback.tpk differ
diff --git a/test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback_2.tpk b/test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback_2.tpk
new file mode 100644 (file)
index 0000000..4a8cb88
Binary files /dev/null and b/test/smoke_tests/test_samples/smoke/ReadonlyUpdateUninstallMode_Rollback_2.tpk differ
diff --git a/test/smoke_tests/test_samples/smoke/UninstallationMode_Rollback.tpk b/test/smoke_tests/test_samples/smoke/UninstallationMode_Rollback.tpk
new file mode 100644 (file)
index 0000000..8e1cec8
Binary files /dev/null and b/test/smoke_tests/test_samples/smoke/UninstallationMode_Rollback.tpk differ