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 #include "player_xcollie_unittest.h"
16
17 using namespace OHOS;
18 using namespace OHOS::Media;
19 using namespace std;
20 using namespace testing;
21 using namespace testing::ext;
22
23 const static int32_t TEST_SUCCESS = 0;
24 static constexpr uint32_t TEST_THRESHOLD_ID_MIN = 0;
25 static constexpr uint32_t TEST_TIMEOUT = 1000;
26
27 namespace OHOS {
28 namespace Media {
SetUpTestCase(void)29 void PlayerXcollieUnitTest::SetUpTestCase(void) {}
30
TearDownTestCase(void)31 void PlayerXcollieUnitTest::TearDownTestCase(void) {}
32
SetUp(void)33 void PlayerXcollieUnitTest::SetUp(void) {}
34
TearDown(void)35 void PlayerXcollieUnitTest::TearDown(void) {}
36
37 /**
38 * @tc.name : Test SetTimer
39 * @tc.number: SetTimer_001
40 * @tc.desc : Test SetTimer recovery = true
41 * Test TimerCallback threadDeadlockCount_ < threshold
42 */
43 HWTEST_F(PlayerXcollieUnitTest, SetTimer_001, TestSize.Level1)
44 {
45 // Test TimerCallback threadDeadlockCount_ < threshold
46 auto data = std::function<void (void *)>();
47 PlayerXCollie::GetInstance().threadDeadlockCount_ = TEST_THRESHOLD_ID_MIN;
48 PlayerXCollie::GetInstance().TimerCallback(&data);
49
50 // Test SetTimer recovery = true
51 const std::string name = "test_timer";
52 bool recovery = true;
53 EXPECT_CALL(HiviewDFX::XCollie::GetInstance(), SetTimer(_, _, _, _, _))
54 .WillOnce(Return(TEST_SUCCESS));
55 PlayerXCollie::GetInstance().SetTimer(name, recovery, TEST_TIMEOUT);
56 }
57
58 /**
59 * @tc.name : Test SetTimerByLog
60 * @tc.number: SetTimerByLog_001
61 * @tc.desc : Test SetTimerByLog id != HiviewDFX::INVALID_ID
62 */
63 HWTEST_F(PlayerXcollieUnitTest, SetTimerByLog_001, TestSize.Level1)
64 {
65 const std::string name = "test_timer";
66 EXPECT_CALL(HiviewDFX::XCollie::GetInstance(), SetTimer(_, _, _, _, _))
67 .WillOnce(Return(TEST_SUCCESS));
68 PlayerXCollie::GetInstance().SetTimerByLog(name, TEST_TIMEOUT);
69 }
70
71 /**
72 * @tc.name : Test SetTimerByLog
73 * @tc.number: SetTimerByLog_002
74 * @tc.desc : Test SetTimerByLog id == HiviewDFX::INVALID_ID
75 */
76 HWTEST_F(PlayerXcollieUnitTest, SetTimerByLog_002, TestSize.Level1)
77 {
78 const std::string name = "test_timer";
79 EXPECT_CALL(HiviewDFX::XCollie::GetInstance(), SetTimer(_, _, _, _, _))
80 .WillOnce(Return(HiviewDFX::INVALID_ID));
81 PlayerXCollie::GetInstance().SetTimerByLog(name, TEST_TIMEOUT);
82 }
83
84 /**
85 * @tc.name : Test CancelTimer
86 * @tc.number: CancelTimer_001
87 * @tc.desc : Test CancelTimer id == HiviewDFX::INVALID_ID
88 * Test CancelTimer dfxDumper_.size() == 0
89 */
90 HWTEST_F(PlayerXcollieUnitTest, CancelTimer_001, TestSize.Level1)
91 {
92 PlayerXCollie::GetInstance().dfxDumper_.clear();
93
94 // Test CancelTimer id == HiviewDFX::INVALID_ID
95 int32_t id = HiviewDFX::INVALID_ID;
96 PlayerXCollie::GetInstance().CancelTimer(id);
97
98 // Test CancelTimer dfxDumper_.size() == 0
99 id = TEST_SUCCESS;
100 PlayerXCollie::GetInstance().CancelTimer(id);
101 EXPECT_EQ(PlayerXCollie::GetInstance().dfxDumper_.size(), 0);
102 }
103 } // namespace Media
104 } // namespace OHOS