package com.breakersoft.plow.test.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import javax.annotation.Resource;
import org.junit.Test;
import com.breakersoft.plow.Job;
import com.breakersoft.plow.dao.JobDao;
import com.breakersoft.plow.event.JobLaunchEvent;
import com.breakersoft.plow.service.JobService;
import com.breakersoft.plow.test.AbstractTest;
import com.breakersoft.plow.thrift.JobSpecT;
import com.breakersoft.plow.thrift.JobState;
import com.google.common.collect.Maps;
public class JobDaoTests extends AbstractTest {
@Resource
JobDao jobDao;
@Resource
JobService jobService;
@Test
public void testCreate() {
jobDao.create(TEST_PROJECT, getTestJobSpec(), false);
}
@Test
public void testSetMinCores() {
JobSpecT spec = getTestJobSpec();
JobLaunchEvent event = jobService.launch(spec);
jobDao.setMinCores(event.getJob(), 101);
int value = jdbc().queryForInt(
"SELECT int_cores_min FROM plow.job_dsp WHERE pk_job=?",
event.getJob().getJobId());
assertEquals(101, value);
}
@Test
public void testSetMaxCores() {
JobSpecT spec = getTestJobSpec();
JobLaunchEvent event = jobService.launch(spec);
jobDao.setMaxCores(event.getJob(), 101);
int value = jdbc().queryForInt(
"SELECT int_cores_max FROM plow.job_dsp WHERE pk_job=?",
event.getJob().getJobId());
assertEquals(101, value);
}
@Test
public void testGetByNameAndState() {
JobSpecT spec = getTestJobSpec();
Job jobA = jobDao.create(TEST_PROJECT, spec, false);
Job jobB = jobDao.get(spec.getName(), JobState.INITIALIZE);
assertEquals(jobA.getJobId(), jobB.getJobId());
assertEquals(jobA.getProjectId(), jobB.getProjectId());
}
@Test
public void testGetById() {
JobSpecT spec = getTestJobSpec();
Job jobA = jobDao.create(TEST_PROJECT, spec, false);
Job jobB = jobDao.get(jobA.getJobId());
assertEquals(jobA.getJobId(), jobB.getJobId());
assertEquals(jobA.getProjectId(), jobB.getProjectId());
}
@Test
public void testGetActiveById() {
JobSpecT spec = getTestJobSpec();
Job jobA = jobDao.create(TEST_PROJECT, spec, false);
Job jobB = jobDao.getActive(jobA.getJobId());
assertEquals(jobA.getJobId(), jobB.getJobId());
assertEquals(jobA.getProjectId(), jobB.getProjectId());
}
@Test
public void testGetActiveByName() {
JobSpecT spec = getTestJobSpec();
Job jobA = jobDao.create(TEST_PROJECT, spec, false);
Job jobB = jobDao.getActive(spec.getName());
assertEquals(jobA.getJobId(), jobB.getJobId());
assertEquals(jobA.getProjectId(), jobB.getProjectId());
}
@Test
public void testGetActiveByNameOrId() {
JobSpecT spec = getTestJobSpec();
Job jobA = jobDao.create(TEST_PROJECT, spec, false);
Job jobB = jobDao.get(jobA.getJobId());
Job jobC = jobDao.getByActiveNameOrId(spec.getName());
assertEquals(jobA.getJobId(), jobB.getJobId());
assertEquals(jobA.getJobId(), jobC.getJobId());
assertEquals(jobA.getProjectId(), jobB.getProjectId());
}
@Test
public void isFinished() {
JobSpecT spec = getTestJobSpec();
JobLaunchEvent event = jobService.launch(spec);
assertFalse(jobDao.isFinished(event.getJob()));
jobService.shutdown(event.getJob());
assertTrue(jobDao.isFinished(event.getJob()));
}
@Test
public void testShutdown() {
JobSpecT spec = getTestJobSpec();
JobLaunchEvent event = jobService.launch(spec);
assertTrue(jobDao.shutdown(event.getJob()));
assertFalse(jobDao.shutdown(event.getJob()));
}
@Test
public void testPause() {
JobSpecT spec = getTestJobSpec();
JobLaunchEvent event = jobService.launch(spec);
jobDao.setPaused(event.getJob(), true);
assertTrue(jobDao.isPaused(event.getJob()));
jobDao.setPaused(event.getJob(), false);
assertFalse(jobDao.isPaused(event.getJob()));
}
@Test
public void testSetAttrs() {
JobSpecT spec = getTestJobSpec();
Job job = jobService.launch(spec).getJob();
Map<String,String> attrs = Maps.newHashMap();
attrs.put("foo", "bar");
attrs.put("bing", "bong");
jobDao.setAttrs(job, attrs);
Map<String, String> result = jobDao.getAttrs(job);
assertEquals("bar", result.get("foo"));
assertEquals("bong", result.get("bing"));
}
}