1 /*
2 * Copyright (c) 2022 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 #define private public
18 #include "dcamera_source_service_ipc.h"
19 #undef private
20
21 #include "if_system_ability_manager.h"
22 #include "iservice_registry.h"
23 #include "anonymous_string.h"
24 #include "distributed_camera_constants.h"
25 #include "distributed_camera_errno.h"
26 #include "distributed_hardware_log.h"
27
28 using namespace testing::ext;
29
30 namespace OHOS {
31 namespace DistributedHardware {
32 class DCameraSourceServiceIpcTest : public testing::Test {
33 public:
34 static void SetUpTestCase(void);
35 static void TearDownTestCase(void);
36 void SetUp();
37 void TearDown();
38 };
39
SetUpTestCase(void)40 void DCameraSourceServiceIpcTest::SetUpTestCase(void)
41 {
42 DHLOGI("DCameraSourceServiceIpcTest::SetUpTestCase");
43 }
44
TearDownTestCase(void)45 void DCameraSourceServiceIpcTest::TearDownTestCase(void)
46 {
47 DHLOGI("DCameraSourceServiceIpcTest::TearDownTestCase");
48 }
49
SetUp(void)50 void DCameraSourceServiceIpcTest::SetUp(void)
51 {
52 DHLOGI("DCameraSourceServiceIpcTest::SetUp");
53 }
54
TearDown(void)55 void DCameraSourceServiceIpcTest::TearDown(void)
56 {
57 DHLOGI("DCameraSourceServiceIpcTest::TearDown");
58 }
59
60 /**
61 * @tc.name: dcamera_source_service_ipc_test_001
62 * @tc.desc: Verify Init func.
63 * @tc.type: FUNC
64 * @tc.require: issue
65 */
66 HWTEST_F(DCameraSourceServiceIpcTest, dcamera_source_service_ipc_test_001, TestSize.Level1)
67 {
68 DHLOGI("DCameraSourceServiceIpcTest::dcamera_source_service_ipc_test_001");
69 DCameraSourceServiceIpc::GetInstance().Init();
70 EXPECT_EQ(DCameraSourceServiceIpc::GetInstance().isInit_, true);
71 DCameraSourceServiceIpc::GetInstance().Init();
72 EXPECT_EQ(DCameraSourceServiceIpc::GetInstance().isInit_, true);
73 }
74
75 /**
76 * @tc.name: dcamera_source_service_ipc_test_002
77 * @tc.desc: Verify UnInit func.
78 * @tc.type: FUNC
79 * @tc.require: issue
80 */
81 HWTEST_F(DCameraSourceServiceIpcTest, dcamera_source_service_ipc_test_002, TestSize.Level1)
82 {
83 DHLOGI("DCameraSourceServiceIpcTest::dcamera_source_service_ipc_test_002");
84 DCameraSourceServiceIpc::GetInstance().Init();
85 EXPECT_EQ(DCameraSourceServiceIpc::GetInstance().isInit_, true);
86 DCameraSourceServiceIpc::GetInstance().UnInit();
87 EXPECT_EQ(DCameraSourceServiceIpc::GetInstance().isInit_, false);
88 DCameraSourceServiceIpc::GetInstance().UnInit();
89 EXPECT_EQ(DCameraSourceServiceIpc::GetInstance().isInit_, false);
90 }
91
92 /**
93 * @tc.name: dcamera_source_service_ipc_test_003
94 * @tc.desc: Verify GetSinkRemoteCamSrv func.
95 * @tc.type: FUNC
96 * @tc.require: issue
97 */
98 HWTEST_F(DCameraSourceServiceIpcTest, dcamera_source_service_ipc_test_003, TestSize.Level1)
99 {
100 DHLOGI("DCameraSourceServiceIpcTest::dcamera_source_service_ipc_test_003");
101 std::string deviceId = "";
102 DCameraSourceServiceIpc::GetInstance().Init();
103 sptr<IDistributedCameraSink> camSinkSrv = DCameraSourceServiceIpc::GetInstance().GetSinkRemoteCamSrv(deviceId);
104 EXPECT_EQ(nullptr, camSinkSrv);
105 DCameraSourceServiceIpc::GetInstance().UnInit();
106 EXPECT_EQ(DCameraSourceServiceIpc::GetInstance().isInit_, false);
107 }
108
109 /**
110 * @tc.name: dcamera_source_service_ipc_test_004
111 * @tc.desc: Verify DeleteSinkRemoteCamSrv func.
112 * @tc.type: FUNC
113 * @tc.require: issue
114 */
115 HWTEST_F(DCameraSourceServiceIpcTest, dcamera_source_service_ipc_test_004, TestSize.Level1)
116 {
117 DHLOGI("DCameraSourceServiceIpcTest::dcamera_source_service_ipc_test_004");
118 std::string deviceId = "test004";
119 DCameraSourceServiceIpc::GetInstance().Init();
120 sptr<IDistributedCameraSink> camSinkSrv = DCameraSourceServiceIpc::GetInstance().GetSinkRemoteCamSrv(deviceId);
121 DCameraSourceServiceIpc::GetInstance().remoteSinks_.emplace(deviceId, camSinkSrv);
122 DCameraSourceServiceIpc::GetInstance().DeleteSinkRemoteCamSrv(deviceId);
123 deviceId = "test0004";
124 DCameraSourceServiceIpc::GetInstance().DeleteSinkRemoteCamSrv(deviceId);
125 camSinkSrv = nullptr;
126 DCameraSourceServiceIpc::GetInstance().remoteSinks_.emplace(deviceId, camSinkSrv);
127 DCameraSourceServiceIpc::GetInstance().DeleteSinkRemoteCamSrv(deviceId);
128 DCameraSourceServiceIpc::GetInstance().UnInit();
129 EXPECT_EQ(nullptr, camSinkSrv);
130 }
131
132 /**
133 * @tc.name: dcamera_source_service_ipc_test_005
134 * @tc.desc: Verify GetSinkRemoteCamSrv func.
135 * @tc.type: FUNC
136 * @tc.require: issue
137 */
138 HWTEST_F(DCameraSourceServiceIpcTest, dcamera_source_service_ipc_test_005, TestSize.Level1)
139 {
140 DHLOGI("DCameraSourceServiceIpcTest::dcamera_source_service_ipc_test_005");
141 std::string deviceId = "";
142 DCameraSourceServiceIpc::GetInstance().Init();
143 sptr<ISystemAbilityManager> samgr =
144 SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
145 wptr<IRemoteObject> remote = samgr->GetSystemAbility(DISTRIBUTED_HARDWARE_CAMERA_SINK_SA_ID);
146 DCameraSourceServiceIpc::GetInstance().OnSinkRemoteCamSrvDied(remote);
147 DCameraSourceServiceIpc::GetInstance().UnInit();
148 EXPECT_EQ(DCameraSourceServiceIpc::GetInstance().isInit_, false);
149 }
150 }
151 }