1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file expected in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci#include "pipeline_test.h" 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_civoid UtestPipelineTest::SetUpTestCase(void) 18094332d3Sopenharmony_ci{} 19094332d3Sopenharmony_civoid UtestPipelineTest::TearDownTestCase(void) 20094332d3Sopenharmony_ci{} 21094332d3Sopenharmony_civoid UtestPipelineTest::SetUp(void) 22094332d3Sopenharmony_ci{ 23094332d3Sopenharmony_ci if (cameraBase == nullptr) 24094332d3Sopenharmony_ci cameraBase = std::make_shared<TestCameraBase>(); 25094332d3Sopenharmony_ci cameraBase->FBInit(); 26094332d3Sopenharmony_ci cameraBase->Init(); 27094332d3Sopenharmony_ci} 28094332d3Sopenharmony_civoid UtestPipelineTest::TearDown(void) 29094332d3Sopenharmony_ci{ 30094332d3Sopenharmony_ci cameraBase->Close(); 31094332d3Sopenharmony_ci} 32094332d3Sopenharmony_ci 33094332d3Sopenharmony_ci/** 34094332d3Sopenharmony_ci * @tc.name: Check ppl 35094332d3Sopenharmony_ci * @tc.desc: preview success. 36094332d3Sopenharmony_ci * @tc.level: Level0 37094332d3Sopenharmony_ci * @tc.size: MediumTest 38094332d3Sopenharmony_ci * @tc.type: Function 39094332d3Sopenharmony_ci */ 40094332d3Sopenharmony_ciTEST_F(UtestPipelineTest, camera_ppl_0001) 41094332d3Sopenharmony_ci{ 42094332d3Sopenharmony_ci std::cout << "==========[test log] Check ppl: preview success." << std::endl; 43094332d3Sopenharmony_ci // Get the stream manager 44094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 45094332d3Sopenharmony_ci // start stream 46094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 47094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 48094332d3Sopenharmony_ci // Get preview 49094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true); 50094332d3Sopenharmony_ci // release stream 51094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW}; 52094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW}; 53094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 54094332d3Sopenharmony_ci} 55094332d3Sopenharmony_ci 56094332d3Sopenharmony_ci/** 57094332d3Sopenharmony_ci * @tc.name: Check ppl 58094332d3Sopenharmony_ci * @tc.desc: preview + capture success. 59094332d3Sopenharmony_ci * @tc.level: Level1 60094332d3Sopenharmony_ci * @tc.size: MediumTest 61094332d3Sopenharmony_ci * @tc.type: Function 62094332d3Sopenharmony_ci */ 63094332d3Sopenharmony_ciTEST_F(UtestPipelineTest, camera_ppl_0002) 64094332d3Sopenharmony_ci{ 65094332d3Sopenharmony_ci std::cout << "==========[test log] Check ppl: preview + capture success." << std::endl; 66094332d3Sopenharmony_ci // Get the stream manager 67094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 68094332d3Sopenharmony_ci // start stream 69094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW, STILL_CAPTURE}; 70094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 71094332d3Sopenharmony_ci // Get preview 72094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true); 73094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true); 74094332d3Sopenharmony_ci // release stream 75094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE}; 76094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE}; 77094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 78094332d3Sopenharmony_ci} 79094332d3Sopenharmony_ci 80094332d3Sopenharmony_ci/** 81094332d3Sopenharmony_ci * @tc.name: Check ppl 82094332d3Sopenharmony_ci * @tc.desc: preview + video success. 83094332d3Sopenharmony_ci * @tc.level: Level1 84094332d3Sopenharmony_ci * @tc.size: MediumTest 85094332d3Sopenharmony_ci * @tc.type: Function 86094332d3Sopenharmony_ci */ 87094332d3Sopenharmony_ciTEST_F(UtestPipelineTest, camera_ppl_0003) 88094332d3Sopenharmony_ci{ 89094332d3Sopenharmony_ci std::cout << "==========[test log] Check ppl: preview + video success." << std::endl; 90094332d3Sopenharmony_ci // Get the stream manager 91094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 92094332d3Sopenharmony_ci // start stream 93094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW, VIDEO}; 94094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 95094332d3Sopenharmony_ci // Get preview 96094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true); 97094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_VIDEO, cameraBase->CAPTURE_ID_VIDEO, false, true); 98094332d3Sopenharmony_ci // release stream 99094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_VIDEO}; 100094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_VIDEO}; 101094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 102094332d3Sopenharmony_ci} 103094332d3Sopenharmony_ci 104094332d3Sopenharmony_ci/** 105094332d3Sopenharmony_ci * @tc.name: Check ppl 106094332d3Sopenharmony_ci * @tc.desc: video mode without preview, system not support, expected return fail. 107094332d3Sopenharmony_ci * @tc.level: Level2 108094332d3Sopenharmony_ci * @tc.size: MediumTest 109094332d3Sopenharmony_ci * @tc.type: Function 110094332d3Sopenharmony_ci */ 111094332d3Sopenharmony_ciTEST_F(UtestPipelineTest, camera_ppl_0004) 112094332d3Sopenharmony_ci{ 113094332d3Sopenharmony_ci std::cout << "==========[test log] Video mode without preview, system not support, "; 114094332d3Sopenharmony_ci std::cout << "expected return fail." << std::endl; 115094332d3Sopenharmony_ci 116094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->cameraDevice != nullptr); 117094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 118094332d3Sopenharmony_ci // Create video stream 119094332d3Sopenharmony_ci std::vector<std::shared_ptr<StreamInfo>> streamInfos; 120094332d3Sopenharmony_ci std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue(); 121094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferqueue size 122094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferqueue size 123094332d3Sopenharmony_ci std::cout << "~~~~~~~" << std::endl; 124094332d3Sopenharmony_ci } 125094332d3Sopenharmony_ci auto callback = [this](std::shared_ptr<SurfaceBuffer> b) { 126094332d3Sopenharmony_ci cameraBase->BufferCallback(b, cameraBase->video_mode); 127094332d3Sopenharmony_ci return; 128094332d3Sopenharmony_ci }; 129094332d3Sopenharmony_ci producer->SetCallback(callback); 130094332d3Sopenharmony_ci cameraBase->streamInfo = std::make_shared<StreamInfo>(); 131094332d3Sopenharmony_ci cameraBase->streamInfo->streamId_ = cameraBase->STREAM_ID_VIDEO; 132094332d3Sopenharmony_ci cameraBase->streamInfo->width_ = 640; // 640:picture width // 640:picture width 133094332d3Sopenharmony_ci cameraBase->streamInfo->height_ = 480; // 480:picture height // 480:picture height 134094332d3Sopenharmony_ci cameraBase->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; 135094332d3Sopenharmony_ci cameraBase->streamInfo->dataspace_ = 10; // 10:picture dataspace 136094332d3Sopenharmony_ci cameraBase->streamInfo->intent_ = VIDEO; 137094332d3Sopenharmony_ci cameraBase->streamInfo->tunneledMode_ = 5; // 5:tunnel mode // 5:tunnel mode 138094332d3Sopenharmony_ci cameraBase->streamInfo->bufferQueue_ = producer; 139094332d3Sopenharmony_ci std::vector<std::shared_ptr<StreamInfo>>().swap(streamInfos); 140094332d3Sopenharmony_ci streamInfos.push_back(cameraBase->streamInfo); 141094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CreateStreams(streamInfos); 142094332d3Sopenharmony_ci EXPECT_EQ(false, cameraBase->rc == Camera::METHOD_NOT_SUPPORTED); 143094332d3Sopenharmony_ci if (cameraBase->rc == Camera::METHOD_NOT_SUPPORTED) { 144094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams METHOD_NOT_SUPPORTED, streamId = "; 145094332d3Sopenharmony_ci std::cout << cameraBase->STREAM_ID_VIDEO <<", intent = VIDEO" << std::endl; 146094332d3Sopenharmony_ci } else { 147094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams fail, rc = " << cameraBase->rc << std::endl; 148094332d3Sopenharmony_ci } 149094332d3Sopenharmony_ci 150094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CommitStreams(Camera::NORMAL, nullptr); 151094332d3Sopenharmony_ci EXPECT_EQ(false, cameraBase->rc == NO_ERROR); 152094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 153094332d3Sopenharmony_ci std::cout << "==========[test log] CommitStreams success." << std::endl; 154094332d3Sopenharmony_ci } else { 155094332d3Sopenharmony_ci std::cout << "==========[test log] CommitStreams fail, rc = ." << cameraBase->rc << std::endl; 156094332d3Sopenharmony_ci } 157094332d3Sopenharmony_ci}