You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@griffin.apache.org by gu...@apache.org on 2018/01/30 01:45:14 UTC
[2/5] incubator-griffin git commit: update exception handling and
restful response
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/job/JobControllerTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/job/JobControllerTest.java b/service/src/test/java/org/apache/griffin/core/job/JobControllerTest.java
index 51edad8..0290306 100644
--- a/service/src/test/java/org/apache/griffin/core/job/JobControllerTest.java
+++ b/service/src/test/java/org/apache/griffin/core/job/JobControllerTest.java
@@ -19,44 +19,54 @@ under the License.
package org.apache.griffin.core.job;
+import org.apache.griffin.core.exception.GriffinException;
+import org.apache.griffin.core.exception.GriffinExceptionHandler;
+import org.apache.griffin.core.exception.GriffinExceptionMessage;
import org.apache.griffin.core.job.entity.*;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.apache.griffin.core.util.JsonUtil;
import org.apache.griffin.core.util.URLHelper;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import java.io.Serializable;
import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Collections;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
+import static org.apache.griffin.core.exception.GriffinExceptionMessage.JOB_ID_DOES_NOT_EXIST;
+import static org.apache.griffin.core.exception.GriffinExceptionMessage.JOB_NAME_DOES_NOT_EXIST;
+import static org.apache.griffin.core.util.EntityHelper.createGriffinJob;
+import static org.apache.griffin.core.util.EntityHelper.createJobSchedule;
import static org.hamcrest.CoreMatchers.is;
import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
-@WebMvcTest(value = JobController.class, secure = false)
public class JobControllerTest {
- @Autowired
+
private MockMvc mvc;
- @MockBean
- private JobService service;
+ @Mock
+ private JobServiceImpl service;
+
+ @InjectMocks
+ private JobController controller;
@Before
public void setup() {
+ mvc = MockMvcBuilders
+ .standaloneSetup(controller)
+ .setControllerAdvice(new GriffinExceptionHandler())
+ .build();
}
@@ -64,7 +74,7 @@ public class JobControllerTest {
public void testGetJobs() throws Exception {
JobDataBean jobBean = new JobDataBean();
jobBean.setJobName("job_name");
- given(service.getAliveJobs()).willReturn(Arrays.asList(jobBean));
+ given(service.getAliveJobs()).willReturn(Collections.singletonList(jobBean));
mvc.perform(get(URLHelper.API_VERSION_PATH + "/jobs").contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
@@ -73,76 +83,102 @@ public class JobControllerTest {
@Test
public void testAddJobForSuccess() throws Exception {
- JobSchedule jobSchedule = new JobSchedule(1L, "jobName","0 0/4 * * * ?","GMT+8:00", null);
- given(service.addJob(jobSchedule)).willReturn(CREATE_JOB_SUCCESS);
+ JobSchedule jobSchedule = createJobSchedule();
+ GriffinJob job = createGriffinJob();
+ given(service.addJob(jobSchedule)).willReturn(job);
mvc.perform(post(URLHelper.API_VERSION_PATH + "/jobs")
.contentType(MediaType.APPLICATION_JSON)
.content(JsonUtil.toJson(jobSchedule)))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(205)))
- .andDo(print());
+ .andExpect(status().isCreated())
+ .andExpect(jsonPath("$.id", is(1)));
}
@Test
- public void testAddJobForFailure() throws Exception {
- JobSchedule jobSchedule = new JobSchedule(1L, "jobName","0 0/4 * * * ?","GMT+8:00", null);
- given(service.addJob(jobSchedule)).willReturn(CREATE_JOB_FAIL);
+ public void testAddJobForFailureWithBadRequest() throws Exception {
+ JobSchedule jobSchedule = createJobSchedule();
+ given(service.addJob(jobSchedule))
+ .willThrow(new GriffinException.BadRequestException(GriffinExceptionMessage.MISSING_METRIC_NAME));
mvc.perform(post(URLHelper.API_VERSION_PATH + "/jobs")
.contentType(MediaType.APPLICATION_JSON)
.content(JsonUtil.toJson(jobSchedule)))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(405)))
- .andDo(print());
+ .andExpect(status().isBadRequest());
+ }
+
+ @Test
+ public void testAddJobForFailureWithTriggerKeyExist() throws Exception {
+ JobSchedule jobSchedule = createJobSchedule();
+ given(service.addJob(jobSchedule))
+ .willThrow(new GriffinException.ConflictException(GriffinExceptionMessage.QUARTZ_JOB_ALREADY_EXIST));
+
+ mvc.perform(post(URLHelper.API_VERSION_PATH + "/jobs")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(JsonUtil.toJson(jobSchedule)))
+ .andExpect(status().isConflict());
}
@Test
public void testDeleteJobByIdForSuccess() throws Exception {
- given(service.deleteJob(1L)).willReturn(DELETE_JOB_SUCCESS);
+ doNothing().when(service).deleteJob(1L);
mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs/1"))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(206)));
+ .andExpect(status().isNoContent());
}
@Test
- public void testDeleteJobByIdForFailure() throws Exception {
- given(service.deleteJob(1L)).willReturn(DELETE_JOB_FAIL);
+ public void testDeleteJobByIdForFailureWithNotFound() throws Exception {
+ doThrow(new GriffinException.NotFoundException(JOB_ID_DOES_NOT_EXIST)).when(service).deleteJob(1L);
mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs/1"))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(406)));
+ .andExpect(status().isNotFound());
+ }
+
+ @Test
+ public void testDeleteJobByIdForFailureWithException() throws Exception {
+ doThrow(new GriffinException.ServiceException("Failed to delete job", new Exception()))
+ .when(service).deleteJob(1L);
+
+ mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs/1"))
+ .andExpect(status().isInternalServerError());
}
@Test
public void testDeleteJobByNameForSuccess() throws Exception {
String jobName = "jobName";
- given(service.deleteJob(jobName)).willReturn(DELETE_JOB_SUCCESS);
+ doNothing().when(service).deleteJob(jobName);
- mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs").param("jobName",jobName))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(206)));
+ mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs").param("jobName", jobName))
+ .andExpect(status().isNoContent());
}
@Test
- public void testDeleteJobByNameForFailure() throws Exception {
+ public void testDeleteJobByNameForFailureWithNotFound() throws Exception {
String jobName = "jobName";
- given(service.deleteJob(jobName)).willReturn(DELETE_JOB_FAIL);
+ doThrow(new GriffinException.NotFoundException(JOB_NAME_DOES_NOT_EXIST)).when(service).deleteJob(jobName);
- mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs").param("jobName",jobName))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(406)));
+ mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs").param("jobName", jobName))
+ .andExpect(status().isNotFound());
+ }
+
+ @Test
+ public void testDeleteJobByNameForFailureWithException() throws Exception {
+ String jobName = "jobName";
+ doThrow(new GriffinException.ServiceException("Failed to delete job", new Exception()))
+ .when(service).deleteJob(jobName);
+
+ mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs").param("jobName", jobName))
+ .andExpect(status().isInternalServerError());
}
@Test
public void testFindInstancesOfJob() throws Exception {
int page = 0;
int size = 2;
- JobInstanceBean jobInstance = new JobInstanceBean(1L, LivySessionStates.State.running, "", "", null,null);
+ JobInstanceBean jobInstance = new JobInstanceBean(1L, LivySessionStates.State.running, "", "", null, null);
given(service.findInstancesOfJob(1L, page, size)).willReturn(Arrays.asList(jobInstance));
- mvc.perform(get(URLHelper.API_VERSION_PATH + "/jobs/instances").param("jobId",String.valueOf(1L))
+ mvc.perform(get(URLHelper.API_VERSION_PATH + "/jobs/instances").param("jobId", String.valueOf(1L))
.param("page", String.valueOf(page)).param("size", String.valueOf(size)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.[0].state", is("running")));
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/job/JobServiceImplTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/job/JobServiceImplTest.java b/service/src/test/java/org/apache/griffin/core/job/JobServiceImplTest.java
index d529753..a5beb51 100644
--- a/service/src/test/java/org/apache/griffin/core/job/JobServiceImplTest.java
+++ b/service/src/test/java/org/apache/griffin/core/job/JobServiceImplTest.java
@@ -19,7 +19,7 @@ under the License.
package org.apache.griffin.core.job;
-import org.apache.griffin.core.error.exception.GriffinException;
+import org.apache.griffin.core.exception.GriffinException;
import org.apache.griffin.core.job.entity.*;
import org.apache.griffin.core.job.repo.GriffinJobRepo;
import org.apache.griffin.core.job.repo.JobInstanceRepo;
@@ -27,7 +27,6 @@ import org.apache.griffin.core.job.repo.JobScheduleRepo;
import org.apache.griffin.core.measure.entity.DataConnector;
import org.apache.griffin.core.measure.entity.GriffinMeasure;
import org.apache.griffin.core.measure.repo.GriffinMeasureRepo;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -41,23 +40,17 @@ import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Bean;
import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
+import java.util.*;
import static org.apache.griffin.core.util.EntityHelper.*;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
import static org.junit.Assert.assertEquals;
import static org.mockito.BDDMockito.given;
-import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.*;
@RunWith(SpringRunner.class)
public class JobServiceImplTest {
@@ -108,32 +101,35 @@ public class JobServiceImplTest {
@Test
public void testGetAliveJobsForSuccess() throws SchedulerException {
Scheduler scheduler = Mockito.mock(Scheduler.class);
- GriffinJob job = new GriffinJob(1L, 1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByDeleted(false)).willReturn(Arrays.asList(job));
SimpleTrigger trigger = new SimpleTriggerImpl();
given((List<Trigger>) scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willReturn(Arrays.asList(trigger));
+
assertEquals(service.getAliveJobs().size(), 1);
}
@Test
public void testGetAliveJobsForNoJobsWithTriggerEmpty() throws SchedulerException {
Scheduler scheduler = Mockito.mock(Scheduler.class);
- GriffinJob job = new GriffinJob(1L, 1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByDeleted(false)).willReturn(Arrays.asList(job));
given((List<Trigger>) scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willReturn(new ArrayList<>());
+
assertEquals(service.getAliveJobs().size(), 0);
}
- @Test
+ @Test(expected = GriffinException.ServiceException.class)
public void testGetAliveJobsForNoJobsWithException() throws SchedulerException {
Scheduler scheduler = Mockito.mock(Scheduler.class);
- GriffinJob job = new GriffinJob(1L, 1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByDeleted(false)).willReturn(Arrays.asList(job));
- GriffinException.GetJobsFailureException exception = getExceptionForGetAliveJObs(scheduler);
- assert exception != null;
+ given(scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willThrow(new SchedulerException());
+
+ service.getAliveJobs();
}
@@ -142,89 +138,90 @@ public class JobServiceImplTest {
JobSchedule js = createJobSchedule();
js.setId(1L);
GriffinMeasure measure = createGriffinMeasure("measureName");
- GriffinJob job = new GriffinJob(1L, 1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
Scheduler scheduler = Mockito.mock(Scheduler.class);
given(factory.getObject()).willReturn(scheduler);
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
given(jobRepo.countByJobNameAndDeleted(js.getJobName(), false)).willReturn(0);
given(jobScheduleRepo.save(js)).willReturn(js);
given(jobRepo.save(Matchers.any(GriffinJob.class))).willReturn(job);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_SUCCESS);
+
+ GriffinJob griffinJob = service.addJob(js);
+ assertEquals(griffinJob.getJobName(), job.getJobName());
}
- @Test
+ @Test(expected = GriffinException.BadRequestException.class)
public void testAddJobForFailureWithMeasureNull() throws Exception {
JobSchedule js = createJobSchedule();
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(null);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
- @Test
- public void testAddJobForFailureWitJobNameRepeat() throws Exception {
+ @Test(expected = GriffinException.BadRequestException.class)
+ public void testAddJobForFailureWitJobNameDuplicate() throws Exception {
JobSchedule js = createJobSchedule();
GriffinMeasure measure = createGriffinMeasure("measureName");
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
given(jobRepo.countByJobNameAndDeleted(js.getJobName(), false)).willReturn(1);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
- @Test
+ @Test(expected = GriffinException.BadRequestException.class)
public void testAddJobForFailureWitJobNameNull() throws Exception {
JobSchedule js = createJobSchedule(null);
GriffinMeasure measure = createGriffinMeasure("measureName");
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
- @Test
+ @Test(expected = GriffinException.BadRequestException.class)
public void testAddJobForFailureWithBaselineInvalid() throws Exception {
JobDataSegment source = createJobDataSegment("source_name", false);
JobDataSegment target = createJobDataSegment("target_name", false);
JobSchedule js = createJobSchedule("jobName", source, target);
GriffinMeasure measure = createGriffinMeasure("measureName");
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
- @Test
+ @Test(expected = GriffinException.BadRequestException.class)
public void testAddJobForFailureWithConnectorNameInvalid() throws Exception {
GriffinMeasure measure = createGriffinMeasure("measureName");
JobDataSegment source = createJobDataSegment("source_connector_name", true);
JobDataSegment target = createJobDataSegment("target_name", false);
JobSchedule js = createJobSchedule("jobName", source, target);
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
- @Test
- public void testAddJobForFailureWithMeasureConnectorNameRepeat() throws Exception {
+ @Test(expected = GriffinException.BadRequestException.class)
+ public void testAddJobForFailureWithMeasureConnectorNameDuplicate() throws Exception {
JobSchedule js = createJobSchedule();
DataConnector dcSource = createDataConnector("connector_name", "default", "test_data_src", "dt=#YYYYMMdd# AND hour=#HH#");
DataConnector dcTarget = createDataConnector("connector_name", "default", "test_data_tgt", "dt=#YYYYMMdd# AND hour=#HH#");
GriffinMeasure measure = createGriffinMeasure("measureName", dcSource, dcTarget);
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
- @Test
+ @Test(expected = GriffinException.BadRequestException.class)
public void testAddJobForFailureWithJobScheduleConnectorNameRepeat() throws Exception {
GriffinMeasure measure = createGriffinMeasure("measureName");
JobDataSegment source = createJobDataSegment("source_name", true);
JobDataSegment target = createJobDataSegment("source_name", false);
JobSchedule js = createJobSchedule("jobName", source, target);
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
- @Test
+ @Test(expected = GriffinException.ConflictException.class)
public void testAddJobForFailureWithTriggerKeyExist() throws Exception {
GriffinMeasure measure = createGriffinMeasure("measureName");
JobDataSegment source = createJobDataSegment("source_name", true);
@@ -234,8 +231,8 @@ public class JobServiceImplTest {
given(factory.getObject()).willReturn(scheduler);
given(griffinMeasureRepo.findByIdAndDeleted(js.getMeasureId(), false)).willReturn(measure);
given(scheduler.checkExists(Matchers.any(TriggerKey.class))).willReturn(true);
- GriffinOperationMessage message = service.addJob(js);
- assertEquals(message, CREATE_JOB_FAIL);
+
+ service.addJob(js);
}
@Test
@@ -245,10 +242,15 @@ public class JobServiceImplTest {
JobInstanceBean instance = new JobInstanceBean(LivySessionStates.State.finding, "pName", "pGroup", null, null);
job.setJobInstances(Arrays.asList(instance));
Scheduler scheduler = Mockito.mock(Scheduler.class);
- given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(job);
+ given(factory.getObject()).willReturn(scheduler);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
- assertEquals(service.deleteJob(jobId), DELETE_JOB_SUCCESS);
+
+ service.deleteJob(jobId);
+ verify(scheduler, times(2)).checkExists(Matchers.any(JobKey.class));
+ verify(scheduler, times(1)).pauseJob(Matchers.any(JobKey.class));
+ verify(scheduler, times(1)).deleteJob(Matchers.any(JobKey.class));
+ verify(jobRepo, times(1)).save(Matchers.any(GriffinJob.class));
}
@Test
@@ -261,28 +263,33 @@ public class JobServiceImplTest {
given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(job);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(false);
- assertEquals(service.deleteJob(jobId), DELETE_JOB_SUCCESS);
+
+ service.deleteJob(jobId);
+ verify(scheduler, times(2)).checkExists(Matchers.any(JobKey.class));
+ verify(scheduler, times(0)).pauseJob(Matchers.any(JobKey.class));
+ verify(scheduler, times(0)).deleteJob(Matchers.any(JobKey.class));
+ verify(jobRepo, times(1)).save(Matchers.any(GriffinJob.class));
}
- @Test
- public void testDeleteJobByIdForFailureWithNull() throws SchedulerException {
- Long jobId = 1L;
- given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(null);
- assertEquals(service.deleteJob(jobId), DELETE_JOB_FAIL);
+ @Test(expected = GriffinException.NotFoundException.class)
+ public void testDeleteJobByIdForFailureWithJobNotFound() {
+ given(jobRepo.findByIdAndDeleted(1L, false)).willReturn(null);
+
+ service.deleteJob(1L);
}
- @Test
+ @Test(expected = GriffinException.ServiceException.class)
public void testDeleteJobByIdForFailureWithException() throws SchedulerException {
Long jobId = 1L;
- GriffinJob job = new GriffinJob(1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
Scheduler scheduler = Mockito.mock(Scheduler.class);
given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(job);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
doThrow(SchedulerException.class).when(scheduler).pauseJob(Matchers.any(JobKey.class));
- assertEquals(service.deleteJob(jobId), DELETE_JOB_FAIL);
- }
+ service.deleteJob(jobId);
+ }
@Test
public void testDeleteJobByNameForSuccessWithTriggerKeyExist() throws SchedulerException {
@@ -293,7 +300,15 @@ public class JobServiceImplTest {
given(jobRepo.findByJobNameAndDeleted(job.getJobName(), false)).willReturn(Arrays.asList(job));
given(factory.getObject()).willReturn(scheduler);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
- assertEquals(service.deleteJob(job.getJobName()), DELETE_JOB_SUCCESS);
+ doNothing().when(scheduler).pauseJob(Matchers.any(JobKey.class));
+ given(scheduler.deleteJob(Matchers.any(JobKey.class))).willReturn(true);
+
+ service.deleteJob(job.getJobName());
+ verify(scheduler, times(2)).checkExists(Matchers.any(JobKey.class));
+ verify(scheduler, times(1)).pauseJob(Matchers.any(JobKey.class));
+ verify(scheduler, times(1)).deleteJob(Matchers.any(JobKey.class));
+ verify(jobRepo, times(1)).save(Matchers.any(GriffinJob.class));
+
}
@Test
@@ -302,104 +317,116 @@ public class JobServiceImplTest {
JobInstanceBean instance = new JobInstanceBean(LivySessionStates.State.finding, "pName", "pGroup", null, null);
job.setJobInstances(Arrays.asList(instance));
Scheduler scheduler = Mockito.mock(Scheduler.class);
- given(jobRepo.findByJobNameAndDeleted(job.getJobName(), false)).willReturn(Arrays.asList(job));
given(factory.getObject()).willReturn(scheduler);
+ given(jobRepo.findByJobNameAndDeleted(job.getJobName(), false)).willReturn(Arrays.asList(job));
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(false);
- assertEquals(service.deleteJob(job.getJobName()), DELETE_JOB_SUCCESS);
+
+ service.deleteJob(job.getJobName());
+ verify(scheduler, times(2)).checkExists(Matchers.any(JobKey.class));
+ verify(scheduler, times(0)).pauseJob(Matchers.any(JobKey.class));
+ verify(scheduler, times(0)).deleteJob(Matchers.any(JobKey.class));
+ verify(jobRepo, times(1)).save(Matchers.any(GriffinJob.class));
}
- @Test
- public void testDeleteJobByJobNameForFailureWithNull() throws SchedulerException {
+ @Test(expected = GriffinException.NotFoundException.class)
+ public void testDeleteJobByJobNameForFailureWithJobNotFound() {
String jobName = "jobName";
given(jobRepo.findByJobNameAndDeleted(jobName, false)).willReturn(new ArrayList<>());
- assertEquals(service.deleteJob(jobName), DELETE_JOB_FAIL);
+
+ service.deleteJob(jobName);
}
- @Test
+ @Test(expected = GriffinException.ServiceException.class)
public void testDeleteJobByJobNameForFailureWithException() throws SchedulerException {
- Long jobId = 1L;
- GriffinJob job = new GriffinJob(1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
Scheduler scheduler = Mockito.mock(Scheduler.class);
given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByJobNameAndDeleted(job.getJobName(), false)).willReturn(Arrays.asList(job));
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
doThrow(SchedulerException.class).when(scheduler).pauseJob(Matchers.any(JobKey.class));
- assertEquals(service.deleteJob(jobId), DELETE_JOB_FAIL);
+
+ service.deleteJob(job.getJobName());
}
@Test
public void testDeleteJobsRelateToMeasureForSuccessWithTriggerKeyExist() throws SchedulerException {
- Long jobId = 1L;
- Long measureId = 1L;
- GriffinJob job = new GriffinJob(measureId, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
JobInstanceBean instance = new JobInstanceBean(LivySessionStates.State.finding, "pName", "pGroup", null, null);
job.setJobInstances(Arrays.asList(instance));
Scheduler scheduler = Mockito.mock(Scheduler.class);
+ given(jobRepo.findByMeasureIdAndDeleted(1L, false)).willReturn(Arrays.asList(job));
given(factory.getObject()).willReturn(scheduler);
- given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(job);
- given(jobRepo.findByMeasureIdAndDeleted(measureId, false)).willReturn(Arrays.asList(job));
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
- assertEquals(service.deleteJobsRelateToMeasure(measureId), true);
+
+ service.deleteJobsRelateToMeasure(1L);
+ verify(scheduler, times(2)).checkExists(Matchers.any(JobKey.class));
+ verify(scheduler, times(1)).pauseJob(Matchers.any(JobKey.class));
+ verify(scheduler, times(1)).deleteJob(Matchers.any(JobKey.class));
+ verify(jobRepo, times(1)).save(Matchers.any(GriffinJob.class));
}
@Test
public void testDeleteJobsRelateToMeasureForSuccessWithTriggerKeyNotExist() throws SchedulerException {
- Long jobId = 1L;
- Long measureId = 1L;
- GriffinJob job = new GriffinJob(measureId, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
JobInstanceBean instance = new JobInstanceBean(LivySessionStates.State.finding, "pName", "pGroup", null, null);
job.setJobInstances(Arrays.asList(instance));
Scheduler scheduler = Mockito.mock(Scheduler.class);
+ given(jobRepo.findByMeasureIdAndDeleted(1L, false)).willReturn(Arrays.asList(job));
given(factory.getObject()).willReturn(scheduler);
- given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(job);
- given(jobRepo.findByMeasureIdAndDeleted(measureId, false)).willReturn(Arrays.asList(job));
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(false);
- assertEquals(service.deleteJobsRelateToMeasure(measureId), true);
+
+ service.deleteJobsRelateToMeasure(1L);
+ verify(scheduler, times(2)).checkExists(Matchers.any(JobKey.class));
+ verify(scheduler, times(0)).pauseJob(Matchers.any(JobKey.class));
+ verify(scheduler, times(0)).deleteJob(Matchers.any(JobKey.class));
+ verify(jobRepo, times(1)).save(Matchers.any(GriffinJob.class));
}
@Test
- public void testDeleteJobsRelateToMeasureForSuccessWithNull() throws SchedulerException {
+ public void testDeleteJobsRelateToMeasureForSuccessWithJobNotExist() {
Long measureId = 1L;
- Scheduler scheduler = Mockito.mock(Scheduler.class);
- given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByMeasureIdAndDeleted(measureId, false)).willReturn(null);
- assertEquals(service.deleteJobsRelateToMeasure(measureId), true);
+
+ service.deleteJobsRelateToMeasure(measureId);
+ verify(jobRepo, times(1)).findByMeasureIdAndDeleted(measureId, false);
+ verify(factory, times(0)).getObject();
}
- @Test
+ @Test(expected = GriffinException.ServiceException.class)
public void testDeleteJobsRelateToMeasureForFailureWithException() throws SchedulerException {
- Long jobId = 1L;
Long measureId = 1L;
- GriffinJob job = new GriffinJob(measureId, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
JobInstanceBean instance = new JobInstanceBean(LivySessionStates.State.finding, "pName", "pGroup", null, null);
job.setJobInstances(Arrays.asList(instance));
Scheduler scheduler = Mockito.mock(Scheduler.class);
- given(factory.getObject()).willReturn(scheduler);
- given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(job);
given(jobRepo.findByMeasureIdAndDeleted(measureId, false)).willReturn(Arrays.asList(job));
+ given(factory.getObject()).willReturn(scheduler);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
doThrow(SchedulerException.class).when(scheduler).pauseJob(Matchers.any(JobKey.class));
- assertEquals(service.deleteJobsRelateToMeasure(measureId), false);
+
+ service.deleteJobsRelateToMeasure(measureId);
}
@Test
- public void testFindInstancesOfJobForSuccess() throws SchedulerException {
+ public void testFindInstancesOfJobForSuccess() {
Long jobId = 1L;
int page = 0;
int size = 2;
- GriffinJob job = new GriffinJob(1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
JobInstanceBean jobInstance = new JobInstanceBean(1L, LivySessionStates.State.dead, "app_id", "app_uri", null, null);
- Pageable pageRequest = new PageRequest(page, size, Sort.Direction.DESC, "tms");
given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(job);
- given(jobInstanceRepo.findByJobId(1L, pageRequest)).willReturn(Arrays.asList(jobInstance));
- assertEquals(service.findInstancesOfJob(1L, page, size).size(), 1);
+ given(jobInstanceRepo.findByJobId(Matchers.anyLong(), Matchers.any(PageRequest.class))).willReturn(Arrays.asList(jobInstance));
+
+ List<JobInstanceBean> jobInstanceBeans = service.findInstancesOfJob(1L, page, size);
+ assertEquals(jobInstanceBeans.size(), 1);
}
- @Test
- public void testFindInstancesOfJobWithNull() throws SchedulerException {
+ @Test(expected = GriffinException.NotFoundException.class)
+ public void testFindInstancesOfJobWithJobNotFound() {
Long jobId = 1L;
given(jobRepo.findByIdAndDeleted(jobId, false)).willReturn(null);
- assertEquals(service.findInstancesOfJob(jobId, 0, 2).size(), 0);
+
+ service.findInstancesOfJob(jobId, 0, 2);
}
@Test
@@ -409,7 +436,10 @@ public class JobServiceImplTest {
Scheduler scheduler = Mockito.mock(Scheduler.class);
given(factory.getObject()).willReturn(scheduler);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
+
service.deleteExpiredJobInstance();
+ verify(scheduler, times(1)).pauseJob(Matchers.any(JobKey.class));
+ verify(jobInstanceRepo, times(1)).deleteByExpireTimestamp(Matchers.any());
}
@Test
@@ -419,13 +449,19 @@ public class JobServiceImplTest {
Scheduler scheduler = Mockito.mock(Scheduler.class);
given(factory.getObject()).willReturn(scheduler);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(false);
+
service.deleteExpiredJobInstance();
+ verify(scheduler, times(0)).pauseJob(Matchers.any(JobKey.class));
+ verify(jobInstanceRepo, times(1)).deleteByExpireTimestamp(Matchers.any());
}
@Test
- public void testDeleteExpiredJobInstanceForSuccessWithNull() throws SchedulerException {
+ public void testDeleteExpiredJobInstanceForSuccessWithNoInstance() {
given(jobInstanceRepo.findByExpireTmsLessThanEqual(Matchers.any())).willReturn(null);
+
service.deleteExpiredJobInstance();
+ verify(jobInstanceRepo, times(1)).deleteByExpireTimestamp(Matchers.any());
+
}
@Test
@@ -436,7 +472,9 @@ public class JobServiceImplTest {
given(factory.getObject()).willReturn(scheduler);
given(scheduler.checkExists(Matchers.any(JobKey.class))).willReturn(true);
doThrow(SchedulerException.class).when(scheduler).pauseJob(Matchers.any(JobKey.class));
+
service.deleteExpiredJobInstance();
+ verify(jobInstanceRepo, times(0)).deleteByExpireTimestamp(Matchers.any());
}
@Test
@@ -446,7 +484,9 @@ public class JobServiceImplTest {
Whitebox.setInternalState(service, "restTemplate", restTemplate);
String result = "{\"id\":1,\"state\":\"starting\",\"appId\":123,\"appInfo\":{\"driverLogUrl\":null,\"sparkUiUrl\":null},\"log\":[]}";
given(restTemplate.getForObject(Matchers.anyString(), Matchers.any())).willReturn(result);
+
service.syncInstancesOfAllJobs();
+ verify(jobInstanceRepo, times(1)).save(instance);
}
@Test
@@ -456,52 +496,58 @@ public class JobServiceImplTest {
given(jobInstanceRepo.findByActiveState()).willReturn(Arrays.asList(instance));
Whitebox.setInternalState(service, "restTemplate", restTemplate);
given(restTemplate.getForObject(Matchers.anyString(), Matchers.any())).willThrow(RestClientException.class);
+
service.syncInstancesOfAllJobs();
+ verify(jobInstanceRepo, times(1)).save(instance);
}
@Test
- public void testSyncInstancesOfJobForFailureWithIOException() throws Exception {
+ public void testSyncInstancesOfJobForFailureWithIOException() {
JobInstanceBean instance = createJobInstance();
given(jobInstanceRepo.findByActiveState()).willReturn(Arrays.asList(instance));
Whitebox.setInternalState(service, "restTemplate", restTemplate);
given(restTemplate.getForObject(Matchers.anyString(), Matchers.any())).willReturn("result");
+
service.syncInstancesOfAllJobs();
+ verify(jobInstanceRepo, times(0)).save(instance);
}
@Test
- public void testSyncInstancesOfJobForFailureWithIllegalArgumentException() throws Exception {
+ public void testSyncInstancesOfJobForFailureWithIllegalArgumentException() {
JobInstanceBean instance = createJobInstance();
given(jobInstanceRepo.findByActiveState()).willReturn(Arrays.asList(instance));
Whitebox.setInternalState(service, "restTemplate", restTemplate);
given(restTemplate.getForObject(Matchers.anyString(), Matchers.any())).willReturn("{\"state\":\"wrong\"}");
+
service.syncInstancesOfAllJobs();
+ verify(jobInstanceRepo, times(0)).save(instance);
}
@Test
- public void testSyncInstancesOfJobForFailureWithException() throws Exception {
+ public void testSyncInstancesOfJobForFailureWithException() {
JobInstanceBean instance = createJobInstance();
given(jobInstanceRepo.findByActiveState()).willReturn(Arrays.asList(instance));
Whitebox.setInternalState(service, "restTemplate", restTemplate);
String result = "{\"id\":1,\"state\":\"starting\",\"appId\":123,\"appInfo\":{\"driverLogUrl\":null,\"sparkUiUrl\":null},\"log\":[]}";
given(restTemplate.getForObject(Matchers.anyString(), Matchers.any())).willReturn(result);
doThrow(Exception.class).when(jobInstanceRepo).save(Matchers.any(JobInstanceBean.class));
+
service.syncInstancesOfAllJobs();
+ verify(restTemplate, times(1)).getForObject(Matchers.anyString(), Matchers.any());
+ verify(sparkJobProps, times(2)).getProperty(Matchers.anyString());
}
@Test
public void testGetHealthInfoWithHealthy() throws SchedulerException {
- Long jobId = 1L;
Scheduler scheduler = Mockito.mock(Scheduler.class);
- GriffinJob job = new GriffinJob(jobId, 1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
given(factory.getObject()).willReturn(scheduler);
given(jobRepo.findByDeleted(false)).willReturn(Arrays.asList(job));
- SimpleTrigger trigger = new SimpleTriggerImpl();
- List<Trigger> triggers = new ArrayList<>();
- triggers.add(trigger);
+ List<Trigger> triggers = Collections.singletonList(new SimpleTriggerImpl());
given((List<Trigger>) scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willReturn(triggers);
+ given(jobInstanceRepo.findByJobId(Matchers.anyLong(), Matchers.any(PageRequest.class)))
+ .willReturn(Collections.singletonList(createJobInstance()));
- Pageable pageRequest = new PageRequest(0, 1, Sort.Direction.DESC, "tms");
- given(jobInstanceRepo.findByJobId(jobId, pageRequest)).willReturn(Arrays.asList(createJobInstance()));
assertEquals(service.getHealthInfo().getHealthyJobCount(), 1);
}
@@ -509,52 +555,30 @@ public class JobServiceImplTest {
@Test
public void testGetHealthInfoWithUnhealthy() throws SchedulerException {
Scheduler scheduler = Mockito.mock(Scheduler.class);
- GriffinJob job = new GriffinJob(1L, 1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
given(factory.getObject()).willReturn(scheduler);
- given(jobRepo.findByDeleted(false)).willReturn(Arrays.asList(job));
- SimpleTrigger trigger = new SimpleTriggerImpl();
- given((List<Trigger>) scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willReturn(Arrays.asList(trigger));
-
- Pageable pageRequest = new PageRequest(0, 1, Sort.Direction.DESC, "tms");
- List<JobInstanceBean> scheduleStateList = new ArrayList<>();
+ given(jobRepo.findByDeleted(false)).willReturn(Collections.singletonList(job));
+ List<Trigger> triggers = Collections.singletonList(new SimpleTriggerImpl());
+ given((List<Trigger>) scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willReturn(triggers);
JobInstanceBean instance = createJobInstance();
instance.setState(LivySessionStates.State.error);
- scheduleStateList.add(instance);
- given(jobInstanceRepo.findByJobId(1L, pageRequest)).willReturn(scheduleStateList);
+ List<JobInstanceBean> scheduleStateList = Collections.singletonList(instance);
+ given(jobInstanceRepo.findByJobId(Matchers.anyLong(), Matchers.any(PageRequest.class)))
+ .willReturn(scheduleStateList);
+
assertEquals(service.getHealthInfo().getHealthyJobCount(), 0);
}
- @Test
+ @Test(expected = GriffinException.ServiceException.class)
public void testGetHealthInfoWithException() throws SchedulerException {
Scheduler scheduler = Mockito.mock(Scheduler.class);
- GriffinJob job = new GriffinJob(1L, 1L, "jobName", "quartzJobName", "quartzGroupName", false);
+ GriffinJob job = createGriffinJob();
given(factory.getObject()).willReturn(scheduler);
- given(jobRepo.findByDeleted(false)).willReturn(Arrays.asList(job));
- GriffinException.GetHealthInfoFailureException exception = getExceptionForHealthInfo(scheduler);
- assert exception != null;
- }
-
-
- private GriffinException.GetHealthInfoFailureException getExceptionForHealthInfo(Scheduler scheduler) throws SchedulerException {
- GriffinException.GetHealthInfoFailureException exception = null;
- try {
- given(scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willThrow(SchedulerException.class);
- service.getHealthInfo();
- } catch (GriffinException.GetHealthInfoFailureException e) {
- exception = e;
- }
- return exception;
- }
+ given(jobRepo.findByDeleted(false)).willReturn(Collections.singletonList(job));
+ given((List<Trigger>) scheduler.getTriggersOfJob(Matchers.any(JobKey.class)))
+ .willThrow(new SchedulerException());
- private GriffinException.GetJobsFailureException getExceptionForGetAliveJObs(Scheduler scheduler) throws SchedulerException {
- GriffinException.GetJobsFailureException exception = null;
- try {
- given(scheduler.getTriggersOfJob(Matchers.any(JobKey.class))).willThrow(new GriffinException.GetJobsFailureException());
- service.getAliveJobs();
- } catch (GriffinException.GetJobsFailureException e) {
- exception = e;
- }
- return exception;
+ service.getHealthInfo();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java b/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java
index ccb641b..b252782 100644
--- a/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java
+++ b/service/src/test/java/org/apache/griffin/core/job/SparkSubmitJobTest.java
@@ -42,12 +42,13 @@ import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Properties;
import static org.apache.griffin.core.util.EntityHelper.*;
import static org.junit.Assert.assertTrue;
import static org.mockito.BDDMockito.given;
-import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.*;
@RunWith(SpringRunner.class)
@@ -71,10 +72,6 @@ public class SparkSubmitJobTest {
@Autowired
private SparkSubmitJob sparkSubmitJob;
- @Autowired
- @Qualifier("livyConf")
- private Properties livyConfProps;
-
@MockBean
private RestTemplate restTemplate;
@@ -95,10 +92,11 @@ public class SparkSubmitJobTest {
JobInstanceBean instance = createJobInstance();
GriffinMeasure measure = createGriffinMeasure("measureName");
SegmentPredicate predicate = createFileExistPredicate();
- JobDetail jd = createJobDetail(JsonUtil.toJson(measure), JsonUtil.toJson(Arrays.asList(predicate)));
+ JobDetail jd = createJobDetail(JsonUtil.toJson(measure), JsonUtil.toJson(Collections.singletonList(predicate)));
given(context.getJobDetail()).willReturn(jd);
given(context.getTrigger()).willReturn(createSimpleTrigger(4, 5));
given(jobInstanceRepo.findByPredicateName(Matchers.anyString())).willReturn(instance);
+
sparkSubmitJob.execute(context);
assertTrue(true);
}
@@ -109,10 +107,11 @@ public class SparkSubmitJobTest {
JobInstanceBean instance = createJobInstance();
GriffinMeasure measure = createGriffinMeasure("measureName");
SegmentPredicate predicate = createFileExistPredicate();
- JobDetail jd = createJobDetail(JsonUtil.toJson(measure), JsonUtil.toJson(Arrays.asList(predicate)));
+ JobDetail jd = createJobDetail(JsonUtil.toJson(measure), JsonUtil.toJson(Collections.singletonList(predicate)));
given(context.getJobDetail()).willReturn(jd);
given(context.getTrigger()).willReturn(createSimpleTrigger(4, 4));
given(jobInstanceRepo.findByPredicateName(Matchers.anyString())).willReturn(instance);
+
sparkSubmitJob.execute(context);
assertTrue(true);
}
@@ -128,7 +127,8 @@ public class SparkSubmitJobTest {
given(jobInstanceRepo.findByPredicateName(Matchers.anyString())).willReturn(instance);
Whitebox.setInternalState(sparkSubmitJob, "restTemplate", restTemplate);
given(restTemplate.postForObject(Matchers.anyString(), Matchers.any(), Matchers.any())).willReturn(result);
- given(jobService.pauseJob(Matchers.any(), Matchers.any())).willReturn(true);
+ doNothing().when(jobService).pauseJob(Matchers.any(), Matchers.any());
+
sparkSubmitJob.execute(context);
assertTrue(true);
}
@@ -141,14 +141,16 @@ public class SparkSubmitJobTest {
JobDetail jd = createJobDetail(JsonUtil.toJson(measure), "");
given(context.getJobDetail()).willReturn(jd);
given(jobInstanceRepo.findByPredicateName(Matchers.anyString())).willReturn(instance);
- given(jobService.pauseJob(Matchers.any(), Matchers.any())).willReturn(true);
+ doNothing().when(jobService).pauseJob(Matchers.any(), Matchers.any());
+
sparkSubmitJob.execute(context);
assertTrue(true);
}
@Test
- public void testExecuteWithNullException() throws Exception {
+ public void testExecuteWithNullException() {
JobExecutionContext context = mock(JobExecutionContext.class);
+
sparkSubmitJob.execute(context);
assertTrue(true);
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/measure/ExternalMeasureOperationImplTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/measure/ExternalMeasureOperationImplTest.java b/service/src/test/java/org/apache/griffin/core/measure/ExternalMeasureOperationImplTest.java
new file mode 100644
index 0000000..dee01cb
--- /dev/null
+++ b/service/src/test/java/org/apache/griffin/core/measure/ExternalMeasureOperationImplTest.java
@@ -0,0 +1,102 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.apache.griffin.core.measure;
+
+import org.apache.griffin.core.exception.GriffinException;
+import org.apache.griffin.core.job.entity.VirtualJob;
+import org.apache.griffin.core.job.repo.VirtualJobRepo;
+import org.apache.griffin.core.measure.entity.ExternalMeasure;
+import org.apache.griffin.core.measure.repo.ExternalMeasureRepo;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.apache.griffin.core.util.EntityHelper.createExternalMeasure;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+@RunWith(SpringRunner.class)
+public class ExternalMeasureOperationImplTest {
+
+ @InjectMocks
+ private ExternalMeasureOperationImpl operation;
+
+ @Mock
+ private ExternalMeasureRepo measureRepo;
+ @Mock
+ private VirtualJobRepo jobRepo;
+
+ @Before
+ public void setup() {
+ }
+
+
+ @Test
+ public void testCreateForSuccess() {
+ ExternalMeasure measure = createExternalMeasure("view_item_hourly");
+ given(measureRepo.save(measure)).willReturn(measure);
+ given(jobRepo.save(Matchers.any(VirtualJob.class))).willReturn(new VirtualJob());
+
+ operation.create(measure);
+ verify(jobRepo, times(1)).save(new VirtualJob());
+ }
+
+ @Test(expected = GriffinException.BadRequestException.class)
+ public void testCreateForFailureWithBlankMetricName() {
+ String measureName = "view_item_hourly";
+ ExternalMeasure measure = createExternalMeasure(measureName);
+ measure.setMetricName(" ");
+ operation.create(measure);
+ }
+
+ @Test
+ public void testUpdateForSuccess() {
+ ExternalMeasure measure = createExternalMeasure("view_item_hourly");
+ measure.setId(1L);
+ given(measureRepo.findOne(1L)).willReturn(measure);
+ given(measureRepo.save(Matchers.any(ExternalMeasure.class))).willReturn(measure);
+
+ operation.create(measure);
+ verify(measureRepo, times(1)).save(Matchers.any(ExternalMeasure.class));
+ }
+
+ @Test(expected = GriffinException.BadRequestException.class)
+ public void testUpdateForFailureWithBlankMetricName() {
+ String measureName = "view_item_hourly";
+ ExternalMeasure measure = createExternalMeasure(measureName);
+ measure.setMetricName(" ");
+
+ operation.update(measure);
+ }
+
+ @Test
+ public void testDeleteForSuccess() {
+ ExternalMeasure measure = createExternalMeasure("view_item_hourly");
+ given(measureRepo.save(measure)).willReturn(measure);
+
+ operation.delete(measure);
+ verify(measureRepo, times(1)).save(measure);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/measure/GriffinMeasureOperationImplTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/measure/GriffinMeasureOperationImplTest.java b/service/src/test/java/org/apache/griffin/core/measure/GriffinMeasureOperationImplTest.java
new file mode 100644
index 0000000..47f218a
--- /dev/null
+++ b/service/src/test/java/org/apache/griffin/core/measure/GriffinMeasureOperationImplTest.java
@@ -0,0 +1,120 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.apache.griffin.core.measure;
+
+import org.apache.griffin.core.exception.GriffinException;
+import org.apache.griffin.core.job.JobServiceImpl;
+import org.apache.griffin.core.measure.entity.DataConnector;
+import org.apache.griffin.core.measure.entity.GriffinMeasure;
+import org.apache.griffin.core.measure.entity.Measure;
+import org.apache.griffin.core.measure.repo.DataConnectorRepo;
+import org.apache.griffin.core.measure.repo.MeasureRepo;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+
+import static org.apache.griffin.core.util.EntityHelper.createDataConnector;
+import static org.apache.griffin.core.util.EntityHelper.createGriffinMeasure;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.*;
+
+@RunWith(SpringRunner.class)
+public class GriffinMeasureOperationImplTest {
+
+ @InjectMocks
+ private GriffinMeasureOperationImpl operation;
+
+ @Mock
+ private MeasureRepo<Measure> measureRepo;
+ @Mock
+ private DataConnectorRepo dcRepo;
+ @Mock
+ private JobServiceImpl jobService;
+
+
+ @Before
+ public void setup() {
+ }
+
+ @Test
+ public void testCreateForSuccess() throws Exception {
+ Measure measure = createGriffinMeasure("view_item_hourly");
+ given(measureRepo.save(measure)).willReturn(measure);
+
+ Measure m = operation.create(measure);
+ assertEquals(m.getName(), measure.getName());
+ }
+
+ @Test(expected = GriffinException.BadRequestException.class)
+ public void testCreateForFailureWithConnectorExist() throws Exception {
+ Measure measure = createGriffinMeasure("view_item_hourly");
+ DataConnector dc = new DataConnector("source_name", "1h", "1.2", null);
+ given(dcRepo.findByConnectorNames(Arrays.asList("source_name", "target_name"))).willReturn(Arrays.asList(dc));
+
+ operation.create(measure);
+ }
+
+ @Test(expected = GriffinException.BadRequestException.class)
+ public void testCreateForFailureWithConnectorNull() throws Exception {
+ String measureName = "view_item_hourly";
+ DataConnector dcSource = createDataConnector(null, "default", "test_data_src", "dt=#YYYYMMdd# AND hour=#HH#");
+ DataConnector dcTarget = createDataConnector(null, "default", "test_data_tgt", "dt=#YYYYMMdd# AND hour=#HH#");
+ GriffinMeasure measure = createGriffinMeasure(measureName, dcSource, dcTarget);
+
+ operation.create(measure);
+ }
+
+ @Test
+ public void testUpdateForSuccess() throws Exception {
+ Measure measure = createGriffinMeasure("view_item_hourly");
+ given(measureRepo.save(measure)).willReturn(measure);
+
+ operation.update(measure);
+ verify(measureRepo, times(1)).save(measure);
+ }
+
+ @Test
+ public void testDeleteForSuccess() throws Exception {
+ Measure measure = createGriffinMeasure("view_item_hourly");
+ measure.setId(1L);
+ doNothing().when(jobService).deleteJobsRelateToMeasure(1L);
+ given(measureRepo.save(measure)).willReturn(measure);
+
+ operation.update(measure);
+ verify(measureRepo, times(1)).save(measure);
+ }
+
+ @Test(expected = GriffinException.ServiceException.class)
+ public void testDeleteForFailureWithPauseJob() throws Exception {
+ Measure measure = createGriffinMeasure("view_item_hourly");
+ measure.setId(1L);
+ doThrow(new GriffinException.ServiceException("Service exception", new RuntimeException()))
+ .when(jobService).deleteJobsRelateToMeasure(1L);
+
+ operation.delete(measure);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/measure/MeasureControllerTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/measure/MeasureControllerTest.java b/service/src/test/java/org/apache/griffin/core/measure/MeasureControllerTest.java
index 5eb5a11..c564333 100644
--- a/service/src/test/java/org/apache/griffin/core/measure/MeasureControllerTest.java
+++ b/service/src/test/java/org/apache/griffin/core/measure/MeasureControllerTest.java
@@ -19,45 +19,54 @@ under the License.
package org.apache.griffin.core.measure;
+import org.apache.griffin.core.exception.GriffinException;
+import org.apache.griffin.core.exception.GriffinExceptionHandler;
+import org.apache.griffin.core.exception.GriffinExceptionMessage;
+import org.apache.griffin.core.measure.entity.GriffinMeasure;
import org.apache.griffin.core.measure.entity.Measure;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.apache.griffin.core.util.JsonUtil;
import org.apache.griffin.core.util.URLHelper;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import static org.apache.griffin.core.util.EntityHelper.createGriffinMeasure;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
import static org.hamcrest.CoreMatchers.is;
import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
-@WebMvcTest(value = MeasureController.class, secure = false)
public class MeasureControllerTest {
- @Autowired
+
private MockMvc mvc;
- @MockBean
- private MeasureService service;
+ @Mock
+ private MeasureServiceImpl service;
+
+ @InjectMocks
+ private MeasureController controller;
@Before
public void setup() {
-
+ mvc = MockMvcBuilders
+ .standaloneSetup(controller)
+ .setControllerAdvice(new GriffinExceptionHandler())
+ .build();
}
@Test
@@ -84,66 +93,63 @@ public class MeasureControllerTest {
@Test
public void testDeleteMeasuresByIdForSuccess() throws Exception {
- given(service.deleteMeasureById(1L)).willReturn(DELETE_MEASURE_BY_ID_SUCCESS);
+ doNothing().when(service).deleteMeasureById(1L);
mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measures/1"))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(202)));
+ .andExpect(status().isNoContent());
}
@Test
public void testDeleteMeasuresByIdForNotFound() throws Exception {
- given(service.deleteMeasureById(1L)).willReturn(RESOURCE_NOT_FOUND);
+ doThrow(new GriffinException.NotFoundException(GriffinExceptionMessage.MEASURE_ID_DOES_NOT_EXIST))
+ .when(service).deleteMeasureById(1L);
mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measures/1"))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(400)));
+ .andExpect(status().isNotFound());
}
@Test
- public void testDeleteMeasuresByIdForFail() throws Exception {
- given(service.deleteMeasureById(1L)).willReturn(DELETE_MEASURE_BY_ID_FAIL);
+ public void testDeleteMeasuresByIdForGriffinFailureWithException() throws Exception {
+ doThrow(new GriffinException.ServiceException("Failed to delete job", new Exception()))
+ .when(service).deleteMeasureById(1L);
mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measures/1"))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(402)));
+ .andExpect(status().isInternalServerError());
}
@Test
public void testUpdateMeasureForSuccess() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
String measureJson = JsonUtil.toJson(measure);
- given(service.updateMeasure(measure)).willReturn(UPDATE_MEASURE_SUCCESS);
+ doNothing().when(service).updateMeasure(measure);
mvc.perform(put(URLHelper.API_VERSION_PATH + "/measures")
.contentType(MediaType.APPLICATION_JSON).content(measureJson))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(204)));
+ .andExpect(status().isNoContent());
}
@Test
public void testUpdateMeasureForNotFound() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
String measureJson = JsonUtil.toJson(measure);
- given(service.updateMeasure(measure)).willReturn(RESOURCE_NOT_FOUND);
+ doThrow(new GriffinException.NotFoundException(GriffinExceptionMessage.MEASURE_ID_DOES_NOT_EXIST))
+ .when(service).updateMeasure(measure);
mvc.perform(put(URLHelper.API_VERSION_PATH + "/measures")
.contentType(MediaType.APPLICATION_JSON).content(measureJson))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(400)));
-
+ .andExpect(status().isNotFound());
}
@Test
- public void testUpdateMeasureForFail() throws Exception {
+ public void testUpdateMeasureForTypeMismatch() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
String measureJson = JsonUtil.toJson(measure);
- given(service.updateMeasure(measure)).willReturn(UPDATE_MEASURE_FAIL);
+ doThrow(new GriffinException.BadRequestException(GriffinExceptionMessage.MEASURE_TYPE_DOES_NOT_MATCH))
+ .when(service).updateMeasure(measure);
mvc.perform(put(URLHelper.API_VERSION_PATH + "/measures")
.contentType(MediaType.APPLICATION_JSON).content(measureJson))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(404)));
+ .andExpect(status().isBadRequest());
}
@Test
@@ -163,37 +169,38 @@ public class MeasureControllerTest {
@Test
public void testCreateNewMeasureForSuccess() throws Exception {
- Measure measure = createGriffinMeasure("view_item_hourly");
+ GriffinMeasure measure = createGriffinMeasure("view_item_hourly");
String measureJson = JsonUtil.toJson(measure);
- given(service.createMeasure(measure)).willReturn(CREATE_MEASURE_SUCCESS);
+ given(service.createMeasure(measure)).willReturn(measure);
mvc.perform(post(URLHelper.API_VERSION_PATH + "/measures")
.contentType(MediaType.APPLICATION_JSON).content(measureJson))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(201)));
+ .andExpect(status().isCreated())
+ .andExpect(jsonPath("$.name", is("view_item_hourly")));
}
@Test
public void testCreateNewMeasureForFailWithDuplicate() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
String measureJson = JsonUtil.toJson(measure);
- given(service.createMeasure(measure)).willReturn(CREATE_MEASURE_FAIL_DUPLICATE);
+ doThrow(new GriffinException.ConflictException(GriffinExceptionMessage.MEASURE_NAME_ALREADY_EXIST))
+ .when(service).createMeasure(measure);
mvc.perform(post(URLHelper.API_VERSION_PATH + "/measures")
.contentType(MediaType.APPLICATION_JSON).content(measureJson))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(410)));
+ .andExpect(status().isConflict());
}
@Test
- public void testCreateNewMeasureForFailWithSaveException() throws Exception {
+ public void testCreateNewMeasureForFailWithInvalidParams() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
String measureJson = JsonUtil.toJson(measure);
- given(service.createMeasure(measure)).willReturn(GriffinOperationMessage.CREATE_MEASURE_FAIL);
+ doThrow(new GriffinException.BadRequestException(GriffinExceptionMessage.MISSING_METRIC_NAME))
+ .when(service).createMeasure(measure);
- mvc.perform(post(URLHelper.API_VERSION_PATH + "/measures").contentType(MediaType.APPLICATION_JSON).content(measureJson))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code", is(401)));
+ mvc.perform(post(URLHelper.API_VERSION_PATH + "/measures")
+ .contentType(MediaType.APPLICATION_JSON).content(measureJson))
+ .andExpect(status().isBadRequest());
}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgControllerTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgControllerTest.java b/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgControllerTest.java
index df7fdca..2fd63d9 100644
--- a/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgControllerTest.java
+++ b/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgControllerTest.java
@@ -19,7 +19,6 @@ under the License.
package org.apache.griffin.core.measure;
-import org.apache.griffin.core.job.JobService;
import org.apache.griffin.core.util.URLHelper;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -35,8 +34,6 @@ import java.util.List;
import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.Matchers.hasKey;
import static org.hamcrest.Matchers.hasSize;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
@@ -53,9 +50,6 @@ public class MeasureOrgControllerTest {
@MockBean
private MeasureOrgService measureOrgService;
- @MockBean
- private JobService jobService;
-
@Test
public void testGetOrgs() throws Exception {
String org = "orgName";
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/6b1a7000/service/src/test/java/org/apache/griffin/core/measure/MeasureServiceImplTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/griffin/core/measure/MeasureServiceImplTest.java b/service/src/test/java/org/apache/griffin/core/measure/MeasureServiceImplTest.java
index 857d35f..16e235a 100644
--- a/service/src/test/java/org/apache/griffin/core/measure/MeasureServiceImplTest.java
+++ b/service/src/test/java/org/apache/griffin/core/measure/MeasureServiceImplTest.java
@@ -20,79 +20,43 @@ under the License.
package org.apache.griffin.core.measure;
-import org.apache.griffin.core.job.JobServiceImpl;
-import org.apache.griffin.core.job.repo.VirtualJobRepo;
-import org.apache.griffin.core.measure.entity.DataConnector;
+import org.apache.griffin.core.exception.GriffinException;
import org.apache.griffin.core.measure.entity.ExternalMeasure;
import org.apache.griffin.core.measure.entity.GriffinMeasure;
import org.apache.griffin.core.measure.entity.Measure;
-import org.apache.griffin.core.measure.repo.DataConnectorRepo;
-import org.apache.griffin.core.measure.repo.ExternalMeasureRepo;
-import org.apache.griffin.core.measure.repo.GriffinMeasureRepo;
import org.apache.griffin.core.measure.repo.MeasureRepo;
-import org.apache.griffin.core.util.GriffinOperationMessage;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Matchers;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.context.annotation.Bean;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedList;
+import java.util.Collections;
import java.util.List;
-import static org.apache.griffin.core.util.EntityHelper.*;
-import static org.apache.griffin.core.util.GriffinOperationMessage.*;
+import static org.apache.griffin.core.util.EntityHelper.createExternalMeasure;
+import static org.apache.griffin.core.util.EntityHelper.createGriffinMeasure;
import static org.junit.Assert.assertEquals;
import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.*;
@RunWith(SpringRunner.class)
public class MeasureServiceImplTest {
- @TestConfiguration
- public static class MeasureServiceConf {
- @Bean
- public MeasureServiceImpl measureService() {
- return new MeasureServiceImpl();
- }
-
- @Bean(name = "griffinOperation")
- public MeasureOperation griffinOperation() {
- return new GriffinMeasureOperationImpl();
- }
-
- @Bean(name = "externalOperation")
- public MeasureOperation externalOperation() {
- return new ExternalMeasureOperationImpl();
- }
- }
-
- @Autowired
+ @InjectMocks
private MeasureServiceImpl service;
- @MockBean
- private ExternalMeasureRepo externalMeasureRepo;
+ @Mock
+ private MeasureOperation externalOp;
- @MockBean
- private GriffinMeasureRepo griffinMeasureRepo;
+ @Mock
+ private MeasureOperation griffinOp;
- @MockBean
+ @Mock
private MeasureRepo<Measure> measureRepo;
- @MockBean
- private JobServiceImpl jobService;
-
- @MockBean
- private DataConnectorRepo dataConnectorRepo;
-
- @MockBean
- private VirtualJobRepo jobRepo;
-
@Before
public void setup() {
}
@@ -100,7 +64,8 @@ public class MeasureServiceImplTest {
@Test
public void testGetAllMeasures() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
- given(measureRepo.findByDeleted(false)).willReturn(Arrays.asList(measure));
+ given(measureRepo.findByDeleted(false)).willReturn(Collections.singletonList(measure));
+
List<Measure> measures = service.getAllAliveMeasures();
assertEquals(measures.size(), 1);
assertEquals(measures.get(0).getName(), "view_item_hourly");
@@ -110,6 +75,7 @@ public class MeasureServiceImplTest {
public void testGetMeasuresById() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
given(measureRepo.findByIdAndDeleted(1L, false)).willReturn(measure);
+
Measure m = service.getMeasureById(1);
assertEquals(m.getName(), measure.getName());
}
@@ -118,7 +84,8 @@ public class MeasureServiceImplTest {
public void testGetAliveMeasuresByOwner() throws Exception {
String owner = "test";
Measure measure = createGriffinMeasure("view_item_hourly");
- given(measureRepo.findByOwnerAndDeleted(owner, false)).willReturn(Arrays.asList(measure));
+ given(measureRepo.findByOwnerAndDeleted(owner, false)).willReturn(Collections.singletonList(measure));
+
List<Measure> measures = service.getAliveMeasuresByOwner(owner);
assertEquals(measures.get(0).getName(), measure.getName());
}
@@ -129,201 +96,105 @@ public class MeasureServiceImplTest {
GriffinMeasure measure = createGriffinMeasure("view_item_hourly");
measure.setId(1L);
given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- given(jobService.deleteJobsRelateToMeasure(measure.getId())).willReturn(true);
- GriffinOperationMessage message = service.deleteMeasureById(measure.getId());
- assertEquals(message, DELETE_MEASURE_BY_ID_SUCCESS);
- }
+ doNothing().when(griffinOp).delete(measure);
- @Test
- public void testDeleteMeasuresByIdForGriffinFailureWithPause() throws Exception {
- GriffinMeasure measure = createGriffinMeasure("view_item_hourly");
- measure.setId(1L);
- given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- given(jobService.deleteJobsRelateToMeasure(measure.getId())).willReturn(false);
- GriffinOperationMessage message = service.deleteMeasureById(measure.getId());
- assertEquals(message, DELETE_MEASURE_BY_ID_FAIL);
+ service.deleteMeasureById(measure.getId());
+ verify(griffinOp, times(1)).delete(measure);
}
@Test
- public void testDeleteMeasuresByIdForGriffinFailureWithException() throws Exception {
- GriffinMeasure measure = createGriffinMeasure("view_item_hourly");
- measure.setId(1L);
- given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- given(jobService.deleteJobsRelateToMeasure(measure.getId())).willReturn(true);
- given(measureRepo.save(Matchers.any(Measure.class))).willThrow(Exception.class);
- GriffinOperationMessage message = service.deleteMeasureById(measure.getId());
- assertEquals(message, DELETE_MEASURE_BY_ID_FAIL);
- }
-
- @Test
- public void testDeleteMeasuresByIdForExternalSuccess() throws Exception {
+ public void testDeleteMeasuresByIdForExternalSuccess() {
ExternalMeasure measure = createExternalMeasure("externalMeasure");
measure.setId(1L);
given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.deleteMeasureById(measure.getId());
- assertEquals(message, DELETE_MEASURE_BY_ID_SUCCESS);
- }
+ doNothing().when(externalOp).delete(measure);
- @Test
- public void testDeleteMeasuresByIdForExternalFailureWithException() throws Exception {
- ExternalMeasure measure = createExternalMeasure("externalMeasure");
- measure.setId(1L);
- given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- given(externalMeasureRepo.save(Matchers.any(ExternalMeasure.class))).willThrow(Exception.class);
- GriffinOperationMessage message = service.deleteMeasureById(measure.getId());
- assertEquals(message, DELETE_MEASURE_BY_ID_FAIL);
+ service.deleteMeasureById(1L);
+ verify(externalOp, times(1)).delete(measure);
}
- @Test
- public void testDeleteMeasuresByIdForFailureWithNotFound() throws Exception {
+ @Test(expected = GriffinException.NotFoundException.class)
+ public void testDeleteMeasuresByIdFailureWithNotFound() {
given(measureRepo.findByIdAndDeleted(1L, false)).willReturn(null);
- GriffinOperationMessage message = service.deleteMeasureById(1L);
- assertEquals(message, RESOURCE_NOT_FOUND);
- }
-
- @Test
- public void testCreateMeasureForGriffinSuccess() throws Exception {
- String measureName = "view_item_hourly";
- GriffinMeasure measure = createGriffinMeasure(measureName);
- given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(new ArrayList<>());
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_SUCCESS);
- }
- @Test
- public void testCreateMeasureForGriffinFailureWithConnectorExist() throws Exception {
- String measureName = "view_item_hourly";
- GriffinMeasure measure = createGriffinMeasure(measureName);
- DataConnector dc = new DataConnector("source_name", "1h", "1.2", null);
- given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(new LinkedList<>());
- given(dataConnectorRepo.findByConnectorNames(Arrays.asList("source_name", "target_name"))).willReturn(Arrays.asList(dc));
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_FAIL);
+ service.deleteMeasureById(1L);
}
- @Test
- public void testCreateMeasureForGriffinFailureWithConnectorNull() throws Exception {
- String measureName = "view_item_hourly";
- DataConnector dcSource = createDataConnector(null, "default", "test_data_src", "dt=#YYYYMMdd# AND hour=#HH#");
- DataConnector dcTarget = createDataConnector(null, "default", "test_data_tgt", "dt=#YYYYMMdd# AND hour=#HH#");
- GriffinMeasure measure = createGriffinMeasure(measureName, dcSource, dcTarget);
- given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(new LinkedList<>());
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_FAIL);
- }
+ @Test(expected = GriffinException.ServiceException.class)
+ public void testDeleteMeasuresByIdForGriffinFailureWithException() throws Exception {
+ GriffinMeasure measure = createGriffinMeasure("externalMeasure");
+ measure.setId(1L);
+ given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
+ doThrow(new GriffinException.ServiceException("Failed to delete job", new Exception()))
+ .when(griffinOp).delete(measure);
- @Test
- public void testCreateMeasureForGriffinFailureWithException() throws Exception {
- String measureName = "view_item_hourly";
- GriffinMeasure measure = createGriffinMeasure(measureName);
- given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(new ArrayList<>());
- given(measureRepo.save(Matchers.any(Measure.class))).willThrow(Exception.class);
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_FAIL);
+ service.deleteMeasureById(1L);
}
@Test
- public void testCreateMeasureForExternalSuccess() throws Exception {
+ public void testCreateMeasureForGriffinSuccess() throws Exception {
String measureName = "view_item_hourly";
- ExternalMeasure measure = createExternalMeasure(measureName);
+ GriffinMeasure griffinMeasure = createGriffinMeasure(measureName);
given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(new ArrayList<>());
- given(externalMeasureRepo.save(measure)).willReturn(measure);
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_SUCCESS);
- }
+ given(griffinOp.create(griffinMeasure)).willReturn(griffinMeasure);
- @Test
- public void testCreateMeasureForExternalFailureWithBlank() throws Exception {
- String measureName = "view_item_hourly";
- ExternalMeasure measure = createExternalMeasure(measureName);
- measure.setMetricName(" ");
- given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(new ArrayList<>());
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_FAIL);
+ Measure measure = service.createMeasure(griffinMeasure);
+ assertEquals(measure.getName(), griffinMeasure.getName());
}
@Test
- public void testCreateMeasureForExternalFailureWithException() throws Exception {
+ public void testCreateMeasureForExternalSuccess() {
String measureName = "view_item_hourly";
- ExternalMeasure measure = createExternalMeasure(measureName);
+ ExternalMeasure externalMeasure = createExternalMeasure(measureName);
given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(new ArrayList<>());
- given(externalMeasureRepo.save(measure)).willReturn(measure);
- given(externalMeasureRepo.save(Matchers.any(ExternalMeasure.class))).willThrow(Exception.class);
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_FAIL);
+ given(externalOp.create(externalMeasure)).willReturn(externalMeasure);
+ Measure measure = service.createMeasure(externalMeasure);
+ assertEquals(measure.getName(), externalMeasure.getName());
}
- @Test
- public void testCreateMeasureForFailureWithRepeat() throws Exception {
+ @Test(expected = GriffinException.ConflictException.class)
+ public void testCreateMeasureForFailureWithDuplicate() throws Exception {
String measureName = "view_item_hourly";
GriffinMeasure measure = createGriffinMeasure(measureName);
- given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(Arrays.asList(measure));
- GriffinOperationMessage message = service.createMeasure(measure);
- assertEquals(message, CREATE_MEASURE_FAIL_DUPLICATE);
- }
+ given(measureRepo.findByNameAndDeleted(measureName, false)).willReturn(Collections.singletonList(measure));
+ service.createMeasure(measure);
+ }
@Test
public void testUpdateMeasureForGriffinSuccess() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.updateMeasure(measure);
- assertEquals(message, UPDATE_MEASURE_SUCCESS);
+ doNothing().when(griffinOp).update(measure);
+
+ service.updateMeasure(measure);
+ verify(griffinOp, times(1)).update(measure);
}
- @Test
+ @Test(expected = GriffinException.BadRequestException.class)
public void testUpdateMeasureForGriffinFailureWithDiffType() throws Exception {
Measure griffinMeasure = createGriffinMeasure("view_item_hourly");
Measure externalMeasure = createExternalMeasure("externalName");
given(measureRepo.findByIdAndDeleted(griffinMeasure.getId(), false)).willReturn(externalMeasure);
- GriffinOperationMessage message = service.updateMeasure(griffinMeasure);
- assertEquals(message, UPDATE_MEASURE_FAIL);
+
+ service.updateMeasure(griffinMeasure);
}
- @Test
- public void testUpdateMeasureForGriffinFailureWithNotFound() throws Exception {
+ @Test(expected = GriffinException.NotFoundException.class)
+ public void testUpdateMeasureForFailureWithNotFound() throws Exception {
Measure measure = createGriffinMeasure("view_item_hourly");
given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(null);
- GriffinOperationMessage message = service.updateMeasure(measure);
- assertEquals(message, RESOURCE_NOT_FOUND);
- }
- @Test
- public void testUpdateMeasureForGriffinFailureWithException() throws Exception {
- Measure measure = createGriffinMeasure("view_item_hourly");
- given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- given(measureRepo.save(Matchers.any(Measure.class))).willThrow(Exception.class);
- GriffinOperationMessage message = service.updateMeasure(measure);
- assertEquals(message, UPDATE_MEASURE_FAIL);
+ service.updateMeasure(measure);
}
@Test
- public void testUpdateMeasureForExternalSuccess() throws Exception {
+ public void testUpdateMeasureForExternal() {
ExternalMeasure measure = createExternalMeasure("external_view_item_hourly");
given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- given(externalMeasureRepo.findOne(measure.getId())).willReturn(measure);
- GriffinOperationMessage message = service.updateMeasure(measure);
- assertEquals(message, UPDATE_MEASURE_SUCCESS);
- }
-
- @Test
- public void testUpdateMeasureForExternalFailureWithBlank() throws Exception {
- String measureName = "view_item_hourly";
- ExternalMeasure measure = createExternalMeasure(measureName);
- measure.setMetricName(" ");
- given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- GriffinOperationMessage message = service.updateMeasure(measure);
- assertEquals(message, UPDATE_MEASURE_FAIL);
- }
+ doNothing().when(externalOp).update(measure);
- @Test
- public void testUpdateMeasureForExternalFailWithException() throws Exception {
- ExternalMeasure measure = createExternalMeasure("external_view_item_hourly");
- given(measureRepo.findByIdAndDeleted(measure.getId(), false)).willReturn(measure);
- given(externalMeasureRepo.findOne(measure.getId())).willReturn(measure);
- given(externalMeasureRepo.save(Matchers.any(ExternalMeasure.class))).willThrow(Exception.class);
- GriffinOperationMessage message = service.updateMeasure(measure);
- assertEquals(message, GriffinOperationMessage.UPDATE_MEASURE_FAIL);
+ service.updateMeasure(measure);
+ verify(externalOp, times(1)).update(measure);
}
-
}