1 /*
2  * Copyright (c) 2022 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 
18 #include "utils.h"
19 
20 #define private public
21 #define protected public
22 #include "low_memory_killer.h"
23 #include "reclaim_strategy_manager.h"
24 #undef private
25 #undef protected
26 
27 namespace OHOS {
28 namespace Memory {
29 using namespace testing;
30 using namespace testing::ext;
31 
32 class LowMemoryKillerTest : public testing::Test {
33 public:
34     static void SetUpTestCase();
35     static void TearDownTestCase();
36     void SetUp();
37     void TearDown();
38 };
39 
SetUpTestCase()40 void LowMemoryKillerTest::SetUpTestCase()
41 {
42 }
43 
TearDownTestCase()44 void LowMemoryKillerTest::TearDownTestCase()
45 {
46 }
47 
SetUp()48 void LowMemoryKillerTest::SetUp()
49 {
50 }
51 
TearDown()52 void LowMemoryKillerTest::TearDown()
53 {
54 }
55 
56 HWTEST_F(LowMemoryKillerTest, PsiHandlerTest, TestSize.Level1)
57 {
58     LowMemoryKiller::GetInstance().PsiHandler();
59 }
60 
61 HWTEST_F(LowMemoryKillerTest, QueryKillMemoryPriorityPairTest, TestSize.Level1)
62 {
63     unsigned int reta = 1;
64     int retb = 1;
65     std::pair<unsigned int, int> ret = std::make_pair(reta, retb);
66     unsigned int currBufferKB = 54632;
67     unsigned int targetBufKB = 65231;
68     int killLevel = 0;
69 
70     ret = LowMemoryKiller::GetInstance().QueryKillMemoryPriorityPair(currBufferKB, targetBufKB, killLevel);
71     EXPECT_NE(ret.first, 1);
72     EXPECT_NE(ret.second, 1);
73 }
74 
75 HWTEST_F(LowMemoryKillerTest, PsiHandlerInnerTest, TestSize.Level1)
76 {
77     LowMemoryKiller::GetInstance().PsiHandlerInner();
78 }
79 
80 HWTEST_F(LowMemoryKillerTest, KillOneBundleByPrioTest, TestSize.Level1)
81 {
82     int userId = 234;
83 #ifdef USE_HYPERHOLD_MEMORY
84     int pid = 123;
85     int appId = 111;
86     std::string appName = "com.test";
87     int score = 100;
88     std::shared_ptr<ReclaimParam> para = std::make_shared<ReclaimParam>(pid, appId, appName, userId, score,
89         AppAction::OTHERS);
90     ReclaimStrategyManager::GetInstance().NotifyAppStateChanged(para);
91 #endif
92     int minPrio = 10;
93     int ret = 1;
94     ret = LowMemoryKiller::GetInstance().KillOneBundleByPrio(minPrio);
95     EXPECT_NE(ret, 1);
96     MemcgMgr::GetInstance().RemoveUserMemcg(userId);
97 }
98 
99 HWTEST_F(LowMemoryKillerTest, GetEventHandlerTest, TestSize.Level1)
100 {
101     bool ret = LowMemoryKiller::GetInstance().GetEventHandler();
102     EXPECT_EQ(ret, true);
103 }
104 }
105 }