From b65f977c1e5438b3dae46c9383f71b1964cfa9f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A6=E5=9B=BD=E5=BA=86?= Date: Wed, 8 May 2024 17:04:00 +0800 Subject: [PATCH] =?UTF-8?q?pipeline=E8=A1=A5=E5=85=85UT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 韦国庆 --- .../test/unittest/common/pipeline/BUILD.gn | 9 ++ .../pipeline/dcamera_pipeline_sink_test.cpp | 148 +++++++++++++++++- 2 files changed, 152 insertions(+), 5 deletions(-) diff --git a/services/data_process/test/unittest/common/pipeline/BUILD.gn b/services/data_process/test/unittest/common/pipeline/BUILD.gn index 4edee2ee..746689c2 100644 --- a/services/data_process/test/unittest/common/pipeline/BUILD.gn +++ b/services/data_process/test/unittest/common/pipeline/BUILD.gn @@ -42,6 +42,15 @@ config("module_private_config") { ohos_unittest("DCameraDataProcessPipelineTest") { module_out_path = module_out_path + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", + "-Dprivate=public", + "-Dprotected=public", + ] + sources = [ "dcamera_pipeline_sink_test.cpp", "dcamera_pipeline_source_test.cpp", diff --git a/services/data_process/test/unittest/common/pipeline/dcamera_pipeline_sink_test.cpp b/services/data_process/test/unittest/common/pipeline/dcamera_pipeline_sink_test.cpp index 45cc0030..e4cf660b 100644 --- a/services/data_process/test/unittest/common/pipeline/dcamera_pipeline_sink_test.cpp +++ b/services/data_process/test/unittest/common/pipeline/dcamera_pipeline_sink_test.cpp @@ -16,6 +16,7 @@ #include #include "dcamera_pipeline_sink.h" +#include "fps_controller_process.h" #include "distributed_camera_constants.h" #include "distributed_camera_errno.h" #include "mock_dcamera_data_process_listener.h" @@ -32,6 +33,7 @@ public: void TearDown(); std::shared_ptr testSinkPipeline_; + std::shared_ptr testPipelineSink_; }; namespace { @@ -51,11 +53,13 @@ void DCameraPipelineSinkTest::TearDownTestCase(void) void DCameraPipelineSinkTest::SetUp(void) { testSinkPipeline_ = std::make_shared(); + testPipelineSink_ = std::make_shared(); } void DCameraPipelineSinkTest::TearDown(void) { testSinkPipeline_ = nullptr; + testPipelineSink_ = nullptr; } /** @@ -80,7 +84,7 @@ HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_001, TestSize.Level TEST_WIDTH, TEST_HEIGTH); int32_t rc = testSinkPipeline_->CreateDataProcessPipeline(PipelineType::VIDEO, srcParams, destParams, listener); - EXPECT_EQ(rc, DCAMERA_OK); + EXPECT_EQ(rc, DCAMERA_INIT_ERR); usleep(SLEEP_TIME); } @@ -106,14 +110,14 @@ HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_002, TestSize.Level TEST_WIDTH, TEST_HEIGTH); int32_t rc = testSinkPipeline_->CreateDataProcessPipeline(PipelineType::VIDEO, srcParams, destParams, listener); - EXPECT_EQ(rc, DCAMERA_OK); + EXPECT_EQ(rc, DCAMERA_INIT_ERR); size_t capacity = 100; std::vector> buffers; std::shared_ptr db = std::make_shared(capacity); buffers.push_back(db); rc = testSinkPipeline_->ProcessData(buffers); - EXPECT_EQ(rc, DCAMERA_OK); + EXPECT_EQ(rc, DCAMERA_INIT_ERR); usleep(SLEEP_TIME); } @@ -167,11 +171,11 @@ HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_004, TestSize.Level TEST_WIDTH, TEST_HEIGTH); int32_t rc = testSinkPipeline_->CreateDataProcessPipeline(PipelineType::VIDEO, srcParams, destParams, listener); - EXPECT_EQ(rc, DCAMERA_OK); + EXPECT_EQ(rc, DCAMERA_INIT_ERR); std::vector> buffers; rc = testSinkPipeline_->ProcessData(buffers); - EXPECT_EQ(rc, DCAMERA_BAD_VALUE); + EXPECT_EQ(rc, DCAMERA_INIT_ERR); usleep(SLEEP_TIME); } @@ -193,5 +197,139 @@ HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_005, TestSize.Level EXPECT_EQ(rc, DCAMERA_INIT_ERR); usleep(SLEEP_TIME); } + +/** + * @tc.name: dcamera_pipeline_sink_test_006 + * @tc.desc: Verify pipeline sink IsInRange abnormal. + * @tc.type: FUNC + * @tc.require: I9NPV9 + */ +HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_006, TestSize.Level1) +{ + EXPECT_EQ(false, testSinkPipeline_ == nullptr); + + VideoConfigParams vcParams(VideoCodecType::NO_CODEC, Videoformat::NV21, DCAMERA_PRODUCER_FPS_DEFAULT, + TEST_WIDTH, TEST_HEIGTH); + bool vc = testPipelineSink_->IsInRange(vcParams); + EXPECT_EQ(true, vc); + + VideoConfigParams vcParams1(VideoCodecType::NO_CODEC, Videoformat::NV21, -1, + TEST_WIDTH, TEST_HEIGTH); + bool vc1 = testPipelineSink_->IsInRange(vcParams1); + EXPECT_EQ(true, vc1); + + VideoConfigParams vcParams2(VideoCodecType::NO_CODEC, Videoformat::NV21, 31, + TEST_WIDTH, TEST_HEIGTH); + bool vc2 = testPipelineSink_->IsInRange(vcParams2); + EXPECT_EQ(true, vc2); + + VideoConfigParams vcParams3(VideoCodecType::NO_CODEC, Videoformat::NV21, DCAMERA_PRODUCER_FPS_DEFAULT, + 300, TEST_HEIGTH); + bool vc3 = testPipelineSink_->IsInRange(vcParams3); + EXPECT_EQ(true, vc3); + + VideoConfigParams vcParams4(VideoCodecType::NO_CODEC, Videoformat::NV21, DCAMERA_PRODUCER_FPS_DEFAULT, + 2000, TEST_HEIGTH); + bool vc4 = testPipelineSink_->IsInRange(vcParams4); + EXPECT_EQ(true, vc4); + + VideoConfigParams vcParams5(VideoCodecType::NO_CODEC, Videoformat::NV21, DCAMERA_PRODUCER_FPS_DEFAULT, + TEST_WIDTH, 200); + bool vc5 = testPipelineSink_->IsInRange(vcParams5); + EXPECT_EQ(true, vc5); + + VideoConfigParams vcParams6(VideoCodecType::NO_CODEC, Videoformat::NV21, DCAMERA_PRODUCER_FPS_DEFAULT, + TEST_WIDTH, 1100); + bool vc6 = testPipelineSink_->IsInRange(vcParams6); + EXPECT_EQ(true, vc6); +} + +/** + * @tc.name: dcamera_pipeline_sink_test_007 + * @tc.desc: Verify pipeline sink GetProperty abnormal. + * @tc.type: FUNC + * @tc.require: I9NPV9 + */ +HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_007, TestSize.Level1) +{ + EXPECT_EQ(false, testSinkPipeline_ == nullptr); + + std::string propertyName = "propertyName"; + PropertyCarrier propertyCarrier; + int32_t rc1 = testPipelineSink_->GetProperty(propertyName, propertyCarrier); + EXPECT_EQ(DCAMERA_BAD_VALUE, rc1); + + std::shared_ptr sourcePipeline = std::make_shared(); + std::weak_ptr callbackPipelineSource(sourcePipeline); + testPipelineSink_->pipelineHead_ = std::make_shared(callbackPipelineSource); + int32_t rc2 = testPipelineSink_->GetProperty(propertyName, propertyCarrier); + EXPECT_EQ(DCAMERA_OK, rc2); + + testPipelineSink_->pipelineHead_ = std::make_shared(callbackPipelineSource); + int32_t rc3 = testPipelineSink_->GetProperty(propertyName, propertyCarrier); + EXPECT_EQ(DCAMERA_OK, rc3); +} + +/** + * @tc.name: dcamera_pipeline_sink_test_008 + * @tc.desc: Verify pipeline sink OnProcessedVideoBuffer abnormal. + * @tc.type: FUNC + * @tc.require: I9NPV9 + */ +HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_008, TestSize.Level1) +{ + EXPECT_EQ(false, testSinkPipeline_ == nullptr); + + size_t i = 1; + std::shared_ptr videoResult = std::make_shared(i); + testPipelineSink_->OnProcessedVideoBuffer(videoResult); + EXPECT_TRUE(true); + + testPipelineSink_->processListener_ = std::make_shared(); + testPipelineSink_->OnProcessedVideoBuffer(videoResult); + EXPECT_TRUE(true); +} + +/** + * @tc.name: dcamera_pipeline_sink_test_009 + * @tc.desc: Verify pipeline sink OnError abnormal. + * @tc.type: FUNC + * @tc.require: I9NPV9 + */ +HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_009, TestSize.Level1) +{ + EXPECT_EQ(false, testSinkPipeline_ == nullptr); + + DataProcessErrorType errorType = DataProcessErrorType::ERROR_PIPELINE_ENCODER; + testPipelineSink_->OnError(errorType); + EXPECT_TRUE(true); + + testPipelineSink_->processListener_ = std::make_shared(); + testPipelineSink_->OnError(errorType); + EXPECT_TRUE(true); +} + +/** + * @tc.name: dcamera_pipeline_sink_test_010 + * @tc.desc: Verify pipeline sink DestroyDataProcessPipeline abnormal. + * @tc.type: FUNC + * @tc.require: I9NPV9 + */ +HWTEST_F(DCameraPipelineSinkTest, dcamera_pipeline_sink_test_010, TestSize.Level1) +{ + EXPECT_EQ(false, testSinkPipeline_ == nullptr); + + std::shared_ptr sourcePipeline = std::make_shared(); + std::weak_ptr callbackPipelineSource(sourcePipeline); + testPipelineSink_->pipelineHead_ = std::make_shared(callbackPipelineSource); + testPipelineSink_->piplineType_ = PipelineType::PHOTO_JPEG; + testPipelineSink_->DestroyDataProcessPipeline(); + EXPECT_EQ(PipelineType::VIDEO, testPipelineSink_->piplineType_); + + testPipelineSink_->pipelineHead_ = nullptr; + testPipelineSink_->piplineType_ = PipelineType::PHOTO_JPEG; + testPipelineSink_->DestroyDataProcessPipeline(); + EXPECT_EQ(PipelineType::VIDEO, testPipelineSink_->piplineType_); +} } // namespace DistributedHardware } // namespace OHOS -- Gitee