Skip to content
Snippets Groups Projects
Commit d9a1f20e authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

Bugfix: new syntax in JobDAO.updateJob doesn't require explicit

typecast
parent af113ab6
Branches
Tags
No related merge requests found
...@@ -253,27 +253,34 @@ public class JobDAO { ...@@ -253,27 +253,34 @@ public class JobDAO {
public void updateJob(JobSummary job) { public void updateJob(JobSummary job) {
String sql = "UPDATE job SET phase = ?, results = ? "; String sql = "UPDATE job SET (phase, results";
ErrorSummary errorSummary = job.getErrorSummary(); ErrorSummary errorSummary = job.getErrorSummary();
if(errorSummary != null) if(errorSummary != null)
{ {
sql += ", error_message = ?, error_type = ?, error_has_detail = ? "; sql += ", error_message, error_type, error_has_detail";
} }
sql += "WHERE job_id = ?"; sql += ") = (?, ?";
if(errorSummary != null)
{
sql += ", ?, ?, ?";
}
sql += ") WHERE job_id = ?";
jdbcTemplate.update(sql, ps -> { jdbcTemplate.update(sql, ps -> {
int i = 0; int i = 0;
ps.setObject(++i, job.getPhase().name(), Types.OTHER); ps.setObject(++i, job.getPhase().name(), Types.OTHER);
ps.setObject(++i, toJson(job.getResults()), Types.OTHER); ps.setObject(++i, toJson(job.getResults()), Types.OTHER);
ps.setString(++i, job.getJobId());
if(errorSummary != null) if(errorSummary != null)
{ {
ps.setString(++i, errorSummary.getMessage()); ps.setString(++i, errorSummary.getMessage());
ps.setObject(++i, errorSummary.getType().name(), Types.OTHER); ps.setObject(++i, errorSummary.getType().value(), Types.OTHER);
ps.setBoolean(++i, errorSummary.isHasDetail()); ps.setBoolean(++i, errorSummary.isHasDetail());
} }
ps.setString(++i, job.getJobId());
}); });
} }
......
...@@ -19,6 +19,8 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; ...@@ -19,6 +19,8 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.Optional; import java.util.Optional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.Month; import java.time.Month;
import net.ivoa.xml.uws.v1.ErrorSummary;
import net.ivoa.xml.uws.v1.ErrorSummaryFactory;
import net.ivoa.xml.uws.v1.Jobs; import net.ivoa.xml.uws.v1.Jobs;
@ExtendWith(SpringExtension.class) @ExtendWith(SpringExtension.class)
...@@ -35,9 +37,7 @@ public class JobDAOTest { ...@@ -35,9 +37,7 @@ public class JobDAOTest {
dao = new JobDAO(dataSource); dao = new JobDAO(dataSource);
} }
@Test private JobSummary getJob() {
public void testJob() {
Transfer transfer = new Transfer(); Transfer transfer = new Transfer();
transfer.setDirection("pushToVoSpace"); transfer.setDirection("pushToVoSpace");
transfer.setTarget("vos://example.com!vospace/mynode"); transfer.setTarget("vos://example.com!vospace/mynode");
...@@ -50,6 +50,21 @@ public class JobDAOTest { ...@@ -50,6 +50,21 @@ public class JobDAOTest {
jobInfo.getAny().add(transfer); jobInfo.getAny().add(transfer);
job.setJobInfo(jobInfo); job.setJobInfo(jobInfo);
return job;
}
// don't want to override equals method just for testing without a use case
private boolean areEqual(ErrorSummary a, ErrorSummary b) {
return (a.getMessage().equals(b.getMessage())
&& a.getType().equals(b.getType())
&& a.isHasDetail() == b.isHasDetail());
}
@Test
public void testJob() {
JobSummary job = getJob();
dao.createJob(job); dao.createJob(job);
assertTrue(dao.getJob("123").isPresent()); assertTrue(dao.getJob("123").isPresent());
...@@ -61,6 +76,56 @@ public class JobDAOTest { ...@@ -61,6 +76,56 @@ public class JobDAOTest {
assertEquals(ExecutionPhase.EXECUTING, dao.getJob("123").get().getPhase()); assertEquals(ExecutionPhase.EXECUTING, dao.getJob("123").get().getPhase());
} }
@Test
public void testCreateJobWithError() {
JobSummary job = getJob();
job.setPhase(ExecutionPhase.ERROR);
// A generic picked randomly
ErrorSummary errorSummary
= ErrorSummaryFactory.newErrorSummary(
ErrorSummaryFactory.VOSpaceFault.PERMISSION_DENIED);
job.setErrorSummary(errorSummary);
dao.createJob(job);
// Retrieve it back
Optional<JobSummary> retrievedJobOpt = dao.getJob(job.getJobId());
assertTrue(retrievedJobOpt.isPresent());
JobSummary retrievedJob = retrievedJobOpt.get();
assertEquals(ExecutionPhase.ERROR, retrievedJob.getPhase());
assertTrue(areEqual(job.getErrorSummary(), retrievedJob.getErrorSummary()));
}
@Test
public void testUpdateJobWithError() {
JobSummary job = getJob();
dao.createJob(job);
job.setPhase(ExecutionPhase.ERROR);
// A generic picked randomly
ErrorSummary errorSummary
= ErrorSummaryFactory.newErrorSummary(
ErrorSummaryFactory.VOSpaceFault.PERMISSION_DENIED);
job.setErrorSummary(errorSummary);
dao.updateJob(job);
// Retrieve it back
Optional<JobSummary> retrievedJobOpt = dao.getJob(job.getJobId());
assertTrue(retrievedJobOpt.isPresent());
JobSummary retrievedJob = retrievedJobOpt.get();
assertEquals(ExecutionPhase.ERROR, retrievedJob.getPhase());
assertTrue(areEqual(job.getErrorSummary(), retrievedJob.getErrorSummary()));
}
@Test @Test
public void testJobsList() { public void testJobsList() {
// Check no arguments // Check no arguments
...@@ -161,8 +226,8 @@ public class JobDAOTest { ...@@ -161,8 +226,8 @@ public class JobDAOTest {
String user = "user1"; String user = "user1";
List<ExecutionPhase> phaseList = List.of(ExecutionPhase.QUEUED, List<ExecutionPhase> phaseList = List.of(ExecutionPhase.QUEUED,
ExecutionPhase.PENDING); ExecutionPhase.PENDING);
List<JobService.JobType> directionList = List<JobService.JobType> directionList
List.of(JobService.JobType.pullFromVoSpace, = List.of(JobService.JobType.pullFromVoSpace,
JobService.JobType.pullToVoSpace); JobService.JobType.pullToVoSpace);
LocalDateTime ldt LocalDateTime ldt
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment