package org.opennms.netmgt.jasper.resource; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRField; import net.sf.jasperreports.engine.JRQuery; import net.sf.jasperreports.engine.JRQueryChunk; import net.sf.jasperreports.engine.base.JRBaseQuery; import net.sf.jasperreports.engine.design.JRDesignDataset; import org.junit.Test; public class ResourceQueryFieldsProviderTest { private class TestDatasetImpl extends JRDesignDataset{ /** * */ private static final long serialVersionUID = 1L; public TestDatasetImpl() { super(true); } private String m_queryText = ""; public JRQuery getQuery() { JRQuery query = new JRBaseQuery() { /** * */ private static final long serialVersionUID = 1L; public JRQueryChunk[] getChunks() { return null; } public String getLanguage() { return "resourceQuery"; } public String getText() { return getQueryText(); } }; return query; } public String getQueryText() { return m_queryText; } public void setQueryText(String queryText) { m_queryText = queryText; } } @Test public void testQueryWithDsNames() throws UnsupportedOperationException, JRException { TestDatasetImpl reportDataset = new TestDatasetImpl(); reportDataset.setQueryText("--rrdDir share/rrd/snmp --nodeId 47 --resourceName opennms-jvm --dsName TotalMemory"); ResourceQueryFieldsProvider provider = new ResourceQueryFieldsProvider(); JRField[] fields = provider.getFields(null, reportDataset, null); assertNotNull(fields); assertEquals(2, fields.length); assertEquals("Path", fields[0].getName()); assertEquals("TotalMemory", fields[1].getName()); } @Test public void testQueryWithManyDsNames() throws UnsupportedOperationException, JRException { TestDatasetImpl reportDataset = new TestDatasetImpl(); reportDataset.setQueryText("--rrdDir share/rrd/snmp --nodeId 47 --resourceName opennms-jvm --dsName TotalMemory,DsName1,DsName2,DsName3"); ResourceQueryFieldsProvider provider = new ResourceQueryFieldsProvider(); JRField[] fields = provider.getFields(null, reportDataset, null); assertNotNull(fields); assertEquals(5, fields.length); assertEquals("Path", fields[0].getName()); assertEquals("TotalMemory", fields[1].getName()); assertEquals("DsName1", fields[2].getName()); assertEquals("DsName2", fields[3].getName()); assertEquals("DsName3", fields[4].getName()); } @Test public void testQueryWithStringProperties() throws UnsupportedOperationException, JRException { TestDatasetImpl reportDataset = new TestDatasetImpl(); reportDataset.setQueryText("--rrdDir share/rrd/snmp --nodeId 47 --resourceName opennms-jvm --dsName TotalMemory,DsName1,DsName2,DsName3 --string nsVpnMonVpnName"); ResourceQueryFieldsProvider provider = new ResourceQueryFieldsProvider(); JRField[] fields = provider.getFields(null, reportDataset, null); assertNotNull(fields); assertEquals(6, fields.length); assertEquals("Path", fields[0].getName()); assertEquals("TotalMemory", fields[1].getName()); assertEquals("DsName1", fields[2].getName()); assertEquals("DsName2", fields[3].getName()); assertEquals("DsName3", fields[4].getName()); assertEquals("nsVpnMonVpnName", fields[5].getName()); } @Test public void testQueryWithMultipleStringProperties() throws UnsupportedOperationException, JRException { TestDatasetImpl reportDataset = new TestDatasetImpl(); reportDataset.setQueryText("--rrdDir share/rrd/snmp --nodeId 47 --resourceName opennms-jvm --dsName TotalMemory,DsName1,DsName2,DsName3 --string nsVpnMonVpnName,name2,name3"); ResourceQueryFieldsProvider provider = new ResourceQueryFieldsProvider(); JRField[] fields = provider.getFields(null, reportDataset, null); assertNotNull(fields); assertEquals(8, fields.length); assertEquals("Path", fields[0].getName()); assertEquals("TotalMemory", fields[1].getName()); assertEquals("DsName1", fields[2].getName()); assertEquals("DsName2", fields[3].getName()); assertEquals("DsName3", fields[4].getName()); assertEquals("nsVpnMonVpnName", fields[5].getName()); assertEquals("name2", fields[6].getName()); assertEquals("name3", fields[7].getName()); } @Test public void testQueryWithoutDsNames() throws UnsupportedOperationException, JRException { TestDatasetImpl reportDataset = new TestDatasetImpl(); reportDataset.setQueryText("--rrdDir share/rrd/snmp --nodeId 47 --resourceName opennms-jvm"); ResourceQueryFieldsProvider provider = new ResourceQueryFieldsProvider(); JRField[] fields = provider.getFields(null, reportDataset, null); assertNotNull(fields); assertEquals(1, fields.length); assertEquals("Path", fields[0].getName()); } }