From 8772d29769a76fb03d72fe37ab1e200fdebd47d1 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:42:30 +0000 Subject: [PATCH 01/10] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20unittest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/bundlemgr_lite/unittest/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/bundlemgr_lite/unittest/.keep diff --git a/services/bundlemgr_lite/unittest/.keep b/services/bundlemgr_lite/unittest/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 26d34a78ba86963a71f83aba5332980a8471643e Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:42:53 +0000 Subject: [PATCH 02/10] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20camera?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/bundlemgr_lite/unittest/camera/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/bundlemgr_lite/unittest/camera/.keep diff --git a/services/bundlemgr_lite/unittest/camera/.keep b/services/bundlemgr_lite/unittest/camera/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 4307ae47eb235d1d1dc680ca339fd22b323409d0 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:43:19 +0000 Subject: [PATCH 03/10] add services/bundlemgr_lite/unittest/BUILD.gn. --- services/bundlemgr_lite/unittest/BUILD.gn | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/bundlemgr_lite/unittest/BUILD.gn diff --git a/services/bundlemgr_lite/unittest/BUILD.gn b/services/bundlemgr_lite/unittest/BUILD.gn new file mode 100644 index 0000000..e69de29 -- Gitee From f27cb21b403cd1a76c8d25ffa51e8ff5490ccf60 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:43:33 +0000 Subject: [PATCH 04/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20se?= =?UTF-8?q?rvices/bundlemgr=5Flite/unittest/.keep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/bundlemgr_lite/unittest/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 services/bundlemgr_lite/unittest/.keep diff --git a/services/bundlemgr_lite/unittest/.keep b/services/bundlemgr_lite/unittest/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee From 3ba7c5b9ff1fc4f47a4c6a8bc13567b92579afa6 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:44:00 +0000 Subject: [PATCH 05/10] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20bms=5Finfo=5Fget=5Ft?= =?UTF-8?q?est?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep diff --git a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From d65d2ca1a75f87a141c7bcc4d4e29cdf957f4bf9 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:44:24 +0000 Subject: [PATCH 06/10] add services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn. --- .../bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn diff --git a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn new file mode 100644 index 0000000..e69de29 -- Gitee From 68ebf1ae933472c70e636beec261d0aa145c0607 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:44:53 +0000 Subject: [PATCH 07/10] add services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp. --- .../unittest/camera/bms_info_get_test/bms_info_get_test.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp diff --git a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp new file mode 100644 index 0000000..e69de29 -- Gitee From 048115678ca6486161323e02d25ba1cf406e4bc8 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:45:06 +0000 Subject: [PATCH 08/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20se?= =?UTF-8?q?rvices/bundlemgr=5Flite/unittest/camera/.keep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/bundlemgr_lite/unittest/camera/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 services/bundlemgr_lite/unittest/camera/.keep diff --git a/services/bundlemgr_lite/unittest/camera/.keep b/services/bundlemgr_lite/unittest/camera/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee From 904a762e470243cdc399d3643be4041437290229 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 07:45:15 +0000 Subject: [PATCH 09/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20se?= =?UTF-8?q?rvices/bundlemgr=5Flite/unittest/camera/bms=5Finfo=5Fget=5Ftest?= =?UTF-8?q?/.keep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep diff --git a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee From 604b9722bd1e8793108900f64658ea09ce7224f5 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Fri, 15 Oct 2021 15:51:53 +0800 Subject: [PATCH 10/10] IssueNo:#I4E1FI Description:add some testcases Sig:appexecfwk Feature or Bugfix:Bugfix Binary Source:No Signed-off-by: wangdengjia --- services/bundlemgr_lite/BUILD.gn | 1 + services/bundlemgr_lite/unittest/BUILD.gn | 19 ++ .../camera/bms_info_get_test/BUILD.gn | 63 +++++ .../bms_info_get_test/bms_info_get_test.cpp | 242 ++++++++++++++++++ 4 files changed, 325 insertions(+) diff --git a/services/bundlemgr_lite/BUILD.gn b/services/bundlemgr_lite/BUILD.gn index 96be3f2..d8004cf 100644 --- a/services/bundlemgr_lite/BUILD.gn +++ b/services/bundlemgr_lite/BUILD.gn @@ -95,5 +95,6 @@ lite_component("appexecfwk_services_lite") { ":bundlems", "tools:bm", "bundle_daemon:bundle_daemon", + "unittest:bundle_mgr_test", ] } diff --git a/services/bundlemgr_lite/unittest/BUILD.gn b/services/bundlemgr_lite/unittest/BUILD.gn index e69de29..78e4f04 100644 --- a/services/bundlemgr_lite/unittest/BUILD.gn +++ b/services/bundlemgr_lite/unittest/BUILD.gn @@ -0,0 +1,19 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/lite/config/component/lite_component.gni") +import("//build/lite/config/test.gni") + +group("bundle_mgr_test") { + deps = [ "camera/bms_info_get_test:bundle_mgr_test_bmsGetInfoTest_group" ] +} diff --git a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn index e69de29..7d2ba30 100644 --- a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn +++ b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/BUILD.gn @@ -0,0 +1,63 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/lite/config/component/lite_component.gni") +import("//build/lite/config/test.gni") + +unittest("bundle_mgr_test_bmsGetInfoTest") { + output_extension = "bin" + output_dir = "$root_out_dir/test/unittest/BmsGetInfoTest" + + ldflags = [ + "-lstdc++", + "-lpthread", + "-lm", + ] + + include_dirs = [ + "${aafwk_lite_path}/interfaces/kits/want_lite", + "${aafwk_lite_path}/interfaces/innerkits/abilitymgr_lite", + "${aafwk_lite_path}/services/abilitymgr_lite/include", + "${appexecfwk_lite_path}/utils/bundle_lite", + "${appexecfwk_lite_path}/interfaces/kits/bundle_lite/", + "${appexecfwk_lite_path}/interfaces/innerkits/bundlemgr_lite/", + "${appexecfwk_lite_path}/kits/appkit_lite/appkit_utils/include", + "${appexecfwk_lite_path}/services/bundlemgr_lite/include", + "//foundation/distributedschedule/samgr_lite/interfaces/innerkits/samgr", + "//foundation/distributedschedule/samgr_lite/interfaces/innerkits/registry", + "//kernel/liteos_a/kernel/include", + "//kernel/liteos_a/kernel/common", + "//utils/native/lite/include", + "//third_party/cJSON", + "//third_party/googletest/googletest/include", + "//third_party/googletest/googletest/src", + ] + + sources = [ "bms_info_get_test.cpp" ] + + deps = [ + "${appexecfwk_lite_path}/frameworks/bundle_lite:bundle", + "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared", + "//build/lite/config/component/cJSON:cjson_shared", + "//foundation/communication/ipc_lite:liteipc_adapter", + "//foundation/distributedschedule/samgr_lite/samgr:samgr", + + # "//test/xts/tools/hcpptest:hcpptest_main", + ] + + defines = [ "OHOS_APPEXECFWK_BMS_BUNDLEMANAGER" ] +} + +group("bundle_mgr_test_bmsGetInfoTest_group") { + deps = [ ":bundle_mgr_test_bmsGetInfoTest" ] +} diff --git a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp index e69de29..1a95f4c 100644 --- a/services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp +++ b/services/bundlemgr_lite/unittest/camera/bms_info_get_test/bms_info_get_test.cpp @@ -0,0 +1,242 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include +#include +#include +#include + +#include + +#include "adapter.h" +#include "appexecfwk_errors.h" +#include "bundle_manager.h" +#include "element_name.h" +#include "securec.h" + +using namespace testing::ext; + +namespace OHOS { + const std::string HAP_PATH = "/nfs/bundle/camera_signed.hap"; + const std::string BUNDLE_NAME = "com.huawei.camera"; + const std::string MODULE_TYPE = "entry"; + const std::string METADATA_KEY = "camera"; + const std::string INVALID_METADATA_KEY = "hello"; + const std::string ABILITY_NAME = ".MainAbility"; + const char INVALID_BUNDLE_NAME[] = "com.huawei.testcase"; + const std::string MAX_INVALID_BUNDLE_NAME = std::string("com.example.testcasecom.example.testcasecom.example") + + ".testcasecom.example.testcasecom.example.testcasecom.example.testcasecom.example"; + const uint32_t WAIT_TIMEOUT = 30; + const int32_t BASE_UID = 10000; + const int32_t MAX_UID = 10100; + static sem_t g_sem; + + class BmsInfoGetTest : public testing::Test { + public: + static void SetUpTestCase(); + static void TearDownTestCase(); + static void InstallBundle(); + static void UninstallBundle(); + }; + + static void UninstallCallback(const uint8_t resultCode, const void *resultMessage) + { + std::string strMessage = reinterpret_cast(resultMessage); + if (!strMessage.empty()) { + printf("uninstall resultMessage is %s\n", strMessage.c_str()); + } + sem_post(&g_sem); + } + + static void InstallCallback(const uint8_t resultCode, const void *resultMessage) + { + std::string strMessage = reinterpret_cast(resultMessage); + if (!strMessage.empty()) { + printf("install resultMessage is %s\n", strMessage.c_str()); + } + sem_post(&g_sem); + } + + void BmsInfoGetTest::InstallBundle() + { + sem_init(&g_sem, 0, 0); + InstallParam installParam = { + .installLocation = 1, + .keepData = false + }; + Install(HAP_PATH.c_str(), &installParam, InstallCallback); + struct timespec ts = {}; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += WAIT_TIMEOUT; + sem_timedwait(&g_sem, &ts); + } + + void BmsInfoGetTest::UninstallBundle() + { + sem_init(&g_sem, 0, 0); + InstallParam installParam = { + .installLocation = 1, + .keepData = false + }; + Uninstall(BUNDLE_NAME.c_str(), &installParam, UninstallCallback); + struct timespec ts = {}; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += WAIT_TIMEOUT; + sem_timedwait(&g_sem, &ts); + } + + void BmsInfoGetTest::SetUpTestCase() + { + // need to set debug mode + InstallBundle(); + } + + void BmsInfoGetTest::TearDownTestCase() + { + UninstallBundle(); + } + + /** + * @tc.name: GetBundleInfo001 + * @tc.desc: get bundleInfo when bundle is exists, flag is 0 + * @tc.type: FUNC + */ + HWTEST_F(BmsInfoGetTest, GetBundleInfo001, TestSize.Level0) { + printf("begin to excute GetBundleInfo001\n"); + BundleInfo bundleInfo; + (void) memset_s(&bundleInfo, sizeof(BundleInfo), 0, sizeof(BundleInfo)); + uint8_t ret = GetBundleInfo(BUNDLE_NAME.c_str(), 0, &bundleInfo); + ASSERT_EQ(ret, 0); + EXPECT_EQ(bundleInfo.bundleName, BUNDLE_NAME); + EXPECT_EQ(bundleInfo.numOfAbility, 0); + ClearBundleInfo(&bundleInfo); + printf("end to excute GetBundleInfo001\n"); + } + + /** + * @tc.name: GetBundleInfo002 + * @tc.desc: get bundleInfo when bundle is exists, flag is 1 + * @tc.type: FUNC + */ + HWTEST_F(BmsInfoGetTest, GetBundleInfo002, TestSize.Level0) { + printf("begin to excute GetBundleInfo002\n"); + BundleInfo bundleInfo; + (void) memset_s(&bundleInfo, sizeof(BundleInfo), 0, sizeof(BundleInfo)); + uint8_t ret = GetBundleInfo(BUNDLE_NAME.c_str(), 1, &bundleInfo); + ASSERT_EQ(ret, 0); + EXPECT_EQ(bundleInfo.bundleName, BUNDLE_NAME); + ClearBundleInfo(&bundleInfo); + printf("end to excute GetBundleInfo002\n"); + } + + /** + * @tc.name: GetBundleInfo003 + * @tc.desc: get bundleInfo when param is invalid + * @tc.type: FUNC + */ + HWTEST_F(BmsInfoGetTest, GetBundleInfo003, TestSize.Level0) { + printf("begin to excute GetBundleInfo003\n"); + BundleInfo bundleInfo; + (void) memset_s(&bundleInfo, sizeof(BundleInfo), 0, sizeof(BundleInfo)); + uint8_t ret = GetBundleInfo(nullptr, 1, &bundleInfo); + EXPECT_EQ(ret, ERR_APPEXECFWK_OBJECT_NULL); + ret = GetBundleInfo(BUNDLE_NAME.c_str(), 1, nullptr); + EXPECT_EQ(ret, ERR_APPEXECFWK_OBJECT_NULL); + ret = GetBundleInfo(BUNDLE_NAME.c_str(), 2, &bundleInfo); + EXPECT_EQ(ret, ERR_APPEXECFWK_QUERY_PARAMETER_ERROR); + ret = GetBundleInfo(MAX_INVALID_BUNDLE_NAME.c_str(), 1, &bundleInfo); + EXPECT_EQ(ret, ERR_APPEXECFWK_QUERY_PARAMETER_ERROR); + printf("end to excute GetBundleInfo003\n"); + } + + /** + * @tc.name: GetBundleInfo004 + * @tc.desc: get bundleInfo when bundle is not exists + * @tc.type: FUNC + */ + HWTEST_F(BmsInfoGetTest, GetBundleInfo004, TestSize.Level0) { + printf("begin to excute GetBundleInfo004\n"); + BundleInfo bundleInfo; + (void) memset_s(&bundleInfo, sizeof(BundleInfo), 0, sizeof(BundleInfo)); + uint8_t ret = GetBundleInfo(INVALID_BUNDLE_NAME, 1, &bundleInfo); + EXPECT_EQ(ret, ERR_APPEXECFWK_QUERY_NO_INFOS); + printf("end to excute GetBundleInfo004\n"); + } + + /** + * @tc.name: GetBundleInfos001 + * @tc.desc: get bundleInfos when bundle is exists, flag is 0 + * @tc.type: FUNC + */ + HWTEST_F(BmsInfoGetTest, GetBundleInfos001, TestSize.Level0) { + printf("begin to excute GetBundleInfos001\n"); + BundleInfo *bundleInfo = nullptr; + int32_t len = -1; + uint8_t ret = GetBundleInfos(0, &bundleInfo, &len); + ASSERT_EQ(ret, 0); + EXPECT_GE(len, 1); + for (int32_t i = 0; i < len; i++) { + if (bundleInfo[i].bundleName != nullptr && strcmp(bundleInfo[i].bundleName, BUNDLE_NAME.c_str())) { + EXPECT_EQ(bundleInfo[i].numOfModule, 1); + EXPECT_EQ(bundleInfo[i].moduleInfos[0].moduleType, MODULE_TYPE); + EXPECT_EQ(bundleInfo[i].numOfAbility, 0); + } + ClearBundleInfo(bundleInfo + i); + } + AdapterFree(bundleInfo); + printf("end to excute GetBundleInfos001\n"); + } + + /** + * @tc.name: GetBundleInfos002 + * @tc.desc: get bundleInfos when bundle is exists, flag is 1 + * @tc.type: FUNC + */ + HWTEST_F(BmsInfoGetTest, GetBundleInfos002, TestSize.Level0) { + printf("begin to excute GetBundleInfos002\n"); + BundleInfo *bundleInfo = nullptr; + int32_t len = -1; + uint8_t ret = GetBundleInfos(1, &bundleInfo, &len); + ASSERT_EQ(ret, 0); + EXPECT_GE(len, 1); + for (int32_t i = 0; i < len; i++) { + if (bundleInfo[i].bundleName != nullptr && strcmp(bundleInfo[i].bundleName, BUNDLE_NAME.c_str())) { + EXPECT_EQ(bundleInfo[i].numOfModule, 1); + EXPECT_EQ(bundleInfo[i].moduleInfos[0].moduleType, MODULE_TYPE); + } + ClearBundleInfo(bundleInfo + i); + } + AdapterFree(bundleInfo); + printf("end to excute GetBundleInfos002\n"); + } + + /** + * @tc.name: GetBundleInfos003 + * @tc.desc: get bundleInfos when no bundle exists + * @tc.type: FUNC + */ + HWTEST_F(BmsInfoGetTest, GetBundleInfos003, TestSize.Level0) { + printf("begin to excute GetBundleInfos003\n"); + int32_t len = -1; + BundleInfo *bundleInfo = nullptr; + uint8_t ret = GetBundleInfos(1, nullptr, &len); + EXPECT_EQ(ret, ERR_APPEXECFWK_OBJECT_NULL); + ret = GetBundleInfos(1, &bundleInfo, nullptr); + EXPECT_EQ(ret, ERR_APPEXECFWK_OBJECT_NULL); + printf("end to excute GetBundleInfos003\n"); + } +} \ No newline at end of file -- Gitee