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, QueryKillMemoryPriorityPairTest, TestSize.Level1)
57 {
58 unsigned int reta = 1;
59 int retb = 1;
60 std::pair<unsigned int, int> ret = std::make_pair(reta, retb);
61 unsigned int currBufferKB = 54632;
62 unsigned int targetBufKB = 65231;
63 int killLevel = 0;
64
65 ret = LowMemoryKiller::GetInstance().QueryKillMemoryPriorityPair(currBufferKB, targetBufKB, killLevel);
66 EXPECT_NE(ret.first, 1);
67 EXPECT_NE(ret.second, 1);
68 }
69
70 HWTEST_F(LowMemoryKillerTest, KillOneBundleByPrioTest, TestSize.Level1)
71 {
72 int userId = 234;
73 #ifdef USE_HYPERHOLD_MEMORY
74 int pid = 123;
75 int appId = 111;
76 std::string appName = "com.test";
77 int score = 100;
78 std::shared_ptr<ReclaimParam> para = std::make_shared<ReclaimParam>(pid, appId, appName, userId, score,
79 AppAction::OTHERS);
80 ReclaimStrategyManager::GetInstance().NotifyAppStateChanged(para);
81 #endif
82 int minPrio = 10;
83 int ret = 1;
84 ret = LowMemoryKiller::GetInstance().KillOneBundleByPrio(minPrio);
85 EXPECT_NE(ret, 1);
86 MemcgMgr::GetInstance().RemoveUserMemcg(userId);
87 }
88
89 HWTEST_F(LowMemoryKillerTest, GetEventHandlerTest, TestSize.Level1)
90 {
91 LowMemoryKiller::GetInstance().PsiHandler();
92 LowMemoryKiller::GetInstance().PsiHandlerInner();
93 bool ret = LowMemoryKiller::GetInstance().GetEventHandler();
94 EXPECT_EQ(ret, true);
95 }
96 }
97 }