package org.opennms.netmgt.poller.monitor;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.opennms.core.test.MockLogAppender;
import org.opennms.core.test.OpenNMSJUnit4ClassRunner;
import org.opennms.core.test.http.annotations.JUnitHttpServer;
import org.opennms.core.test.http.annotations.Webapp;
import org.opennms.core.utils.InetAddressUtils;
import org.opennms.netmgt.model.PollStatus;
import org.opennms.netmgt.poller.InetNetworkInterface;
import org.opennms.netmgt.poller.MonitoredService;
import org.opennms.netmgt.poller.NetworkInterface;
import org.opennms.netmgt.poller.monitors.SeleniumMonitor;
import org.opennms.netmgt.poller.monitors.SeleniumMonitor.BaseUrlUtils;
import org.springframework.test.context.ContextConfiguration;
@RunWith(OpenNMSJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:META-INF/opennms/emptyContext.xml")
@JUnitHttpServer(port=10342)
public class SeleniumMonitorTest {
public static class MockMonService implements MonitoredService{
private int m_nodeId;
private String m_nodeLabel;
private InetAddress m_inetAddr;
private String m_svcName;
private String m_ipAddr;
public MockMonService(int nodeId, String nodeLabel, InetAddress inetAddress, String svcName) throws UnknownHostException {
m_nodeId = nodeId;
m_nodeLabel = nodeLabel;
m_inetAddr = inetAddress;
m_svcName = svcName;
m_ipAddr = InetAddressUtils.str(m_inetAddr);
}
@Override
public String getSvcUrl() {
return null;
}
@Override
public String getSvcName() {
return m_svcName;
}
@Override
public String getIpAddr() {
return m_ipAddr;
}
@Override
public int getNodeId() {
return m_nodeId;
}
@Override
public String getNodeLabel() {
return m_nodeLabel;
}
@Override
public NetworkInterface<InetAddress> getNetInterface() {
return new InetNetworkInterface(m_inetAddr);
}
@Override
public InetAddress getAddress() {
return m_inetAddr;
}
}
@Before
public void setup() throws Exception{
MockLogAppender.setupLogging(true, "DEBUG");
System.setProperty("opennms.home", "src/test/resources");
}
//Requires Firefox to be installed to run
@Test
@JUnitHttpServer(port=10342, webapps=@Webapp(context="/opennms", path = "src/test/resources/testWar"))
public void testPollStatusNotNull() throws UnknownHostException{
MonitoredService monSvc = new MockMonService(1, "papajohns", InetAddressUtils.addr("213.187.33.164"), "PapaJohnsSite");
Map<String, Object> params = new HashMap<String, Object>();
params.put("selenium-test", "SeleniumGroovyTest.groovy");
params.put("base-url", "localhost");
params.put("port", "10342");
SeleniumMonitor ajaxPSM = new SeleniumMonitor();
PollStatus pollStatus = ajaxPSM.poll(monSvc, params);
assertNotNull("PollStatus must not be null", pollStatus);
System.err.println("PollStatus message: " + pollStatus.getReason());
assertEquals(PollStatus.available(), pollStatus);
}
@Test
public void testBaseUrlUtils()
{
String baseUrl = "http://${ipAddr}:8080";
String monSvcIpAddr = "192.168.1.1";
String finalUrl = "";
finalUrl = BaseUrlUtils.replaceIpAddr(baseUrl, monSvcIpAddr);
assertEquals("http://192.168.1.1:8080", finalUrl);
}
@After
public void tearDown(){
}
}