1 /*
2 * Copyright (c) 2023 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 "camera_3a_uttest.h"
16
17 using namespace OHOS;
18 using namespace std;
19 using namespace testing::ext;
20 using namespace OHOS::Camera;
21
SetUpTestCase(void)22 void Camera3AUtTest::SetUpTestCase(void) {}
TearDownTestCase(void)23 void Camera3AUtTest::TearDownTestCase(void) {}
SetUp(void)24 void Camera3AUtTest::SetUp(void)
25 {
26 cameraTest = std::make_shared<OHOS::Camera::Test>();
27 cameraTest->Init();
28 cameraTest->Open();
29 }
30
TearDown(void)31 void Camera3AUtTest::TearDown(void)
32 {
33 cameraTest->Close();
34 }
35
36 /**
37 * @tc.name: updateSetting AE
38 * @tc.desc: preview, updateSetting OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success
39 * @tc.size: MediumTest
40 * @tc.type: Function
41 */
42 HWTEST_F(Camera3AUtTest, Camera_3a_001, TestSize.Level1)
43 {
44 cameraTest->intents = {PREVIEW};
45 cameraTest->StartStream(cameraTest->intents);
46 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
47 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
48 int32_t expo = 0xa0;
49 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
50 std::vector<uint8_t> metaVec;
51 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
52 cameraTest->cameraDevice->UpdateSettings(metaVec);
53 sleep(1);
54 cameraTest->GetCameraMetadata();
55 cameraTest->captureIds = {cameraTest->captureIdPreview};
56 cameraTest->streamIds = {cameraTest->streamIdPreview};
57 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
58 }
59
60 /**
61 * @tc.name: updateSetting AE
62 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_AUTO, success
63 * @tc.size: MediumTest
64 * @tc.type: Function
65 */
66 HWTEST_F(Camera3AUtTest, Camera_3a_002, TestSize.Level1)
67 {
68 cameraTest->intents = {PREVIEW};
69 cameraTest->StartStream(cameraTest->intents);
70 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
71 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
72 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
73 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
74 std::vector<uint8_t> metaVec;
75 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
76 cameraTest->cameraDevice->UpdateSettings(metaVec);
77 sleep(1);
78 cameraTest->GetCameraMetadata();
79 cameraTest->captureIds = {cameraTest->captureIdPreview};
80 cameraTest->streamIds = {cameraTest->streamIdPreview};
81 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
82 }
83
84 /**
85 * @tc.name: updateSetting AE
86 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_INCANDESCENT, success
87 * @tc.size: MediumTest
88 * @tc.type: Function
89 */
90 HWTEST_F(Camera3AUtTest, Camera_3a_003, TestSize.Level1)
91 {
92 cameraTest->intents = {PREVIEW};
93 cameraTest->StartStream(cameraTest->intents);
94 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
95 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
96 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_INCANDESCENT;
97 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
98 std::vector<uint8_t> metaVec;
99 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
100 cameraTest->cameraDevice->UpdateSettings(metaVec);
101 sleep(1);
102 cameraTest->GetCameraMetadata();
103 cameraTest->captureIds = {cameraTest->captureIdPreview};
104 cameraTest->streamIds = {cameraTest->streamIdPreview};
105 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
106 }
107
108 /**
109 * @tc.name: updateSetting AE
110 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_FLUORESENT, success
111 * @tc.size: MediumTest
112 * @tc.type: Function
113 */
114 HWTEST_F(Camera3AUtTest, Camera_3a_004, TestSize.Level1)
115 {
116 cameraTest->intents = {PREVIEW};
117 cameraTest->StartStream(cameraTest->intents);
118 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
119 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
120 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_FLUORESCENT;
121 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
122 std::vector<uint8_t> metaVec;
123 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
124 cameraTest->cameraDevice->UpdateSettings(metaVec);
125 sleep(1);
126 cameraTest->GetCameraMetadata();
127 cameraTest->captureIds = {cameraTest->captureIdPreview};
128 cameraTest->streamIds = {cameraTest->streamIdPreview};
129 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
130 }
131
132 /**
133 * @tc.name: updateSetting AE
134 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_DAYLIGHT, success
135 * @tc.size: MediumTest
136 * @tc.type: Function
137 */
138 HWTEST_F(Camera3AUtTest, Camera_3a_005, TestSize.Level1)
139 {
140 cameraTest->intents = {PREVIEW};
141 cameraTest->StartStream(cameraTest->intents);
142 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
143 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
144 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_DAYLIGHT;
145 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
146 std::vector<uint8_t> metaVec;
147 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
148 cameraTest->cameraDevice->UpdateSettings(metaVec);
149 sleep(1);
150 cameraTest->GetCameraMetadata();
151 cameraTest->captureIds = {cameraTest->captureIdPreview};
152 cameraTest->streamIds = {cameraTest->streamIdPreview};
153 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
154 }
155
156 /**
157 * @tc.name: updateSetting AE
158 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT, success
159 * @tc.size: MediumTest
160 * @tc.type: Function
161 */
162 HWTEST_F(Camera3AUtTest, Camera_3a_006, TestSize.Level1)
163 {
164 cameraTest->intents = {PREVIEW};
165 cameraTest->StartStream(cameraTest->intents);
166 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
167 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
168 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT;
169 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
170 std::vector<uint8_t> metaVec;
171 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
172 cameraTest->cameraDevice->UpdateSettings(metaVec);
173 sleep(1);
174 cameraTest->GetCameraMetadata();
175 cameraTest->captureIds = {cameraTest->captureIdPreview};
176 cameraTest->streamIds = {cameraTest->streamIdPreview};
177 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
178 }
179
180 /**
181 * @tc.name: updateSetting AE
182 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_TWILIGHT, success
183 * @tc.size: MediumTest
184 * @tc.type: Function
185 */
186 HWTEST_F(Camera3AUtTest, Camera_3a_007, TestSize.Level1)
187 {
188 cameraTest->intents = {PREVIEW};
189 cameraTest->StartStream(cameraTest->intents);
190 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
191 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
192 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
193 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
194 std::vector<uint8_t> metaVec;
195 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
196 cameraTest->cameraDevice->UpdateSettings(metaVec);
197 sleep(1);
198 cameraTest->GetCameraMetadata();
199 cameraTest->captureIds = {cameraTest->captureIdPreview};
200 cameraTest->streamIds = {cameraTest->streamIdPreview};
201 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
202 }
203
204 /**
205 * @tc.name: updateSetting AE
206 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_SHADE, success
207 * @tc.size: MediumTest
208 * @tc.type: Function
209 */
210 HWTEST_F(Camera3AUtTest, Camera_3a_008, TestSize.Level1)
211 {
212 cameraTest->intents = {PREVIEW};
213 cameraTest->StartStream(cameraTest->intents);
214 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
215 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
216 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_SHADE;
217 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
218 std::vector<uint8_t> metaVec;
219 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
220 cameraTest->cameraDevice->UpdateSettings(metaVec);
221 sleep(1);
222 cameraTest->GetCameraMetadata();
223 cameraTest->captureIds = {cameraTest->captureIdPreview};
224 cameraTest->streamIds = {cameraTest->streamIdPreview};
225 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
226 }
227
228 /**
229 * @tc.name: updateSetting AE
230 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_OFF, success
231 * @tc.size: MediumTest
232 * @tc.type: Function
233 */
234 HWTEST_F(Camera3AUtTest, Camera_3a_009, TestSize.Level1)
235 {
236 cameraTest->intents = {PREVIEW};
237 cameraTest->StartStream(cameraTest->intents);
238 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
239 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
240 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_OFF;
241 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
242 std::vector<uint8_t> metaVec;
243 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
244 cameraTest->cameraDevice->UpdateSettings(metaVec);
245 sleep(1);
246 cameraTest->GetCameraMetadata();
247 cameraTest->captureIds = {cameraTest->captureIdPreview};
248 cameraTest->streamIds = {cameraTest->streamIdPreview};
249 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
250 }
251
252 /**
253 * @tc.name: updateSetting AE
254 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_OFF, success
255 * @tc.size: MediumTest
256 * @tc.type: Function
257 */
258 HWTEST_F(Camera3AUtTest, Camera_3a_010, TestSize.Level1)
259 {
260 cameraTest->intents = {PREVIEW};
261 cameraTest->StartStream(cameraTest->intents);
262 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
263 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
264 uint8_t awbMode = OHOS_CAMERA_AE_MODE_ON_ALWAYS_FLASH;
265 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
266 std::vector<uint8_t> metaVec;
267 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
268 cameraTest->cameraDevice->UpdateSettings(metaVec);
269 sleep(1);
270 cameraTest->GetCameraMetadata();
271 cameraTest->captureIds = {cameraTest->captureIdPreview};
272 cameraTest->streamIds = {cameraTest->streamIdPreview};
273 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
274 }
275
276 /**
277 * @tc.name: updateSetting AE
278 * @tc.desc: preview set 3A, then close device, and preview, 3A is reset
279 * @tc.size: MediumTest
280 * @tc.type: Function
281 */
282 HWTEST_F(Camera3AUtTest, Camera_3a_011, TestSize.Level1)
283 {
284 cameraTest->intents = {PREVIEW};
285 cameraTest->StartStream(cameraTest->intents);
286 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
287 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
288 int32_t expo = 0xa0;
289 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
290 std::vector<uint8_t> metaVec;
291 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
292 cameraTest->cameraDevice->UpdateSettings(metaVec);
293 cameraTest->captureIds = {cameraTest->captureIdPreview};
294 cameraTest->streamIds = {cameraTest->streamIdPreview};
295 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
296 cameraTest->cameraDevice->Close();
297 cameraTest->consumerMap_.clear();
298 cameraTest = std::make_shared<OHOS::Camera::Test>();
299 cameraTest->Init();
300 cameraTest->Open();
301 cameraTest->intents = {PREVIEW};
302 cameraTest->StartStream(cameraTest->intents);
303 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
304 cameraTest->captureIds = {cameraTest->captureIdPreview};
305 cameraTest->streamIds = {cameraTest->streamIdPreview};
306 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
307 }
308
309
310 /**
311 * @tc.name: updateSetting AE
312 * @tc.desc: preview , updatesetting different 3A params together
313 * @tc.size: MediumTest
314 * @tc.type: Function
315 */
316 HWTEST_F(Camera3AUtTest, Camera_3a_012, TestSize.Level1)
317 {
318 cameraTest->intents = {PREVIEW};
319 cameraTest->StartStream(cameraTest->intents);
320 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
321 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
322 int32_t expo = 0xa0;
323 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
324 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
325 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
326 std::vector<uint8_t> metaVec;
327 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
328 cameraTest->cameraDevice->UpdateSettings(metaVec);
329 sleep(3); // sleep for 3 seconds
330 cameraTest->captureIds = {cameraTest->captureIdPreview};
331 cameraTest->streamIds = {cameraTest->streamIdPreview};
332 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
333 }
334
335 /**
336 * @tc.name: updateSetting AE without preview
337 * @tc.desc: updatesetting OHOS_CAMERA_AE_EXMPENSATION, without preview, success
338 * @tc.size: MediumTest
339 * @tc.type: Function
340 */
341 HWTEST_F(Camera3AUtTest, Camera_3a_013, TestSize.Level1)
342 {
343 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 2000);
344 int32_t expo = 0xa0;
345 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
346 std::vector<uint8_t> metaVec;
347 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
348 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
349 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
350 }
351
352 /**
353 * @tc.name: updateSetting AE without preview
354 * @tc.desc: updatesetting OHOS_CAMERA_AE_EXMPENSATION, without preview, success
355 * @tc.size: MediumTest
356 * @tc.type: Function
357 */
358 HWTEST_F(Camera3AUtTest, Camera_3a_014, TestSize.Level1)
359 {
360 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 2000);
361 int32_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
362 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
363 std::vector<uint8_t> metaVec;
364 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
365 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
366 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
367 }