/* * Copyright (c) 2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.systemservices.impl.healthmonitor; import com.emc.storageos.systemservices.impl.resource.HealthMonitorService; import com.emc.vipr.model.sys.healthmonitor.DiagTest; import com.emc.vipr.model.sys.healthmonitor.DiagnosticsRestRep; import com.emc.vipr.model.sys.healthmonitor.NodeDiagnostics; import com.emc.vipr.model.sys.healthmonitor.TestParam; import org.junit.Assert; import org.junit.Test; import java.util.HashSet; import java.util.List; import java.util.Set; public class DiagnosticsExecTest extends DiagnosticsExec { private static final String STDOUT_EMPTY = ""; private static final String TEST_NAME1 = "Network interface"; private static final String TEST_STATUS1 = "OK"; private static final String TEST_NAME2 = "NTP"; private static final String TEST_STATUS2 = "OK, DEGRADED"; private static final String STDOUT = "* " + TEST_NAME1 + ": [" + TEST_STATUS1 + "]\n* " + TEST_NAME2 + ": " + "[" + TEST_STATUS2 + "]"; private static final Set<String> DIAG_TESTS = new HashSet<String>() { { add("Network interface"); add("Network routing"); add("NTP"); add("DNS"); add("Remote Repository"); } }; @Test public void testDiagToolStdOut() { try { String stdout = getDiagToolStdOutAsStr(); Assert.assertNotNull(stdout); } catch (Exception e) { Assert.fail(); } } @Test public void testDiagToolStdOutVerbose() { try { String stdout = getDiagToolStdOutAsStr("-v"); Assert.assertNotNull(stdout); } catch (Exception e) { Assert.fail(); } } @Test public void testConversionEmptyStdout() { List<DiagTest> diagTests = convertStringToDiagTestList(STDOUT_EMPTY); Assert.assertTrue(diagTests == null || diagTests.isEmpty()); } @Test public void testConversion() { List<DiagTest> diagTests = convertStringToDiagTestList(STDOUT); System.out.println("STDOUT: " + STDOUT); System.out.println("diagTests: " + diagTests); Assert.assertTrue(diagTests != null && diagTests.size() == 2); for (DiagTest test : diagTests) { if (test.getName().equals(TEST_NAME1)) { Assert.assertTrue(test.getStatus().equals(TEST_STATUS1)); } else if (test.getName().equals(TEST_NAME2)) { Assert.assertTrue(test.getStatus().equals(TEST_STATUS2)); } else { Assert.fail(); } } } @Test public void testNodeDiagnostics() { HealthMonitorService healthMonitorService = new HealthMonitorService(); DiagnosticsRestRep resp = healthMonitorService.getDiagnostics(null,"1",null); Assert.assertNotNull(resp); Assert.assertNotNull(resp.getNodeDiagnosticsList()); Set<String> testNames = new HashSet<String>(); for (NodeDiagnostics diag : resp.getNodeDiagnosticsList()) { Assert.assertTrue(diag.getNodeId() != null && !diag.getNodeId().isEmpty()); Assert.assertTrue(diag.getIp() != null && !diag.getIp().isEmpty()); Assert.assertNotNull(diag.getDiagTests()); for (DiagTest test : diag.getDiagTests()) { testNames.add(test.getName()); Assert.assertTrue(test.getStatus() != null && !test.getStatus().isEmpty()); if (test.getTestParams() != null) { for (TestParam param : test.getTestParams()) { Assert.assertTrue(param.getKey() != null && !param.getKey() .isEmpty()); Assert.assertTrue(param.getValue() != null && !param.getValue() .isEmpty()); } } } Assert.assertTrue(testNames.containsAll(DIAG_TESTS)); } } }