Loading src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java +12 −5 Original line number Diff line number Diff line Loading @@ -253,27 +253,34 @@ public class JobDAO { public void updateJob(JobSummary job) { String sql = "UPDATE job SET phase = ?, results = ? "; String sql = "UPDATE job SET (phase, results"; ErrorSummary errorSummary = job.getErrorSummary(); 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 -> { int i = 0; ps.setObject(++i, job.getPhase().name(), Types.OTHER); ps.setObject(++i, toJson(job.getResults()), Types.OTHER); ps.setString(++i, job.getJobId()); if(errorSummary != null) { 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.setString(++i, job.getJobId()); }); } Loading src/test/java/it/inaf/oats/vospace/persistence/JobDAOTest.java +71 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.Optional; import java.time.LocalDateTime; 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; @ExtendWith(SpringExtension.class) Loading @@ -35,9 +37,7 @@ public class JobDAOTest { dao = new JobDAO(dataSource); } @Test public void testJob() { private JobSummary getJob() { Transfer transfer = new Transfer(); transfer.setDirection("pushToVoSpace"); transfer.setTarget("vos://example.com!vospace/mynode"); Loading @@ -50,6 +50,21 @@ public class JobDAOTest { jobInfo.getAny().add(transfer); 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); assertTrue(dao.getJob("123").isPresent()); Loading @@ -61,6 +76,56 @@ public class JobDAOTest { 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 public void testJobsList() { // Check no arguments Loading Loading @@ -161,8 +226,8 @@ public class JobDAOTest { String user = "user1"; List<ExecutionPhase> phaseList = List.of(ExecutionPhase.QUEUED, ExecutionPhase.PENDING); List<JobService.JobType> directionList = List.of(JobService.JobType.pullFromVoSpace, List<JobService.JobType> directionList = List.of(JobService.JobType.pullFromVoSpace, JobService.JobType.pullToVoSpace); LocalDateTime ldt Loading Loading
src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java +12 −5 Original line number Diff line number Diff line Loading @@ -253,27 +253,34 @@ public class JobDAO { public void updateJob(JobSummary job) { String sql = "UPDATE job SET phase = ?, results = ? "; String sql = "UPDATE job SET (phase, results"; ErrorSummary errorSummary = job.getErrorSummary(); 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 -> { int i = 0; ps.setObject(++i, job.getPhase().name(), Types.OTHER); ps.setObject(++i, toJson(job.getResults()), Types.OTHER); ps.setString(++i, job.getJobId()); if(errorSummary != null) { 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.setString(++i, job.getJobId()); }); } Loading
src/test/java/it/inaf/oats/vospace/persistence/JobDAOTest.java +71 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.Optional; import java.time.LocalDateTime; 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; @ExtendWith(SpringExtension.class) Loading @@ -35,9 +37,7 @@ public class JobDAOTest { dao = new JobDAO(dataSource); } @Test public void testJob() { private JobSummary getJob() { Transfer transfer = new Transfer(); transfer.setDirection("pushToVoSpace"); transfer.setTarget("vos://example.com!vospace/mynode"); Loading @@ -50,6 +50,21 @@ public class JobDAOTest { jobInfo.getAny().add(transfer); 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); assertTrue(dao.getJob("123").isPresent()); Loading @@ -61,6 +76,56 @@ public class JobDAOTest { 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 public void testJobsList() { // Check no arguments Loading Loading @@ -161,8 +226,8 @@ public class JobDAOTest { String user = "user1"; List<ExecutionPhase> phaseList = List.of(ExecutionPhase.QUEUED, ExecutionPhase.PENDING); List<JobService.JobType> directionList = List.of(JobService.JobType.pullFromVoSpace, List<JobService.JobType> directionList = List.of(JobService.JobType.pullFromVoSpace, JobService.JobType.pullToVoSpace); LocalDateTime ldt Loading