• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "audio_session_state_monitor.h"
17 #include "audio_policy_state_monitor.h"
18 #include "audio_session_service.h"
19 #include "gtest/gtest.h"
20 #include <vector>
21 
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace AudioStandard {
26 
27 class AudioSessionStateMonitorTest : public testing::Test {};
28 
29 /**
30  * @tc.name  : NormalStartStopMonitorTest.
31  * @tc.desc  : Test for normal start and stop monitor.
32  */
33 HWTEST(AudioSessionStateMonitorTest, NormalStartStopMonitorTest, TestSize.Level1)
34 {
35     auto audioSessionService = std::make_shared<AudioSessionService>();
36     EXPECT_NE(audioSessionService, nullptr);
37     auto audioSessionMonitor = std::static_pointer_cast<AudioSessionStateMonitor>(audioSessionService);
38     int32_t callerPid = 1;
39     audioSessionMonitor->StartMonitor(callerPid);
40     int32_t moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid);
41     EXPECT_EQ(moniteredPidNum, 1);
42     audioSessionMonitor->StopMonitor(callerPid);
43     moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid);
44     EXPECT_EQ(moniteredPidNum, 0);
45     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), 0);
46 }
47 
48 /**
49  * @tc.name  : StartMonitorWithSamePidFailedTest.
50  * @tc.desc  : Test for start monitor with same pid should fail.
51  */
52 HWTEST(AudioSessionStateMonitorTest, StartMonitorWithSamePidFailTest, TestSize.Level1)
53 {
54     auto audioSessionService = std::make_shared<AudioSessionService>();
55     EXPECT_NE(audioSessionService, nullptr);
56     auto audioSessionMonitor = std::static_pointer_cast<AudioSessionStateMonitor>(audioSessionService);
57     int32_t callerPid = 1;
58     audioSessionMonitor->StartMonitor(callerPid);
59     int32_t moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid);
60     EXPECT_EQ(moniteredPidNum, 1);
61     audioSessionMonitor->StartMonitor(callerPid);
62     moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid);
63     EXPECT_EQ(moniteredPidNum, 1);
64     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), 1);
65     audioSessionMonitor->StopMonitor(callerPid);
66     moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid);
67     EXPECT_EQ(moniteredPidNum, 0);
68     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), 0);
69 }
70 
71 /**
72  * @tc.name  : StopMonitorWithSamePidFailedTest.
73  * @tc.desc  : Test for stop monitor with same pid should fail.
74  */
75 HWTEST(AudioSessionStateMonitorTest, StopMonitorWithSamePidFailedTest, TestSize.Level1)
76 {
77     auto audioSessionService = std::make_shared<AudioSessionService>();
78     EXPECT_NE(audioSessionService, nullptr);
79     auto audioSessionMonitor = std::static_pointer_cast<AudioSessionStateMonitor>(audioSessionService);
80     int32_t callerPid = 1;
81     audioSessionMonitor->StartMonitor(callerPid);
82     int32_t moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid);
83     EXPECT_EQ(moniteredPidNum, 1);
84     int32_t callerPid2 = 2;
85     audioSessionMonitor->StartMonitor(callerPid2);
86     moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid2);
87     EXPECT_EQ(moniteredPidNum, 1);
88     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), 2);
89     audioSessionMonitor->StopMonitor(callerPid);
90     moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid);
91     EXPECT_EQ(moniteredPidNum, 0);
92     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), 1);
93     audioSessionMonitor->StopMonitor(callerPid);
94     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), 1);
95     audioSessionMonitor->StopMonitor(callerPid2);
96     moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(callerPid2);
97     EXPECT_EQ(moniteredPidNum, 0);
98     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), 0);
99 }
100 
101 /**
102  * @tc.name  : StartMonitorWithMaxPidNumTest.
103  * @tc.desc  : Test for start monitor with max pid num.
104  */
105 HWTEST(AudioSessionStateMonitorTest, StartMonitorWithMaxPidNumTest, TestSize.Level1)
106 {
107     auto audioSessionService = std::make_shared<AudioSessionService>();
108     EXPECT_NE(audioSessionService, nullptr);
109     auto audioSessionMonitor = std::static_pointer_cast<AudioSessionStateMonitor>(audioSessionService);
110 
111     for (int32_t i = 0; i < MAX_CB_ID_NUM; i++) {
112         audioSessionMonitor->StartMonitor(i);
113         int32_t moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(i);
114         EXPECT_EQ(moniteredPidNum, 1);
115         EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), i + 1);
116     }
117 
118     for (int32_t i = 0; i < MAX_CB_ID_NUM; i++) {
119         audioSessionMonitor->StopMonitor(i);
120         int32_t moniteredPidNum = audioSessionMonitor->pidCbIdMap_.count(i);
121         EXPECT_EQ(moniteredPidNum, 0);
122         EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), MAX_CB_ID_NUM - i - 1);
123     }
124 }
125 
126 /**
127  * @tc.name  : StartMonitorOutOfMaxPidNumTest.
128  * @tc.desc  : Test for start monitor out of max pid num range.
129  */
130 HWTEST(AudioSessionStateMonitorTest, StartMonitorOutOfMaxPidNumTest, TestSize.Level1)
131 {
132     auto audioSessionService = std::make_shared<AudioSessionService>();
133     EXPECT_NE(audioSessionService, nullptr);
134     auto audioSessionMonitor = std::static_pointer_cast<AudioSessionStateMonitor>(audioSessionService);
135 
136     for (int32_t i = 0; i < MAX_CB_ID_NUM; i++) {
137         audioSessionMonitor->StartMonitor(i);
138     }
139 
140     EXPECT_EQ(audioSessionMonitor->pidCbIdMap_.size(), MAX_CB_ID_NUM);
141 
142     for (int32_t i = 0; i < MAX_CB_ID_NUM; i++) {
143         audioSessionMonitor->StopMonitor(i);
144     }
145 }
146 
147 } // AudioStandardnamespace
148 } // OHOSnamespace
149