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 }