package binky.reportrunner.service.impl;
import java.util.Calendar;
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.data.RunnerJob;
import binky.reportrunner.data.RunnerJobParameter;
import binky.reportrunner.data.RunnerJob_pk;
import binky.reportrunner.data.RunnerUser;
import binky.reportrunner.service.DashboardService;
import binky.reportrunner.service.DatasourceService;
import binky.reportrunner.service.GroupService;
import binky.reportrunner.service.ReportService;
import binky.reportrunner.service.UserService;
public class GroupServiceImplTest extends TestCase {
GroupService groupService;
private RunnerGroup group;
private ReportService reportService;
private DashboardService dash;
private UserService userService;
private RunnerUser u;
DatasourceService dss;
private RunnerDataSource ds;
protected void setUp() throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
reportService = (ReportService)ctx.getBean("runnerJobService");
groupService = (GroupService) ctx.getBean("groupService");
dash=(DashboardService)ctx.getBean("dashboardService");
userService= (UserService) ctx.getBean("userService");
dss = (DatasourceService)ctx.getBean("runnerDatasourceService");
group = new RunnerGroup();
group.setGroupName(getUID());
groupService.saveOrUpdate(group);
reportService.addUpdateJob(getTestJob());
RunnerDashboardSampler i = new RunnerDashboardSampler();
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
dash.saveUpdateItem(i);
List<RunnerGroup> groups = new LinkedList<RunnerGroup>();
u= userService.createUser(getUID(), "test", "test", false, false, false, groups);
ds = new RunnerDataSource();
ds.setDataSourceName(getUID());
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);
}
private RunnerJob getTestJob() {
RunnerJob j = new RunnerJob();
RunnerJob_pk pk = new RunnerJob_pk();
pk.setGroup(group);
pk.setJobName(getUID());
j.setPk(pk);
j.setScheduled(true);
j.setStartDate(Calendar.getInstance().getTime());
j.setCronString("0 0 * ? * *");
RunnerJobParameter p = new RunnerJobParameter();
p.setRunnerJob(j);
p.setParameterIdx(1);
List<RunnerJobParameter> ps = new LinkedList<RunnerJobParameter>();
ps.add(p);
j.setParameters(ps);
return j;
}
@Override
protected void tearDown() throws Exception {
groupService.delete(group.getGroupName());
userService.deleteUser(u.getUsername());
dss.deleteDataSource(ds.getDataSourceName());
}
private String getUID() {
return UUID.randomUUID().toString();
}
public void testDelete() {
try {
groupService.delete(group.getGroupName());
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
}
assertNull(groupService.getGroup(group.getGroupName()));
}
public void testGetAll() {
assertTrue(groupService.getAll().size()>0);
}
public void testGetGroup() {
assertNotNull(groupService.getGroup(group.getGroupName()));
}
}