package org.opennms.netmgt.jasper.resource; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.design.JRDesignField; import org.junit.Before; import org.junit.Test; public class ResourceCommandTest { @Before public void setUp() { System.setProperty("org.opennms.rrd.storeByGroup", "False"); } @Test public void testDatasourceWithNoFilters() throws JRException { JRDataSource dataSource = new ResourceQueryCommand().executeCommand(getCommand()); assertNotNull(dataSource); assertTrue(dataSource.next()); JRDesignField pathField = new JRDesignField(); pathField.setName("path"); String pathVal = (String) dataSource.getFieldValue(pathField); assertNotNull("", pathVal); assertTrue(pathVal.matches(".*src/test/resources/share/rrd/snmp/10/nsVpnMonitor/tun_id_1")); JRDesignField filterField = new JRDesignField(); filterField.setName("icmp"); String val = (String) dataSource.getFieldValue(filterField); assertNull(val); } @Test public void testDatasourceWithFilters() throws JRException { JRDataSource dataSource = new ResourceQueryCommand().executeCommand(getCommandWithFilter()); assertNotNull(dataSource); assertTrue(dataSource.next()); JRDesignField pathField = new JRDesignField(); pathField.setName("path"); assertNotNull("", dataSource.getFieldValue(pathField)); JRDesignField filterField = new JRDesignField(); filterField.setName("nsVpnMonBytesIn"); String dsFieldValue = (String) dataSource.getFieldValue(filterField); assertNotNull(dsFieldValue); assertTrue(dsFieldValue.matches(".*src/test/resources/share/rrd/snmp/10/nsVpnMonitor/tun_id_1/nsVpnMonBytesIn.jrb")); } @Test public void testDataSourceWithStringProperties() throws JRException { JRDataSource dataSource = new ResourceQueryCommand().executeCommand("--rrdDir src/test/resources/share/rrd/snmp" + " --nodeId 10" + " --resourceType nsVpnMonitor" + " --dsName nsVpnMonBytesIn" + " --string nsVpnMonVpnName"); assertNotNull(dataSource); assertTrue(dataSource.next()); JRDesignField pathField = new JRDesignField(); pathField.setName("path"); String path = (String) dataSource.getFieldValue(pathField); System.out.println("path retVal: " + path); assertTrue(path.matches(".*src/test/resources/share/rrd/snmp/10/nsVpnMonitor/tun_id_1")); JRDesignField filterField = new JRDesignField(); filterField.setName("nsVpnMonBytesIn"); String dsFieldValue = (String) dataSource.getFieldValue(filterField); assertNotNull(dsFieldValue); assertTrue(dsFieldValue.matches(".*src/test/resources/share/rrd/snmp/10/nsVpnMonitor/tun_id_1/nsVpnMonBytesIn.jrb")); JRDesignField stringPropField = new JRDesignField(); stringPropField.setName("nsVpnMonVpnName"); String stringPropFieldVal = (String) dataSource.getFieldValue(stringPropField); assertNotNull(stringPropFieldVal); assertEquals("998r3-irving-tx-primary", stringPropFieldVal); assertFalse(dataSource.next()); } @Test public void testNoDatasourceWithFilters() throws JRException { JRDataSource dataSource = new ResourceQueryCommand().executeCommand(getCommandWithBogusFilter()); assertNotNull(dataSource); boolean next = dataSource.next(); assertFalse(next); } private String getCommandWithBogusFilter() { return "--rrdDir src/test/resources/share/rrd/snmp --nodeid 10 --resourceType nsVpnMonitor --dsName bogus"; } private String getCommand() { return "--rrdDir src/test/resources/share/rrd/snmp --nodeid 10 --resourceType nsVpnMonitor"; } private String getCommandWithFilter() { return "--rrdDir src/test/resources/share/rrd/snmp --nodeid 10 --resourceType nsVpnMonitor --dsName nsVpnMonBytesIn"; } }