From 063bc7a8238741fae7e7909b8364612398844524 Mon Sep 17 00:00:00 2001 From: zhuxu Date: Mon, 25 Apr 2022 14:45:34 +0800 Subject: [PATCH 1/2] fix distributed camera ut bug Signed-off-by: zhuxu --- .../common/distributedcamera/BUILD.gn | 45 ++++++-- .../distributed_camera_sink_service_test.cpp | 109 +++++------------- 2 files changed, 67 insertions(+), 87 deletions(-) diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/BUILD.gn b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/BUILD.gn index 2e69ad44..205fc590 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/BUILD.gn +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/BUILD.gn @@ -20,15 +20,32 @@ module_out_path = "distributed_camera/dcamera_sink_test" config("module_private_config") { visibility = [ ":*" ] include_dirs = [ - "${services_path}/cameraservice/sinkservice/include/distributedcamera", - "${services_path}/cameraservice/sinkservice/include/distributedcameramgr", - "${services_path}/cameraservice/sinkservice/include/distributedcameramgr/interface", - "${services_path}/cameraservice/base/include", + "//third_party/jsoncpp/include", + "//utils/native/base/include", + "//utils/system/safwk/native/include", + "${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", + "${fwk_common_path}/log/include", + "${fwk_common_path}/utils/include", + "${fwk_utils_path}/include/log", + "${fwk_utils_path}/include", + ] + + include_dirs += [ "${common_path}/include/constants", "${common_path}/include/utils", "${distributedcamera_hdf_path}/interfaces/include", "${innerkits_path}/native_cpp/camera_sink/include", - "//drivers/peripheral/base", + "${services_path}/cameraservice/base/include", + "${services_path}/cameraservice/cameraoperator/handler/include", ] } @@ -40,16 +57,30 @@ ohos_unittest("DistributedCameraSinkServiceTest") { configs = [ ":module_private_config" ] deps = [ - "${services_path}/cameraservice/sinkservice:distributed_camera_sink", + "${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", + "${innerkits_path}/native_cpp/camera_sink:distributed_camera_sink_sdk", + "${services_path}/cameraservice/cameraoperator/handler:distributed_camera_handler", + "//third_party/googletest:gtest_main", "//third_party/jsoncpp:jsoncpp", "//utils/native/base:utils", ] - defines = [ "HI_LOG_ENABLE" ] external_deps = [ "eventhandler:libeventhandler", + "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "safwk:system_ability_fwk", + "samgr_standard:samgr_proxy", + ] + + defines = [ + "HI_LOG_ENABLE", + "DH_LOG_TAG=\"DCameraSinkServiceTest\"", + "LOG_DOMAIN=0xD004100", ] } diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp index 0146dcce..993244bb 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp @@ -14,12 +14,12 @@ */ #include -#include -#define private public -#include "distributed_camera_sink_service.h" -#undef private +#include "dcamera_handler.h" +#include "dcamera_sink_handler.h" +#include "dcamera_sink_handler_ipc.h" #include "distributed_camera_errno.h" +#include "idistributed_camera_sink.h" using namespace testing::ext; @@ -32,13 +32,12 @@ public: void SetUp(); void TearDown(); - std::shared_ptr service_; + std::string dhId_; + sptr service_; }; + std::string g_testParams = ""; std::string g_testCameraInfo = ""; -const int32_t TEST_SA_ID = 4804; -const bool TEST_RUN_ON_CREATE = true; - std::string g_testChannelInfoContinue = R"({ "Type": "OPERATION", "dhId": "camrea_0", @@ -46,7 +45,6 @@ std::string g_testChannelInfoContinue = R"({ "Value": {"SourceDevId": "TestDevId", "Detail": [{"DataSessionFlag": "dataContinue", "StreamType": 0}]} })"; - std::string g_testOpenInfoService = R"({ "Type": "OPERATION", "dhId": "camrea_0", @@ -64,140 +62,91 @@ void DistributedCameraSinkServiceTest::TearDownTestCase(void) void DistributedCameraSinkServiceTest::SetUp(void) { - service_ = std::make_shared(TEST_SA_ID, TEST_RUN_ON_CREATE); + DCameraHandler::GetInstance().Initialize(); + dhId_ = DCameraHandler::GetInstance().GetCameras().front(); + + DCameraSinkHandler::GetInstance().InitSink(g_testParams); + service_ = DCameraSinkHandlerIpc::GetInstance().GetSinkLocalDHMS(); } void DistributedCameraSinkServiceTest::TearDown(void) { service_ = nullptr; + DCameraSinkHandler::GetInstance().ReleaseSink(); } /** * @tc.name: dcamera_sink_service_test_001 - * @tc.desc: Verify the InitSink and ReleaseSink function. + * @tc.desc: Verify the SubscribeLocalHardware function. * @tc.type: FUNC - * @tc.require: AR000GK6MV + * @tc.require: AR000GK6MT */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_001, TestSize.Level1) { - int32_t ret = service_->InitSink(g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - EXPECT_EQ(g_testParams, service_->sinkVer_); - EXPECT_NE(0, (int32_t)service_->camerasMap_.size()); - - ret = service_->ReleaseSink(); + int32_t ret = service_->SubscribeLocalHardware(dhId_, g_testParams); EXPECT_EQ(DCAMERA_OK, ret); - EXPECT_EQ(0, (int32_t)service_->camerasMap_.size()); } /** * @tc.name: dcamera_sink_service_test_002 - * @tc.desc: Verify the SubscribeLocalHardware function. + * @tc.desc: Verify the UnSubscribeLocalHardware function. * @tc.type: FUNC * @tc.require: AR000GK6MT */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_002, TestSize.Level1) { - int32_t ret = service_->InitSink(g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->SubscribeLocalHardware(service_->camerasMap_.begin()->first, g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->ReleaseSink(); + int32_t ret = service_->UnsubscribeLocalHardware(dhId_); EXPECT_EQ(DCAMERA_OK, ret); } /** * @tc.name: dcamera_sink_service_test_003 - * @tc.desc: Verify the UnSubscribeLocalHardware function. + * @tc.desc: Verify the StopCapture function. * @tc.type: FUNC - * @tc.require: AR000GK6MT + * @tc.require: AR000GK6N1 */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_003, TestSize.Level1) { - int32_t ret = service_->InitSink(g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->UnsubscribeLocalHardware(service_->camerasMap_.begin()->first); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->ReleaseSink(); + int32_t ret = service_->StopCapture(dhId_); EXPECT_EQ(DCAMERA_OK, ret); } /** * @tc.name: dcamera_sink_service_test_004 - * @tc.desc: Verify the StopCapture function. + * @tc.desc: Verify the ChannelNeg function. * @tc.type: FUNC - * @tc.require: AR000GK6N1 + * @tc.require: AR000GK6MT */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_004, TestSize.Level1) { - int32_t ret = service_->InitSink(g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->StopCapture(service_->camerasMap_.begin()->first); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->ReleaseSink(); + int32_t ret = service_->ChannelNeg(dhId_, g_testChannelInfoContinue); EXPECT_EQ(DCAMERA_OK, ret); } /** * @tc.name: dcamera_sink_service_test_005 - * @tc.desc: Verify the ChannelNeg function. + * @tc.desc: Verify the GetCameraInfo function. * @tc.type: FUNC * @tc.require: AR000GK6MT */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_005, TestSize.Level1) { - int32_t ret = service_->InitSink(g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->ChannelNeg(service_->camerasMap_.begin()->first, g_testChannelInfoContinue); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->ReleaseSink(); + int32_t ret = service_->GetCameraInfo(dhId_, g_testCameraInfo); EXPECT_EQ(DCAMERA_OK, ret); } /** * @tc.name: dcamera_sink_service_test_006 - * @tc.desc: Verify the GetCameraInfo function. - * @tc.type: FUNC - * @tc.require: AR000GK6MT - */ -HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_006, TestSize.Level1) -{ - int32_t ret = service_->InitSink(g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->GetCameraInfo(service_->camerasMap_.begin()->first, g_testCameraInfo); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->ReleaseSink(); - EXPECT_EQ(DCAMERA_OK, ret); -} - -/** - * @tc.name: dcamera_sink_service_test_007 * @tc.desc: Verify the OpenChannel and CloseChannel function. * @tc.type: FUNC * @tc.require: AR000GK6N1 */ -HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_007, TestSize.Level1) +HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_006, TestSize.Level1) { - int32_t ret = service_->InitSink(g_testParams); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->OpenChannel(service_->camerasMap_.begin()->first, g_testOpenInfoService); - EXPECT_EQ(DCAMERA_OK, ret); - - ret = service_->CloseChannel(service_->camerasMap_.begin()->first); + int32_t ret = service_->OpenChannel(dhId_, g_testOpenInfoService); EXPECT_EQ(DCAMERA_OK, ret); - ret = service_->ReleaseSink(); + ret = service_->CloseChannel(dhId_); EXPECT_EQ(DCAMERA_OK, ret); } } // namespace DistributedHardware -- Gitee From 0b0238911f1966fd8720a05f405d0804c45cfdcf Mon Sep 17 00:00:00 2001 From: zhuxu Date: Mon, 25 Apr 2022 16:47:33 +0800 Subject: [PATCH 2/2] fix distributed camera ut bug Signed-off-by: zhuxu --- .../camera_sink/src/dcamera_sink_handler.cpp | 2 + .../src/dcamera_source_handler.cpp | 2 + .../distributed_camera_sink_service_test.cpp | 45 ++++++++++++------- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp b/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp index 805ec0f8..a97e75d5 100644 --- a/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp +++ b/interfaces/inner_kits/native_cpp/camera_sink/src/dcamera_sink_handler.cpp @@ -98,6 +98,8 @@ int32_t DCameraSinkHandler::ReleaseSink() } DCameraSinkHandlerIpc::GetInstance().UnInit(); + std::unique_lock lock(producerMutex_); + state_ = DCAMERA_SA_STATE_STOP; DHLOGI("DCameraSinkHandler::ReleaseSink success"); return DCAMERA_OK; } diff --git a/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp b/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp index e40358cc..abb851cf 100644 --- a/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp +++ b/interfaces/inner_kits/native_cpp/camera_source/src/dcamera_source_handler.cpp @@ -100,6 +100,8 @@ int32_t DCameraSourceHandler::ReleaseSource() } dCameraSourceSrv->ReleaseSource(); DCameraSourceHandlerIpc::GetInstance().UnInit(); + std::unique_lock lock(producerMutex_); + state_ = DCAMERA_SA_STATE_STOP; DHLOGI("DCameraSourceHandler ReleaseSource end"); return DCAMERA_OK; } diff --git a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp index 993244bb..1eddd78a 100644 --- a/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp +++ b/services/cameraservice/sinkservice/test/unittest/common/distributedcamera/distributed_camera_sink_service_test.cpp @@ -19,6 +19,7 @@ #include "dcamera_sink_handler.h" #include "dcamera_sink_handler_ipc.h" #include "distributed_camera_errno.h" +#include "distributed_hardware_log.h" #include "idistributed_camera_sink.h" using namespace testing::ext; @@ -31,11 +32,11 @@ public: static void TearDownTestCase(void); void SetUp(); void TearDown(); - - std::string dhId_; - sptr service_; }; +static std::string g_dhId; +static sptr g_service; + std::string g_testParams = ""; std::string g_testCameraInfo = ""; std::string g_testChannelInfoContinue = R"({ @@ -54,25 +55,29 @@ std::string g_testOpenInfoService = R"({ void DistributedCameraSinkServiceTest::SetUpTestCase(void) { + DHLOGI("DistributedCameraSinkServiceTest::SetUpTestCase"); + DCameraHandler::GetInstance().Initialize(); + g_dhId = DCameraHandler::GetInstance().GetCameras().front(); + + DCameraSinkHandler::GetInstance().InitSink(g_testParams); + g_service = DCameraSinkHandlerIpc::GetInstance().GetSinkLocalDHMS(); } void DistributedCameraSinkServiceTest::TearDownTestCase(void) { + DHLOGI("DistributedCameraSinkServiceTest::TearDownTestCase"); + g_service = nullptr; + DCameraSinkHandler::GetInstance().ReleaseSink(); } void DistributedCameraSinkServiceTest::SetUp(void) { - DCameraHandler::GetInstance().Initialize(); - dhId_ = DCameraHandler::GetInstance().GetCameras().front(); - - DCameraSinkHandler::GetInstance().InitSink(g_testParams); - service_ = DCameraSinkHandlerIpc::GetInstance().GetSinkLocalDHMS(); + DHLOGI("DistributedCameraSinkServiceTest::SetUp"); } void DistributedCameraSinkServiceTest::TearDown(void) { - service_ = nullptr; - DCameraSinkHandler::GetInstance().ReleaseSink(); + DHLOGI("DistributedCameraSinkServiceTest::TearDown"); } /** @@ -83,7 +88,8 @@ void DistributedCameraSinkServiceTest::TearDown(void) */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_001, TestSize.Level1) { - int32_t ret = service_->SubscribeLocalHardware(dhId_, g_testParams); + DHLOGI("DistributedCameraSinkServiceTest::SubscribeLocalHardware"); + int32_t ret = g_service->SubscribeLocalHardware(g_dhId, g_testParams); EXPECT_EQ(DCAMERA_OK, ret); } @@ -95,7 +101,8 @@ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_001, TestSi */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_002, TestSize.Level1) { - int32_t ret = service_->UnsubscribeLocalHardware(dhId_); + DHLOGI("DistributedCameraSinkServiceTest::UnSubscribeLocalHardware"); + int32_t ret = g_service->UnsubscribeLocalHardware(g_dhId); EXPECT_EQ(DCAMERA_OK, ret); } @@ -107,7 +114,8 @@ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_002, TestSi */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_003, TestSize.Level1) { - int32_t ret = service_->StopCapture(dhId_); + DHLOGI("DistributedCameraSinkServiceTest::StopCapture"); + int32_t ret = g_service->StopCapture(g_dhId); EXPECT_EQ(DCAMERA_OK, ret); } @@ -119,7 +127,8 @@ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_003, TestSi */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_004, TestSize.Level1) { - int32_t ret = service_->ChannelNeg(dhId_, g_testChannelInfoContinue); + DHLOGI("DistributedCameraSinkServiceTest::ChannelNeg"); + int32_t ret = g_service->ChannelNeg(g_dhId, g_testChannelInfoContinue); EXPECT_EQ(DCAMERA_OK, ret); } @@ -131,7 +140,8 @@ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_004, TestSi */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_005, TestSize.Level1) { - int32_t ret = service_->GetCameraInfo(dhId_, g_testCameraInfo); + DHLOGI("DistributedCameraSinkServiceTest::GetCameraInfo"); + int32_t ret = g_service->GetCameraInfo(g_dhId, g_testCameraInfo); EXPECT_EQ(DCAMERA_OK, ret); } @@ -143,10 +153,11 @@ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_005, TestSi */ HWTEST_F(DistributedCameraSinkServiceTest, dcamera_sink_service_test_006, TestSize.Level1) { - int32_t ret = service_->OpenChannel(dhId_, g_testOpenInfoService); + DHLOGI("DistributedCameraSinkServiceTest::OpenChannel and CloseChannel"); + int32_t ret = g_service->OpenChannel(g_dhId, g_testOpenInfoService); EXPECT_EQ(DCAMERA_OK, ret); - ret = service_->CloseChannel(dhId_); + ret = g_service->CloseChannel(g_dhId); EXPECT_EQ(DCAMERA_OK, ret); } } // namespace DistributedHardware -- Gitee