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 26namespace OHOS { 27namespace Memory { 28using namespace testing; 29using namespace testing::ext; 30 31class MemcgTest : public testing::Test { 32public: 33 static void SetUpTestCase(); 34 static void TearDownTestCase(); 35 void SetUp(); 36 void TearDown(); 37}; 38 39void MemcgTest::SetUpTestCase() 40{ 41} 42 43void MemcgTest::TearDownTestCase() 44{ 45} 46 47void MemcgTest::SetUp() 48{ 49} 50 51void MemcgTest::TearDown() 52{ 53} 54 55HWTEST_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 66HWTEST_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 75HWTEST_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 91HWTEST_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 112HWTEST_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 120HWTEST_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 128HWTEST_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 136HWTEST_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 149HWTEST_F(MemcgTest, SetRatiosByValueTest, TestSize.Level1) 150{ 151 unsigned int mem2zramRatio = 12345; 152 unsigned int zram2ufsRatio = 54321; 153 unsigned int refaultThreshold = 66666; 154 ReclaimRatios ratios(mem2zramRatio, zram2ufsRatio, refaultThreshold); 155 ratios.SetRatiosByValue(mem2zramRatio, zram2ufsRatio, refaultThreshold); 156 EXPECT_EQ(ratios.mem2zramRatio_, 100); 157 EXPECT_EQ(ratios.zram2ufsRatio_, 100); 158 EXPECT_EQ(ratios.refaultThreshold_, 66666); 159 mem2zramRatio = 58; 160 zram2ufsRatio = 85; 161 refaultThreshold = 77777; 162 ratios.SetRatiosByValue(mem2zramRatio, zram2ufsRatio, refaultThreshold); 163 EXPECT_EQ(ratios.mem2zramRatio_, 58); 164 EXPECT_EQ(ratios.zram2ufsRatio_, 85); 165 EXPECT_EQ(ratios.refaultThreshold_, 77777); 166} 167 168HWTEST_F(MemcgTest, SetRatiosTest, TestSize.Level1) 169{ 170 unsigned int mem2zramRatio = 12345; 171 unsigned int zram2ufsRatio = 54321; 172 unsigned int refaultThreshold = 66666; 173 ReclaimRatios ratios(mem2zramRatio, zram2ufsRatio, refaultThreshold); 174 ratios.SetRatios(ratios); 175 EXPECT_EQ(ratios.mem2zramRatio_, 100); 176 EXPECT_EQ(ratios.zram2ufsRatio_, 100); 177 EXPECT_EQ(ratios.refaultThreshold_, 66666); 178 mem2zramRatio = 58; 179 zram2ufsRatio = 85; 180 refaultThreshold = 77777; 181 ReclaimRatios ratios2(mem2zramRatio, zram2ufsRatio, refaultThreshold); 182 ratios.SetRatios(ratios2); 183 EXPECT_EQ(ratios.mem2zramRatio_, 58); 184 EXPECT_EQ(ratios.zram2ufsRatio_, 85); 185 EXPECT_EQ(ratios.refaultThreshold_, 77777); 186} 187 188HWTEST_F(MemcgTest, ToStringTest, TestSize.Level1) 189{ 190 unsigned int mem2zramRatio = 12345; 191 unsigned int zram2ufsRatio = 54321; 192 unsigned int refaultThreshold = 66666; 193 ReclaimRatios ratios(mem2zramRatio, zram2ufsRatio, refaultThreshold); 194 std::string ret = ratios.ToString(); 195 EXPECT_EQ(ret, "mem2zramRatio:100 zram2ufsRatio:100 refaultThreshold:66666"); 196} 197 198HWTEST_F(MemcgTest, CreateMemcgDirTest, TestSize.Level1) 199{ 200 unsigned int userId = 23456; 201 UserMemcg usermemcg= UserMemcg(userId); 202 EXPECT_EQ(usermemcg.CreateMemcgDir(), true); 203 EXPECT_EQ(usermemcg.RemoveMemcgDir(), true); 204} 205 206HWTEST_F(MemcgTest, RemoveMemcgDirTest, TestSize.Level1) 207{ 208 unsigned int userId = 23456; 209 UserMemcg usermemcg= UserMemcg(userId); 210 EXPECT_EQ(usermemcg.CreateMemcgDir(), true); 211 EXPECT_EQ(usermemcg.RemoveMemcgDir(), true); 212 EXPECT_EQ(usermemcg.RemoveMemcgDir(), false); 213} 214 215HWTEST_F(MemcgTest, AddProcTest, TestSize.Level1) 216{ 217 unsigned int userId = 23456; 218 UserMemcg usermemcg= UserMemcg(userId); 219 EXPECT_EQ(usermemcg.CreateMemcgDir(), true); 220 EXPECT_EQ(usermemcg.AddProc(userId), false); 221 EXPECT_EQ(usermemcg.RemoveMemcgDir(), true); 222} 223} 224} 225