Mercurial > hg > thermostat-ng > agent
changeset 2689:19fa2f961292
Mock procfs files in ProcDataSourceTest
Reviewed-by: jerboaa
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-June/023630.html
author | Elliott Baron <ebaron@redhat.com> |
---|---|
date | Tue, 13 Jun 2017 12:47:56 -0400 |
parents | 93da88c81d1d |
children | eaa1ff0bf5b9 |
files | common/portability/src/main/java/com/redhat/thermostat/common/portability/linux/ProcDataSource.java common/portability/src/test/java/com/redhat/thermostat/common/portability/linux/ProcDataSourceTest.java |
diffstat | 2 files changed, 68 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/common/portability/src/main/java/com/redhat/thermostat/common/portability/linux/ProcDataSource.java Fri Jun 09 21:23:21 2017 +0200 +++ b/common/portability/src/main/java/com/redhat/thermostat/common/portability/linux/ProcDataSource.java Tue Jun 13 12:47:56 2017 -0400 @@ -36,6 +36,7 @@ package com.redhat.thermostat.common.portability.linux; +import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; @@ -61,73 +62,90 @@ private static final String PID_STAT_FILE = "/proc/${pid}/stat"; private static final String PID_STATUS_FILE = "/proc/${pid}/status"; private static final String PID_NUMA_MAPS_FILE = "/proc/${pid}/numa_maps"; + + private final ReaderCreator readerCreator; + + public ProcDataSource() { + this(new ReaderCreator()); + } + + ProcDataSource(ReaderCreator readerCreator) { + this.readerCreator = readerCreator; + } /** * Returns a reader for /proc/cpuinfo */ public Reader getCpuInfoReader() throws IOException { - return new FileReader(CPUINFO_FILE); + return readerCreator.createFileReader(CPUINFO_FILE); } /** * Returns a reader for /proc/loadavg */ public Reader getCpuLoadReader() throws IOException { - return new FileReader(LOAD_FILE); + return readerCreator.createFileReader(LOAD_FILE); } /** * Returns a reader for /proc/stat. Kernel/System statistics. */ public Reader getStatReader() throws IOException { - return new FileReader(STAT_FILE); + return readerCreator.createFileReader(STAT_FILE); } /** * Returns a reader for /proc/meminfo */ public Reader getMemInfoReader() throws IOException { - return new FileReader(MEMINFO_FILE); + return readerCreator.createFileReader(MEMINFO_FILE); } /** * Returns a reader for /proc/$PID/environ */ public Reader getEnvironReader(int pid) throws IOException { - return new FileReader(getPidFile(PID_ENVIRON_FILE, pid)); + return readerCreator.createFileReader(getPidFile(PID_ENVIRON_FILE, pid)); } /** * Returns a reader for /proc/$PID/io */ public Reader getIoReader(int pid) throws IOException { - return new FileReader(getPidFile(PID_IO_FILE, pid)); + return readerCreator.createFileReader(getPidFile(PID_IO_FILE, pid)); } /** * Returns a reader for /proc/$PID/stat */ public Reader getStatReader(int pid) throws IOException { - return new FileReader(getPidFile(PID_STAT_FILE, pid)); + return readerCreator.createFileReader(getPidFile(PID_STAT_FILE, pid)); } /** * Returns a reader for /proc/$PID/status */ public Reader getStatusReader(int pid) throws IOException { - return new FileReader(getPidFile(PID_STATUS_FILE, pid)); + return readerCreator.createFileReader(getPidFile(PID_STATUS_FILE, pid)); } /** * Returns a reader for /proc/$PID/numa_maps */ public Reader getNumaMapsReader(int pid) throws IOException { - return new FileReader(getPidFile(PID_NUMA_MAPS_FILE, pid)); + return readerCreator.createFileReader(getPidFile(PID_NUMA_MAPS_FILE, pid)); } private String getPidFile(String fileName, int pid) { return fileName.replace("${pid}", Integer.toString(pid)); } + + // For testing purposes + static class ReaderCreator { + FileReader createFileReader(String fileName) throws FileNotFoundException { + return new FileReader(fileName); + } + } }
--- a/common/portability/src/test/java/com/redhat/thermostat/common/portability/linux/ProcDataSourceTest.java Fri Jun 09 21:23:21 2017 +0200 +++ b/common/portability/src/test/java/com/redhat/thermostat/common/portability/linux/ProcDataSourceTest.java Tue Jun 13 12:47:56 2017 -0400 @@ -36,86 +36,106 @@ package com.redhat.thermostat.common.portability.linux; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.io.FileReader; import java.io.IOException; import java.io.Reader; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Test; + +import com.redhat.thermostat.common.portability.linux.ProcDataSource.ReaderCreator; import com.redhat.thermostat.shared.config.OS; -import com.redhat.thermostat.testutils.TestUtils; - -import org.junit.Assume; -import org.junit.Test; -import static org.junit.Assert.assertNotNull; - public class ProcDataSourceTest { + + private ProcDataSource source; + private ReaderCreator readerCreator; + + @Before + public void setup() throws Exception { + readerCreator = mock(ReaderCreator.class); + FileReader reader = mock(FileReader.class); + when(readerCreator.createFileReader(anyString())).thenReturn(reader); + source = new ProcDataSource(readerCreator); + } @Test public void testGetCpuInfoReader() throws IOException { Assume.assumeTrue(OS.IS_LINUX); - Reader r = new ProcDataSource().getCpuInfoReader(); + Reader r = source.getCpuInfoReader(); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/cpuinfo"); } @Test public void testGetCpuLoadReader() throws IOException { Assume.assumeTrue(OS.IS_LINUX); - Reader r = new ProcDataSource().getCpuLoadReader(); + Reader r = source.getCpuLoadReader(); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/loadavg"); } @Test public void testGetMemInfoReader() throws IOException { Assume.assumeTrue(OS.IS_LINUX); - Reader r = new ProcDataSource().getMemInfoReader(); + Reader r = source.getMemInfoReader(); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/meminfo"); } @Test public void testGetStatReader() throws IOException { Assume.assumeTrue(OS.IS_LINUX); - int pid = TestUtils.getProcessId(); - Reader r = new ProcDataSource().getStatReader(pid); + Reader r = source.getStatReader(); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/stat"); } @Test public void testGetEnvironReader() throws IOException { Assume.assumeTrue(OS.IS_LINUX); - int pid = TestUtils.getProcessId(); - Reader r = new ProcDataSource().getEnvironReader(pid); + Reader r = source.getEnvironReader(1234); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/1234/environ"); } @Test public void testIoReader() throws Exception { Assume.assumeTrue(OS.IS_LINUX); - int pid = TestUtils.getProcessId(); - Reader r = new ProcDataSource().getIoReader(pid); + Reader r = source.getIoReader(1234); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/1234/io"); } @Test public void testStatReader() throws Exception { Assume.assumeTrue(OS.IS_LINUX); - int pid = TestUtils.getProcessId(); - Reader r = new ProcDataSource().getStatReader(pid); + Reader r = source.getStatReader(1234); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/1234/stat"); } @Test public void testStatusReader() throws Exception { Assume.assumeTrue(OS.IS_LINUX); - int pid = TestUtils.getProcessId(); - Reader r = new ProcDataSource().getStatusReader(pid); + Reader r = source.getStatusReader(1234); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/1234/status"); } @Test public void testNumaMapsReader() throws Exception { Assume.assumeTrue(OS.IS_LINUX); - int pid = TestUtils.getProcessId(); - Reader r = new ProcDataSource().getNumaMapsReader(pid); + Reader r = source.getNumaMapsReader(1234); assertNotNull(r); + verify(readerCreator).createFileReader("/proc/1234/numa_maps"); } }