• 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 #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