package binky.reportrunner.service.impl; import java.sql.SQLException; import java.util.LinkedList; import java.util.List; import java.util.UUID; import junit.framework.TestCase; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import binky.reportrunner.data.RunnerDashboardSampler; import binky.reportrunner.data.RunnerDashboardSampler.Interval; import binky.reportrunner.data.RunnerDashboardSampler.Window; import binky.reportrunner.data.RunnerDataSource; import binky.reportrunner.data.RunnerGroup; import binky.reportrunner.scheduler.SchedulerException; import binky.reportrunner.service.DashboardService; import binky.reportrunner.service.DatasourceService; import binky.reportrunner.service.GroupService; public class DashboardServiceImplTest extends TestCase { GroupService groupService; private RunnerGroup group; DatasourceService dss; private RunnerDataSource ds; private RunnerDashboardSampler i; private DashboardService dash; private Integer id; protected void setUp() throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); dss = (DatasourceService)ctx.getBean("runnerDatasourceService"); groupService = (GroupService)ctx.getBean("groupService"); dash=(DashboardService)ctx.getBean("dashboardService"); group = new RunnerGroup(); group.setGroupName(getUID()); groupService.saveOrUpdate(group); ds = new RunnerDataSource(); ds.setDataSourceName(getUID()); List<RunnerGroup> groups = new LinkedList<RunnerGroup>(); groups.add(group); ds.setGroups(groups); //per environment ds.setJdbcClass("com.mysql.jdbc.Driver"); ds.setJdbcUrl("jdbc:mysql://localhost:3306/dashtest"); //dashtest ds.setUsername("dashtest"); //dashtest ds.setPassword("password"); dss.saveUpdateDataSource(ds); i = new RunnerDashboardSampler(); i.setDatasource(ds); i.setGroup(group); i.setAlertQuery("select rand(1000) val from dual"); i.setInterval(Interval.MONTH); i.setRecordTrendData(true); i.setValueColumn("val"); i.setWindow(Window.MONTH); //pop the id back in so we can track it id = dash.saveUpdateItem(i); i.setItemId(id); } protected void tearDown() throws Exception { dash.deleteItem(id); dss.deleteDataSource(ds.getDataSourceName()); groupService.delete(group.getGroupName()); } private String getUID() { return UUID.randomUUID().toString(); } public void testGetItem() { assertNotNull(dash.getItem(id)); } public void testDeleteItem() { try { dash.deleteItem(id); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } assertNull(dash.getItem(id)); } public void testGetItemsForGroup() { assertTrue(dash.getItemsForGroup(group.getGroupName()).size()>0); } public void testGetAllItems() { assertTrue(dash.getAllItems().size()>0); } public void testInvokeDashboardItem() { try { dash.invokeDashboardItem(id); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testProcessDashboardItem() { try { dash.processDashboardItem(id); } catch (SQLException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testClearTrendData() { dash.clearTrendData(id); } }