diff --git a/services/core/java/com/android/server/am/MemoryStatUtil.java b/services/core/java/com/android/server/am/MemoryStatUtil.java index da36bd12781b5..f9dccea0d34c1 100644 --- a/services/core/java/com/android/server/am/MemoryStatUtil.java +++ b/services/core/java/com/android/server/am/MemoryStatUtil.java @@ -179,4 +179,4 @@ final class MemoryStatUtil { /** Number of bytes of swap usage */ long swapInBytes; } -} \ No newline at end of file +} diff --git a/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java b/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java index 8005bc7aed8a8..5518ca5bd8cc6 100644 --- a/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java +++ b/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java @@ -17,6 +17,7 @@ package com.android.server.am; import static com.android.server.am.MemoryStatUtil.parseMemoryStatFromMemcg; +import static com.android.server.am.MemoryStatUtil.parseMemoryStatFromProcfs; import static com.android.server.am.MemoryStatUtil.MemoryStat; import static org.junit.Assert.assertEquals; @@ -31,58 +32,131 @@ import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) @SmallTest public class MemoryStatUtilTest { - private String MEMORY_STAT_CONTENTS = String.join( - "\n", - "cache 96", // keep different from total_cache to catch reading wrong value - "rss 97", // keep different from total_rss to catch reading wrong value - "rss_huge 0", - "mapped_file 524288", - "writeback 0", - "swap 95", // keep different from total_rss to catch reading wrong value - "pgpgin 16717", - "pgpgout 5037", - "pgfault 99", // keep different from total_pgfault to catch reading wrong value - "pgmajfault 98", // keep different from total_pgmajfault to catch reading wrong value - "inactive_anon 503808", - "active_anon 46309376", - "inactive_file 876544", - "active_file 81920", - "unevictable 0", - "hierarchical_memory_limit 18446744073709551615", - "hierarchical_memsw_limit 18446744073709551615", - "total_cache 4", - "total_rss 3", - "total_rss_huge 0", - "total_mapped_file 524288", - "total_writeback 0", - "total_swap 5", - "total_pgpgin 16717", - "total_pgpgout 5037", - "total_pgfault 1", - "total_pgmajfault 2", - "total_inactive_anon 503808", - "total_active_anon 46309376", - "total_inactive_file 876544", - "total_active_file 81920", - "total_unevictable 0"); + private String MEMORY_STAT_CONTENTS = String.join( + "\n", + "cache 96", // keep different from total_cache to catch reading wrong value + "rss 97", // keep different from total_rss to catch reading wrong value + "rss_huge 0", + "mapped_file 524288", + "writeback 0", + "swap 95", // keep different from total_rss to catch reading wrong value + "pgpgin 16717", + "pgpgout 5037", + "pgfault 99", // keep different from total_pgfault to catch reading wrong value + "pgmajfault 98", // keep different from total_pgmajfault to catch reading wrong value + "inactive_anon 503808", + "active_anon 46309376", + "inactive_file 876544", + "active_file 81920", + "unevictable 0", + "hierarchical_memory_limit 18446744073709551615", + "hierarchical_memsw_limit 18446744073709551615", + "total_cache 4", + "total_rss 3", + "total_rss_huge 0", + "total_mapped_file 524288", + "total_writeback 0", + "total_swap 5", + "total_pgpgin 16717", + "total_pgpgout 5037", + "total_pgfault 1", + "total_pgmajfault 2", + "total_inactive_anon 503808", + "total_active_anon 46309376", + "total_inactive_file 876544", + "total_active_file 81920", + "total_unevictable 0"); + private String PROC_STAT_CONTENTS = String.join( + " ", + "1040", + "(system_server)", + "S", + "544", + "544", + "0", + "0", + "-1", + "1077936448", + "1", // this is pgfault + "0", + "2", // this is pgmajfault + "0", + "44533", + "13471", + "0", + "0", + "18", + "-2", + "117", + "0", + "2206", + "1257177088", + "3", // this is rss in bytes + "4294967295", + "2936971264", + "2936991289", + "3198888320", + "3198879848", + "2903927664", + "0", + "4612", + "0", + "1073775864", + "4294967295", + "0", + "0", + "17", + "0", + "0", + "0", + "0", + "0", + "0", + "2936999088", + "2936999936", + "2958692352", + "3198888595", + "3198888671", + "3198888671", + "3198889956", + "0"); - @Test - public void testParseMemoryStat_parsesCorrectValues() throws Exception { - MemoryStat stat = parseMemoryStatFromMemcg(MEMORY_STAT_CONTENTS); - assertEquals(stat.pgfault, 1); - assertEquals(stat.pgmajfault, 2); - assertEquals(stat.rssInBytes, 3); - assertEquals(stat.cacheInBytes, 4); - assertEquals(stat.swapInBytes, 5); - } + @Test + public void testParseMemoryStatFromMemcg_parsesCorrectValues() throws Exception { + MemoryStat stat = parseMemoryStatFromMemcg(MEMORY_STAT_CONTENTS); + assertEquals(stat.pgfault, 1); + assertEquals(stat.pgmajfault, 2); + assertEquals(stat.rssInBytes, 3); + assertEquals(stat.cacheInBytes, 4); + assertEquals(stat.swapInBytes, 5); + } - @Test - public void testParseMemoryStat_emptyMemoryStatContents() throws Exception { - MemoryStat stat = parseMemoryStatFromMemcg(""); - assertNull(stat); + @Test + public void testParseMemoryStatFromMemcg_emptyMemoryStatContents() throws Exception { + MemoryStat stat = parseMemoryStatFromMemcg(""); + assertNull(stat); - stat = parseMemoryStatFromMemcg(null); - assertNull(stat); - } + stat = parseMemoryStatFromMemcg(null); + assertNull(stat); + } + + @Test + public void testParseMemoryStatFromProcfs_parsesCorrectValues() throws Exception { + MemoryStat stat = parseMemoryStatFromProcfs(PROC_STAT_CONTENTS); + assertEquals(1, stat.pgfault); + assertEquals(2, stat.pgmajfault); + assertEquals(3, stat.rssInBytes); + assertEquals(0, stat.cacheInBytes); + assertEquals(0, stat.swapInBytes); + } + + @Test + public void testParseMemoryStatFromProcfs_emptyContents() throws Exception { + MemoryStat stat = parseMemoryStatFromProcfs(""); + assertNull(stat); + + stat = parseMemoryStatFromProcfs(null); + assertNull(stat); + } }