1 /*
2 * Copyright (c) 2022-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 "audio_resource_service.h"
18 #include "audio_workgroup.h"
19 #include "audio_errors.h"
20 #include "iipc_stream.h"
21 #include "message_parcel.h"
22 #include "parcel.h"
23
24 using namespace testing::ext;
25 namespace OHOS {
26 namespace AudioStandard {
27 class AudioResourceServiceUnitTest : public testing::Test {
28 public:
29 static void SetUpTestCase(void);
30 static void TearDownTestCase(void);
31 void SetUp();
32 void TearDown();
33 };
34
SetUpTestCase(void)35 void AudioResourceServiceUnitTest::SetUpTestCase(void)
36 {
37 // input testsuit setup step,setup invoked before all testcases
38 }
39
TearDownTestCase(void)40 void AudioResourceServiceUnitTest::TearDownTestCase(void)
41 {
42 // input testsuit teardown step,teardown invoked after all testcases
43 }
44
SetUp(void)45 void AudioResourceServiceUnitTest::SetUp(void)
46 {
47 // input testcase setup step,setup invoked before each testcases
48 }
49
TearDown(void)50 void AudioResourceServiceUnitTest::TearDown(void)
51 {
52 // input testcase teardown step,teardown invoked after each testcases
53 }
54
55 AudioResourceService::AudioWorkgroupDeathRecipient deathRecipient;
56 AudioResourceService audioResourceService;
57 const int32_t testRtgId = 2;
58 static constexpr int32_t AUDIO_MAX_PROCESS = 2;
59
60 class RemoteObjectTestStub : public IRemoteObject {
61 public:
RemoteObjectTestStub()62 RemoteObjectTestStub() : IRemoteObject(u"IRemoteObject") {}
GetObjectRefCount()63 int32_t GetObjectRefCount() { return 0; };
SendRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)64 int SendRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { return 0; };
AddDeathRecipient(const sptr<DeathRecipient> & recipient)65 bool AddDeathRecipient(const sptr<DeathRecipient> &recipient) { return true; };
RemoveDeathRecipient(const sptr<DeathRecipient> & recipient)66 bool RemoveDeathRecipient(const sptr<DeathRecipient> &recipient) { return true; };
Dump(int fd,const std::vector<std::u16string> & args)67 int Dump(int fd, const std::vector<std::u16string> &args) { return 0; };
68 DECLARE_INTERFACE_DESCRIPTOR(u"RemoteObjectTestStub");
69 };
70
71 /**
72 * @tc.name : Test deathRecipient
73 * @tc.type : FUNC
74 * @tc.number: DeathRecipient_001
75 * @tc.desc : Test OnRemoteDied when param is nullptr
76 */
77 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_001, TestSize.Level0)
78 {
__anonb1fc46530102() 79 std::function<void()> diedCb = []() {
80 };
81
82 deathRecipient.diedCb_ = diedCb;
83 deathRecipient.OnRemoteDied(nullptr);
84 EXPECT_TRUE(deathRecipient.diedCb_ != nullptr);
85 }
86
87 /**
88 * @tc.name : Test deathRecipient
89 * @tc.type : FUNC
90 * @tc.number: DeathRecipient_002
91 * @tc.desc : Test OnRemoteDied SetNotifyCb called
92 */
93 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_002, TestSize.Level0)
94 {
__anonb1fc46530202() 95 std::function<void()> func = []() {
96 };
97
98 deathRecipient.diedCb_ = func;
99 deathRecipient.SetNotifyCb(func);
100 EXPECT_TRUE(deathRecipient.diedCb_);
101 }
102
103 /**
104 * @tc.name : Test deathRecipient
105 * @tc.type : FUNC
106 * @tc.number: DeathRecipient_003
107 * @tc.desc : Test OnWorkgroupRemoteDied when called
108 */
109 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_003, TestSize.Level0)
110 {
111 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
112 sptr<IRemoteObject> remoteObj = nullptr;
113
114 audioResourceService.audioWorkgroupMap_[1].groups[testRtgId] = {workgroup};
115 audioResourceService.OnWorkgroupRemoteDied(workgroup, remoteObj);
116 EXPECT_EQ(audioResourceService.audioWorkgroupMap_[1].groups.size(), 0);
117 EXPECT_EQ(audioResourceService.audioWorkgroupMap_[1].groups[testRtgId], nullptr);
118 }
119
120 /**
121 * @tc.name : Test deathRecipient
122 * @tc.type : FUNC
123 * @tc.number: DeathRecipient_004
124 * @tc.desc : Test OnWorkgroupRemoteDied when audioWorkgroupMap_ zero
125 */
126 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_004, TestSize.Level0)
127 {
128 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
129 sptr<IRemoteObject> remoteObj = nullptr;
130
131 audioResourceService.audioWorkgroupMap_[1].groups[testRtgId] = {workgroup};
132 audioResourceService.OnWorkgroupRemoteDied(workgroup, remoteObj);
133 EXPECT_EQ(audioResourceService.audioWorkgroupMap_.count(1), 0);
134 }
135
136 /**
137 * @tc.name : Test deathRecipient
138 * @tc.type : FUNC
139 * @tc.number: DeathRecipient_005
140 * @tc.desc : Test OnWorkgroupRemoteDied when audioWorkgroupMap_ empty
141 */
142 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_005, TestSize.Level0)
143 {
144 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
145 sptr<IRemoteObject> remoteObj = nullptr;
146
147 audioResourceService.OnWorkgroupRemoteDied(workgroup, remoteObj);
148 EXPECT_TRUE(audioResourceService.audioWorkgroupMap_.empty());
149 }
150
151 /**
152 * @tc.name : Test deathRecipient OnWorkgroupRemoteDied
153 * @tc.type : FUNC
154 * @tc.number: DeathRecipient_006
155 * @tc.desc : Test OnWorkgroupRemoteDied find audioWorkgroupMap_
156 */
157 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_006, TestSize.Level0)
158 {
159 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
160 sptr<IRemoteObject> remoteObj = new RemoteObjectTestStub();
161
162 audioResourceService.ReleaseWorkgroupDeathRecipient(workgroup, remoteObj);
163 EXPECT_EQ(audioResourceService.deathRecipientMap_.find(workgroup), audioResourceService.deathRecipientMap_.end());
164 }
165
166 /**
167 * @tc.name : Test deathRecipient
168 * @tc.type : FUNC
169 * @tc.number: DeathRecipient_007
170 * @tc.desc : Test ReleaseWorkgroupDeathRecipient when different remote object
171 */
172 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_007, TestSize.Level0)
173 {
174 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
175 sptr<IRemoteObject> remoteObj1 = new RemoteObjectTestStub();
176 sptr<IRemoteObject> remoteObj2 = new RemoteObjectTestStub();
177
178 audioResourceService.deathRecipientMap_[workgroup] = std::make_pair(remoteObj1, nullptr);
179 audioResourceService.ReleaseWorkgroupDeathRecipient(workgroup, remoteObj2);
180 EXPECT_EQ(audioResourceService.deathRecipientMap_[workgroup].first, remoteObj1);
181 }
182
183 /**
184 * @tc.name : Test deathRecipient
185 * @tc.type : FUNC
186 * @tc.number: DeathRecipient_008
187 * @tc.desc : Test ReleaseWorkgroupDeathRecipient when find workgroup
188 */
189 HWTEST(AudioResourceServiceUnitTest, DeathRecipient_008, TestSize.Level0)
190 {
191 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
192 sptr<IRemoteObject> remoteObj = new RemoteObjectTestStub();
193
194 audioResourceService.deathRecipientMap_[workgroup] = std::make_pair(remoteObj, nullptr);
195 audioResourceService.ReleaseWorkgroupDeathRecipient(workgroup, remoteObj);
196 EXPECT_EQ(audioResourceService.deathRecipientMap_.find(workgroup), audioResourceService.deathRecipientMap_.end());
197 }
198
199 /**
200 * @tc.name : Test ImproveAudioWorkgroupPrio
201 * @tc.type : FUNC
202 * @tc.number: ImproveAudioWorkgroupPrio_001
203 * @tc.desc : Test ImproveAudioWorkgroupPrio when threads map is not empty
204 */
205 HWTEST(AudioResourceServiceUnitTest, ImproveAudioWorkgroupPrio_001, TestSize.Level0)
206 {
207 AudioResourceService audioResourceService;
208 pid_t pid = 1234;
209 std::unordered_map<int32_t, bool> threads = {{1, true}, {2, false}};
210 int32_t result = audioResourceService.ImproveAudioWorkgroupPrio(pid, threads);
211 EXPECT_EQ(result, AUDIO_OK);
212 }
213
214 /**
215 * @tc.name : Test ImproveAudioWorkgroupPrio
216 * @tc.type : FUNC
217 * @tc.number: ImproveAudioWorkgroupPrio_002
218 * @tc.desc : Test ImproveAudioWorkgroupPrio when threads map is empty
219 */
220 HWTEST(AudioResourceServiceUnitTest, ImproveAudioWorkgroupPrio_002, TestSize.Level0)
221 {
222 AudioResourceService audioResourceService;
223 pid_t pid = 1234;
224 std::unordered_map<int32_t, bool> threads = {};
225 int32_t result = audioResourceService.ImproveAudioWorkgroupPrio(pid, threads);
226 EXPECT_EQ(result, AUDIO_OK);
227 }
228
229 /**
230 * @tc.name : Test RestoreAudioWorkgroupPrio
231 * @tc.type : FUNC
232 * @tc.number: RestoreAudioWorkgroupPrio_001
233 * @tc.desc : Test RestoreAudioWorkgroupPrio when threads map is empty
234 */
235 HWTEST(AudioResourceServiceUnitTest, RestoreAudioWorkgroupPrio_001, TestSize.Level0)
236 {
237 AudioResourceService audioResourceService;
238 pid_t pid = 1234;
239 std::unordered_map<int32_t, int32_t> threads = {{1, 2}, {3, 4}};
240 int32_t result = audioResourceService.RestoreAudioWorkgroupPrio(pid, threads);
241 EXPECT_EQ(result, AUDIO_OK);
242 }
243
244 /**
245 * @tc.name : Test RestoreAudioWorkgroupPrio
246 * @tc.type : FUNC
247 * @tc.number: RestoreAudioWorkgroupPrio_002
248 * @tc.desc : Test RestoreAudioWorkgroupPrio when threads map is empty
249 */
250 HWTEST(AudioResourceServiceUnitTest, RestoreAudioWorkgroupPrio_002, TestSize.Level0)
251 {
252 AudioResourceService audioResourceService;
253 pid_t pid = 1234;
254 std::unordered_map<int32_t, int32_t> threads = {};
255 int32_t result = audioResourceService.RestoreAudioWorkgroupPrio(pid, threads);
256 EXPECT_EQ(result, AUDIO_OK);
257 }
258
259 /**
260 * @tc.name : Test AudioWorkgroupCheck
261 * @tc.type : FUNC
262 * @tc.number: AudioWorkgroupCheck
263 * @tc.desc : Test ReleaseWorkgroupDeathRecipient when find workgroup
264 */
265 HWTEST(AudioResourceServiceUnitTest, AudioWorkgroupCheck_001, TestSize.Level0)
266 {
267 int32_t pid = 123;
268 int32_t result = audioResourceService.AudioWorkgroupCheck(pid);
269 EXPECT_EQ(result, SUCCESS);
270
271 pid = -111;
272 result = audioResourceService.AudioWorkgroupCheck(pid);
273 EXPECT_EQ(result, false);
274 }
275
276 /**
277 * @tc.name : Test ReleaseAudioWorkgroup
278 * @tc.type : FUNC
279 * @tc.number: ReleaseAudioWorkgroup
280 * @tc.desc : Test ReleaseWorkgroupDeathRecipient when find workgroup
281 */
282 HWTEST(AudioResourceServiceUnitTest, ReleaseAudioWorkgroup_001, TestSize.Level0)
283 {
284 int32_t invalidPid = -1;
285 int32_t workgroupId = 1;
286 EXPECT_EQ(audioResourceService.ReleaseAudioWorkgroup(invalidPid, workgroupId), ERR_OPERATION_FAILED);
287
288 int32_t pid = 123;
289 int32_t nonExistentWorkgroupId = 999;
290 EXPECT_EQ(audioResourceService.ReleaseAudioWorkgroup(pid, nonExistentWorkgroupId), ERR_INVALID_PARAM);
291
292 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
293 audioResourceService.audioWorkgroupMap_[1].groups[testRtgId] = {workgroup};
294 EXPECT_NE(audioResourceService.ReleaseAudioWorkgroup(1, 1), ERR_OPERATION_FAILED);
295 }
296
297 /**
298 * @tc.name : Test GetThreadsNumPerProcess
299 * @tc.type : FUNC
300 * @tc.number: GetThreadsNumPerProcess
301 * @tc.desc : Test GetThreadsNumPerProcess when find workgroup
302 */
303 HWTEST(AudioResourceServiceUnitTest, GetThreadsNumPerProcess_001, TestSize.Level0)
304 {
305 int32_t nonExistPid = 9999;
306 EXPECT_EQ(audioResourceService.GetThreadsNumPerProcess(nonExistPid), 0);
307
308 int32_t pid = 1234;
309 audioResourceService.audioWorkgroupMap_[pid].groups.clear();
310 EXPECT_EQ(audioResourceService.GetThreadsNumPerProcess(pid), 0);
311
312 int32_t ExistPid = 1;
313 EXPECT_EQ(audioResourceService.GetThreadsNumPerProcess(ExistPid), 0);
314 }
315
316 /**
317 * @tc.name : Test RegisterAudioWorkgroupMonitor
318 * @tc.type : FUNC
319 * @tc.number: RegisterAudioWorkgroupMonitor
320 * @tc.desc : Test RegisterAudioWorkgroupMonitor when find workgroup
321 */
322 HWTEST(AudioResourceServiceUnitTest, RegisterAudioWorkgroupMonitor_001, TestSize.Level0)
323 {
324 int32_t pid = 123;
325 int32_t groupId = 1;
326 sptr<IRemoteObject> remoteObj = new RemoteObjectTestStub();
327 int32_t ret = audioResourceService.RegisterAudioWorkgroupMonitor(pid, groupId, remoteObj);
328 EXPECT_EQ(ret, 0);
329
330 groupId = -1;
331 ret = audioResourceService.RegisterAudioWorkgroupMonitor(pid, groupId, remoteObj);
332 EXPECT_EQ(ret, 0);
333
334 pid = 1;
335 ret = audioResourceService.RegisterAudioWorkgroupMonitor(pid, groupId, remoteObj);
336
337 EXPECT_EQ(ret, SUCCESS);
338 }
339
340 /**
341 * @tc.name : Test CreateAudioWorkgroup
342 * @tc.type : FUNC
343 * @tc.number: CreateAudioWorkgroup
344 * @tc.desc : Test ReleaseWorkgroupDeathRecipient when find workgroup
345 */
346 HWTEST(AudioResourceServiceUnitTest, CreateAudioWorkgroup_001, TestSize.Level0)
347 {
348 sptr<IRemoteObject> remoteObj = nullptr;
349 EXPECT_EQ(audioResourceService.CreateAudioWorkgroup(-1, remoteObj), ERR_INVALID_PARAM);
350
351 EXPECT_EQ(audioResourceService.CreateAudioWorkgroup(1, nullptr), ERR_OPERATION_FAILED);
352
353 remoteObj = new RemoteObjectTestStub();
354 EXPECT_NE(audioResourceService.CreateAudioWorkgroup(1, remoteObj), ERR_INVALID_PARAM);
355 }
356
357 /**
358 * @tc.name : Test AddThreadToGroup
359 * @tc.type : FUNC
360 * @tc.number: AddThreadToGroup
361 * @tc.desc : Test AddThreadToGroup when find workgroup
362 */
363 HWTEST(AudioResourceServiceUnitTest, AddThreadToGroup_001, TestSize.Level0)
364 {
365 int32_t pid = 123;
366 int32_t workgroupId = 1;
367 int32_t tokenId = pid;
368
369 int32_t ret = audioResourceService.AddThreadToGroup(pid, workgroupId, tokenId);
370 EXPECT_EQ(ret, ERR_OPERATION_FAILED);
371
372 tokenId = 3;
373 ret = audioResourceService.AddThreadToGroup(pid, workgroupId, tokenId);
374 EXPECT_NE(ret, 0);
375 }
376
377 /**
378 * @tc.name : Test WorkgroupRendererMonitor
379 * @tc.type : FUNC
380 * @tc.number: WorkgroupRendererMonitor
381 * @tc.desc : Test WorkgroupRendererMonitor when find workgroup
382 */
383 HWTEST(AudioResourceServiceUnitTest, WorkgroupRendererMonitor_001, TestSize.Level0)
384 {
385 int32_t testPid = -111;
386 audioResourceService.WorkgroupRendererMonitor(testPid, true);
387 EXPECT_FALSE(audioResourceService.audioWorkgroupMap_[testPid].permission);
388
389 testPid = 123;
390 audioResourceService.audioWorkgroupMap_[testPid].permission = true;
391 audioResourceService.WorkgroupRendererMonitor(testPid, true);
392
393 EXPECT_TRUE(audioResourceService.audioWorkgroupMap_[testPid].permission);
394 }
395
396 /**
397 * @tc.name : Test DumpAudioWorkgroupMap
398 * @tc.type : FUNC
399 * @tc.number: DumpAudioWorkgroupMap
400 * @tc.desc : Test DumpAudioWorkgroupMap when find workgroup
401 */
402 HWTEST(AudioResourceServiceUnitTest, DumpAudioWorkgroupMap_001, TestSize.Level0)
403 {
404 sptr<IRemoteObject> remoteObj = nullptr;
405 audioResourceService.DumpAudioWorkgroupMap();
406 EXPECT_TRUE(remoteObj == nullptr);
407 }
408
409 /**
410 * @tc.name : Test StopGroup
411 * @tc.type : FUNC
412 * @tc.number: StopGroup
413 * @tc.desc : Test StopGroup when find workgroup
414 */
415 HWTEST(AudioResourceServiceUnitTest, StopGroup_001, TestSize.Level0)
416 {
417 int32_t ret = audioResourceService.StopGroup(123, 456);
418 EXPECT_NE(ret, 0);
419 }
420
421 /**
422 * @tc.name : Test IsProcessHasSystemPermission
423 * @tc.type : FUNC
424 * @tc.number: IsProcessHasSystemPermission_001
425 * @tc.desc : Test IsProcessHasSystemPermission when find workgroup
426 */
427 HWTEST(AudioResourceServiceUnitTest, IsProcessHasSystemPermission_001, TestSize.Level0)
428 {
429 int32_t pid = 123;
430 audioResourceService.audioWorkgroupMap_[pid].hasSystemPermission = true;
431 EXPECT_TRUE(audioResourceService.IsProcessHasSystemPermission(pid));
432 }
433
434 /**
435 * @tc.name : Test IsProcessHasSystemPermission
436 * @tc.type : FUNC
437 * @tc.number: IsProcessHasSystemPermission_002
438 * @tc.desc : Test IsProcessHasSystemPermission when find workgroup
439 */
440 HWTEST(AudioResourceServiceUnitTest, IsProcessHasSystemPermission_002, TestSize.Level0)
441 {
442 int32_t pid = 123;
443 audioResourceService.audioWorkgroupMap_[pid].hasSystemPermission = false;
444 EXPECT_FALSE(audioResourceService.IsProcessHasSystemPermission(pid));
445 }
446
447 /**
448 * @tc.name : Test RegisterAudioWorkgroupMonitor
449 * @tc.type : FUNC
450 * @tc.number: RegisterAudioWorkgroupMonitor_002
451 * @tc.desc : Test RegisterAudioWorkgroupMonitor when find workgroup
452 */
453 HWTEST(AudioResourceServiceUnitTest, RegisterAudioWorkgroupMonitor_002, TestSize.Level0)
454 {
455 int32_t pid = 1;
456 int32_t groupId = 1;
457 sptr<IRemoteObject> remoteObj = new RemoteObjectTestStub();
458 EXPECT_EQ(audioResourceService.RegisterAudioWorkgroupMonitor(pid, groupId, remoteObj), SUCCESS);
459 }
460
461 /**
462 * @tc.name : Test RegisterAudioWorkgroupMonitor
463 * @tc.type : FUNC
464 * @tc.number: RegisterAudioWorkgroupMonitor_003
465 * @tc.desc : Test RegisterAudioWorkgroupMonitor when find workgroup
466 */
467 HWTEST(AudioResourceServiceUnitTest, RegisterAudioWorkgroupMonitor_003, TestSize.Level0)
468 {
469 int32_t pid = 1;
470 int32_t groupId = 1;
471 sptr<IRemoteObject> object = nullptr;
472 EXPECT_EQ(audioResourceService.RegisterAudioWorkgroupMonitor(pid, groupId, object), SUCCESS);
473 }
474
475 /**
476 * @tc.name : Test RegisterAudioWorkgroupMonitor
477 * @tc.type : FUNC
478 * @tc.number: RegisterAudioWorkgroupMonitor_004
479 * @tc.desc : Test RegisterAudioWorkgroupMonitor when find workgroup
480 */
481 HWTEST(AudioResourceServiceUnitTest, RegisterAudioWorkgroupMonitor_004, TestSize.Level0)
482 {
483 int32_t pid = 1;
484 int32_t groupId = 1;
485 sptr<IRemoteObject> remoteObj = new RemoteObjectTestStub();
486 audioResourceService.audioWorkgroupMap_[pid].hasSystemPermission = false;
487 EXPECT_EQ(audioResourceService.RegisterAudioWorkgroupMonitor(pid, groupId, remoteObj), SUCCESS);
488 }
489
490 /**
491 * @tc.name : Test RegisterAudioWorkgroupMonitor
492 * @tc.type : FUNC
493 * @tc.number: RegisterAudioWorkgroupMonitor_005
494 * @tc.desc : Test RegisterAudioWorkgroupMonitor when find workgroup
495 */
496 HWTEST(AudioResourceServiceUnitTest, RegisterAudioWorkgroupMonitor_005, TestSize.Level0)
497 {
498 int32_t pid = 1;
499 int32_t groupId = 1;
500 sptr<IRemoteObject> remoteObj = new RemoteObjectTestStub();
501 std::shared_ptr<AudioWorkgroup> workgroup = std::make_shared<AudioWorkgroup>(testRtgId);
502 audioResourceService.audioWorkgroupMap_[pid].hasSystemPermission = false;
503 audioResourceService.audioWorkgroupMap_[1].groups[testRtgId] = {workgroup};
504 EXPECT_EQ(audioResourceService.RegisterAudioWorkgroupMonitor(pid, groupId, remoteObj), SUCCESS);
505 }
506
507 /**
508 * @tc.name : Test StartGroup
509 * @tc.type : FUNC
510 * @tc.number: StartGroup_001
511 * @tc.desc : Test StartGroup when find workgroup
512 */
513 HWTEST(AudioResourceServiceUnitTest, StartGroup_001, TestSize.Level0)
514 {
515 int32_t pid = 1;
516 int32_t workgroupId = 1;
517 uint64_t startTime = 1000;
518 uint64_t deadlineTime = 2000;
519
520 int32_t ret = audioResourceService.StartGroup(pid, workgroupId, startTime, deadlineTime);
521
522 EXPECT_EQ(ret, ERR_INVALID_PARAM);
523 }
524
525 /**
526 * @tc.name : Test RemoveThreadFromGroup
527 * @tc.type : FUNC
528 * @tc.number: RemoveThreadFromGroup_001
529 * @tc.desc : Test RemoveThreadFromGroup when find workgroup
530 */
531 HWTEST(AudioResourceServiceUnitTest, RemoveThreadFromGroup_001, TestSize.Level0)
532 {
533 int32_t pid = 1;
534 int32_t workgroupId = 1;
535 int32_t tokenId = 1;
536
537 int32_t ret = audioResourceService.RemoveThreadFromGroup(pid, workgroupId, tokenId);
538
539 EXPECT_EQ(ret, ERR_INVALID_PARAM);
540 }
541
542 /**
543 * @tc.name : Test AddThreadToGroup
544 * @tc.type : FUNC
545 * @tc.number: AddThreadToGroup_002
546 * @tc.desc : Test AddThreadToGroup when find workgroup
547 */
548 HWTEST(AudioResourceServiceUnitTest, AddThreadToGroup_002, TestSize.Level0)
549 {
550 int32_t pid = 1;
551 int32_t workgroupId = 1;
552 int32_t tokenId = 1;
553 int32_t ret = audioResourceService.AddThreadToGroup(pid, workgroupId, tokenId);
554 EXPECT_EQ(ret, ERR_OPERATION_FAILED);
555 }
556
557 /**
558 * @tc.name : Test AddThreadToGroup
559 * @tc.type : FUNC
560 * @tc.number: AddThreadToGroup_003
561 * @tc.desc : Test AddThreadToGroup when find workgroup
562 */
563 HWTEST(AudioResourceServiceUnitTest, AddThreadToGroup_003, TestSize.Level0)
564 {
565 int32_t pid = 2;
566 int32_t workgroupId = 2;
567 int32_t tokenId = 2;
568 int32_t ret = audioResourceService.AddThreadToGroup(pid, workgroupId, tokenId);
569 EXPECT_NE(ret, ERR_INVALID_PARAM);
570 }
571
572 /**
573 * @tc.name : Test AddThreadToGroup
574 * @tc.type : FUNC
575 * @tc.number: AddThreadToGroup_004
576 * @tc.desc : Test AddThreadToGroup when find workgroup
577 */
578 HWTEST(AudioResourceServiceUnitTest, AddThreadToGroup_004, TestSize.Level0)
579 {
580 int32_t pid = 3;
581 int32_t workgroupId = 3;
582 int32_t tokenId = 3;
583 int32_t ret = audioResourceService.AddThreadToGroup(pid, workgroupId, tokenId);
584 EXPECT_NE(ret, ERR_NOT_SUPPORTED);
585 }
586
587 /**
588 * @tc.name : Test AddThreadToGroup
589 * @tc.type : FUNC
590 * @tc.number: AddThreadToGroup_005
591 * @tc.desc : Test AddThreadToGroup when find workgroup
592 */
593 HWTEST(AudioResourceServiceUnitTest, AddThreadToGroup_005, TestSize.Level0)
594 {
595 int32_t pid = 4;
596 int32_t workgroupId = 4;
597 int32_t tokenId = 4;
598 int32_t ret = audioResourceService.AddThreadToGroup(pid, workgroupId, tokenId);
599 EXPECT_NE(ret, SUCCESS);
600 }
601
602 /**
603 * @tc.name : Test ReleaseAudioWorkgroup
604 * @tc.type : FUNC
605 * @tc.number: ReleaseAudioWorkgroup_002
606 * @tc.desc : Test ReleaseAudioWorkgroup when find workgroup
607 */
608 HWTEST(AudioResourceServiceUnitTest, ReleaseAudioWorkgroup_002, TestSize.Level0)
609 {
610 int32_t pid = -1;
611 int32_t workgroupId = 1;
612 int32_t ret = audioResourceService.ReleaseAudioWorkgroup(pid, workgroupId);
613 EXPECT_EQ(ret, ERR_OPERATION_FAILED);
614 }
615
616 /**
617 * @tc.name : Test ReleaseAudioWorkgroup
618 * @tc.type : FUNC
619 * @tc.number: ReleaseAudioWorkgroup_003
620 * @tc.desc : Test ReleaseAudioWorkgroup when find workgroup
621 */
622 HWTEST(AudioResourceServiceUnitTest, ReleaseAudioWorkgroup_003, TestSize.Level0)
623 {
624 int32_t pid = 1;
625 int32_t workgroupId = 1;
626 int32_t ret = audioResourceService.ReleaseAudioWorkgroup(pid, workgroupId);
627 EXPECT_NE(ret, SUCCESS);
628 }
629
630 /**
631 * @tc.name : Test ReleaseAudioWorkgroup
632 * @tc.type : FUNC
633 * @tc.number: ReleaseAudioWorkgroup_004
634 * @tc.desc : Test ReleaseAudioWorkgroup when find workgroup
635 */
636 HWTEST(AudioResourceServiceUnitTest, ReleaseAudioWorkgroup_004, TestSize.Level0)
637 {
638 int32_t pid = 1;
639 int32_t workgroupId = -1;
640 int32_t ret = audioResourceService.ReleaseAudioWorkgroup(pid, workgroupId);
641 EXPECT_NE(ret, ERR_OPERATION_FAILED);
642 }
643
644 /**
645 * @tc.name : Test ReleaseAudioWorkgroup
646 * @tc.type : FUNC
647 * @tc.number: ReleaseAudioWorkgroup_005
648 * @tc.desc : Test ReleaseAudioWorkgroup when find workgroup
649 */
650 HWTEST(AudioResourceServiceUnitTest, ReleaseAudioWorkgroup_005, TestSize.Level0)
651 {
652 int32_t pid = 1;
653 int32_t workgroupId = 1;
654 int32_t ret = audioResourceService.ReleaseAudioWorkgroup(pid, workgroupId);
655 EXPECT_NE(ret, SUCCESS);
656 }
657
658 /**
659 * @tc.name : Test AudioWorkgroupCheck
660 * @tc.type : FUNC
661 * @tc.number: AudioWorkgroupCheck_003
662 * @tc.desc : Test AudioWorkgroupCheck when find workgroup
663 */
664 HWTEST(AudioResourceServiceUnitTest, AudioWorkgroupCheck_003, TestSize.Level0)
665 {
666 int32_t pid = 1234;
667 for (int i = 0; i < AUDIO_MAX_PROCESS; i++) {
668 audioResourceService.audioWorkgroupMap_[AUDIO_MAX_PROCESS].hasSystemPermission = false;
669 }
670 EXPECT_NE(audioResourceService.AudioWorkgroupCheck(pid), ERR_NOT_SUPPORTED);
671 }
672
673 /**
674 * @tc.name : Test AudioWorkgroupCheck
675 * @tc.type : FUNC
676 * @tc.number: AudioWorkgroupCheck_004
677 * @tc.desc : Test AudioWorkgroupCheck when find workgroup
678 */
679 HWTEST(AudioResourceServiceUnitTest, AudioWorkgroupCheck_004, TestSize.Level0)
680 {
681 int32_t pid = 1234;
682 EXPECT_EQ(audioResourceService.AudioWorkgroupCheck(pid), SUCCESS);
683 }
684
685 } // namespace AudioStandard
686 } // namespace OHOS