// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/ash/components/memory/memory.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace ash {
namespace memory {
TEST(MemoryTest, ZramMmStat) {
ZramMmStat zram_mm_stat;
std::string zramMmStatContent =
" 4096 74 12288 0 12288 0 0 0 "
" 0";
ASSERT_TRUE(internal::ParseZramMmStat(zramMmStatContent, &zram_mm_stat));
ASSERT_EQ(zram_mm_stat.orig_data_size, 4096u);
ASSERT_EQ(zram_mm_stat.compr_data_size, 74u);
ASSERT_EQ(zram_mm_stat.mem_used_total, 12288u);
ASSERT_EQ(zram_mm_stat.mem_limit, 0u);
ASSERT_EQ(zram_mm_stat.mem_used_max, 12288u);
ASSERT_EQ(zram_mm_stat.same_pages, 0u);
ASSERT_EQ(zram_mm_stat.pages_compacted, 0u);
ASSERT_EQ(zram_mm_stat.huge_pages, 0u);
ASSERT_EQ(zram_mm_stat.huge_pages_since, 0u);
// mm_stat only contains number.
zramMmStatContent =
" aa4096 bb74 122e8 gg0 12288 0 0 0 "
" 0";
ASSERT_FALSE(internal::ParseZramMmStat(zramMmStatContent, &zram_mm_stat));
// mm_stat contains at least 7 items.
zramMmStatContent = " 0 0 0 0";
ASSERT_FALSE(internal::ParseZramMmStat(zramMmStatContent, &zram_mm_stat));
// The fifth item in mm_stat must be positive.
zramMmStatContent =
" 4096 74 12288 0 -12288 0 0 "
"0 0";
ASSERT_FALSE(internal::ParseZramMmStat(zramMmStatContent, &zram_mm_stat));
}
TEST(MemoryTest, ZramBdStat) {
ZramBdStat zram_bd_stat;
std::string zramBdStatContent = " 0 0 0";
ASSERT_TRUE(internal::ParseZramBdStat(zramBdStatContent, &zram_bd_stat));
ASSERT_EQ(zram_bd_stat.bd_count, 0u);
ASSERT_EQ(zram_bd_stat.bd_reads, 0u);
ASSERT_EQ(zram_bd_stat.bd_writes, 0u);
// bd_stat only contains number.
zramBdStatContent = " aa4096 bb74 122e8";
ASSERT_FALSE(internal::ParseZramBdStat(zramBdStatContent, &zram_bd_stat));
// bd_stat contains 3 items.
zramBdStatContent = " 0 0";
ASSERT_FALSE(internal::ParseZramBdStat(zramBdStatContent, &zram_bd_stat));
}
TEST(MemoryTest, ZramIoStat) {
ZramIoStat zram_io_stat;
std::string zramIoStatContent = " 0 0 0 0";
ASSERT_TRUE(internal::ParseZramIoStat(zramIoStatContent, &zram_io_stat));
ASSERT_EQ(zram_io_stat.failed_reads, 0u);
ASSERT_EQ(zram_io_stat.failed_writes, 0u);
ASSERT_EQ(zram_io_stat.invalid_io, 0u);
ASSERT_EQ(zram_io_stat.notify_free, 0u);
// io_stat only contains number.
zramIoStatContent = " aa4096 bb74 122e8 gg0";
ASSERT_FALSE(internal::ParseZramIoStat(zramIoStatContent, &zram_io_stat));
// io_stat contains 4 items.
zramIoStatContent = " 0 0 0";
ASSERT_FALSE(internal::ParseZramIoStat(zramIoStatContent, &zram_io_stat));
}
} // namespace memory
} // namespace ash