From 19f379775ad54d5711d8c8ed88eb2f0c714a3259 Mon Sep 17 00:00:00 2001 From: zhuxu Date: Wed, 6 Apr 2022 20:57:08 +0800 Subject: [PATCH 1/5] fix distributed camera ut bug Signed-off-by: zhuxu --- bundle.json | 3 ++ .../cameraoperator/client/BUILD.gn | 2 + .../client/include/dcamera_client.h | 52 +++++++++++++++++++ .../client/src/dcamera_client.cpp | 16 ++++++ .../client/src/dcamera_client_common.cpp | 16 ++++++ .../unittest/common/cameraoperator/BUILD.gn | 2 + services/cameraservice/sinkservice/BUILD.gn | 2 + .../dcamera_service_state_listener.cpp | 4 +- .../dcamera_source_dev.cpp | 11 ++++ 9 files changed, 106 insertions(+), 2 deletions(-) diff --git a/bundle.json b/bundle.json index 302bb55f..dfcb1b63 100644 --- a/bundle.json +++ b/bundle.json @@ -85,6 +85,9 @@ } ], "test":[ + "//foundation/distributedhardware/distributedcamera/services/cameraservice/cameraoperator/client/test/unittest:camera_client_test", + "//foundation/distributedhardware/distributedcamera/services/cameraservice/cameraoperator/handler/test/unittest:camera_handler_test", + "//foundation/distributedhardware/distributedcamera/services/cameraservice/sinkservice/test/unittest:sink_service_test", "//foundation/distributedhardware/distributedcamera/services/cameraservice/sourceservice/test/unittest:source_service_test", "//foundation/distributedhardware/distributedcamera/services/cameraservice/base/test/unittest:services_base_test" ] diff --git a/services/cameraservice/cameraoperator/client/BUILD.gn b/services/cameraservice/cameraoperator/client/BUILD.gn index ca1797d8..a5fc17a8 100644 --- a/services/cameraservice/cameraoperator/client/BUILD.gn +++ b/services/cameraservice/cameraoperator/client/BUILD.gn @@ -87,6 +87,8 @@ ohos_shared_library("distributed_camera_client") { ] external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libtoken_setproc", "hiviewdfx_hilog_native:libhilog", "multimedia_media_standard:media_client", ] diff --git a/services/cameraservice/cameraoperator/client/include/dcamera_client.h b/services/cameraservice/cameraoperator/client/include/dcamera_client.h index f97d2ee4..12c76ee5 100644 --- a/services/cameraservice/cameraoperator/client/include/dcamera_client.h +++ b/services/cameraservice/cameraoperator/client/include/dcamera_client.h @@ -18,14 +18,19 @@ #include "icamera_operator.h" +#include "access_token.h" +#include "accesstoken_kit.h" #include "camera_info.h" #include "camera_input.h" #include "camera_manager.h" #include "capture_input.h" #include "capture_output.h" #include "capture_session.h" +#include "hap_token_info.h" +#include "ipc_skeleton.h" #include "photo_output.h" #include "preview_output.h" +#include "token_setproc.h" #include "video_output.h" #include "dcamera_photo_surface_listener.h" @@ -33,6 +38,52 @@ namespace OHOS { namespace DistributedHardware { +const std::string OHOS_PERMISSION_CAMERA = "ohos.permission.CAMERA"; +const std::string APP_ID_DESC = "distributed camera"; +const std::string LABEL = "label"; +const std::string DESCRIPTION = "distributed camera"; +const std::string RES_DEVICE_ID = "local"; +const std::string DOMAIN = "distribtued_camera.domain"; +const int32_t USER_ID = 1; +const int32_t INST_INDEX = 0; +const int32_t GRANT_MODE = 1; +const int32_t GRANT_FLAGS = 1; +const int32_t LABEL_ID = 1; +const int32_t DESCRIPTION_ID = 1; + +const Security::AccessToken::HapInfoParams HAP_INFO_PARAMS = { + .userID = USER_ID, + .bundleName = OHOS_PERMISSION_CAMERA, + .instIndex = INST_INDEX, + .appIDDesc = APP_ID_DESC +}; + +const Security::AccessToken::PermissionDef PERMISSION_DEF = { + .permissionName = OHOS_PERMISSION_CAMERA, + .bundleName = OHOS_PERMISSION_CAMERA, + .grantMode = GRANT_MODE, + .availableLevel = Security::AccessToken::ATokenAplEnum::APL_NORMAL, + .label = LABEL, + .labelId = LABEL_ID, + .description = DESCRIPTION, + .descriptionId = DESCRIPTION_ID +}; + +const Security::AccessToken::PermissionStateFull PERMISSION_STATE_FULL = { + .permissionName = OHOS_PERMISSION_CAMERA, + .isGeneral = true, + .resDeviceID = {RES_DEVICE_ID}, + .grantStatus = {Security::AccessToken::PermissionState::PERMISSION_GRANTED}, + .grantFlags = {GRANT_FLAGS} +}; + +const Security::AccessToken::HapPolicyParams HAP_POLICY_PARAMS = { + .apl = Security::AccessToken::ATokenAplEnum::APL_NORMAL, + .domain = DOMAIN, + .permList = {PERMISSION_DEF}, + .permStateList = {PERMISSION_STATE_FULL} +}; + class DCameraClient : public ICameraOperator { public: explicit DCameraClient(const std::string& dhId); @@ -73,6 +124,7 @@ private: std::shared_ptr resultCallback_; std::shared_ptr photoListener_; std::shared_ptr videoListener_; + Security::AccessToken::AccessTokenIDEx tokenIdEx_; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index 5f50dc95..f3b901c3 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -36,6 +36,21 @@ DCameraClient::DCameraClient(const std::string& dhId) DHLOGI("DCameraClient Constructor dhId: %s", GetAnonyString(dhId).c_str()); cameraId_ = dhId.substr(CAMERA_ID_PREFIX.size()); isInit_ = false; + + tokenIdEx_ = Security::AccessToken::AccessTokenKit::AllocHapToken(HAP_INFO_PARAMS, HAP_POLICY_PARAMS); + if (tokenIdEx_.tokenIdExStruct.tokenID == 0) { + DHLOGE("DCameraClient Constructor alloc tokenId failed, dhId: %s", GetAnonyString(dhId).c_str()); + return; + } + + (void)SetSelfTokenID(tokenIdEx_.tokenIdExStruct.tokenID); + + int32_t ret = Security::AccessToken::AccessTokenKit::GrantPermission(tokenIdEx_.tokenIdExStruct.tokenID, + "ohos.permission.CAMERA", Security::AccessToken::PERMISSION_USER_FIXED); + if (ret != 0) { + DHLOGE("DCameraClient Constructor grant permission failed, dhId: %s", GetAnonyString(dhId).c_str()); + return; + } } DCameraClient::~DCameraClient() @@ -43,6 +58,7 @@ DCameraClient::~DCameraClient() if (isInit_) { UnInit(); } + (void)Security::AccessToken::AccessTokenKit::DeleteToken(tokenIdEx_.tokenIdExStruct.tokenID); } int32_t DCameraClient::Init() diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp index 2a026d4f..452cae5b 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp @@ -35,6 +35,21 @@ DCameraClient::DCameraClient(const std::string& dhId) DHLOGI("DCameraClientCommon Constructor dhId: %s", GetAnonyString(dhId).c_str()); cameraId_ = dhId.substr(CAMERA_ID_PREFIX.size()); isInit_ = false; + + tokenIdEx_ = Security::AccessToken::AccessTokenKit::AllocHapToken(HAP_INFO_PARAMS, HAP_POLICY_PARAMS); + if (tokenIdEx_.tokenIdExStruct.tokenID == 0) { + DHLOGE("DCameraClientCommon Constructor alloc tokenId failed, dhId: %s", GetAnonyString(dhId).c_str()); + return; + } + + (void)SetSelfTokenID(tokenIdEx_.tokenIdExStruct.tokenID); + + int32_t ret = Security::AccessToken::AccessTokenKit::GrantPermission(tokenIdEx_.tokenIdExStruct.tokenID, + "ohos.permission.CAMERA", Security::AccessToken::PERMISSION_USER_FIXED); + if (ret != 0) { + DHLOGE("DCameraClientCommon Constructor grant permission failed, dhId: %s", GetAnonyString(dhId).c_str()); + return; + } } DCameraClient::~DCameraClient() @@ -42,6 +57,7 @@ DCameraClient::~DCameraClient() if (isInit_) { UnInit(); } + (void)Security::AccessToken::AccessTokenKit::DeleteToken(tokenIdEx_.tokenIdExStruct.tokenID); } int32_t DCameraClient::Init() diff --git a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn index 46082450..d1bab1e7 100644 --- a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn +++ b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn @@ -71,6 +71,8 @@ ohos_unittest("DCameraClientTest") { ] external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libtoken_setproc", "hiviewdfx_hilog_native:libhilog", "eventhandler:libeventhandler", "ipc:ipc_core", diff --git a/services/cameraservice/sinkservice/BUILD.gn b/services/cameraservice/sinkservice/BUILD.gn index 2ce72ccf..2765ebe2 100644 --- a/services/cameraservice/sinkservice/BUILD.gn +++ b/services/cameraservice/sinkservice/BUILD.gn @@ -117,6 +117,8 @@ ohos_shared_library("distributed_camera_sink") { ] external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libtoken_setproc", "eventhandler:libeventhandler", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", diff --git a/services/cameraservice/sourceservice/src/distributedcamera/dcamera_service_state_listener.cpp b/services/cameraservice/sourceservice/src/distributedcamera/dcamera_service_state_listener.cpp index d62fdcf1..18eb5475 100644 --- a/services/cameraservice/sourceservice/src/distributedcamera/dcamera_service_state_listener.cpp +++ b/services/cameraservice/sourceservice/src/distributedcamera/dcamera_service_state_listener.cpp @@ -52,7 +52,7 @@ int32_t DCameraServiceStateListener::OnRegisterNotify(const std::string& devId, DHLOGE("DCameraServiceStateListener OnRegisterNotify OnNotifyRegResult failed: %d", ret); } if (status != DCAMERA_OK) { - std::thread([this, devId, dhId]() { + std::thread([devId, dhId]() { DHLOGI("DCameraServiceStateListener OnRegisterNotify thread delete devId: %s dhId: %s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); DCameraIndex camIndex(devId, dhId); @@ -78,7 +78,7 @@ int32_t DCameraServiceStateListener::OnUnregisterNotify(const std::string& devId } if (status == DCAMERA_OK) { - std::thread([this, devId, dhId]() { + std::thread([devId, dhId]() { DHLOGI("DCameraServiceStateListener OnUnregisterNotify thread delete devId: %s dhId: %s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); DCameraIndex camIndex(devId, dhId); diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp index ff476e13..80dd2552 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamera_source_dev.cpp @@ -57,6 +57,17 @@ DCameraSourceDev::~DCameraSourceDev() { DHLOGI("DCameraSourceDev Delete devId %s dhId %s", GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str()); + eventBus_ = nullptr; + hdiCallback_ = nullptr; + input_ = nullptr; + controller_ = nullptr; + stateMachine_ = nullptr; + stateListener_ = nullptr; + + eventResultMap_.clear(); + memberFuncMap_.clear(); + DHLOGI("DCameraSourceDev Delete devId %s dhId %s end", GetAnonyString(devId_).c_str(), + GetAnonyString(dhId_).c_str()); } int32_t DCameraSourceDev::InitDCameraSourceDev() -- Gitee From 91bb7a8b96ece0a4c1c03573988a626fe85ebbcd Mon Sep 17 00:00:00 2001 From: zhuxu Date: Thu, 7 Apr 2022 10:24:19 +0800 Subject: [PATCH 2/5] fix distribtued camera ut bug Signed-off-by: zhuxu --- .../unittest/common/cameraoperator/BUILD.gn | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn index d1bab1e7..b0cb4fab 100644 --- a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn +++ b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn @@ -12,7 +12,8 @@ # limitations under the License. import("//build/test.gni") -import("//foundation/distributedhardware/distributedcamera/distributedcamera.gni") +import( + "//foundation/distributedhardware/distributedcamera/distributedcamera.gni") module_out_path = "distributed_camera/dcamera_client_test" config("module_private_config") { @@ -51,30 +52,28 @@ config("module_private_config") { ohos_unittest("DCameraClientTest") { module_out_path = module_out_path - sources = [ - "dcamera_client_test.cpp" - ] + sources = [ "dcamera_client_test.cpp" ] configs = [ ":module_private_config" ] deps = [ - "//third_party/googletest:gtest_main", - "//third_party/jsoncpp:jsoncpp", - "//utils/native/base:utils", - "${fwk_utils_path}:distributedhardwareutils", - "${common_path}:distributed_camera_utils", - "${graphicstandard_path}:libsurface", "${camerastandard_path}/frameworks/native/camera:camera_framework", "${camerastandard_path}/frameworks/native/metadata:metadata", + "${common_path}:distributed_camera_utils", + "${fwk_utils_path}:distributedhardwareutils", + "${graphicstandard_path}:libsurface", "${services_path}/cameraservice/cameraoperator/client:distributed_camera_client", - "${services_path}/cameraservice/sinkservice:distributed_camera_sink" + "${services_path}/cameraservice/sinkservice:distributed_camera_sink", + "//third_party/googletest:gtest_main", + "//third_party/jsoncpp:jsoncpp", + "//utils/native/base:utils", ] external_deps = [ "access_token:libaccesstoken_sdk", "access_token:libtoken_setproc", - "hiviewdfx_hilog_native:libhilog", "eventhandler:libeventhandler", + "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "samgr_standard:samgr_proxy", ] -- Gitee From 702a340886a05114d258aed35e6c40342e9caebc Mon Sep 17 00:00:00 2001 From: zhuxu Date: Thu, 7 Apr 2022 11:38:32 +0800 Subject: [PATCH 3/5] fix distribtued camera ut bug Signed-off-by: zhuxu --- .../client/test/unittest/common/cameraoperator/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn index b0cb4fab..851adf84 100644 --- a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn +++ b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn @@ -14,6 +14,7 @@ import("//build/test.gni") import( "//foundation/distributedhardware/distributedcamera/distributedcamera.gni") + module_out_path = "distributed_camera/dcamera_client_test" config("module_private_config") { -- Gitee From 89a1337307460022f22b737a418a3a1c50062af3 Mon Sep 17 00:00:00 2001 From: zhuxu Date: Thu, 7 Apr 2022 19:21:34 +0800 Subject: [PATCH 4/5] fix distributed camera ut bug Signed-off-by: zhuxu --- .../cameraoperator/client/BUILD.gn | 2 - .../client/include/dcamera_client.h | 52 ------------------- .../client/src/dcamera_client.cpp | 16 ------ .../client/src/dcamera_client_common.cpp | 16 ------ .../unittest/common/cameraoperator/BUILD.gn | 26 +++++----- .../cameraoperator/dcamera_client_test.cpp | 4 +- services/cameraservice/sinkservice/BUILD.gn | 2 - .../dcamera_sink_controller_test.cpp | 10 ++-- .../dcamera_sink_data_process_test.cpp | 5 +- .../dcamera_sink_dev_test.cpp | 5 +- .../dcamera_sink_output_test.cpp | 5 +- 11 files changed, 29 insertions(+), 114 deletions(-) diff --git a/services/cameraservice/cameraoperator/client/BUILD.gn b/services/cameraservice/cameraoperator/client/BUILD.gn index a5fc17a8..ca1797d8 100644 --- a/services/cameraservice/cameraoperator/client/BUILD.gn +++ b/services/cameraservice/cameraoperator/client/BUILD.gn @@ -87,8 +87,6 @@ ohos_shared_library("distributed_camera_client") { ] external_deps = [ - "access_token:libaccesstoken_sdk", - "access_token:libtoken_setproc", "hiviewdfx_hilog_native:libhilog", "multimedia_media_standard:media_client", ] diff --git a/services/cameraservice/cameraoperator/client/include/dcamera_client.h b/services/cameraservice/cameraoperator/client/include/dcamera_client.h index 12c76ee5..f97d2ee4 100644 --- a/services/cameraservice/cameraoperator/client/include/dcamera_client.h +++ b/services/cameraservice/cameraoperator/client/include/dcamera_client.h @@ -18,19 +18,14 @@ #include "icamera_operator.h" -#include "access_token.h" -#include "accesstoken_kit.h" #include "camera_info.h" #include "camera_input.h" #include "camera_manager.h" #include "capture_input.h" #include "capture_output.h" #include "capture_session.h" -#include "hap_token_info.h" -#include "ipc_skeleton.h" #include "photo_output.h" #include "preview_output.h" -#include "token_setproc.h" #include "video_output.h" #include "dcamera_photo_surface_listener.h" @@ -38,52 +33,6 @@ namespace OHOS { namespace DistributedHardware { -const std::string OHOS_PERMISSION_CAMERA = "ohos.permission.CAMERA"; -const std::string APP_ID_DESC = "distributed camera"; -const std::string LABEL = "label"; -const std::string DESCRIPTION = "distributed camera"; -const std::string RES_DEVICE_ID = "local"; -const std::string DOMAIN = "distribtued_camera.domain"; -const int32_t USER_ID = 1; -const int32_t INST_INDEX = 0; -const int32_t GRANT_MODE = 1; -const int32_t GRANT_FLAGS = 1; -const int32_t LABEL_ID = 1; -const int32_t DESCRIPTION_ID = 1; - -const Security::AccessToken::HapInfoParams HAP_INFO_PARAMS = { - .userID = USER_ID, - .bundleName = OHOS_PERMISSION_CAMERA, - .instIndex = INST_INDEX, - .appIDDesc = APP_ID_DESC -}; - -const Security::AccessToken::PermissionDef PERMISSION_DEF = { - .permissionName = OHOS_PERMISSION_CAMERA, - .bundleName = OHOS_PERMISSION_CAMERA, - .grantMode = GRANT_MODE, - .availableLevel = Security::AccessToken::ATokenAplEnum::APL_NORMAL, - .label = LABEL, - .labelId = LABEL_ID, - .description = DESCRIPTION, - .descriptionId = DESCRIPTION_ID -}; - -const Security::AccessToken::PermissionStateFull PERMISSION_STATE_FULL = { - .permissionName = OHOS_PERMISSION_CAMERA, - .isGeneral = true, - .resDeviceID = {RES_DEVICE_ID}, - .grantStatus = {Security::AccessToken::PermissionState::PERMISSION_GRANTED}, - .grantFlags = {GRANT_FLAGS} -}; - -const Security::AccessToken::HapPolicyParams HAP_POLICY_PARAMS = { - .apl = Security::AccessToken::ATokenAplEnum::APL_NORMAL, - .domain = DOMAIN, - .permList = {PERMISSION_DEF}, - .permStateList = {PERMISSION_STATE_FULL} -}; - class DCameraClient : public ICameraOperator { public: explicit DCameraClient(const std::string& dhId); @@ -124,7 +73,6 @@ private: std::shared_ptr resultCallback_; std::shared_ptr photoListener_; std::shared_ptr videoListener_; - Security::AccessToken::AccessTokenIDEx tokenIdEx_; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index f3b901c3..5f50dc95 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -36,21 +36,6 @@ DCameraClient::DCameraClient(const std::string& dhId) DHLOGI("DCameraClient Constructor dhId: %s", GetAnonyString(dhId).c_str()); cameraId_ = dhId.substr(CAMERA_ID_PREFIX.size()); isInit_ = false; - - tokenIdEx_ = Security::AccessToken::AccessTokenKit::AllocHapToken(HAP_INFO_PARAMS, HAP_POLICY_PARAMS); - if (tokenIdEx_.tokenIdExStruct.tokenID == 0) { - DHLOGE("DCameraClient Constructor alloc tokenId failed, dhId: %s", GetAnonyString(dhId).c_str()); - return; - } - - (void)SetSelfTokenID(tokenIdEx_.tokenIdExStruct.tokenID); - - int32_t ret = Security::AccessToken::AccessTokenKit::GrantPermission(tokenIdEx_.tokenIdExStruct.tokenID, - "ohos.permission.CAMERA", Security::AccessToken::PERMISSION_USER_FIXED); - if (ret != 0) { - DHLOGE("DCameraClient Constructor grant permission failed, dhId: %s", GetAnonyString(dhId).c_str()); - return; - } } DCameraClient::~DCameraClient() @@ -58,7 +43,6 @@ DCameraClient::~DCameraClient() if (isInit_) { UnInit(); } - (void)Security::AccessToken::AccessTokenKit::DeleteToken(tokenIdEx_.tokenIdExStruct.tokenID); } int32_t DCameraClient::Init() diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp index 452cae5b..2a026d4f 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client_common.cpp @@ -35,21 +35,6 @@ DCameraClient::DCameraClient(const std::string& dhId) DHLOGI("DCameraClientCommon Constructor dhId: %s", GetAnonyString(dhId).c_str()); cameraId_ = dhId.substr(CAMERA_ID_PREFIX.size()); isInit_ = false; - - tokenIdEx_ = Security::AccessToken::AccessTokenKit::AllocHapToken(HAP_INFO_PARAMS, HAP_POLICY_PARAMS); - if (tokenIdEx_.tokenIdExStruct.tokenID == 0) { - DHLOGE("DCameraClientCommon Constructor alloc tokenId failed, dhId: %s", GetAnonyString(dhId).c_str()); - return; - } - - (void)SetSelfTokenID(tokenIdEx_.tokenIdExStruct.tokenID); - - int32_t ret = Security::AccessToken::AccessTokenKit::GrantPermission(tokenIdEx_.tokenIdExStruct.tokenID, - "ohos.permission.CAMERA", Security::AccessToken::PERMISSION_USER_FIXED); - if (ret != 0) { - DHLOGE("DCameraClientCommon Constructor grant permission failed, dhId: %s", GetAnonyString(dhId).c_str()); - return; - } } DCameraClient::~DCameraClient() @@ -57,7 +42,6 @@ DCameraClient::~DCameraClient() if (isInit_) { UnInit(); } - (void)Security::AccessToken::AccessTokenKit::DeleteToken(tokenIdEx_.tokenIdExStruct.tokenID); } int32_t DCameraClient::Init() diff --git a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn index 851adf84..46082450 100644 --- a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn +++ b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn @@ -12,9 +12,7 @@ # limitations under the License. import("//build/test.gni") -import( - "//foundation/distributedhardware/distributedcamera/distributedcamera.gni") - +import("//foundation/distributedhardware/distributedcamera/distributedcamera.gni") module_out_path = "distributed_camera/dcamera_client_test" config("module_private_config") { @@ -53,28 +51,28 @@ config("module_private_config") { ohos_unittest("DCameraClientTest") { module_out_path = module_out_path - sources = [ "dcamera_client_test.cpp" ] + sources = [ + "dcamera_client_test.cpp" + ] configs = [ ":module_private_config" ] deps = [ - "${camerastandard_path}/frameworks/native/camera:camera_framework", - "${camerastandard_path}/frameworks/native/metadata:metadata", - "${common_path}:distributed_camera_utils", - "${fwk_utils_path}:distributedhardwareutils", - "${graphicstandard_path}:libsurface", - "${services_path}/cameraservice/cameraoperator/client:distributed_camera_client", - "${services_path}/cameraservice/sinkservice:distributed_camera_sink", "//third_party/googletest:gtest_main", "//third_party/jsoncpp:jsoncpp", "//utils/native/base:utils", + "${fwk_utils_path}:distributedhardwareutils", + "${common_path}:distributed_camera_utils", + "${graphicstandard_path}:libsurface", + "${camerastandard_path}/frameworks/native/camera:camera_framework", + "${camerastandard_path}/frameworks/native/metadata:metadata", + "${services_path}/cameraservice/cameraoperator/client:distributed_camera_client", + "${services_path}/cameraservice/sinkservice:distributed_camera_sink" ] external_deps = [ - "access_token:libaccesstoken_sdk", - "access_token:libtoken_setproc", - "eventhandler:libeventhandler", "hiviewdfx_hilog_native:libhilog", + "eventhandler:libeventhandler", "ipc:ipc_core", "samgr_standard:samgr_proxy", ] diff --git a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp index 95a787a2..2e63bc94 100644 --- a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp +++ b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp @@ -57,7 +57,6 @@ const int32_t TEST_HEIGHT = 1080; const int32_t TEST_FORMAT_3 = 3; const int32_t TEST_FORMAT_4 = 4; const int32_t TEST_SLEEP_SEC = 2; -const std::string TEST_CAMERA_ID = "Camera_device@3.5/legacy/1"; class DCameraClientTest : public testing::Test { public: @@ -86,7 +85,8 @@ void DCameraClientTest::TearDownTestCase(void) void DCameraClientTest::SetUp(void) { DHLOGI("DCameraClientTest::SetUp"); - client_ = std::make_shared(TEST_CAMERA_ID); + std::vector cameras = DCameraHandler::GetInstance().GetCameras(); + client_ = std::make_shared(cameras[0]); photoInfo_false_ = std::make_shared(); photoInfo_false_->width_ = TEST_WIDTH; diff --git a/services/cameraservice/sinkservice/BUILD.gn b/services/cameraservice/sinkservice/BUILD.gn index 2765ebe2..2ce72ccf 100644 --- a/services/cameraservice/sinkservice/BUILD.gn +++ b/services/cameraservice/sinkservice/BUILD.gn @@ -117,8 +117,6 @@ ohos_shared_library("distributed_camera_sink") { ] external_deps = [ - "access_token:libaccesstoken_sdk", - "access_token:libtoken_setproc", "eventhandler:libeventhandler", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp index 058fca2c..8ac1fbcc 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp @@ -46,7 +46,7 @@ public: std::shared_ptr accessControl_; }; std::string g_testDeviceIdController; -const std::string TEST_DH_ID = "Camera_device@3.5/legacy/1"; + const std::string SESSION_FLAG_CONTINUE = "dataContinue"; const std::string SESSION_FLAG_SNAPSHOT = "dataSnapshot"; const std::string TEST_DEVICE_ID_EMPTY = ""; @@ -103,7 +103,8 @@ std::vector g_testCamIndex; void DCameraSinkControllerTest::SetUpTestCase(void) { GetLocalDeviceNetworkId(g_testDeviceIdController); - g_testCamIndex.push_back(DCameraIndex(g_testDeviceIdController, TEST_DH_ID)); + std::vector cameras = DCameraHandler::GetInstance().GetCameras(); + g_testCamIndex.push_back(DCameraIndex(g_testDeviceIdController, cameras[0])); } void DCameraSinkControllerTest::TearDownTestCase(void) @@ -115,11 +116,12 @@ void DCameraSinkControllerTest::SetUp(void) accessControl_ = std::make_shared(); controller_ = std::make_shared(accessControl_); + std::vector cameras = DCameraHandler::GetInstance().GetCameras(); controller_->channel_ = std::make_shared(); controller_->operator_ = std::make_shared(); - controller_->output_ = std::make_shared(TEST_DH_ID, controller_->operator_); + controller_->output_ = std::make_shared(cameras[0], controller_->operator_); controller_->srcDevId_ = g_testDeviceIdController; - controller_->dhId_ = TEST_DH_ID; + controller_->dhId_ = cameras[0]; } void DCameraSinkControllerTest::TearDown(void) diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp index 4509a2a5..e4f93ea5 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp @@ -40,7 +40,7 @@ public: std::shared_ptr dataProcess_; std::shared_ptr channel_; }; -const std::string TEST_DH_ID = "Camera_device@3.5/legacy/1"; + const std::string TEST_STRING = "test_string"; const int32_t TEST_WIDTH = 1080; const int32_t TEST_HEIGHT = 1920; @@ -96,7 +96,8 @@ void DCameraSinkDataProcessTest::TearDownTestCase(void) void DCameraSinkDataProcessTest::SetUp(void) { channel_ = std::make_shared(); - dataProcess_ = std::make_shared(TEST_DH_ID, channel_); + std::vector cameras = DCameraHandler::GetInstance().GetCameras(); + dataProcess_ = std::make_shared(cameras[0], channel_); dataProcess_->pipeline_ = std::make_shared(); dataProcess_->captureInfo_ = g_testCaptureInfoContinuousNeedEncode; diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp index d79a09b9..0f91f6db 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp @@ -43,7 +43,7 @@ public: std::shared_ptr dev_; }; -const std::string TEST_CAMERA_DH_ID_0 = "Camera_device@3.5/legacy/1"; + const std::string TEST_PARAMETER = ""; std::string g_testCameraInfo = ""; @@ -75,7 +75,8 @@ void DCameraSinkDevTest::TearDownTestCase(void) void DCameraSinkDevTest::SetUp(void) { - dev_ = std::make_shared(TEST_CAMERA_DH_ID_0); + std::vector cameras = DCameraHandler::GetInstance().GetCameras(); + dev_ = std::make_shared(cameras[0]); dev_->accessControl_ = std::make_shared(); dev_->controller_ = std::make_shared(dev_->accessControl_); diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp index d4e64ec6..14d05f70 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp @@ -46,7 +46,7 @@ public: std::shared_ptr channel_; std::shared_ptr dataProcess_; }; -const std::string TEST_DH_ID = "Camera_device@3.5/legacy/1"; + const std::string SESSION_FLAG_CONTINUE = "dataContinue"; const std::string SESSION_FLAG_SNAPSHOT = "dataSnapshot"; const int32_t TEST_WIDTH = 1080; @@ -114,8 +114,9 @@ void DCameraSinkOutputTest::TearDownTestCase(void) void DCameraSinkOutputTest::SetUp(void) { + std::vector cameras = DCameraHandler::GetInstance().GetCameras(); operator_ = std::make_shared(); - output_ = std::make_shared(TEST_DH_ID, operator_); + output_ = std::make_shared(cameras[0], operator_); channel_ = std::make_shared(); dataProcess_ = std::make_shared(channel_); output_->channels_.emplace(SNAPSHOT_FRAME, channel_); -- Gitee From 73c7223581040f5b59bec3e57c8eb686ae88659d Mon Sep 17 00:00:00 2001 From: zhuxu Date: Thu, 7 Apr 2022 21:28:04 +0800 Subject: [PATCH 5/5] fix distribtued camera ut bug Signed-off-by: zhuxu --- .../unittest/common/cameraoperator/BUILD.gn | 26 ++++++++++--------- .../cameraoperator/dcamera_client_test.cpp | 2 ++ .../common/distributedcameramgr/BUILD.gn | 17 ++++++++++++ .../dcamera_sink_controller_test.cpp | 3 +++ .../dcamera_sink_data_process_test.cpp | 2 ++ .../dcamera_sink_dev_test.cpp | 2 ++ .../dcamera_sink_output_test.cpp | 2 ++ 7 files changed, 42 insertions(+), 12 deletions(-) diff --git a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn index 46082450..bd274475 100644 --- a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn +++ b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/BUILD.gn @@ -12,7 +12,9 @@ # limitations under the License. import("//build/test.gni") -import("//foundation/distributedhardware/distributedcamera/distributedcamera.gni") +import( + "//foundation/distributedhardware/distributedcamera/distributedcamera.gni") + module_out_path = "distributed_camera/dcamera_client_test" config("module_private_config") { @@ -45,34 +47,34 @@ config("module_private_config") { "${services_path}/cameraservice/cameraoperator/client/include", "${services_path}/cameraservice/cameraoperator/client/include/callback", "${services_path}/cameraservice/cameraoperator/client/include/listener", + "${services_path}/cameraservice/cameraoperator/handler/include", ] } ohos_unittest("DCameraClientTest") { module_out_path = module_out_path - sources = [ - "dcamera_client_test.cpp" - ] + sources = [ "dcamera_client_test.cpp" ] configs = [ ":module_private_config" ] deps = [ - "//third_party/googletest:gtest_main", - "//third_party/jsoncpp:jsoncpp", - "//utils/native/base:utils", - "${fwk_utils_path}:distributedhardwareutils", - "${common_path}:distributed_camera_utils", - "${graphicstandard_path}:libsurface", "${camerastandard_path}/frameworks/native/camera:camera_framework", "${camerastandard_path}/frameworks/native/metadata:metadata", + "${common_path}:distributed_camera_utils", + "${fwk_utils_path}:distributedhardwareutils", + "${graphicstandard_path}:libsurface", "${services_path}/cameraservice/cameraoperator/client:distributed_camera_client", - "${services_path}/cameraservice/sinkservice:distributed_camera_sink" + "${services_path}/cameraservice/cameraoperator/handler:distributed_camera_handler", + "${services_path}/cameraservice/sinkservice:distributed_camera_sink", + "//third_party/googletest:gtest_main", + "//third_party/jsoncpp:jsoncpp", + "//utils/native/base:utils", ] external_deps = [ - "hiviewdfx_hilog_native:libhilog", "eventhandler:libeventhandler", + "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "samgr_standard:samgr_proxy", ] diff --git a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp index 2e63bc94..9e6f6684 100644 --- a/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp +++ b/services/cameraservice/cameraoperator/client/test/unittest/common/cameraoperator/dcamera_client_test.cpp @@ -17,6 +17,7 @@ #include "anonymous_string.h" #include "dcamera_client.h" +#include "dcamera_handler.h" #include "distributed_camera_constants.h" #include "distributed_camera_errno.h" #include "distributed_hardware_log.h" @@ -85,6 +86,7 @@ void DCameraClientTest::TearDownTestCase(void) void DCameraClientTest::SetUp(void) { DHLOGI("DCameraClientTest::SetUp"); + DCameraHandler::GetInstance().Initialize(); std::vector cameras = DCameraHandler::GetInstance().GetCameras(); client_ = std::make_shared(cameras[0]); diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/BUILD.gn b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/BUILD.gn index e3d10be3..a1763fc1 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/BUILD.gn +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/BUILD.gn @@ -20,12 +20,24 @@ module_out_path = "distributed_camera/dcamera_sink_mgr_test" config("module_private_config") { visibility = [ ":*" ] include_dirs = [ + "${graphicstandard_path}/frameworks/surface/include", + "${camerastandard_path}/frameworks/native/metadata/include", + "${camerastandard_path}/interfaces/inner_api/native/camera/include", + "${camerastandard_path}/interfaces/inner_api/native/camera/include/input", + "${camerastandard_path}/interfaces/inner_api/native/camera/include/output", + "${camerastandard_path}/interfaces/inner_api/native/camera/include/session", + "${camerastandard_path}/services/camera_service/binder/base/include", + "${camerastandard_path}/services/camera_service/binder/client/include", + "${camerastandard_path}/services/camera_service/binder/server/include", + "${camerastandard_path}/services/camera_service/include", + "${mediastandard_path}/interfaces/innerkits/native/media/include", "${services_path}/cameraservice/sinkservice/include/distributedcameramgr", "${services_path}/cameraservice/sinkservice/include/distributedcameramgr/callback", "${services_path}/cameraservice/sinkservice/include/distributedcameramgr/eventbus", "${services_path}/cameraservice/sinkservice/include/distributedcameramgr/interface", "${services_path}/cameraservice/sinkservice/include/distributedcameramgr/listener", "${services_path}/cameraservice/cameraoperator/client/include", + "${services_path}/cameraservice/cameraoperator/handler/include", "${services_path}/cameraservice/base/include", "${services_path}/channel/include", "${services_path}/data_process/include/pipeline", @@ -61,8 +73,12 @@ ohos_unittest("DCameraSinkMgrTest") { configs = [ ":module_private_config" ] deps = [ + "${camerastandard_path}/frameworks/native/camera:camera_framework", + "${camerastandard_path}/frameworks/native/metadata:metadata", "${common_path}:distributed_camera_utils", "${fwk_utils_path}:distributedhardwareutils", + "${graphicstandard_path}:libsurface", + "${services_path}/cameraservice/cameraoperator/handler:distributed_camera_handler", "${services_path}/cameraservice/sinkservice:distributed_camera_sink", "${services_path}/channel:distributed_camera_channel", "//third_party/jsoncpp:jsoncpp", @@ -72,6 +88,7 @@ ohos_unittest("DCameraSinkMgrTest") { external_deps = [ "eventhandler:libeventhandler", "ipc:ipc_core", + "multimedia_media_standard:media_client", ] defines = [ diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp index 8ac1fbcc..790866b0 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_controller_test.cpp @@ -25,6 +25,7 @@ #include "mock_camera_operator.h" #include "mock_dcamera_sink_output.h" +#include "dcamera_handler.h" #include "dcamera_metadata_setting_cmd.h" #include "dcamera_sink_access_control.h" #include "dcamera_sink_dev.h" @@ -103,6 +104,7 @@ std::vector g_testCamIndex; void DCameraSinkControllerTest::SetUpTestCase(void) { GetLocalDeviceNetworkId(g_testDeviceIdController); + DCameraHandler::GetInstance().Initialize(); std::vector cameras = DCameraHandler::GetInstance().GetCameras(); g_testCamIndex.push_back(DCameraIndex(g_testDeviceIdController, cameras[0])); } @@ -116,6 +118,7 @@ void DCameraSinkControllerTest::SetUp(void) accessControl_ = std::make_shared(); controller_ = std::make_shared(accessControl_); + DCameraHandler::GetInstance().Initialize(); std::vector cameras = DCameraHandler::GetInstance().GetCameras(); controller_->channel_ = std::make_shared(); controller_->operator_ = std::make_shared(); diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp index e4f93ea5..a2758263 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_data_process_test.cpp @@ -22,6 +22,7 @@ #include #include +#include "dcamera_handler.h" #include "distributed_camera_errno.h" #include "mock_camera_channel.h" #include "mock_data_process_pipeline.h" @@ -96,6 +97,7 @@ void DCameraSinkDataProcessTest::TearDownTestCase(void) void DCameraSinkDataProcessTest::SetUp(void) { channel_ = std::make_shared(); + DCameraHandler::GetInstance().Initialize(); std::vector cameras = DCameraHandler::GetInstance().GetCameras(); dataProcess_ = std::make_shared(cameras[0], channel_); diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp index 0f91f6db..2e157972 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_dev_test.cpp @@ -25,6 +25,7 @@ #include "dcamera_sink_dev.h" #undef private +#include "dcamera_handler.h" #include "dcamera_utils_tools.h" #include "distributed_camera_errno.h" #include "mock_dcamera_sink_controller.h" @@ -75,6 +76,7 @@ void DCameraSinkDevTest::TearDownTestCase(void) void DCameraSinkDevTest::SetUp(void) { + DCameraHandler::GetInstance().Initialize(); std::vector cameras = DCameraHandler::GetInstance().GetCameras(); dev_ = std::make_shared(cameras[0]); diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp index 14d05f70..6dee7429 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcameramgr/dcamera_sink_output_test.cpp @@ -23,6 +23,7 @@ #include "mock_camera_operator.h" #include "mock_dcamera_sink_data_process.h" +#include "dcamera_handler.h" #include "dcamera_sink_access_control.h" #include "dcamera_sink_controller.h" #include "dcamera_sink_data_process.h" @@ -114,6 +115,7 @@ void DCameraSinkOutputTest::TearDownTestCase(void) void DCameraSinkOutputTest::SetUp(void) { + DCameraHandler::GetInstance().Initialize(); std::vector cameras = DCameraHandler::GetInstance().GetCameras(); operator_ = std::make_shared(); output_ = std::make_shared(cameras[0], operator_); -- Gitee