From: Bartlomiej Kunikowski Date: Thu, 6 Jul 2017 07:49:19 +0000 (+0200) Subject: Add new smoke tests X-Git-Tag: submit/tizen/20170829.115218~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cbf60b1d1ad1a3b129f8bd0d0e5bb1644f0c97db;p=platform%2Fcore%2Fappfw%2Ftpk-backend.git Add new smoke tests - SmokeTest.ManifestDirectInstallMode - SmokeTest.ManifestDirectUpdateMode - SmokeTest.ReadonlyUpdateInstallMode - SmokeTest.ReadonlyUpdateUninstallMode Change-Id: Iefbcc49561afe238feef4a560c4d0492ad2537e0 Signed-off-by: Bartlomiej Kunikowski --- diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 169d5a6..049ca5f 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -542,6 +542,59 @@ TEST_F(SmokeTest, MountUpdateMode_Rollback) { ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/VERSION", "1")); } +TEST_F(PreloadSmokeTest, ManifestDirectInstallMode) { + ASSERT_EQ(getuid(), 0) << "Test cannot be run by normal user"; + bf::path src_path = kSmokePackagesDirectory / "ManifestDirectInstallMode"; + std::string pkgid = "smoketpk41"; + std::string appid = "smoketpk41.ManifestDirectInstallMode"; + bf::path pkg_path = ci::GetRootAppPath(false, kTestUserId); + + CopyDir(src_path / pkgid, pkg_path / pkgid); + ASSERT_FALSE(QueryIsPackageInstalled(pkgid, ci::GetRequestMode(kTestUserId), + kTestUserId)); + ASSERT_EQ(ManifestDirectInstall(pkgid), ci::AppInstaller::Result::OK); + ValidatePackage(pkgid, {appid}); +} + +TEST_F(SmokeTest, ManifestDirectUpdateMode) { + bf::path path = kSmokePackagesDirectory / "ManifestDirectUpdateMode.tpk"; + std::string pkgid = "smoketpk42"; + std::string appid = "smoketpk42.ManifestDirectUpdateMode"; + + ASSERT_EQ(Install(path), ci::AppInstaller::Result::OK); + int install_time = GetAppInstalledTime(appid.c_str(), kTestUserId); + ASSERT_EQ(ManifestDirectInstall(pkgid), ci::AppInstaller::Result::OK); + ASSERT_TRUE(GetAppInstalledTime(appid.c_str(), kTestUserId) > install_time) + << "Package is not updated (app installed time didn't change)."; + ValidatePackage(pkgid, {appid}); +} + +TEST_F(PreloadSmokeTest, ReadonlyUpdateInstallMode) { + ASSERT_EQ(getuid(), 0) << "Test cannot be run by normal user"; + bf::path path = kSmokePackagesDirectory / "ReadonlyUpdateInstallMode.tpk"; + std::string pkgid = "smoketpk43"; + std::string appid = "smoketpk43.ReadonlyUpdateInstallMode"; + + ASSERT_EQ(InstallPreload(path), ci::AppInstaller::Result::OK); + ASSERT_EQ(Install(path), ci::AppInstaller::Result::OK); + ValidatePackage(pkgid, {appid}); + ValidatePackage(pkgid, {appid}, true); +} + +TEST_F(PreloadSmokeTest, ReadonlyUpdateUninstallMode) { + ASSERT_EQ(getuid(), 0) << "Test cannot be run by normal user"; + bf::path path = kSmokePackagesDirectory / "ReadonlyUpdateUninstallMode.tpk"; + std::string pkgid = "smoketpk44"; + std::string appid = "smoketpk44.ReadonlyUpdateUninstallMode"; + + ASSERT_EQ(InstallPreload(path), ci::AppInstaller::Result::OK); + ASSERT_EQ(Install(path), ci::AppInstaller::Result::OK); + ValidatePackage(pkgid, {appid}); + ValidatePackage(pkgid, {appid}, true); + ASSERT_EQ(Uninstall(pkgid, false), ci::AppInstaller::Result::OK); + ValidatePackage(pkgid, {appid}, true); +} + } // namespace common_installer int main(int argc, char** argv) { diff --git a/src/unit_tests/smoke_utils.cc b/src/unit_tests/smoke_utils.cc index c3f48ce..0a86f20 100644 --- a/src/unit_tests/smoke_utils.cc +++ b/src/unit_tests/smoke_utils.cc @@ -698,6 +698,12 @@ ci::AppInstaller::Result Recover(const bf::path& recovery_file, return CallBackend(SIZEOFARRAY(argv), argv, mode); } +ci::AppInstaller::Result ManifestDirectInstall(const std::string& pkgid, + RequestResult mode) { + const char* argv[] = {"", "-y", pkgid.c_str(), "-u", kTestUserIdStr.c_str()}; + return CallBackend(SIZEOFARRAY(argv), argv, mode); +} + void BackupPath(const bf::path& path) { bf::path backup_path = path.string() + ".bck"; std::cout << "Backup path: " << path << " to " << backup_path << std::endl; @@ -797,3 +803,20 @@ void UninstallAllSmokeApps(ci::RequestMode request_mode) { UninstallAllAppsInDirectory(apps_rw, false); } +int GetAppInstalledTime(const char *appid, uid_t uid) +{ + int ret = 0; + int installed_time = 0; + pkgmgrinfo_appinfo_h handle = NULL; + ret = pkgmgrinfo_appinfo_get_usr_appinfo(appid, uid, &handle); + if (ret != PMINFO_R_OK) + return -1; + ret = pkgmgrinfo_appinfo_get_installed_time(handle, &installed_time); + if (ret != PMINFO_R_OK) { + pkgmgrinfo_appinfo_destroy_appinfo(handle); + return -1; + } + pkgmgrinfo_appinfo_destroy_appinfo(handle); + return installed_time; +} + diff --git a/src/unit_tests/smoke_utils.h b/src/unit_tests/smoke_utils.h index 7e8f242..3b671c8 100644 --- a/src/unit_tests/smoke_utils.h +++ b/src/unit_tests/smoke_utils.h @@ -235,6 +235,9 @@ ci::AppInstaller::Result DeltaInstall(const bf::path& path, ci::AppInstaller::Result Recover(const bf::path& recovery_file, RequestResult mode = RequestResult::NORMAL); +ci::AppInstaller::Result ManifestDirectInstall(const std::string& pkgid, + RequestResult mode = RequestResult::NORMAL); + void BackupPath(const bf::path& path); void RestorePath(const bf::path& path); @@ -245,4 +248,6 @@ void UninstallAllAppsInDirectory(bf::path dir, bool is_readonly); void UninstallAllSmokeApps(ci::RequestMode request_mode); +int GetAppInstalledTime(const char *appid, uid_t uid); + #endif // UNIT_TESTS_SMOKE_UTILS_H_ diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/author-signature.xml b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/author-signature.xml new file mode 100644 index 0000000..45a6533 --- /dev/null +++ b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/author-signature.xml @@ -0,0 +1,66 @@ + + + + + + +Yrs3GkHAMzZGL7qmFGAF7sdXg6shvOtthBSb/Hjzfjw= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +vQ+rOr8hWb4TVBijWblCSAB+8eePv+QyN6wNXzvJgSE= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +ATfZj/k87yYSeapRBX0sMZ5tO6jMQDj4EWCCTLtj5cf+N1s8WCbl4sST53hWdTf+JgvAzTpF6x+t +LcwC9zQZxfYTzHu0KqyKJy6uXj6tiB85SSlYhejOtDogxvGFCnRo6RZioYzF4SDtxha9NkYyh1PF +L0UpraclVNYVc1MMfYY= + + + + +MIICnDCCAYSgAwIBAgIGAVvS9uY8MA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz +c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2 +ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMBgxFjAUBgNVBAMMDUFw +cF9pbnN0YWxsZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAIKgQLsl5UIJdfdaDXbY+aQ6 +VHjwTPv5+aUlF1l6G9SDZ7tmJTCO1yAudmMr6vEN+ZL/bbOEAlyhkJPTmntPesO1h/WzjIlpFzTO +UcHlEXAu1vZGTnPBoYTutBeVmbH9JY/dCSm2xFSioKaWHl+uMn0SB1DcvgIVSs4DkvO0F1+TAgMB +AAGjMjAwMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA0G +CSqGSIb3DQEBBQUAA4IBAQBwNrj9b7/g4JI9K3wohRLHW5IpxOwBO9gUlkotSUNaiAvNwsQfB5pE +k+rTUa4Nwxcq6rFfne1brXP1vbl/bVGW/WJqV6dF3BL1QfwGif0vvcO1Sz2QOpoc/Jtt8zlmsRne +TIEMph6kDUT1oNUlTCGnxD24WagRxuGUe/RZ6L4y+6T8L+fBDtMyyM+GytqE72V+0KeyITJMTdzM +wRMjN3XccXemcox73isLxSXlgwrFbotkTyYPTFphiZCRU7BlA3EClIk+3To0b3irROY/iIlg6ZyY +gNbND9/aIJxqPqCghW7PMjGH/9KK2mtNhtJSFrIAvvUiW/fMrNj1opsAHGgJ + + +MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh +dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl +cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu +IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g +RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o +PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu +g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj +vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/ +jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE +dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC +AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH +95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04 +1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M ++OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI +W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg== + + + + + \ No newline at end of file diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/bin/basicui b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/bin/basicui new file mode 100644 index 0000000..91135f5 Binary files /dev/null and b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/bin/basicui differ diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/lib/sth.txt b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/lib/sth.txt new file mode 100644 index 0000000..a3cc0b5 --- /dev/null +++ b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/lib/sth.txt @@ -0,0 +1 @@ +Needed, because empty directories are skipped when copying, and directory structure will be invalid. diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/res/sth.txt b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/res/sth.txt new file mode 100644 index 0000000..a3cc0b5 --- /dev/null +++ b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/res/sth.txt @@ -0,0 +1 @@ +Needed, because empty directories are skipped when copying, and directory structure will be invalid. diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/shared/res/basicui.png b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/shared/res/basicui.png new file mode 100644 index 0000000..9765b1b Binary files /dev/null and b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/shared/res/basicui.png differ diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/signature1.xml b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/signature1.xml new file mode 100644 index 0000000..399fa19 --- /dev/null +++ b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/signature1.xml @@ -0,0 +1,68 @@ + + + + + + +anhYz6XCClJebTJ+qamYS8R0Rk4xDr7LKqaWzyxvj0I= + + + +Yrs3GkHAMzZGL7qmFGAF7sdXg6shvOtthBSb/Hjzfjw= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +vQ+rOr8hWb4TVBijWblCSAB+8eePv+QyN6wNXzvJgSE= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +NTEUK1tZpBTxjgfGxbwc1bZr8kAG8dc2+hx2xzUFxZUgIWwIIy/SdKy7VGUCAH3y/HApfaNBL1SL +RnGoQ/R3L/eQvQnzq/iTpZcCSpYnnvH9fJHAmgSod5XgH9IS+QKU/fzJ1rhlMBMD8oGxrDa4JrQJ +65+mUCgDS7LZUp6olx8= + + + + +MIICnTCCAgYCCQDE9MbMmJ/yCzANBgkqhkiG9w0BAQUFADCBkDELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTElMCMGA1UEAwwcVGl6ZW4gUGFydG5lciBEaXN0 +cmlidXRvciBDQTAeFw0xMjEwMjcwNzQ4MzNaFw0yMjEwMjUwNzQ4MzNaMIGUMQswCQYDVQQGEwJL +UjEOMAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENB +MSIwIAYDVQQLDBlUaXplbiBEaXN0cmlidXRvciBUZXN0IENBMSkwJwYDVQQDDCBUaXplbiBQYXJ0 +bmVyIERpc3RyaWJ1dG9yIFNpZ25lcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAy9mg2x4B +zxlK3LJL81GsLq/pJfK1evdCKG/IOBpdoRO0rLhYnsL5+KvToPFa5g9GTZo32LikpW1NZ7++3EHE +fnO2IGLUau4kquvhmz1LNg5xBTx7IbucmwLMRGo1BPGdsAQQLyXeQKJ5PCERmVg4MIoiL2zT/JsL +sZ9UPT6GEB8CAwEAATANBgkqhkiG9w0BAQUFAAOBgQAw5xPBFR1XKuZ8QpsCtSE0zXVHvwIa+Ha4 +YBdRtGwEoZmiKGZV/wAhPRdmR0kISkTz20kIGz/ZwRZCVGhsr5hkkpFknYlKeKkEJ/tJfZl4D7ec +GFAnynOzlWZqSIPz+yxX8ah9E6lTv4Vs9DhNb08nxVvxLqlpyVdk9RUsCx/yIA== + + +MIICtTCCAh6gAwIBAgIJAKORBcIiXygIMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSIw +IAYDVQQLDBlUaXplbiBEaXN0cmlidXRvciBUZXN0IENBMSowKAYDVQQDDCFUaXplbiBQYXJ0bmVy +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI3MDc0NTIwWhcNMjIxMDI1MDc0NTIwWjCBkDEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTElMCMGA1UEAwwc +VGl6ZW4gUGFydG5lciBEaXN0cmlidXRvciBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA +2ZQrdEowjqxUmB8FX8ej19VKY6jGHKNIRE5wrhBkuZ1b0FLRPiN3/Cl9wMkCnyJui4QhC28g1aBg +w/JnaObcDqW1NgFVH3006+gZvCTDlw1nIEjvZa6P+uWOOi05xPPAE0feKPkO1POnOjnapfkkEVNU +8TXsLbLYBylWT8rxZC8CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBJ +yJ7p6qs0JI+1iKOk/sYWVP6dMueY72qOc/wVj5c3ejOlgJNNXDMAQ14QcRRexffc68ipTwybU/3m +tcNwydzKJe+GFa4b2zyKOvOgrfs4MKSR0T9XEPmTKeR+NDT2CbA6/kQoRYm0fSORzD2UXJzNZWe/ +WjwSA66hv4q+0QZQFQ== + + + + + \ No newline at end of file diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/tizen-manifest.xml b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/tizen-manifest.xml new file mode 100644 index 0000000..780b3f1 --- /dev/null +++ b/src/unit_tests/test_samples/smoke/ManifestDirectInstallMode/smoketpk41/tizen-manifest.xml @@ -0,0 +1,8 @@ + + + + + basicui.png + + + diff --git a/src/unit_tests/test_samples/smoke/ManifestDirectUpdateMode.tpk b/src/unit_tests/test_samples/smoke/ManifestDirectUpdateMode.tpk new file mode 100644 index 0000000..f96ff56 Binary files /dev/null and b/src/unit_tests/test_samples/smoke/ManifestDirectUpdateMode.tpk differ diff --git a/src/unit_tests/test_samples/smoke/ReadonlyUpdateInstallMode.tpk b/src/unit_tests/test_samples/smoke/ReadonlyUpdateInstallMode.tpk new file mode 100644 index 0000000..c678f07 Binary files /dev/null and b/src/unit_tests/test_samples/smoke/ReadonlyUpdateInstallMode.tpk differ diff --git a/src/unit_tests/test_samples/smoke/ReadonlyUpdateUninstallMode.tpk b/src/unit_tests/test_samples/smoke/ReadonlyUpdateUninstallMode.tpk new file mode 100644 index 0000000..ffc8dcb Binary files /dev/null and b/src/unit_tests/test_samples/smoke/ReadonlyUpdateUninstallMode.tpk differ