/* * Copyright (c) 2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.systemservices.impl.resource; import com.emc.storageos.systemservices.impl.healthmonitor.models.*; import com.emc.vipr.model.sys.healthmonitor.DiskStats; import com.emc.vipr.model.sys.healthmonitor.NodeHealth; import com.emc.vipr.model.sys.healthmonitor.NodeStats; import com.emc.vipr.model.sys.healthmonitor.ServiceStats; import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import java.util.List; public class HealthMonitorServiceTest extends HealthMonitorService { private static final List<String> AVAILABLE_SERVICES = new ArrayList<String>() { { add("syssvc"); add("apisvc"); } }; private static final String NODE_ID = "syssvc-node1"; private static final String NODE_NAME = "testName"; private static final String NODE_IP = "standalone"; @Test public void testNodeStats() { NodeStats nodeStats = getNodeStats(NODE_ID, NODE_NAME, NODE_IP, 0, AVAILABLE_SERVICES); verifyNodeStats(nodeStats); } @Test public void testNodeStatsWithInterval() { NodeStats nodeStats = getNodeStats(NODE_ID, NODE_NAME, NODE_IP, 10, AVAILABLE_SERVICES); verifyNodeStats(nodeStats); } private void verifyNodeStats(NodeStats nodeStats) { Assert.assertTrue(nodeStats.getDiskStatsList() != null && !nodeStats .getDiskStatsList().isEmpty()); Assert.assertTrue(nodeStats.getServiceStatsList() != null && !nodeStats .getServiceStatsList().isEmpty()); // service stats for (ServiceStats serviceStats : nodeStats.getServiceStatsList()) { Assert.assertTrue(serviceStats.getServiceName() != null && !serviceStats .getServiceName().isEmpty()); Assert.assertNotNull(serviceStats.getCommand()); Assert.assertTrue(serviceStats.getFileDescriptors() >= 0); Assert.assertNotNull(serviceStats.getProcessStatus()); Assert.assertNotNull(serviceStats.getProcessStatus().getStartTime()); Assert.assertNotNull(serviceStats.getProcessStatus().getUpTime()); Assert.assertTrue(serviceStats.getProcessStatus().getNumberOfThreads() >= 0); Assert.assertTrue(serviceStats.getProcessStatus().getResidentMem() >= 0); Assert.assertTrue(serviceStats.getProcessStatus().getVirtualMemSizeInBytes() >= 0); } // Node stats Assert.assertEquals(NODE_ID, nodeStats.getNodeId()); Assert.assertEquals(NODE_NAME, nodeStats.getNodeName()); Assert.assertEquals(NODE_IP, nodeStats.getIp()); Assert.assertNotNull(nodeStats.getMemoryStats()); Assert.assertNotNull(nodeStats.getMemoryStats().getMemFree()); Assert.assertNotNull(nodeStats.getMemoryStats().getMemBuffers()); Assert.assertNotNull(nodeStats.getMemoryStats().getMemTotal()); Assert.assertNotNull(nodeStats.getLoadAvgStats()); Assert.assertTrue(nodeStats.getLoadAvgStats().getLoadAvgTasksPastFifteenMinutes() >= 0); Assert.assertTrue(nodeStats.getLoadAvgStats().getLoadAvgTasksPastFiveMinutes() >= 0); Assert.assertTrue(nodeStats.getLoadAvgStats().getLoadAvgTasksPastMinute() >= 0); // disk stats for (DiskStats diskStats : nodeStats.getDiskStatsList()) { Assert.assertNotNull(diskStats.getDiskId()); Assert.assertTrue(diskStats.getSectorsReadPerSec() >= 0); Assert.assertTrue(diskStats.getSectorsWritePerSec() >= 0); Assert.assertTrue(diskStats.getReadPerSec() >= 0); Assert.assertTrue(diskStats.getWritePerSec() >= 0); Assert.assertTrue(diskStats.getUtilPerc() >= 0); Assert.assertTrue(diskStats.getAvgSvcTime() >= 0); Assert.assertTrue(diskStats.getAvgWait() >= 0); } // Test service list order Assert.assertEquals(AVAILABLE_SERVICES.get(0), nodeStats.getServiceStatsList() .get(0).getServiceName()); } @Test public void testNodeStatsWithNoAvailableServices() { NodeStats nodeStats = getNodeStats(NODE_ID, NODE_NAME, NODE_IP, 0, null); Assert.assertTrue(nodeStats.getDiskStatsList() != null && !nodeStats .getDiskStatsList().isEmpty()); Assert.assertTrue(nodeStats.getServiceStatsList() != null && !nodeStats .getServiceStatsList().isEmpty()); // service stats for (ServiceStats serviceStats : nodeStats.getServiceStatsList()) { Assert.assertTrue(serviceStats.getServiceName() != null && !serviceStats .getServiceName().isEmpty()); } // Node stats Assert.assertEquals(NODE_ID, nodeStats.getNodeId()); Assert.assertEquals(NODE_NAME, nodeStats.getNodeName()); Assert.assertEquals(NODE_IP, nodeStats.getIp()); Assert.assertNotNull(nodeStats.getMemoryStats().getMemFree()); // disk stats for (DiskStats diskStats : nodeStats.getDiskStatsList()) { Assert.assertNotNull(diskStats.getDiskId()); } } @Test public void testNodeHealth(){ NodeHealth nodeHealth = getNodeHealth(NODE_ID, NODE_ID, NODE_IP, AVAILABLE_SERVICES); Assert.assertNotNull(nodeHealth); Assert.assertEquals(NODE_ID, nodeHealth.getNodeId()); Assert.assertEquals(NODE_IP, nodeHealth.getIp()); Assert.assertNotNull(nodeHealth.getStatus()); Assert.assertNotNull(nodeHealth.getServiceHealthList()); // Test service list order Assert.assertEquals(AVAILABLE_SERVICES.get(0), nodeHealth.getServiceHealthList ().get(0).getServiceName()); } @Test public void testNodeHealthWithInvalidServices() { List<String> invalidServices = new ArrayList<String>(){{ add("syssvc"); add("mysvc"); }}; NodeHealth nodeHealth = getNodeHealth(NODE_ID, NODE_ID, NODE_IP, invalidServices); Assert.assertNotNull(nodeHealth); Assert.assertTrue(Status.DEGRADED.toString().equals(nodeHealth.getStatus())); } }