Add routine to check file status 66/286766/2
authorilho kim <ilho159.kim@samsung.com>
Thu, 12 Jan 2023 06:47:03 +0000 (15:47 +0900)
committerilho kim <ilho159.kim@samsung.com>
Thu, 12 Jan 2023 12:30:08 +0000 (21:30 +0900)
Change-Id: I738d4ab97fdda67111ad8316ec4fe6e04b856cef
Signed-off-by: ilho kim <ilho159.kim@samsung.com>
test/smoke_tests/extensive_smoke_test.cc

index e51a0f7..d1bdcfc 100644 (file)
@@ -129,11 +129,23 @@ TEST_F(SmokeTest, RecoveryMode_ForInstallation) {
 TEST_F(SmokeTest, RecoveryMode_ForUpdate) {
   bf::path path_old = kSmokePackagesDirectory / "RecoveryMode_ForUpdate.wgt";
   bf::path path_new = kSmokePackagesDirectory / "RecoveryMode_ForUpdate_2.wgt";
+  std::string pkgid = "smokewgt10";
+  std::string appid = "smokewgt10.RecoveryModeForUpdate";
   RemoveAllRecoveryFiles("/wgt-recovery", params.test_user.uid);
   ASSERT_EQ(backend.InstallWithSubprocess(path_old),
       BackendInterface::SubProcessResult::SUCCESS);
-  std::string pkgid = "smokewgt10";
-  std::string appid = "smokewgt10.RecoveryModeForUpdate";
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status_old(pkgid, params);
+  ASSERT_TRUE(expected_file_status_old.Init());
+  ASSERT_EQ(backend.InstallWithSubprocess(path_new),
+      BackendInterface::SubProcessResult::SUCCESS);
+  FileInfoCollector expected_file_status_new(pkgid, params);
+  ASSERT_TRUE(expected_file_status_new.Init());
+  ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
+      BackendInterface::SubProcessResult::SUCCESS);
+  ASSERT_EQ(backend.InstallWithSubprocess(path_old),
+      BackendInterface::SubProcessResult::SUCCESS);
   AddDataFiles(pkgid, params.test_user.uid);
 
   std::string test_user_str = std::to_string(params.test_user.uid);
@@ -154,13 +166,20 @@ TEST_F(SmokeTest, RecoveryMode_ForUpdate) {
       EXTENDED_ASSERT_TRUE(ValidateFileContentInPackage(pkgid,
           "res/wgt/VERSION", version, params));
       EXTENDED_ASSERT_TRUE(ValidateDataFiles(pkgid, params.test_user.uid));
+      FileInfoCollector new_file_status(pkgid, params);
+      EXTENDED_ASSERT_TRUE(new_file_status.Init());
 
       if (recovery_info->cleanup()) {
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_new.IsEqual(new_file_status, &added_files));
         EXTENDED_ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
             BackendInterface::SubProcessResult::SUCCESS);
         EXTENDED_ASSERT_EQ(backend.InstallWithSubprocess(path_old),
             BackendInterface::SubProcessResult::SUCCESS);
         AddDataFiles(pkgid, params.test_user.uid);
+      } else {
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_old.IsEqual(new_file_status, &added_files));
       }
     }
     return true;
@@ -175,6 +194,18 @@ TEST_F(SmokeTest, RecoveryMode_ForDelta) {
   RemoveAllRecoveryFiles("/wgt-recovery", params.test_user.uid);
   ASSERT_EQ(BackendInterface::SubProcessResult::SUCCESS,
       backend.InstallWithSubprocess(path_old));
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status_old(pkgid, params);
+  ASSERT_TRUE(expected_file_status_old.Init());
+  ASSERT_EQ(backend.InstallWithSubprocess(path_new),
+      BackendInterface::SubProcessResult::SUCCESS);
+  FileInfoCollector expected_file_status_new(pkgid, params);
+  ASSERT_TRUE(expected_file_status_new.Init());
+  ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
+      BackendInterface::SubProcessResult::SUCCESS);
+  ASSERT_EQ(backend.InstallWithSubprocess(path_old),
+      BackendInterface::SubProcessResult::SUCCESS);
   AddDataFiles(pkgid, params.test_user.uid);
   std::string test_user_str = std::to_string(params.test_user.uid);
   std::vector<std::string> args =
@@ -194,13 +225,20 @@ TEST_F(SmokeTest, RecoveryMode_ForDelta) {
       EXTENDED_ASSERT_TRUE(ValidateFileContentInPackage(pkgid,
           "res/wgt/VERSION", contents, params));
       EXTENDED_ASSERT_TRUE(ValidateDataFiles(pkgid, params.test_user.uid));
+      FileInfoCollector new_file_status(pkgid, params);
+      EXTENDED_ASSERT_TRUE(new_file_status.Init());
 
       if (recovery_info->cleanup()) {
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_new.IsEqual(new_file_status, &added_files));
         EXTENDED_ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
             BackendInterface::SubProcessResult::SUCCESS);
         EXTENDED_ASSERT_EQ(backend.InstallWithSubprocess(path_old),
             BackendInterface::SubProcessResult::SUCCESS);
         AddDataFiles(pkgid, params.test_user.uid);
+      } else {
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_old.IsEqual(new_file_status, &added_files));
       }
     }
     return true;
@@ -247,6 +285,18 @@ TEST_F(SmokeTest, RecoveryMode_ForMountUpdate) {
   RemoveAllRecoveryFiles("/wgt-recovery", params.test_user.uid);
   ASSERT_EQ(backend.MountInstallWithSubprocess(path_old),
       BackendInterface::SubProcessResult::SUCCESS);
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status_old(pkgid, params);
+  ASSERT_TRUE(expected_file_status_old.Init());
+  ASSERT_EQ(backend.MountInstallWithSubprocess(path_new),
+      BackendInterface::SubProcessResult::SUCCESS);
+  FileInfoCollector expected_file_status_new(pkgid, params);
+  ASSERT_TRUE(expected_file_status_new.Init());
+  ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
+      BackendInterface::SubProcessResult::SUCCESS);
+  ASSERT_EQ(backend.MountInstallWithSubprocess(path_old),
+      BackendInterface::SubProcessResult::SUCCESS);
   AddDataFiles(pkgid, params.test_user.uid);
   std::string test_user_str = std::to_string(params.test_user.uid);
   std::vector<std::string> args =
@@ -272,13 +322,20 @@ TEST_F(SmokeTest, RecoveryMode_ForMountUpdate) {
       EXTENDED_ASSERT_TRUE(ValidateFileContentInPackage(
           pkgid, "res/wgt/VERSION", version, params));
       EXTENDED_ASSERT_TRUE(ValidateDataFiles(pkgid, params.test_user.uid));
+      interface.Release();
+      FileInfoCollector new_file_status(pkgid, params);
+      EXTENDED_ASSERT_TRUE(new_file_status.Init());
       if (recovery_info->cleanup()) {
-        interface.Release();
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_new.IsEqual(new_file_status, &added_files));
         EXTENDED_ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
             BackendInterface::SubProcessResult::SUCCESS);
         EXTENDED_ASSERT_EQ(backend.MountInstallWithSubprocess(path_old),
             BackendInterface::SubProcessResult::SUCCESS);
         AddDataFiles(pkgid, params.test_user.uid);
+      } else {
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_old.IsEqual(new_file_status, &added_files));
       }
     }
     return true;
@@ -306,11 +363,18 @@ TEST_F(SmokeTest, UpdateMode_Rollback) {
   std::string appid = "smokewgt07.UpdateModeRollback";
   ASSERT_EQ(backend.InstallWithSubprocess(path_old),
       BackendInterface::SubProcessResult::SUCCESS);
-  AddDataFiles(pkgid, params.test_user.uid);
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status(pkgid, params);
+  ASSERT_TRUE(expected_file_status.Init());
   std::string test_user_str = std::to_string(params.test_user.uid);
   const char* argv[] =
       {"", "-i", path_new.c_str(), "-u", test_user_str.c_str()};
   backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool {
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(
+        expected_file_status.IsEqual(new_file_status, &added_files));
     EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid}, params));
 
     EXTENDED_ASSERT_TRUE(ValidateFileContentInPackage(pkgid,
@@ -327,11 +391,18 @@ TEST_F(SmokeTest, DeltaMode_Rollback) {
   std::string appid = "smokewgt01.DeltaMode";
   ASSERT_EQ(backend.InstallWithSubprocess(path),
       BackendInterface::SubProcessResult::SUCCESS);
-  AddDataFiles(pkgid, params.test_user.uid);
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status(pkgid, params);
+  ASSERT_TRUE(expected_file_status.Init());
   std::string test_user_str = std::to_string(params.test_user.uid);
   const char* argv[] =
       {"", "-i", delta_package.c_str(), "-u", test_user_str.c_str()};
   backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool {
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(
+        expected_file_status.IsEqual(new_file_status, &added_files));
     EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid}, params));
     EXTENDED_ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/MODIFIED",
                                              "version 1\n", params));
@@ -366,11 +437,18 @@ TEST_F(HybridSmokeTest, UpdateMode_Rollback) {
   std::string appid1 = "smokehyb08.web";
   ASSERT_EQ(backend.InstallWithSubprocess(path_old),
       BackendInterface::SubProcessResult::SUCCESS);
-  AddDataFiles(pkgid, params.test_user.uid);
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status(pkgid, params);
+  ASSERT_TRUE(expected_file_status.Init());
   std::string test_user_str = std::to_string(params.test_user.uid);
   const char* argv[] =
       {"", "-i", path_new.c_str(), "-u", test_user_str.c_str()};
   backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool {
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(
+        expected_file_status.IsEqual(new_file_status, &added_files));
     EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid1}, params));
 
     EXTENDED_ASSERT_TRUE(ValidateFileContentInPackage(pkgid,
@@ -390,10 +468,17 @@ TEST_F(HybridSmokeTest, DeltaMode_Rollback_Hybrid) {
   std::string appid1 = "smokehyb11.web";
   ASSERT_EQ(backend.InstallWithSubprocess(path),
       BackendInterface::SubProcessResult::SUCCESS);
-  AddDataFiles(pkgid, params.test_user.uid);
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status(pkgid, params);
+  ASSERT_TRUE(expected_file_status.Init());
   std::string test_user_str = std::to_string(params.test_user.uid);
   const char* argv[] = {"", "-i", path.c_str(), "-u", test_user_str.c_str()};
   backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool {
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(
+        expected_file_status.IsEqual(new_file_status, &added_files));
     EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid1}, params));
     // Check delta modifications
     bf::path root_path = GetPackageRoot(pkgid, params.test_user.uid);
@@ -433,11 +518,18 @@ TEST_F(HybridSmokeTest, MountUpdateMode_Rollback) {
   std::string appid1 = "smokehyb10.web";
   ASSERT_EQ(backend.MountInstallWithSubprocess(path_old),
       BackendInterface::SubProcessResult::SUCCESS);
-  AddDataFiles(pkgid, params.test_user.uid);
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status(pkgid, params);
+  ASSERT_TRUE(expected_file_status.Init());
   std::string test_user_str = std::to_string(params.test_user.uid);
   const char* argv[] =
       {"", "-w", path_new.c_str(), "-u", test_user_str.c_str()};
   backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool {
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(
+        expected_file_status.IsEqual(new_file_status, &added_files));
     ScopedTzipInterface interface(pkgid, params.test_user.uid);
     EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid1}, params));
 
@@ -472,11 +564,18 @@ TEST_F(SmokeTest, MountUpdateMode_Rollback) {
   std::string appid = "smokewgt34.web";
   ASSERT_EQ(backend.MountInstallWithSubprocess(path_old),
             BackendInterface::SubProcessResult::SUCCESS);
-  AddDataFiles(pkgid, params.test_user.uid);
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  FileInfoCollector expected_file_status(pkgid, params);
+  ASSERT_TRUE(expected_file_status.Init());
   std::string test_user_str = std::to_string(params.test_user.uid);
   const char* argv[] =
       {"", "-w", path_new.c_str(), "-u", test_user_str.c_str()};
   backend.TestRollbackAfterEachStep(SIZEOFARRAY(argv), argv, [&]() -> bool {
+    FileInfoCollector new_file_status(pkgid, params);
+    EXTENDED_ASSERT_TRUE(new_file_status.Init());
+    EXTENDED_ASSERT_TRUE(
+        expected_file_status.IsEqual(new_file_status, &added_files));
     ScopedTzipInterface interface(pkgid, params.test_user.uid);
     EXTENDED_ASSERT_TRUE(ValidatePackage(pkgid, {appid}, params));
 
@@ -493,11 +592,23 @@ TEST_F(PreloadSmokeTest, RecoveryMode_ForReadonlyUpdateInstall) {
       "RecoveryMode_ForReadonlyUpdateInstall.wgt";
   bf::path path_new = kSmokePackagesDirectory /
       "RecoveryMode_ForReadonlyUpdateInstall_2.wgt";
+  std::string pkgid = "smokewgt51";
+  std::string appid = "smokewgt51.RecoveryModeForReadonlyUpdateInstall";
   RemoveAllRecoveryFiles("/wgt-recovery", params.test_user.uid);
   ASSERT_EQ(backend.InstallPreloadWithSubprocess(path_old),
       BackendInterface::SubProcessResult::SUCCESS);
-  std::string pkgid = "smokewgt51";
-  std::string appid = "smokewgt51.RecoveryModeForReadonlyUpdateInstall";
+  std::vector<bf::path> added_files;
+  AddDataFiles(pkgid, params.test_user.uid, &added_files);
+  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());
+  params.is_readonly = true;
+  ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
+      BackendInterface::SubProcessResult::SUCCESS);
   AddDataFiles(pkgid, params.test_user.uid);
   std::string test_uid_str = std::to_string(params.test_user.uid);
   std::vector<std::string> args =
@@ -519,11 +630,18 @@ TEST_F(PreloadSmokeTest, RecoveryMode_ForReadonlyUpdateInstall) {
       EXTENDED_ASSERT_TRUE(ValidateFileContentInPackage(pkgid,
           "res/wgt/VERSION", version, params));
       EXTENDED_ASSERT_TRUE(ValidateDataFiles(pkgid, params.test_user.uid));
+      FileInfoCollector new_file_status(pkgid, params);
+      EXTENDED_ASSERT_TRUE(new_file_status.Init());
 
       if (recovery_info->cleanup()) {
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_new.IsEqual(new_file_status, &added_files));
         EXTENDED_ASSERT_EQ(backend.UninstallWithSubprocess(pkgid),
             BackendInterface::SubProcessResult::SUCCESS);
         AddDataFiles(pkgid, params.test_user.uid);
+      } else {
+        EXTENDED_ASSERT_TRUE(
+            expected_file_status_old.IsEqual(new_file_status, &added_files));
       }
     }
     return true;