package azkaban.utils; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Test; import static org.junit.Assert.*; public class OsMemoryUtilTest { private OsMemoryUtil util = new OsMemoryUtil(); @Test public void canReadMemInfoFileIfExists() { long size = util.getOsTotalFreeMemorySize(); Path memFile = Paths.get("/proc/meminfo"); if (!(Files.isRegularFile(memFile) && Files.isReadable(memFile))) { assertTrue(size == 0); } // todo HappyRay: investigate why size returned is 0 on Travis only but works on my Linux machine. // I can't find a way to get to the Gradle test report on Travis which makes debugging difficult. } @Test public void getOsTotalFreeMemorySize() { List<String> lines = Arrays.asList("MemFree: 1 kB", "Buffers: 2 kB", "Cached: 3 kB", "SwapFree: 4 kB", "Foo: 10 kB"); long size = util.getOsTotalFreeMemorySizeFromStrings(lines); assertEquals(10, size); } @Test public void getOsTotalFreeMemorySizeMissingEntry() { List<String> lines = Arrays.asList("MemFree: 1 kB", "Foo: 10 kB"); long size = util.getOsTotalFreeMemorySizeFromStrings(lines); assertEquals(0, size); } @Test public void getOsTotalFreeMemorySizeWrongEntry() { List<String> lines = Collections.singletonList("MemFree: foo kB"); long size = util.getOsTotalFreeMemorySizeFromStrings(lines); assertEquals(0, size); } @Test public void parseMemoryLine() { String line = "MemFree: 500 kB"; long size = util.parseMemoryLine(line); assertEquals(500, size); } @Test public void parseIncorrectMemoryLine() { String line = "MemFree: ab kB"; long size = util.parseMemoryLine(line); assertEquals(0, size); } }