/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.ddmuilib; import com.android.ddmuilib.SysinfoPanel.BugReportParser; import com.android.ddmuilib.SysinfoPanel.BugReportParser.DataValue; import junit.framework.TestCase; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.util.List; public class BugReportParserTest extends TestCase { public void testParseEclairCpuDataSet() throws IOException { String cpuInfo = "Currently running services:\n" + " cpuinfo\n" + " ----------------------------------------------------------------------------\n" + " DUMP OF SERVICE cpuinfo:\n" + " Load: 0.53 / 0.11 / 0.04\n" + " CPU usage from 33406ms to 28224ms ago:\n" + " system_server: 56% = 42% user + 13% kernel / faults: 6724 minor 9 major\n" + " bootanimation: 1% = 0% user + 0% kernel\n" + " zygote: 0% = 0% user + 0% kernel / faults: 146 minor\n" + " TOTAL: 98% = 67% user + 30% kernel;\n"; BufferedReader br = new BufferedReader(new StringReader(cpuInfo)); List<DataValue> data = BugReportParser.readCpuDataset(br); assertEquals(4, data.size()); assertEquals("system_server (user)", data.get(0).name); assertEquals("Idle", data.get(3).name); } public void testParseJbCpuDataSet() throws IOException { String cpuInfo = "Load: 1.0 / 1.02 / 0.97\n" + "CPU usage from 96307ms to 36303ms ago:\n" + " 0.4% 675/system_server: 0.3% user + 0.1% kernel / faults: 198 minor\n" + " 0.1% 173/mpdecision: 0% user + 0.1% kernel\n" + " 0% 2856/kworker/0:2: 0% user + 0% kernel\n" + " 0% 3128/kworker/0:0: 0% user + 0% kernel\n" + "0.3% TOTAL: 0.1% user + 0% kernel + 0% iowait\n"; BufferedReader br = new BufferedReader(new StringReader(cpuInfo)); List<DataValue> data = BugReportParser.readCpuDataset(br); assertEquals(4, data.size()); assertEquals("675/system_server (user)", data.get(0).name); assertEquals("Idle", data.get(3).name); } public void testParseProcRankEclair() throws IOException { String memInfo = " 51 39408K 37908K 18731K 14936K system_server\n" + " 96 27432K 27432K 9501K 6816K android.process.acore\n" + " 27 248K 248K 83K 76K /system/bin/debuggerd\n"; BufferedReader br = new BufferedReader(new StringReader(memInfo)); List<DataValue> data = BugReportParser.readProcRankDataset(br, " PID Vss Rss Pss Uss cmdline\n"); assertEquals(3, data.size()); assertEquals("debuggerd", data.get(2).name); if (data.get(0).value - 18731 > 0.0002) { fail("Unexpected PSS Value " + data.get(0).value); } } public void testParseProcRankJb() throws IOException { String memInfo = " 675 101120K 100928K 63452K 52624K system_server\n" + "10170 82100K 82012K 58246K 53580K com.android.chrome:sandboxed_process0\n" + " 8742 27296K 27224K 6849K 5620K com.google.android.apps.walletnfcrel\n" + " ------ ------ ------\n" + " 480598K 394172K TOTAL\n" + "\n" + "RAM: 1916984K total, 886404K free, 72036K buffers, 482544K cached, 456K shmem, 34864K slab\n"; BufferedReader br = new BufferedReader(new StringReader(memInfo)); List<DataValue> data = BugReportParser.readProcRankDataset(br, " PID Vss Rss Pss Uss cmdline\n"); assertEquals(3, data.size()); } public void testParseMeminfoEclair() throws IOException { String memInfo = "------ MEMORY INFO ------\n" + "MemTotal: 516528 kB\n" + "MemFree: 401036 kB\n" + "Buffers: 0 kB\n" + " PID Vss Rss Pss Uss cmdline\n" + " 51 39408K 37908K 18731K 14936K system_server\n" + " 96 27432K 27432K 9501K 6816K android.process.acore\n" + " 297 23348K 23348K 5245K 2276K com.android.gallery\n"; BufferedReader br = new BufferedReader(new StringReader(memInfo)); List<DataValue> data = BugReportParser.readMeminfoDataset(br); assertEquals(5, data.size()); assertEquals("Free", data.get(0).name); } public void testParseMeminfoJb() throws IOException { String memInfo = // note: This dataset does not have all entries, so the totals will be off "------ MEMORY INFO ------\n" + "MemTotal: 1916984 kB\n" + "MemFree: 888048 kB\n" + "Buffers: 72036 kB\n" + " PID Vss Rss Pss Uss cmdline\n" + " 675 101120K 100928K 63452K 52624K system_server\n" + "10170 82100K 82012K 58246K 53580K com.android.chrome:sandboxed_process0\n" + " 8742 27296K 27224K 6849K 5620K com.google.android.apps.walletnfcrel\n" + " ------ ------ ------\n" + " 480598K 394172K TOTAL\n" + "\n" + "RAM: 1916984K total, 886404K free, 72036K buffers, 482544K cached, 456K shmem, 34864K slab\n"; BufferedReader br = new BufferedReader(new StringReader(memInfo)); List<DataValue> data = BugReportParser.readMeminfoDataset(br); assertEquals(6, data.size()); } }