1 /*
2 * Copyright (c) 2025 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 <chrono>
18 #include <thread>
19
20 #include "accesstoken_kit.h"
21 #include "avmeta_data.h"
22 #include "avplayback_state.h"
23 #include "avsession_errors.h"
24 #include "avsession_item.h"
25 #include "avsession_log.h"
26 #include "avsession_service.h"
27 #include "migrate_avsession_constant.h"
28 #include "migrate_avsession_manager.h"
29 #include "nativetoken_kit.h"
30 #include "token_setproc.h"
31 #include "system_ability_definition.h"
32
33 using namespace testing::ext;
34 using namespace OHOS::AVSession;
35
36 static std::shared_ptr<AVSessionService> g_AVSessionService {nullptr};
37 static std::shared_ptr<MigrateAVSessionProxy> g_MigrateAVSessionProxy {nullptr};
38
39 class MigrateAVSessionManagerTest : public testing::Test {
40 public:
41 static void SetUpTestCase();
42 static void TearDownTestCase();
43 void SetUp();
44 void TearDown();
45 };
46
SetUpTestCase()47 void MigrateAVSessionManagerTest::SetUpTestCase()
48 {
49 SLOGI("MigrateAVSessionManagerTest SetUpTestCase");
50 g_AVSessionService = std::make_shared<AVSessionService>(OHOS::AVSESSION_SERVICE_ID);
51 g_MigrateAVSessionProxy = std::make_shared<MigrateAVSessionProxy>(g_AVSessionService.get());
52 }
53
TearDownTestCase()54 void MigrateAVSessionManagerTest::TearDownTestCase()
55 {
56 SLOGI("MigrateAVSessionManagerTest TearDownTestCase");
57 }
58
SetUp()59 void MigrateAVSessionManagerTest::SetUp()
60 {
61 SLOGI("MigrateAVSessionManagerTest SetUp");
62 }
63
TearDown()64 void MigrateAVSessionManagerTest::TearDown()
65 {
66 SLOGI("MigrateAVSessionManagerTest TearDown");
67 }
68
69 /**
70 * @tc.name: CreateRemoteSessionProxy001
71 * @tc.desc: fail to create
72 * @tc.type: FUNC
73 * @tc.require:
74 */
75 static HWTEST_F(MigrateAVSessionManagerTest, CreateRemoteSessionProxy001, TestSize.Level1)
76 {
77 MigrateAVSessionManager::GetInstance().refs_.store(0);
78 std::shared_ptr<MigrateAVSessionProxy> proxy {nullptr};
79 std::string networkId = "";
80 std::string scene = "";
81 MigrateAVSessionManager::GetInstance().CreateRemoteSessionProxy(networkId, scene, proxy);
82 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
83 }
84
85 /**
86 * @tc.name: CreateRemoteSessionProxy002
87 * @tc.desc: fail to create
88 * @tc.type: FUNC
89 * @tc.require:
90 */
91 static HWTEST_F(MigrateAVSessionManagerTest, CreateRemoteSessionProxy002, TestSize.Level1)
92 {
93 MigrateAVSessionManager::GetInstance().refs_.store(0);
94 std::string networkId = "";
95 std::string scene = "";
96 MigrateAVSessionManager::GetInstance().CreateRemoteSessionProxy(networkId, scene, g_MigrateAVSessionProxy);
97 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
98 }
99
100 /**
101 * @tc.name: CreateRemoteSessionProxy003
102 * @tc.desc: fail to create
103 * @tc.type: FUNC
104 * @tc.require:
105 */
106 static HWTEST_F(MigrateAVSessionManagerTest, CreateRemoteSessionProxy003, TestSize.Level1)
107 {
108 MigrateAVSessionManager::GetInstance().refs_.store(0);
109 std::string networkId = std::string();
110 std::string scene;
111 MigrateAVSessionManager::GetInstance().CreateRemoteSessionProxy(networkId, scene, g_MigrateAVSessionProxy);
112 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
113 }
114
115 /**
116 * @tc.name: CreateRemoteSessionProxy004
117 * @tc.desc: fail to create
118 * @tc.type: FUNC
119 * @tc.require:
120 */
121 static HWTEST_F(MigrateAVSessionManagerTest, CreateRemoteSessionProxy004, TestSize.Level1)
122 {
123 MigrateAVSessionManager::GetInstance().refs_.store(0);
124 std::string networkId = "test";
125 std::string scene = "test";
126 MigrateAVSessionManager::GetInstance().CreateRemoteSessionProxy(networkId, scene, g_MigrateAVSessionProxy);
127 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
128 }
129
130 /**
131 * @tc.name: CreateRemoteSessionProxy005
132 * @tc.desc: fail to create
133 * @tc.type: FUNC
134 * @tc.require:
135 */
136 static HWTEST_F(MigrateAVSessionManagerTest, CreateRemoteSessionProxy005, TestSize.Level1)
137 {
138 MigrateAVSessionManager::GetInstance().refs_.store(0);
139 std::string networkId = "test";
140 std::string scene = "SuperLauncher-Dual";
141 MigrateAVSessionManager::GetInstance().CreateRemoteSessionProxy(networkId, scene, g_MigrateAVSessionProxy);
142 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 1);
143 }
144
145 /**
146 * @tc.name: CreateRemoteSessionProxy006
147 * @tc.desc: fail to create
148 * @tc.type: FUNC
149 * @tc.require:
150 */
151 static HWTEST_F(MigrateAVSessionManagerTest, CreateRemoteSessionProxy006, TestSize.Level1)
152 {
153 MigrateAVSessionManager::GetInstance().refs_.store(0);
154 std::string networkId = "test";
155 std::string scene = "MigrateWithNext";
156 MigrateAVSessionManager::GetInstance().proxyMap_.insert({scene, g_MigrateAVSessionProxy});
157 MigrateAVSessionManager::GetInstance().CreateRemoteSessionProxy(networkId, scene, g_MigrateAVSessionProxy);
158 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
159 }
160
161 /**
162 * @tc.name: ReleaseRemoteSessionProxy001
163 * @tc.desc: fail to release
164 * @tc.type: FUNC
165 * @tc.require:
166 */
167 static HWTEST_F(MigrateAVSessionManagerTest, ReleaseRemoteSessionProxy001, TestSize.Level1)
168 {
169 MigrateAVSessionManager::GetInstance().refs_.store(0);
170 std::string networkId = "test";
171 std::string scene = "";
172 MigrateAVSessionManager::GetInstance().ReleaseRemoteSessionProxy(networkId, scene);
173 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
174 }
175
176 /**
177 * @tc.name: ReleaseRemoteSessionProxy002
178 * @tc.desc: fail to release
179 * @tc.type: FUNC
180 * @tc.require:
181 */
182 static HWTEST_F(MigrateAVSessionManagerTest, ReleaseRemoteSessionProxy002, TestSize.Level1)
183 {
184 MigrateAVSessionManager::GetInstance().refs_.store(0);
185 std::string networkId = "test";
186 std::string scene = "";
187 MigrateAVSessionManager::GetInstance().ReleaseRemoteSessionProxy(networkId, scene);
188 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
189 }
190
191 /**
192 * @tc.name: ReleaseRemoteSessionProxy003
193 * @tc.desc: fail to release
194 * @tc.type: FUNC
195 * @tc.require:
196 */
197 static HWTEST_F(MigrateAVSessionManagerTest, ReleaseRemoteSessionProxy003, TestSize.Level1)
198 {
199 MigrateAVSessionManager::GetInstance().refs_.store(0);
200 std::string networkId = "test";
201 std::string scene = "test";
202 MigrateAVSessionManager::GetInstance().ReleaseRemoteSessionProxy(networkId, scene);
203 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
204 }
205
206 /**
207 * @tc.name: ReleaseRemoteSessionProxy004
208 * @tc.desc: fail to release
209 * @tc.type: FUNC
210 * @tc.require:
211 */
212 static HWTEST_F(MigrateAVSessionManagerTest, ReleaseRemoteSessionProxy004, TestSize.Level1)
213 {
214 MigrateAVSessionManager::GetInstance().refs_.store(0);
215 std::string networkId = "test";
216 std::string scene = "MigrateWithNext";
217 MigrateAVSessionManager::GetInstance().ReleaseRemoteSessionProxy(networkId, scene);
218 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
219 }
220
221 /**
222 * @tc.name: ReleaseRemoteSessionProxy005
223 * @tc.desc: fail to release
224 * @tc.type: FUNC
225 * @tc.require:
226 */
227 static HWTEST_F(MigrateAVSessionManagerTest, ReleaseRemoteSessionProxy005, TestSize.Level1)
228 {
229 MigrateAVSessionManager::GetInstance().refs_.store(0);
230 std::string networkId = "test";
231 std::string scene = "SuperLauncher-Dual";
232 MigrateAVSessionManager::GetInstance().CreateRemoteSessionProxy(networkId, scene, g_MigrateAVSessionProxy);
233 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
234 MigrateAVSessionManager::GetInstance().ReleaseRemoteSessionProxy(networkId, scene);
235 }
236
237 /**
238 * @tc.name: ReleaseRemoteSessionProxy006
239 * @tc.desc: fail to release
240 * @tc.type: FUNC
241 * @tc.require:
242 */
243 static HWTEST_F(MigrateAVSessionManagerTest, ReleaseRemoteSessionProxy006, TestSize.Level1)
244 {
245 MigrateAVSessionManager::GetInstance().refs_.store(0);
246 std::string networkId = "test";
247 std::string scene = "test";
248 MigrateAVSessionManager::GetInstance().ReleaseRemoteSessionProxy(networkId, scene);
249 EXPECT_EQ(MigrateAVSessionManager::GetInstance().refs_.load(memory_order_relaxed), 0);
250 }
251