fix distributed camera ut bug

Signed-off-by: zhuxu <zhuxu29@huawei.com>
This commit is contained in:
zhuxu
2022-04-07 19:21:34 +08:00
parent 400f4020c1
commit 1109a35e5e
11 changed files with 29 additions and 114 deletions
@@ -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",
]
@@ -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> resultCallback_;
std::shared_ptr<DCameraPhotoSurfaceListener> photoListener_;
std::shared_ptr<DCameraVideoSurfaceListener> videoListener_;
Security::AccessToken::AccessTokenIDEx tokenIdEx_;
};
} // namespace DistributedHardware
} // namespace OHOS
@@ -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()
@@ -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()
@@ -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",
]
@@ -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<DCameraClient>(TEST_CAMERA_ID);
std::vector<std::string> cameras = DCameraHandler::GetInstance().GetCameras();
client_ = std::make_shared<DCameraClient>(cameras[0]);
photoInfo_false_ = std::make_shared<DCameraCaptureInfo>();
photoInfo_false_->width_ = TEST_WIDTH;
@@ -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",
@@ -46,7 +46,7 @@ public:
std::shared_ptr<ICameraSinkAccessControl> 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<DCameraIndex> g_testCamIndex;
void DCameraSinkControllerTest::SetUpTestCase(void)
{
GetLocalDeviceNetworkId(g_testDeviceIdController);
g_testCamIndex.push_back(DCameraIndex(g_testDeviceIdController, TEST_DH_ID));
std::vector<std::string> 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<DCameraSinkAccessControl>();
controller_ = std::make_shared<DCameraSinkController>(accessControl_);
std::vector<std::string> cameras = DCameraHandler::GetInstance().GetCameras();
controller_->channel_ = std::make_shared<MockCameraChannel>();
controller_->operator_ = std::make_shared<MockCameraOperator>();
controller_->output_ = std::make_shared<MockDCameraSinkOutput>(TEST_DH_ID, controller_->operator_);
controller_->output_ = std::make_shared<MockDCameraSinkOutput>(cameras[0], controller_->operator_);
controller_->srcDevId_ = g_testDeviceIdController;
controller_->dhId_ = TEST_DH_ID;
controller_->dhId_ = cameras[0];
}
void DCameraSinkControllerTest::TearDown(void)
@@ -40,7 +40,7 @@ public:
std::shared_ptr<DCameraSinkDataProcess> dataProcess_;
std::shared_ptr<ICameraChannel> 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<MockCameraChannel>();
dataProcess_ = std::make_shared<DCameraSinkDataProcess>(TEST_DH_ID, channel_);
std::vector<std::string> cameras = DCameraHandler::GetInstance().GetCameras();
dataProcess_ = std::make_shared<DCameraSinkDataProcess>(cameras[0], channel_);
dataProcess_->pipeline_ = std::make_shared<MockDataProcessPipeline>();
dataProcess_->captureInfo_ = g_testCaptureInfoContinuousNeedEncode;
@@ -43,7 +43,7 @@ public:
std::shared_ptr<DCameraSinkDev> 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<DCameraSinkDev>(TEST_CAMERA_DH_ID_0);
std::vector<std::string> cameras = DCameraHandler::GetInstance().GetCameras();
dev_ = std::make_shared<DCameraSinkDev>(cameras[0]);
dev_->accessControl_ = std::make_shared<DCameraSinkAccessControl>();
dev_->controller_ = std::make_shared<MockDCameraSinkController>(dev_->accessControl_);
@@ -46,7 +46,7 @@ public:
std::shared_ptr<ICameraChannel> channel_;
std::shared_ptr<ICameraSinkDataProcess> 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<std::string> cameras = DCameraHandler::GetInstance().GetCameras();
operator_ = std::make_shared<MockCameraOperator>();
output_ = std::make_shared<DCameraSinkOutput>(TEST_DH_ID, operator_);
output_ = std::make_shared<DCameraSinkOutput>(cameras[0], operator_);
channel_ = std::make_shared<MockCameraChannel>();
dataProcess_ = std::make_shared<MockDCameraSinkDataProcess>(channel_);
output_->channels_.emplace(SNAPSHOT_FRAME, channel_);