package com.orbitz.monitoring.lib.timertask; import java.util.Collection; import junit.framework.TestCase; import com.orbitz.monitoring.api.Monitor; /** * Unit tests for the VMStatTimerTask. * @author Matt O'Keefe */ public class VMStatTimerTaskTest extends TestCase { private VMStatTimerTask task; protected void setUp() throws Exception { task = new VMStatTimerTask(); } public void testVMStats() { task.run(); Collection<Monitor> monitors = task.emitMonitors(); boolean garbageCollectorStats = false; boolean threadStats = false; boolean heapMemoryStats = false; boolean nonHeapMemoryStats = false; boolean finalMemoryStats = false; boolean heapMemoryPoolStats = false; boolean nonHeapMemoryPoolStats = false; for (Monitor monitor: monitors) { if("JvmStats".equals(monitor.get(Monitor.NAME))) { if (monitor.getAsString("type").startsWith("GarbageCollector")) { garbageCollectorStats = true; assertTrue("Didn't find a count attribute", monitor.hasAttribute("count")); assertTrue("Didn't find a time attribute", monitor.hasAttribute("time")); } else if (monitor.getAsString("type").startsWith("Thread")) { threadStats = true; assertTrue("Didn't find a count attribute", monitor.hasAttribute("count")); } else if (monitor.getAsString("type").startsWith("Memory.Heap.memoryUsage")) { heapMemoryStats = true; assertTrue("Didn't find a count attribute", monitor.hasAttribute("count")); assertTrue("Didn't find a percent attribute", monitor.hasAttribute("percent")); } else if (monitor.getAsString("type").startsWith("Memory.NonHeap.memoryUsage")) { nonHeapMemoryStats = true; assertTrue("Didn't find a count attribute", monitor.hasAttribute("count")); assertTrue("Didn't find a percent attribute", monitor.hasAttribute("percent")); } else if (monitor.getAsString("type").startsWith("Memory.objectPendingFinalization")) { finalMemoryStats = true; assertTrue("Didn't find a count attribute", monitor.hasAttribute("count")); } else if (monitor.getAsString("type").startsWith("Memory.Heap.Pool")) { heapMemoryPoolStats = true; assertTrue("Didn't find a count attribute", monitor.hasAttribute("count")); if(monitor.getAsString("type").endsWith("memoryUsage")) { assertTrue("Didn't find a percent attribute", monitor.hasAttribute("percent")); } } else if (monitor.getAsString("type").startsWith("Memory.NonHeap.Pool")) { nonHeapMemoryPoolStats = true; assertTrue("Didn't find a count attribute", monitor.hasAttribute("count")); if(monitor.getAsString("type").endsWith("memoryUsage")) { assertTrue("Didn't find a percent attribute", monitor.hasAttribute("percent")); } } } } assertTrue("Didn't find a GarbageCollector Monitor", garbageCollectorStats); assertTrue("Didn't find a Thread Monitor", threadStats); assertTrue("Didn't find a Memory.Heap.memoryUsage Monitor", heapMemoryStats); assertTrue("Didn't find a Memory.NonHeap.memoryUsage Monitor", nonHeapMemoryStats); assertTrue("Didn't find a Memory.objectPendingFinalization Monitor", finalMemoryStats); assertTrue("Didn't find a Memory.Heap.Pool Monitor", heapMemoryPoolStats); assertTrue("Didn't find a Memory.NonHeap.Pool Monitor", nonHeapMemoryPoolStats); } }