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 "memcg.h"
23 #undef private
24 #undef protected
25
26 namespace OHOS {
27 namespace Memory {
28 using namespace testing;
29 using namespace testing::ext;
30
31 class MemcgTest : public testing::Test {
32 public:
33 static void SetUpTestCase();
34 static void TearDownTestCase();
35 void SetUp();
36 void TearDown();
37 };
38
SetUpTestCase()39 void MemcgTest::SetUpTestCase()
40 {
41 }
42
TearDownTestCase()43 void MemcgTest::TearDownTestCase()
44 {
45 }
46
SetUp()47 void MemcgTest::SetUp()
48 {
49 }
50
TearDown()51 void MemcgTest::TearDown()
52 {
53 }
54
55 HWTEST_F(MemcgTest, CreateMemcgTest, TestSize.Level1)
56 {
57 Memcg* memcg = new Memcg();
58 EXPECT_EQ(memcg != nullptr, true);
59 EXPECT_EQ(memcg->swapInfo_ != nullptr, true);
60 EXPECT_EQ(memcg->memInfo_ != nullptr, true);
61 EXPECT_EQ(memcg->reclaimRatios_ != nullptr, true);
62 delete memcg;
63 memcg = nullptr;
64 }
65
66 HWTEST_F(MemcgTest, UpdateMemInfoFromKernelTest, TestSize.Level1)
67 {
68 Memcg* memcg = new Memcg();
69 bool ret = memcg->UpdateMemInfoFromKernel();
70 EXPECT_EQ(ret, true);
71 delete memcg;
72 memcg = nullptr;
73 }
74
75 HWTEST_F(MemcgTest, SetScoreTest, TestSize.Level1)
76 {
77 Memcg* memcg = new Memcg();
78 int score = 0;
79 memcg->SetScore(score);
80 EXPECT_EQ(memcg->score_, score);
81 score = -1;
82 memcg->SetScore(score);
83 EXPECT_EQ(memcg->score_, score);
84 score = 2000;
85 memcg->SetScore(score);
86 EXPECT_EQ(memcg->score_, score);
87 delete memcg;
88 memcg = nullptr;
89 }
90
91 HWTEST_F(MemcgTest, SetReclaimRatiosTest, TestSize.Level1)
92 {
93 Memcg* memcg = new Memcg();
94 memcg->SetReclaimRatios(0, 0, 0);
95 EXPECT_EQ(memcg->reclaimRatios_->mem2zramRatio_, 0u);
96 EXPECT_EQ(memcg->reclaimRatios_->zram2ufsRatio_, 0u);
97 EXPECT_EQ(memcg->reclaimRatios_->refaultThreshold_, 0u);
98 memcg->SetReclaimRatios(100, 100, 100);
99 EXPECT_EQ(memcg->reclaimRatios_->mem2zramRatio_, 100u);
100 EXPECT_EQ(memcg->reclaimRatios_->zram2ufsRatio_, 100u);
101 EXPECT_EQ(memcg->reclaimRatios_->refaultThreshold_, 100u);
102
103 ReclaimRatios ratios(50, 50, 50);
104 EXPECT_EQ(memcg->SetReclaimRatios(ratios), true);
105 EXPECT_EQ(memcg->reclaimRatios_->mem2zramRatio_, 50u);
106 EXPECT_EQ(memcg->reclaimRatios_->zram2ufsRatio_, 50u);
107 EXPECT_EQ(memcg->reclaimRatios_->refaultThreshold_, 50u);
108 delete memcg;
109 memcg = nullptr;
110 }
111
112 HWTEST_F(MemcgTest, SetScoreAndReclaimRatiosToKernelTest, TestSize.Level1)
113 {
114 Memcg* memcg = new Memcg();
115 EXPECT_EQ(memcg->SetScoreAndReclaimRatiosToKernel(), true);
116 delete memcg;
117 memcg = nullptr;
118 }
119
120 HWTEST_F(MemcgTest, SwapInTest, TestSize.Level1)
121 {
122 Memcg* memcg = new Memcg();
123 EXPECT_EQ(memcg->SwapIn(), true);
124 delete memcg;
125 memcg = nullptr;
126 }
127
128 HWTEST_F(MemcgTest, GetMemcgPathTest, TestSize.Level1)
129 {
130 Memcg* memcg = new Memcg();
131 EXPECT_STREQ(memcg->GetMemcgPath_().c_str(), "/dev/memcg");
132 delete memcg;
133 memcg = nullptr;
134 }
135
136 HWTEST_F(MemcgTest, ReadScoreAndReclaimRatiosFromKernelTest, TestSize.Level1)
137 {
138 Memcg* memcg = new Memcg();
139 int score = 0;
140 unsigned int mem2zramRatio = 0;
141 unsigned int zram2ufsRatio = 0;
142 unsigned int refaultThreshold = 0;
143 bool ret = memcg->ReadScoreAndReclaimRatiosFromKernel_(score, mem2zramRatio, zram2ufsRatio, refaultThreshold);
144 EXPECT_EQ(ret, true);
145 delete memcg;
146 memcg = nullptr;
147 }
148 }
149 }
150