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 except 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
16 #include <gtest/gtest.h>
17 #include "dcamera_client_demo.h"
18 #include "distributed_hardware_log.h"
19
20 #include "access_token.h"
21 #include "accesstoken_kit.h"
22 #include "hap_token_info.h"
23 #include "ipc_skeleton.h"
24 #include "nativetoken_kit.h"
25 #include "token_setproc.h"
26
27 using namespace testing::ext;
28 using namespace OHOS::DistributedHardware;
29
30 namespace OHOS {
31 namespace DistributedHardware {
32 constexpr int32_t CAMERA_OK = 0;
33 constexpr int32_t SLEEP_OK_SECOND = 2;
34 constexpr int32_t SLEEP_FIVE_SECOND = 5;
35
36 class DCameraClientAutomaticTest : public testing::Test {
37 public:
38 static void SetUpTestCase(void);
39 static void TearDownTestCase(void);
40 void SetUp();
41 void TearDown();
42 DCameraClientAutomaticTest();
43 };
44
SetUpTestCase(void)45 void DCameraClientAutomaticTest::SetUpTestCase(void)
46 {
47 uint64_t tokenId;
48 const char *perms[2];
49 perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC";
50 perms[1] = "ohos.permission.CAMERA";
51 NativeTokenInfoParams infoInstance = {
52 .dcapsNum = 0,
53 .permsNum = 2,
54 .aclsNum = 0,
55 .dcaps = NULL,
56 .perms = perms,
57 .acls = NULL,
58 .processName = "dcamera_client_demo",
59 .aplStr = "system_basic",
60 };
61 tokenId = GetAccessTokenId(&infoInstance);
62 SetSelfTokenID(tokenId);
63 OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
64 sleep(SLEEP_OK_SECOND);
65 }
66
TearDownTestCase(void)67 void DCameraClientAutomaticTest::TearDownTestCase(void) {}
SetUp(void)68 void DCameraClientAutomaticTest::SetUp(void) {}
TearDown(void)69 void DCameraClientAutomaticTest::TearDown(void)
70 {
71 ReleaseResource();
72 sleep(SLEEP_OK_SECOND);
73 }
DCameraClientAutomaticTest(void)74 DCameraClientAutomaticTest::DCameraClientAutomaticTest(void) {}
75
76 /**
77 * @tc.number : DCameraTest_0100
78 * @tc.name :InitCameraStandard()
79 * @tc.desc : rear camera acquisition
80 * @tc.desc : swicth distributed cmera
81 * @tc.type : FUNC
82 * @tc.size : Medium test
83 */
84 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0100, TestSize.Level1)
85 {
86 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK);
87 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
88 }
89
90 /**
91 * @tc.number : DCameraTest_0200
92 * @tc.name :InitCameraStandard()
93 * @tc.desc : rear camera preview
94 * @tc.desc : swicth distributed cmera
95 * @tc.type : FUNC
96 * @tc.size : Medium test
97 */
98 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0200, TestSize.Level1)
99 {
100 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK);
101 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
102 InitCaptureInfo(0, 0);
103 InitPhotoOutput();
104 InitPreviewOutput();
105 ConfigCaptureSession();
106 sleep(SLEEP_FIVE_SECOND);
107 }
108
109 /**
110 * @tc.number : DCameraTest_0300
111 * @tc.name :InitCameraStandard()
112 * @tc.desc : front camera acquisition
113 * @tc.desc : swicth distributed cmera
114 * @tc.type : FUNC
115 * @tc.size : Medium test
116 */
117 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0300, TestSize.Level1)
118 {
119 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT);
120 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
121 }
122
123 /**
124 * @tc.number : DCameraTest_0400
125 * @tc.name :InitCameraStandard()
126 * @tc.desc : front camera preview
127 * @tc.desc : swicth distributed cmera
128 * @tc.type : FUNC
129 * @tc.size : Medium test
130 */
131 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0400, TestSize.Level1)
132 {
133 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT);
134 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
135 InitCaptureInfo(0, 0);
136 InitPhotoOutput();
137 InitPreviewOutput();
138 ConfigCaptureSession();
139 sleep(SLEEP_FIVE_SECOND);
140 }
141
142 /**
143 * @tc.number : DCameraTest_0500
144 * @tc.name :InitCameraStandard()
145 * @tc.desc : front and rear camera switching preview
146 * @tc.desc : swicth distributed cmera
147 * @tc.type : FUNC
148 * @tc.size : Medium test
149 */
150 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0500, TestSize.Level1)
151 {
152 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT);
153 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
154 InitCaptureInfo(0, 0);
155 InitPhotoOutput();
156 InitPreviewOutput();
157 ConfigCaptureSession();
158 sleep(SLEEP_FIVE_SECOND);
159 ReleaseResource();
160 sleep(SLEEP_OK_SECOND);
161
162 ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK);
163 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
164 InitCaptureInfo(0, 0);
165 InitPhotoOutput();
166 InitPreviewOutput();
167 ConfigCaptureSession();
168 sleep(SLEEP_FIVE_SECOND);
169 ReleaseResource();
170 sleep(SLEEP_OK_SECOND);
171
172 ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT);
173 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
174 InitCaptureInfo(0, 0);
175 InitPhotoOutput();
176 InitPreviewOutput();
177 ConfigCaptureSession();
178 sleep(SLEEP_FIVE_SECOND);
179 }
180
181 /**
182 * @tc.number : DCameraTest_0600
183 * @tc.name :Capture()
184 * @tc.desc : rear camera taking photos
185 * @tc.desc : swicth distributed cmera
186 * @tc.type : FUNC
187 * @tc.size : Medium test
188 */
189 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0600, TestSize.Level1)
190 {
191 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK);
192 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
193 InitCaptureInfo(0, 0);
194 InitPhotoOutput();
195 InitPreviewOutput();
196 ConfigCaptureSession();
197 ret = Capture();
198 EXPECT_EQ(CAMERA_OK, ret) << "Capture fail";
199 sleep(SLEEP_FIVE_SECOND);
200 }
201
202 /**
203 * @tc.number : DCameraTest_0700
204 * @tc.name :Capture()
205 * @tc.desc : front camera taking photos
206 * @tc.desc : swicth distributed cmera
207 * @tc.type : FUNC
208 * @tc.size : Medium test
209 */
210 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0700, TestSize.Level1)
211 {
212 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT);
213 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
214 InitCaptureInfo(0, 0);
215 InitPhotoOutput();
216 InitPreviewOutput();
217 ConfigCaptureSession();
218 ret = Capture();
219 EXPECT_EQ(CAMERA_OK, ret) << "Capture fail";
220 sleep(SLEEP_FIVE_SECOND);
221 }
222
223 /**
224 * @tc.number : DCameraTest_0800
225 * @tc.name :Capture()
226 * @tc.desc : flash photography
227 * @tc.desc : swicth distributed cmera
228 * @tc.type : FUNC
229 * @tc.size : Medium test
230 */
231 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0800, TestSize.Level1)
232 {
233 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK);
234 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
235 InitCaptureInfo(0, 0);
236 InitPhotoOutput();
237 InitPreviewOutput();
238 ConfigCaptureSession();
239 ConfigFocusFlashAndExposure(false);
240 ret = Capture();
241 EXPECT_EQ(CAMERA_OK, ret) << "Capture fail";
242 sleep(SLEEP_FIVE_SECOND);
243 }
244
245 /**
246 * @tc.number : DCameraTest_0900
247 * @tc.name :Capture()
248 * @tc.desc : preview using resolution
249 * @tc.desc : swicth distributed cmera
250 * @tc.type : FUNC
251 * @tc.size : Medium test
252 */
253 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_0900, TestSize.Level1)
254 {
255 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK);
256 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
257 std::vector<CameraStandard::Size> previewResolution = {};
258 ret = GetPreviewProfiles(previewResolution);
259 EXPECT_EQ(CAMERA_OK, ret) << "GetPreviewProfiles fail";
260 CameraStandard::Size size = previewResolution.back();
261 InitCaptureInfo(size.width, size.height);
262 InitPhotoOutput();
263 InitPreviewOutput();
264 ConfigCaptureSession();
265 ConfigFocusFlashAndExposure(false);
266 ret = Capture();
267 EXPECT_EQ(CAMERA_OK, ret) << "Capture fail";
268 sleep(SLEEP_FIVE_SECOND);
269 }
270
271 /**
272 * @tc.number : DCameraTest_1000
273 * @tc.name :Capture()
274 * @tc.desc : front and rear camera switching preview 50 times
275 * @tc.desc : swicth distributed cmera
276 * @tc.type : FUNC
277 * @tc.size : Medium test
278 */
279 HWTEST_F(DCameraClientAutomaticTest, DCameraTest_1000, TestSize.Level1)
280 {
281 int32_t i = 50;
282 while (i > 0) {
283 int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK);
284 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
285 InitCaptureInfo(0, 0);
286 InitPhotoOutput();
287 InitPreviewOutput();
288 ConfigCaptureSession();
289 sleep(SLEEP_FIVE_SECOND);
290 ReleaseResource();
291 sleep(SLEEP_OK_SECOND);
292
293 ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT);
294 EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail";
295 InitCaptureInfo(0, 0);
296 InitPhotoOutput();
297 InitPreviewOutput();
298 ConfigCaptureSession();
299 sleep(SLEEP_FIVE_SECOND);
300 ReleaseResource();
301 sleep(SLEEP_OK_SECOND);
302 i--;
303 }
304 }
305 } // namespace DistributedHardware
306 } // namespace OHOS
307