1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file expected in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include "pipeline_test.h"
16
SetUpTestCase(void)17 void UtestPipelineTest::SetUpTestCase(void)
18 {}
TearDownTestCase(void)19 void UtestPipelineTest::TearDownTestCase(void)
20 {}
SetUp(void)21 void UtestPipelineTest::SetUp(void)
22 {
23 if (cameraBase == nullptr)
24 cameraBase = std::make_shared<TestCameraBase>();
25 cameraBase->FBInit();
26 cameraBase->Init();
27 }
TearDown(void)28 void UtestPipelineTest::TearDown(void)
29 {
30 cameraBase->Close();
31 }
32
33 /**
34 * @tc.name: Check ppl
35 * @tc.desc: preview success.
36 * @tc.level: Level0
37 * @tc.size: MediumTest
38 * @tc.type: Function
39 */
TEST_F(UtestPipelineTest,camera_ppl_0001)40 TEST_F(UtestPipelineTest, camera_ppl_0001)
41 {
42 std::cout << "==========[test log] Check ppl: preview success." << std::endl;
43 // Get the stream manager
44 cameraBase->AchieveStreamOperator();
45 // start stream
46 cameraBase->intents = {PREVIEW};
47 cameraBase->StartStream(cameraBase->intents);
48 // Get preview
49 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
50 // release stream
51 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
52 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
53 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
54 }
55
56 /**
57 * @tc.name: Check ppl
58 * @tc.desc: preview + capture success.
59 * @tc.level: Level1
60 * @tc.size: MediumTest
61 * @tc.type: Function
62 */
TEST_F(UtestPipelineTest,camera_ppl_0002)63 TEST_F(UtestPipelineTest, camera_ppl_0002)
64 {
65 std::cout << "==========[test log] Check ppl: preview + capture success." << std::endl;
66 // Get the stream manager
67 cameraBase->AchieveStreamOperator();
68 // start stream
69 cameraBase->intents = {PREVIEW, STILL_CAPTURE};
70 cameraBase->StartStream(cameraBase->intents);
71 // Get preview
72 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
73 cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
74 // release stream
75 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
76 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
77 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
78 }
79
80 /**
81 * @tc.name: Check ppl
82 * @tc.desc: preview + video success.
83 * @tc.level: Level1
84 * @tc.size: MediumTest
85 * @tc.type: Function
86 */
TEST_F(UtestPipelineTest,camera_ppl_0003)87 TEST_F(UtestPipelineTest, camera_ppl_0003)
88 {
89 std::cout << "==========[test log] Check ppl: preview + video success." << std::endl;
90 // Get the stream manager
91 cameraBase->AchieveStreamOperator();
92 // start stream
93 cameraBase->intents = {PREVIEW, VIDEO};
94 cameraBase->StartStream(cameraBase->intents);
95 // Get preview
96 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
97 cameraBase->StartCapture(cameraBase->STREAM_ID_VIDEO, cameraBase->CAPTURE_ID_VIDEO, false, true);
98 // release stream
99 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_VIDEO};
100 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_VIDEO};
101 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
102 }
103
104 /**
105 * @tc.name: Check ppl
106 * @tc.desc: video mode without preview, system not support, expected return fail.
107 * @tc.level: Level2
108 * @tc.size: MediumTest
109 * @tc.type: Function
110 */
TEST_F(UtestPipelineTest,camera_ppl_0004)111 TEST_F(UtestPipelineTest, camera_ppl_0004)
112 {
113 std::cout << "==========[test log] Video mode without preview, system not support, ";
114 std::cout << "expected return fail." << std::endl;
115
116 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
117 cameraBase->AchieveStreamOperator();
118 // Create video stream
119 std::vector<std::shared_ptr<StreamInfo>> streamInfos;
120 std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
121 producer->SetQueueSize(8); // 8:set bufferqueue size
122 if (producer->GetQueueSize() != 8) { // 8:get bufferqueue size
123 std::cout << "~~~~~~~" << std::endl;
124 }
125 auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
126 cameraBase->BufferCallback(b, cameraBase->video_mode);
127 return;
128 };
129 producer->SetCallback(callback);
130 cameraBase->streamInfo = std::make_shared<StreamInfo>();
131 cameraBase->streamInfo->streamId_ = cameraBase->STREAM_ID_VIDEO;
132 cameraBase->streamInfo->width_ = 640; // 640:picture width // 640:picture width
133 cameraBase->streamInfo->height_ = 480; // 480:picture height // 480:picture height
134 cameraBase->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
135 cameraBase->streamInfo->dataspace_ = 10; // 10:picture dataspace
136 cameraBase->streamInfo->intent_ = VIDEO;
137 cameraBase->streamInfo->tunneledMode_ = 5; // 5:tunnel mode // 5:tunnel mode
138 cameraBase->streamInfo->bufferQueue_ = producer;
139 std::vector<std::shared_ptr<StreamInfo>>().swap(streamInfos);
140 streamInfos.push_back(cameraBase->streamInfo);
141 cameraBase->rc = cameraBase->streamOperator->CreateStreams(streamInfos);
142 EXPECT_EQ(false, cameraBase->rc == Camera::METHOD_NOT_SUPPORTED);
143 if (cameraBase->rc == Camera::METHOD_NOT_SUPPORTED) {
144 std::cout << "==========[test log] CreateStreams METHOD_NOT_SUPPORTED, streamId = ";
145 std::cout << cameraBase->STREAM_ID_VIDEO <<", intent = VIDEO" << std::endl;
146 } else {
147 std::cout << "==========[test log] CreateStreams fail, rc = " << cameraBase->rc << std::endl;
148 }
149
150 cameraBase->rc = cameraBase->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
151 EXPECT_EQ(false, cameraBase->rc == NO_ERROR);
152 if (cameraBase->rc == NO_ERROR) {
153 std::cout << "==========[test log] CommitStreams success." << std::endl;
154 } else {
155 std::cout << "==========[test log] CommitStreams fail, rc = ." << cameraBase->rc << std::endl;
156 }
157 }