Repository: incubator-griffin Updated Branches: refs/heads/master 06f969fea -> 44eea866d
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/job/JobController.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/JobController.java b/service/src/main/java/org/apache/griffin/core/job/JobController.java index 50f6614..3731d9f 100644 --- a/service/src/main/java/org/apache/griffin/core/job/JobController.java +++ b/service/src/main/java/org/apache/griffin/core/job/JobController.java @@ -42,7 +42,7 @@ public class JobController { } @RequestMapping(value = "/jobs", method = RequestMethod.POST) - public GriffinOperationMessage addJob(@RequestBody JobSchedule jobSchedule) { + public GriffinOperationMessage addJob(@RequestBody JobSchedule jobSchedule) throws Exception { return jobService.addJob(jobSchedule); } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/job/JobInstance.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/JobInstance.java b/service/src/main/java/org/apache/griffin/core/job/JobInstance.java index a785fbf..0c8b554 100644 --- a/service/src/main/java/org/apache/griffin/core/job/JobInstance.java +++ b/service/src/main/java/org/apache/griffin/core/job/JobInstance.java @@ -150,7 +150,8 @@ public class JobInstance implements Job { private Long[] genSampleTs(SegmentRange segRange, DataConnector dc) throws IOException { Long offset = TimeUtil.str2Long(segRange.getBegin()); Long range = TimeUtil.str2Long(segRange.getLength()); - Long dataUnit = TimeUtil.str2Long(dc.getDataUnit()); + String unit = dc.getDataUnit(); + Long dataUnit = TimeUtil.str2Long(unit != null ? unit : dc.getDefaultDataUnit()); //offset usually is negative Long dataStartTime = jobStartTime + offset; if (range < 0) { http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/job/JobService.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/JobService.java b/service/src/main/java/org/apache/griffin/core/job/JobService.java index a210105..33dce25 100644 --- a/service/src/main/java/org/apache/griffin/core/job/JobService.java +++ b/service/src/main/java/org/apache/griffin/core/job/JobService.java @@ -32,7 +32,7 @@ public interface JobService { List<JobDataBean> getAliveJobs(); - GriffinOperationMessage addJob(JobSchedule jobSchedule); + GriffinOperationMessage addJob(JobSchedule jobSchedule) throws Exception; boolean pauseJob(String group, String name) throws SchedulerException; http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java index 90c18ec..92188b4 100644 --- a/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java +++ b/service/src/main/java/org/apache/griffin/core/job/JobServiceImpl.java @@ -44,7 +44,7 @@ import org.springframework.data.domain.Sort; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import org.springframework.stereotype.Service; -import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; @@ -53,8 +53,7 @@ import java.io.IOException; import java.text.ParseException; import java.util.*; -import static org.apache.griffin.core.util.GriffinOperationMessage.CREATE_JOB_FAIL; -import static org.apache.griffin.core.util.GriffinOperationMessage.CREATE_JOB_SUCCESS; +import static org.apache.griffin.core.util.GriffinOperationMessage.*; import static org.quartz.JobBuilder.newJob; import static org.quartz.JobKey.jobKey; import static org.quartz.TriggerBuilder.newTrigger; @@ -140,40 +139,38 @@ public class JobServiceImpl implements JobService { } @Override - public GriffinOperationMessage addJob(JobSchedule js) { + @Transactional(rollbackFor = Exception.class) + public GriffinOperationMessage addJob(JobSchedule js) throws Exception { Long measureId = js.getMeasureId(); GriffinMeasure measure = getMeasureIfValid(measureId); - if (measure != null) { - return addJob(js, measure); + if (measure != null && addJob(js, measure)) { + return CREATE_JOB_SUCCESS; } return CREATE_JOB_FAIL; } - private GriffinOperationMessage addJob(JobSchedule js, GriffinMeasure measure) { - String qName = js.getJobName() + "_" + System.currentTimeMillis(); + private boolean addJob(JobSchedule js, GriffinMeasure measure) throws Exception { + String qName = getQuartzName(js); String qGroup = getQuartzGroupName(); - try { - if (addJob(js, measure, qName, qGroup)) { - return CREATE_JOB_SUCCESS; - } - } catch (Exception e) { - LOGGER.error("Add job exception happens.", e); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + TriggerKey triggerKey = triggerKey(qName, qGroup); + if (!isJobScheduleParamValid(js, measure) || factory.getObject().checkExists(triggerKey)) { + return false; } - return CREATE_JOB_FAIL; + GriffinJob job = new GriffinJob(measure.getId(), js.getJobName(), qName, qGroup, false); + jobRepo.save(job); + js = jobScheduleRepo.save(js); + addJob(triggerKey, js, job); + return true; } - private boolean addJob(JobSchedule js, GriffinMeasure measure, String qName, String qGroup) throws SchedulerException, ParseException { + private void addJob(TriggerKey triggerKey, JobSchedule js, GriffinJob job) throws Exception { Scheduler scheduler = factory.getObject(); - TriggerKey triggerKey = triggerKey(qName, qGroup); - if (!isJobScheduleParamValid(js, measure)) { - return false; - } - if (scheduler.checkExists(triggerKey)) { - return false; - } - GriffinJob job = saveGriffinJob(measure.getId(), js.getJobName(), qName, qGroup); - return job != null && saveAndAddQuartzJob(scheduler, triggerKey, js, job); + JobDetail jobDetail = addJobDetail(scheduler, triggerKey, js, job); + scheduler.scheduleJob(genTriggerInstance(triggerKey, jobDetail, js)); + } + + private String getQuartzName(JobSchedule js) { + return js.getJobName() + "_" + System.currentTimeMillis(); } private String getQuartzGroupName() { @@ -253,24 +250,12 @@ public class JobServiceImpl implements JobService { private GriffinMeasure getMeasureIfValid(Long measureId) { Measure measure = measureRepo.findByIdAndDeleted(measureId, false); if (measure == null) { - LOGGER.warn("The measure id {} isn't valid. Maybe it doesn't exist or is deleted.", measureId); + LOGGER.warn("The measure id {} isn't valid. Maybe it doesn't exist or is external measure type.", measureId); return null; } return (GriffinMeasure) measure; } - private GriffinJob saveGriffinJob(Long measureId, String jobName, String qName, String qGroup) { - GriffinJob job = new GriffinJob(measureId, jobName, qName, qGroup, false); - return jobRepo.save(job); - } - - private boolean saveAndAddQuartzJob(Scheduler scheduler, TriggerKey triggerKey, JobSchedule js, GriffinJob job) throws SchedulerException, ParseException { - js = jobScheduleRepo.save(js); - JobDetail jobDetail = addJobDetail(scheduler, triggerKey, js, job); - scheduler.scheduleJob(genTriggerInstance(triggerKey, jobDetail, js)); - return true; - } - private Trigger genTriggerInstance(TriggerKey triggerKey, JobDetail jd, JobSchedule js) throws ParseException { return newTrigger() @@ -298,8 +283,9 @@ public class JobServiceImpl implements JobService { private void setJobDataMap(JobDetail jd, JobSchedule js, GriffinJob job) { - jd.getJobDataMap().put(JOB_SCHEDULE_ID, js.getId().toString()); - jd.getJobDataMap().put(GRIFFIN_JOB_ID, job.getId().toString()); + JobDataMap jobDataMap = jd.getJobDataMap(); + jobDataMap.put(JOB_SCHEDULE_ID, js.getId().toString()); + jobDataMap.put(GRIFFIN_JOB_ID, job.getId().toString()); } private boolean pauseJob(List<JobInstanceBean> instances) { @@ -337,7 +323,7 @@ public class JobServiceImpl implements JobService { JobKey jobKey = new JobKey(name, group); if (!scheduler.checkExists(jobKey)) { LOGGER.warn("Job({},{}) does not exist.", jobKey.getGroup(), jobKey.getName()); - return false; + return true; } scheduler.pauseJob(jobKey); return true; @@ -375,7 +361,7 @@ public class JobServiceImpl implements JobService { @Override public GriffinOperationMessage deleteJob(Long jobId) { GriffinJob job = jobRepo.findByIdAndDeleted(jobId, false); - return deleteJob(job) ? GriffinOperationMessage.DELETE_JOB_SUCCESS : GriffinOperationMessage.DELETE_JOB_FAIL; + return deleteJob(job) ? DELETE_JOB_SUCCESS : DELETE_JOB_FAIL; } /** @@ -389,14 +375,14 @@ public class JobServiceImpl implements JobService { List<GriffinJob> jobs = jobRepo.findByJobNameAndDeleted(name, false); if (CollectionUtils.isEmpty(jobs)) { LOGGER.warn("There is no job with '{}' name.", name); - return GriffinOperationMessage.DELETE_JOB_FAIL; + return DELETE_JOB_FAIL; } for (GriffinJob job : jobs) { if (!deleteJob(job)) { - return GriffinOperationMessage.DELETE_JOB_FAIL; + return DELETE_JOB_FAIL; } } - return GriffinOperationMessage.DELETE_JOB_SUCCESS; + return DELETE_JOB_SUCCESS; } private boolean deleteJob(GriffinJob job) { @@ -419,7 +405,7 @@ public class JobServiceImpl implements JobService { JobKey jobKey = new JobKey(name, group); if (scheduler.checkExists(jobKey)) { LOGGER.warn("Job({},{}) does not exist.", jobKey.getGroup(), jobKey.getName()); - return false; + return true; } scheduler.deleteJob(jobKey); return true; @@ -435,8 +421,8 @@ public class JobServiceImpl implements JobService { public boolean deleteJobsRelateToMeasure(Long measureId) { List<GriffinJob> jobs = jobRepo.findByMeasureIdAndDeleted(measureId, false); if (CollectionUtils.isEmpty(jobs)) { - LOGGER.warn("Measure id {} has no related jobs.", measureId); - return false; + LOGGER.info("Measure id {} has no related jobs.", measureId); + return true; } for (GriffinJob job : jobs) { deleteJob(job); @@ -563,7 +549,7 @@ public class JobServiceImpl implements JobService { private Boolean isJobHealthy(Long jobId) { Pageable pageable = new PageRequest(0, 1, Sort.Direction.DESC, "tms"); - List<JobInstanceBean> instances = jobInstanceRepo.findByJobId(jobId,pageable); + List<JobInstanceBean> instances = jobInstanceRepo.findByJobId(jobId, pageable); return !CollectionUtils.isEmpty(instances) && LivySessionStates.isHealthy(instances.get(0).getState()); } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/job/entity/JobDataSegment.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/entity/JobDataSegment.java b/service/src/main/java/org/apache/griffin/core/job/entity/JobDataSegment.java index 7009b5d..b0f81cb 100644 --- a/service/src/main/java/org/apache/griffin/core/job/entity/JobDataSegment.java +++ b/service/src/main/java/org/apache/griffin/core/job/entity/JobDataSegment.java @@ -78,4 +78,9 @@ public class JobDataSegment extends AbstractAuditableEntity { public JobDataSegment() { } + + public JobDataSegment(String dataConnectorName, boolean baseline) { + this.dataConnectorName =dataConnectorName; + this.baseline = baseline; + } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/job/entity/JobSchedule.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/job/entity/JobSchedule.java b/service/src/main/java/org/apache/griffin/core/job/entity/JobSchedule.java index 131fe03..1406b5e 100644 --- a/service/src/main/java/org/apache/griffin/core/job/entity/JobSchedule.java +++ b/service/src/main/java/org/apache/griffin/core/job/entity/JobSchedule.java @@ -41,8 +41,6 @@ import javax.validation.constraints.NotNull; import java.io.IOException; import java.util.*; -@Configurable(preConstruction = true) -@Component @Entity public class JobSchedule extends AbstractAuditableEntity { @@ -178,11 +176,11 @@ public class JobSchedule extends AbstractAuditableEntity { public JobSchedule() throws JsonProcessingException { } - public JobSchedule(Long measureId, String jobName, String cronExpression, Map configMap, List<JobDataSegment> segments) throws JsonProcessingException { + public JobSchedule(Long measureId, String jobName, String cronExpression,String timeZone, List<JobDataSegment> segments) throws JsonProcessingException { this.measureId = measureId; this.jobName = jobName; this.cronExpression = cronExpression; - setConfigMap(configMap); + this.timeZone = timeZone; this.segments = segments; } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/login/LoginController.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/login/LoginController.java b/service/src/main/java/org/apache/griffin/core/login/LoginController.java index a4e997d..47b0ed3 100644 --- a/service/src/main/java/org/apache/griffin/core/login/LoginController.java +++ b/service/src/main/java/org/apache/griffin/core/login/LoginController.java @@ -36,8 +36,7 @@ public class LoginController { private LoginService loginService; @RequestMapping(value = "/authenticate", method = RequestMethod.POST) - public ResponseEntity<Map<String, Object>> login( - @RequestBody Map<String, String> map) { + public ResponseEntity<Map<String, Object>> login(@RequestBody Map<String, String> map) { return loginService.login(map); } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java b/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java index f38982a..ca9aae1 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java +++ b/service/src/main/java/org/apache/griffin/core/measure/ExternalMeasureOperationImpl.java @@ -31,6 +31,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import static org.apache.griffin.core.util.GriffinOperationMessage.*; + @Component("externalOperation") public class ExternalMeasureOperationImpl implements MeasureOperation { private static final Logger LOGGER = LoggerFactory.getLogger(ExternalMeasureOperationImpl.class); @@ -45,18 +47,18 @@ public class ExternalMeasureOperationImpl implements MeasureOperation { ExternalMeasure em = (ExternalMeasure) measure; if (StringUtils.isBlank(em.getMetricName())) { LOGGER.error("Failed to create external measure {}. Its metric name is blank.", measure.getName()); - return GriffinOperationMessage.CREATE_MEASURE_FAIL; + return CREATE_MEASURE_FAIL; } try { em.setVirtualJob(new VirtualJob()); em = measureRepo.save(em); VirtualJob vj = genVirtualJob(em, em.getVirtualJob()); jobRepo.save(vj); - return GriffinOperationMessage.CREATE_MEASURE_SUCCESS; + return CREATE_MEASURE_SUCCESS; } catch (Exception e) { LOGGER.error("Failed to create new measure {}.{}", em.getName(), e.getMessage()); } - return GriffinOperationMessage.CREATE_MEASURE_FAIL; + return CREATE_MEASURE_FAIL; } @Override @@ -64,18 +66,18 @@ public class ExternalMeasureOperationImpl implements MeasureOperation { ExternalMeasure latestMeasure = (ExternalMeasure) measure; if (StringUtils.isBlank(latestMeasure.getMetricName())) { LOGGER.error("Failed to create external measure {}. Its metric name is blank.", measure.getName()); - return GriffinOperationMessage.UPDATE_MEASURE_FAIL; + return UPDATE_MEASURE_FAIL; } try { ExternalMeasure originMeasure = measureRepo.findOne(latestMeasure.getId()); VirtualJob vj = genVirtualJob(latestMeasure, originMeasure.getVirtualJob()); latestMeasure.setVirtualJob(vj); measureRepo.save(latestMeasure); - return GriffinOperationMessage.UPDATE_MEASURE_SUCCESS; + return UPDATE_MEASURE_SUCCESS; } catch (Exception e) { LOGGER.error("Failed to update measure. {}", e.getMessage()); } - return GriffinOperationMessage.UPDATE_MEASURE_FAIL; + return UPDATE_MEASURE_FAIL; } @Override http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java b/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java index 88c5409..f21b60d 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java +++ b/service/src/main/java/org/apache/griffin/core/measure/GriffinMeasureOperationImpl.java @@ -37,6 +37,8 @@ import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; +import static org.apache.griffin.core.util.GriffinOperationMessage.*; + @Component("griffinOperation") public class GriffinMeasureOperationImpl implements MeasureOperation { private static final Logger LOGGER = LoggerFactory.getLogger(GriffinMeasureOperationImpl.class); @@ -52,26 +54,26 @@ public class GriffinMeasureOperationImpl implements MeasureOperation { @Override public GriffinOperationMessage create(Measure measure) { if (!isConnectorNamesValid((GriffinMeasure) measure)) { - return GriffinOperationMessage.CREATE_MEASURE_FAIL; + return CREATE_MEASURE_FAIL; } try { measureRepo.save(measure); - return GriffinOperationMessage.CREATE_MEASURE_SUCCESS; + return CREATE_MEASURE_SUCCESS; } catch (Exception e) { LOGGER.error("Failed to create new measure {}.", measure.getName(), e); } - return GriffinOperationMessage.CREATE_MEASURE_FAIL; + return CREATE_MEASURE_FAIL; } @Override public GriffinOperationMessage update(Measure measure) { try { measureRepo.save(measure); - return GriffinOperationMessage.UPDATE_MEASURE_SUCCESS; + return UPDATE_MEASURE_SUCCESS; } catch (Exception e) { LOGGER.error("Failed to update measure. {}", e.getMessage()); } - return GriffinOperationMessage.UPDATE_MEASURE_FAIL; + return UPDATE_MEASURE_FAIL; } @Override http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java index ecb9fdd..34a780d 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java +++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureServiceImpl.java @@ -33,6 +33,8 @@ import org.springframework.util.CollectionUtils; import java.util.List; +import static org.apache.griffin.core.util.GriffinOperationMessage.*; + @Service public class MeasureServiceImpl implements MeasureService { private static final Logger LOGGER = LoggerFactory.getLogger(MeasureServiceImpl.class); @@ -66,7 +68,7 @@ public class MeasureServiceImpl implements MeasureService { List<Measure> aliveMeasureList = measureRepo.findByNameAndDeleted(measure.getName(), false); if (!CollectionUtils.isEmpty(aliveMeasureList)) { LOGGER.warn("Failed to create new measure {}, it already exists.", measure.getName()); - return GriffinOperationMessage.CREATE_MEASURE_FAIL_DUPLICATE; + return CREATE_MEASURE_FAIL_DUPLICATE; } MeasureOperation op = getOperation(measure); return op.create(measure); @@ -76,11 +78,11 @@ public class MeasureServiceImpl implements MeasureService { public GriffinOperationMessage updateMeasure(Measure measure) { Measure m = measureRepo.findByIdAndDeleted(measure.getId(), false); if (m == null) { - return GriffinOperationMessage.RESOURCE_NOT_FOUND; + return RESOURCE_NOT_FOUND; } if (!m.getType().equals(measure.getType())) { LOGGER.error("Can't update measure to different type."); - return GriffinOperationMessage.UPDATE_MEASURE_FAIL; + return UPDATE_MEASURE_FAIL; } MeasureOperation op = getOperation(measure); return op.update(measure); @@ -90,17 +92,17 @@ public class MeasureServiceImpl implements MeasureService { public GriffinOperationMessage deleteMeasureById(Long measureId) { Measure measure = measureRepo.findByIdAndDeleted(measureId, false); if (measure == null) { - return GriffinOperationMessage.RESOURCE_NOT_FOUND; + return RESOURCE_NOT_FOUND; } try { MeasureOperation op = getOperation(measure); if (op.delete(measure)) { - return GriffinOperationMessage.DELETE_MEASURE_BY_ID_SUCCESS; + return DELETE_MEASURE_BY_ID_SUCCESS; } } catch (Exception e) { LOGGER.error("Delete measure id: {} name: {} failure. {}", measure.getId(), measure.getName(), e.getMessage()); } - return GriffinOperationMessage.DELETE_MEASURE_BY_ID_FAIL; + return DELETE_MEASURE_BY_ID_FAIL; } private MeasureOperation getOperation(Measure measure) { http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/measure/entity/DataConnector.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/entity/DataConnector.java b/service/src/main/java/org/apache/griffin/core/measure/entity/DataConnector.java index 3c4abf5..8a87ea5 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/entity/DataConnector.java +++ b/service/src/main/java/org/apache/griffin/core/measure/entity/DataConnector.java @@ -97,13 +97,9 @@ public class DataConnector extends AbstractAuditableEntity { return config; } - @JsonProperty("data.unit") public String getDataUnit() { - if (dataUnit != null) { - return dataUnit; - } - return defaultDataUnit; + return dataUnit; } @JsonProperty("data.unit") @@ -111,6 +107,14 @@ public class DataConnector extends AbstractAuditableEntity { this.dataUnit = dataUnit; } + public String getDefaultDataUnit() { + return defaultDataUnit; + } + + public void setDefaultDataUnit(String defaultDataUnit) { + this.defaultDataUnit = defaultDataUnit; + } + public String getName() { return name; } @@ -152,6 +156,13 @@ public class DataConnector extends AbstractAuditableEntity { }); } + public DataConnector(String name, String dataUnit, Map configMap,List<SegmentPredicate> predicates) throws IOException { + this.name = name; + this.dataUnit = dataUnit; + this.configMap = configMap; + this.predicates = predicates; + } + @Override public String toString() { return "DataConnector{" + http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/measure/entity/GriffinMeasure.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/measure/entity/GriffinMeasure.java b/service/src/main/java/org/apache/griffin/core/measure/entity/GriffinMeasure.java index 3c5c602..c448c0b 100644 --- a/service/src/main/java/org/apache/griffin/core/measure/entity/GriffinMeasure.java +++ b/service/src/main/java/org/apache/griffin/core/measure/entity/GriffinMeasure.java @@ -112,4 +112,12 @@ public class GriffinMeasure extends Measure { this.evaluateRule = evaluateRule; } + public GriffinMeasure(Long measureId,String name, String owner, List<DataSource> dataSources, EvaluateRule evaluateRule) { + this.setId(measureId); + this.name = name; + this.owner = owner; + this.dataSources = dataSources; + this.evaluateRule = evaluateRule; + } + } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/metric/MetricController.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricController.java b/service/src/main/java/org/apache/griffin/core/metric/MetricController.java index fcaa51d..359858b 100644 --- a/service/src/main/java/org/apache/griffin/core/metric/MetricController.java +++ b/service/src/main/java/org/apache/griffin/core/metric/MetricController.java @@ -21,6 +21,7 @@ package org.apache.griffin.core.metric; import org.apache.griffin.core.metric.model.Metric; import org.apache.griffin.core.metric.model.MetricValue; +import org.apache.griffin.core.util.GriffinOperationMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -48,12 +49,12 @@ public class MetricController { } @RequestMapping(value = "/metrics/values", method = RequestMethod.POST) - public ResponseEntity addMetricValues(@RequestBody List<MetricValue> values) { + public ResponseEntity<GriffinOperationMessage> addMetricValues(@RequestBody List<MetricValue> values) { return metricService.addMetricValues(values); } @RequestMapping(value = "/metrics/values", method = RequestMethod.DELETE) - public ResponseEntity deleteMetricValues(@RequestParam("metricName") String metricName) { + public ResponseEntity<GriffinOperationMessage> deleteMetricValues(@RequestParam("metricName") String metricName) { return metricService.deleteMetricValues(metricName); } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/metric/MetricService.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricService.java b/service/src/main/java/org/apache/griffin/core/metric/MetricService.java index f68d83c..502f254 100644 --- a/service/src/main/java/org/apache/griffin/core/metric/MetricService.java +++ b/service/src/main/java/org/apache/griffin/core/metric/MetricService.java @@ -22,6 +22,7 @@ package org.apache.griffin.core.metric; import org.apache.griffin.core.metric.model.Metric; import org.apache.griffin.core.metric.model.MetricValue; +import org.apache.griffin.core.util.GriffinOperationMessage; import org.springframework.http.ResponseEntity; import java.util.List; @@ -33,7 +34,7 @@ public interface MetricService { List<MetricValue> getMetricValues(String metricName, int offset, int size); - ResponseEntity addMetricValues(List<MetricValue> values); + ResponseEntity<GriffinOperationMessage> addMetricValues(List<MetricValue> values); - ResponseEntity deleteMetricValues(String metricName); + ResponseEntity<GriffinOperationMessage> deleteMetricValues(String metricName); } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java b/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java index 68b26eb..4d992e2 100644 --- a/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java +++ b/service/src/main/java/org/apache/griffin/core/metric/MetricServiceImpl.java @@ -41,6 +41,8 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import static org.apache.griffin.core.util.GriffinOperationMessage.*; + @Service public class MetricServiceImpl implements MetricService { private static final Logger LOGGER = LoggerFactory.getLogger(MetricServiceImpl.class); @@ -88,22 +90,22 @@ public class MetricServiceImpl implements MetricService { public ResponseEntity addMetricValues(List<MetricValue> values) { for (MetricValue value : values) { if (!isMetricValueValid(value)) { - LOGGER.error("Invalid metric value."); - return new ResponseEntity<>(GriffinOperationMessage.ADD_METRIC_VALUES_FAIL, HttpStatus.BAD_REQUEST); + LOGGER.warn("Invalid metric value."); + return new ResponseEntity<>(ADD_METRIC_VALUES_FAIL, HttpStatus.BAD_REQUEST); } } try { for (MetricValue value : values) { metricStore.addMetricValue(value); } - return new ResponseEntity<>(GriffinOperationMessage.ADD_METRIC_VALUES_SUCCESS, HttpStatus.CREATED); + return new ResponseEntity<>(ADD_METRIC_VALUES_SUCCESS, HttpStatus.CREATED); } catch (ResponseException e) { LOGGER.error("Failed to add metric values. {}", e.getMessage()); HttpStatus status = HttpStatus.valueOf(e.getResponse().getStatusLine().getStatusCode()); - return new ResponseEntity<>(GriffinOperationMessage.ADD_METRIC_VALUES_FAIL, status); + return new ResponseEntity<>(ADD_METRIC_VALUES_FAIL, status); } catch (Exception e) { LOGGER.error("Failed to add metric values. {}", e.getMessage()); - return new ResponseEntity<>(GriffinOperationMessage.ADD_METRIC_VALUES_FAIL, HttpStatus.INTERNAL_SERVER_ERROR); + return new ResponseEntity<>(ADD_METRIC_VALUES_FAIL, HttpStatus.INTERNAL_SERVER_ERROR); } } @@ -112,17 +114,17 @@ public class MetricServiceImpl implements MetricService { } @Override - public ResponseEntity deleteMetricValues(String metricName) { + public ResponseEntity<GriffinOperationMessage> deleteMetricValues(String metricName) { try { metricStore.deleteMetricValues(metricName); - return ResponseEntity.ok(GriffinOperationMessage.DELETE_METRIC_VALUES_SUCCESS); + return ResponseEntity.ok(DELETE_METRIC_VALUES_SUCCESS); } catch (ResponseException e) { LOGGER.error("Failed to delete metric values named {}. {}", metricName, e.getMessage()); HttpStatus status = HttpStatus.valueOf(e.getResponse().getStatusLine().getStatusCode()); - return new ResponseEntity<>(GriffinOperationMessage.DELETE_METRIC_VALUES_FAIL, status); + return new ResponseEntity<>(DELETE_METRIC_VALUES_FAIL, status); } catch (Exception e) { LOGGER.error("Failed to delete metric values named {}. {}", metricName, e.getMessage()); - return new ResponseEntity<>(GriffinOperationMessage.DELETE_METRIC_VALUES_FAIL, HttpStatus.INTERNAL_SERVER_ERROR); + return new ResponseEntity<>(DELETE_METRIC_VALUES_FAIL, HttpStatus.INTERNAL_SERVER_ERROR); } } } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java ---------------------------------------------------------------------- diff --git a/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java b/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java index 30b60f9..d055b37 100644 --- a/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java +++ b/service/src/main/java/org/apache/griffin/core/metric/MetricStoreImpl.java @@ -46,7 +46,7 @@ public class MetricStoreImpl implements MetricStore { private ObjectMapper mapper = new ObjectMapper(); - public MetricStoreImpl(@Value("${elasticsearch.host}") String host, @Value("${elasticsearch.port}") int port) { + public MetricStoreImpl(@Value("${elasticsearch.host}") String host, @Value("${elasticsearch.port}") int port) throws IOException { client = RestClient.builder(new HttpHost(host, port, "http")).build(); } http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/main/resources/application.properties ---------------------------------------------------------------------- diff --git a/service/src/main/resources/application.properties b/service/src/main/resources/application.properties index f2d83f4..b3f5e94 100644 --- a/service/src/main/resources/application.properties +++ b/service/src/main/resources/application.properties @@ -29,24 +29,24 @@ spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect # Naming strategy spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy -# hive metastore +# Hive metastore hive.metastore.uris = thrift://localhost:9083 hive.metastore.dbname = default hive.hmshandler.retry.attempts = 15 hive.hmshandler.retry.interval = 2000ms +# Hive cache time +cache.evict.hive.fixedRate.in.milliseconds = 900000 -# kafka schema registry +# Kafka schema registry kafka.schema.registry.url = http://localhost:8081 -# jobInstance +# Update job instance state at regular intervals jobInstance.fixedDelay.in.milliseconds = 60000 -# default job instance expired time is 7 days that is 604800000 milliseconds +# Expired time of job instance which is 7 days that is 604800000 milliseconds jobInstance.expired.milliseconds = 604800000 -# spring cache -cache.evict.hive.fixedRate.in.milliseconds = 900000 - -# predicate job +# schedule predicate job every 5 minutes and repeat 12 times at most +#interval unit m:minute h:hour d:day,only support these three units predicate.job.interval = 5m predicate.job.repeat.count = 12 http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/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 d3fdd97..51edad8 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 @@ -1,148 +1,160 @@ -///* -//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.job; -// -//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.springframework.http.MediaType; -//import org.springframework.test.context.junit4.SpringRunner; -//import org.springframework.test.web.servlet.MockMvc; -// -//import java.io.Serializable; -//import java.util.Arrays; -//import java.util.HashMap; -//import java.util.Map; -// -//import static org.hamcrest.CoreMatchers.is; -//import static org.mockito.BDDMockito.given; -//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; -// -// @Before -// public void setup() { -// } -// -// -// @Test -// public void testGetJobs() throws Exception { -// JobDataBean jobBean = new JobDataBean(); -// jobBean.setJobName("job1"); -// given(service.getAliveJobs()).willReturn(Arrays.asList(jobBean)); -// -// mvc.perform(get(URLHelper.API_VERSION_PATH + "/jobs/").contentType(MediaType.APPLICATION_JSON)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.[0].jobName", is("job1"))); -// } -// -// @Test -// public void testAddJobForSuccess() throws Exception { -// JobSchedule jobSchedule = new JobSchedule(1L, "jobName","0 0/4 * * * ?", null,null); -// given(service.addJob(jobSchedule)).willReturn(GriffinOperationMessage.CREATE_JOB_SUCCESS); -// -// mvc.perform(post(URLHelper.API_VERSION_PATH + "/job") -// .contentType(MediaType.APPLICATION_JSON) -// .content("{\"measure.id\": 1,\"cron.expression\": \"0 0/4 * * * ?\"}")) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.code", is(205))) -// .andExpect(jsonPath("$.description", is("Create Job Succeed"))) -// .andDo(print()); -// } -// -// @Test -// public void testAddJobForFail() throws Exception { -// Map configMap = new HashMap(); -// configMap.put("interval", "1m"); -// configMap.put("repeat", "2"); -// JobSchedule jobSchedule = new JobSchedule(1L, "jobName","0 0/4 * * * ?", configMap,null); -// given(service.addJob(jobSchedule)).willReturn(GriffinOperationMessage.CREATE_JOB_FAIL); -// -// mvc.perform(post(URLHelper.API_VERSION_PATH + "/job") -// .contentType(MediaType.APPLICATION_JSON) -// .content(JsonUtil.toJson(jobSchedule))) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.code", is(405))) -// .andExpect(jsonPath("$.description", is("Create Job Failed"))) -// .andDo(print()); -// } -// -// @Test -// public void testDeleteJobForSuccess() throws Exception { -// String jobName = "job1"; -// given(service.deleteJob(jobName)).willReturn(GriffinOperationMessage.DELETE_JOB_SUCCESS); -// -// mvc.perform(delete(URLHelper.API_VERSION_PATH + "/job").param("jobName", jobName)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.code", is(206))) -// .andExpect(jsonPath("$.description", is("Delete Job Succeed"))); -// } -// -// @Test -// public void testDeleteJobForFail() throws Exception { -// String jobName = "job1"; -// given(service.deleteJob(jobName)).willReturn(GriffinOperationMessage.DELETE_JOB_FAIL); -// -// mvc.perform(delete(URLHelper.API_VERSION_PATH + "/job").param("jobName", jobName)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.code", is(406))) -// .andExpect(jsonPath("$.description", is("Delete Job Failed"))); -// } -// -// @Test -// public void testFindInstancesOfJob() throws Exception { -// int page = 0; -// int size = 2; -// JobInstanceBean jobInstance = new JobInstanceBean(1L, LivySessionStates.State.running, "", "", System.currentTimeMillis(),System.currentTimeMillis()); -// given(service.findInstancesOfJob(1L, page, size)).willReturn(Arrays.asList(jobInstance)); -// -// 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].jobId", is(1))); -// } -// -// @Test -// public void testGetHealthInfo() throws Exception { -//// JobHealth jobHealth = new JobHealth(1, 3); -//// given(service.getHealthInfo()).willReturn(jobHealth); -//// -//// mvc.perform(get(URLHelper.API_VERSION_PATH + "/jobs/health")) -//// .andExpect(status().isOk()) -//// .andExpect(jsonPath("$.healthyJobCount", is(1))); -// } -//} +/* +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.job; + +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.springframework.http.MediaType; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import static org.apache.griffin.core.util.GriffinOperationMessage.*; +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.BDDMockito.given; +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; + + @Before + public void setup() { + } + + + @Test + public void testGetJobs() throws Exception { + JobDataBean jobBean = new JobDataBean(); + jobBean.setJobName("job_name"); + given(service.getAliveJobs()).willReturn(Arrays.asList(jobBean)); + + mvc.perform(get(URLHelper.API_VERSION_PATH + "/jobs").contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.[0].jobName", is("job_name"))); + } + + @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); + + 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()); + } + + @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); + + 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()); + } + + @Test + public void testDeleteJobByIdForSuccess() throws Exception { + given(service.deleteJob(1L)).willReturn(DELETE_JOB_SUCCESS); + + mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs/1")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(206))); + } + + @Test + public void testDeleteJobByIdForFailure() throws Exception { + given(service.deleteJob(1L)).willReturn(DELETE_JOB_FAIL); + + mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs/1")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(406))); + } + + @Test + public void testDeleteJobByNameForSuccess() throws Exception { + String jobName = "jobName"; + given(service.deleteJob(jobName)).willReturn(DELETE_JOB_SUCCESS); + + mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs").param("jobName",jobName)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(206))); + } + + @Test + public void testDeleteJobByNameForFailure() throws Exception { + String jobName = "jobName"; + given(service.deleteJob(jobName)).willReturn(DELETE_JOB_FAIL); + + mvc.perform(delete(URLHelper.API_VERSION_PATH + "/jobs").param("jobName",jobName)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(406))); + } + + @Test + public void testFindInstancesOfJob() throws Exception { + int page = 0; + int size = 2; + 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)) + .param("page", String.valueOf(page)).param("size", String.valueOf(size))) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.[0].state", is("running"))); + } + + @Test + public void testGetHealthInfo() throws Exception { + JobHealth jobHealth = new JobHealth(1, 3); + given(service.getHealthInfo()).willReturn(jobHealth); + + mvc.perform(get(URLHelper.API_VERSION_PATH + "/jobs/health")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.healthyJobCount", is(1))); + } +} http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/test/java/org/apache/griffin/core/job/repo/JobInstanceRepoTest.java ---------------------------------------------------------------------- diff --git a/service/src/test/java/org/apache/griffin/core/job/repo/JobInstanceRepoTest.java b/service/src/test/java/org/apache/griffin/core/job/repo/JobInstanceRepoTest.java new file mode 100644 index 0000000..72dbc8c --- /dev/null +++ b/service/src/test/java/org/apache/griffin/core/job/repo/JobInstanceRepoTest.java @@ -0,0 +1,87 @@ +/* +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.job.repo; + +import org.apache.griffin.core.job.entity.JobInstanceBean; +import org.apache.griffin.core.job.entity.LivySessionStates; +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.orm.jpa.DataJpaTest; +import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@DataJpaTest +public class JobInstanceRepoTest { + + @Autowired + private TestEntityManager entityManager; + + @Autowired + private JobInstanceRepo jobInstanceRepo; + + @Before + public void setup() { + entityManager.clear(); + entityManager.flush(); + setEntityManager(); + } + + @Test + public void testFindByActiveState() { + List<JobInstanceBean> beans = jobInstanceRepo.findByActiveState(); + assertThat(beans.size()).isEqualTo(1); + } + + @Test + public void testFindByPredicateName() { + JobInstanceBean bean = jobInstanceRepo.findByPredicateName("pName1"); + assertThat(bean).isNotNull(); + } + + @Test + public void testFindByExpireTmsLessThanEqual() { + List<JobInstanceBean> beans = jobInstanceRepo.findByExpireTmsLessThanEqual(1516004640092L); + assertThat(beans.size()).isEqualTo(2); + } + + @Test + public void testDeleteByExpireTimestamp() { + int count = jobInstanceRepo.deleteByExpireTimestamp(1516004640092L); + assertThat(count).isEqualTo(2); + } + + private void setEntityManager() { + JobInstanceBean bean1 = new JobInstanceBean( LivySessionStates.State.finding, "pName1", "pGroup1", null, 1516004640092L); + JobInstanceBean bean2 = new JobInstanceBean( LivySessionStates.State.not_found, "pName2", "pGroup2", null, 1516004640093L); + JobInstanceBean bean3 = new JobInstanceBean( LivySessionStates.State.running, "pName3", "pGroup3", null, 1516004640082L); + JobInstanceBean bean4 = new JobInstanceBean( LivySessionStates.State.success, "pName4", "pGroup4", null, 1516004640094L); + entityManager.persistAndFlush(bean1); + entityManager.persistAndFlush(bean2); + entityManager.persistAndFlush(bean3); + entityManager.persistAndFlush(bean4); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/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 2abd4b5..82a9ff9 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 @@ -1,200 +1,198 @@ -///* -//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.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.springframework.http.MediaType; -//import org.springframework.test.context.junit4.SpringRunner; -//import org.springframework.test.web.servlet.MockMvc; -// -//import java.util.*; -// -//import static org.apache.griffin.core.measure.MeasureTestHelper.createATestGriffinMeasure; -//import static org.hamcrest.CoreMatchers.is; -//import static org.mockito.BDDMockito.given; -//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; -// -// -// @Before -// public void setup() { -// -// } -// -// @Test -// public void testGetAllMeasures() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// given(service.getAllAliveMeasures()).willReturn(Arrays.asList(measure)); -// -// mvc.perform(get(URLHelper.API_VERSION_PATH + "/measures").contentType(MediaType.APPLICATION_JSON)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.[0].name", is("view_item_hourly"))); -// } -// -// -// @Test -// public void testGetMeasuresById() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// given(service.getMeasureById(1L)).willReturn(measure); -// -// mvc.perform(get(URLHelper.API_VERSION_PATH + "/measure/1").contentType(MediaType.APPLICATION_JSON)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.name", is("view_item_hourly"))) -// ; -// } -// -// @Test -// public void testDeleteMeasuresByIdForSuccess() throws Exception { -// given(service.deleteMeasureById(1L)).willReturn(GriffinOperationMessage.DELETE_MEASURE_BY_ID_SUCCESS); -// -// mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measure/1").contentType(MediaType.APPLICATION_JSON)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Delete Measures By Id Succeed"))) -// .andExpect(jsonPath("$.code", is(202))); -// } -// -// @Test -// public void testDeleteMeasuresByIdForNotFound() throws Exception { -// given(service.deleteMeasureById(1L)).willReturn(GriffinOperationMessage.RESOURCE_NOT_FOUND); -// -// mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measure/1").contentType(MediaType.APPLICATION_JSON)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Resource Not Found"))) -// .andExpect(jsonPath("$.code", is(400))); -// } -// -// @Test -// public void testDeleteMeasuresByIdForFail() throws Exception { -// given(service.deleteMeasureById(1L)).willReturn(GriffinOperationMessage.DELETE_MEASURE_BY_ID_FAIL); -// -// mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measure/1").contentType(MediaType.APPLICATION_JSON)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Delete Measures By Id Failed"))) -// .andExpect(jsonPath("$.code", is(402))); -// } -// -// @Test -// public void testUpdateMeasureForSuccess() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// String measureJson = JsonUtil.toJson(measure); -// given(service.updateMeasure(measure)).willReturn(GriffinOperationMessage.UPDATE_MEASURE_SUCCESS); -// -// mvc.perform(put(URLHelper.API_VERSION_PATH + "/measure").contentType(MediaType.APPLICATION_JSON).content(measureJson)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Update Measure Succeed"))) -// .andExpect(jsonPath("$.code", is(204))); -// } -// -// @Test -// public void testUpdateMeasureForNotFound() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// String measureJson = JsonUtil.toJson(measure); -// given(service.updateMeasure(measure)).willReturn(GriffinOperationMessage.RESOURCE_NOT_FOUND); -// -// mvc.perform(put(URLHelper.API_VERSION_PATH + "/measure").contentType(MediaType.APPLICATION_JSON).content(measureJson)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Resource Not Found"))) -// .andExpect(jsonPath("$.code", is(400))); -// -// } -// -// @Test -// public void testUpdateMeasureForFail() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// String measureJson = JsonUtil.toJson(measure); -// given(service.updateMeasure(measure)).willReturn(GriffinOperationMessage.UPDATE_MEASURE_FAIL); -// -// mvc.perform(put(URLHelper.API_VERSION_PATH + "/measure").contentType(MediaType.APPLICATION_JSON).content(measureJson)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Update Measure Failed"))) -// .andExpect(jsonPath("$.code", is(404))); -// } -// -// @Test -// public void testGetAllMeasuresByOwner() throws Exception { -// String owner = "test"; -// List<Measure> measureList = new LinkedList<>(); -// Measure measure = createATestGriffinMeasure("view_item_hourly", owner); -// measureList.add(measure); -// given(service.getAliveMeasuresByOwner(owner)).willReturn(measureList); -// -// mvc.perform(get(URLHelper.API_VERSION_PATH + "/measures/owner/" + owner).contentType(MediaType.APPLICATION_JSON)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.[0].name", is("view_item_hourly"))) -// ; -// } -// -// @Test -// public void testCreateNewMeasureForSuccess() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// String measureJson = JsonUtil.toJson(measure); -// given(service.createMeasure(measure)).willReturn(GriffinOperationMessage.CREATE_MEASURE_SUCCESS); -// -// mvc.perform(post(URLHelper.API_VERSION_PATH + "/measure").contentType(MediaType.APPLICATION_JSON).content(measureJson)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Create Measure Succeed"))) -// .andExpect(jsonPath("$.code", is(201))); -// } -// -// @Test -// public void testCreateNewMeasureForFailWithDuplicate() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// String measureJson = JsonUtil.toJson(measure); -// given(service.createMeasure(measure)).willReturn(GriffinOperationMessage.CREATE_MEASURE_FAIL_DUPLICATE); -// -// mvc.perform(post(URLHelper.API_VERSION_PATH + "/measure").contentType(MediaType.APPLICATION_JSON).content(measureJson)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Create Measure Failed, duplicate records"))) -// .andExpect(jsonPath("$.code", is(410))); -// } -// -// @Test -// public void testCreateNewMeasureForFailWithSaveException() throws Exception { -// Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); -// String measureJson = JsonUtil.toJson(measure); -// given(service.createMeasure(measure)).willReturn(GriffinOperationMessage.CREATE_MEASURE_FAIL); -// -// mvc.perform(post(URLHelper.API_VERSION_PATH + "/measure").contentType(MediaType.APPLICATION_JSON).content(measureJson)) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.description", is("Create Measure Failed"))) -// .andExpect(jsonPath("$.code", is(401))); -// } -// -// -//} +/* +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.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.springframework.http.MediaType; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +import java.util.*; + +import static org.apache.griffin.core.util.EntityHelper.createATestGriffinMeasure; +import static org.apache.griffin.core.util.GriffinOperationMessage.*; +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.BDDMockito.given; +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; + + + @Before + public void setup() { + + } + + @Test + public void testGetAllMeasures() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + given(service.getAllAliveMeasures()).willReturn(Arrays.asList(measure)); + + mvc.perform(get(URLHelper.API_VERSION_PATH + "/measures")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.[0].name", is("view_item_hourly"))); + } + + + @Test + public void testGetMeasuresById() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + given(service.getMeasureById(1L)).willReturn(measure); + + mvc.perform(get(URLHelper.API_VERSION_PATH + "/measures/1")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.name", is("view_item_hourly"))) + ; + } + + @Test + public void testDeleteMeasuresByIdForSuccess() throws Exception { + given(service.deleteMeasureById(1L)).willReturn(DELETE_MEASURE_BY_ID_SUCCESS); + + mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measures/1")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(202))); + } + + @Test + public void testDeleteMeasuresByIdForNotFound() throws Exception { + given(service.deleteMeasureById(1L)).willReturn(RESOURCE_NOT_FOUND); + + mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measures/1")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(400))); + } + + @Test + public void testDeleteMeasuresByIdForFail() throws Exception { + given(service.deleteMeasureById(1L)).willReturn(DELETE_MEASURE_BY_ID_FAIL); + + mvc.perform(delete(URLHelper.API_VERSION_PATH + "/measures/1")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(402))); + } + + @Test + public void testUpdateMeasureForSuccess() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + String measureJson = JsonUtil.toJson(measure); + given(service.updateMeasure(measure)).willReturn(UPDATE_MEASURE_SUCCESS); + + mvc.perform(put(URLHelper.API_VERSION_PATH + "/measures") + .contentType(MediaType.APPLICATION_JSON).content(measureJson)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(204))); + } + + @Test + public void testUpdateMeasureForNotFound() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + String measureJson = JsonUtil.toJson(measure); + given(service.updateMeasure(measure)).willReturn(RESOURCE_NOT_FOUND); + + mvc.perform(put(URLHelper.API_VERSION_PATH + "/measures") + .contentType(MediaType.APPLICATION_JSON).content(measureJson)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(400))); + + } + + @Test + public void testUpdateMeasureForFail() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + String measureJson = JsonUtil.toJson(measure); + given(service.updateMeasure(measure)).willReturn(UPDATE_MEASURE_FAIL); + + mvc.perform(put(URLHelper.API_VERSION_PATH + "/measures") + .contentType(MediaType.APPLICATION_JSON).content(measureJson)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(404))); + } + + @Test + public void testGetAllMeasuresByOwner() throws Exception { + String owner = "test"; + List<Measure> measureList = new LinkedList<>(); + Measure measure = createATestGriffinMeasure("view_item_hourly", owner); + measureList.add(measure); + given(service.getAliveMeasuresByOwner(owner)).willReturn(measureList); + + mvc.perform(get(URLHelper.API_VERSION_PATH + "/measures/owner/" + owner) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.[0].name", is("view_item_hourly"))) + ; + } + + @Test + public void testCreateNewMeasureForSuccess() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + String measureJson = JsonUtil.toJson(measure); + given(service.createMeasure(measure)).willReturn(CREATE_MEASURE_SUCCESS); + + mvc.perform(post(URLHelper.API_VERSION_PATH + "/measures") + .contentType(MediaType.APPLICATION_JSON).content(measureJson)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(201))); + } + + @Test + public void testCreateNewMeasureForFailWithDuplicate() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + String measureJson = JsonUtil.toJson(measure); + given(service.createMeasure(measure)).willReturn(CREATE_MEASURE_FAIL_DUPLICATE); + + mvc.perform(post(URLHelper.API_VERSION_PATH + "/measures") + .contentType(MediaType.APPLICATION_JSON).content(measureJson)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(410))); + } + + @Test + public void testCreateNewMeasureForFailWithSaveException() throws Exception { + Measure measure = createATestGriffinMeasure("view_item_hourly", "test"); + String measureJson = JsonUtil.toJson(measure); + given(service.createMeasure(measure)).willReturn(GriffinOperationMessage.CREATE_MEASURE_FAIL); + + mvc.perform(post(URLHelper.API_VERSION_PATH + "/measures").contentType(MediaType.APPLICATION_JSON).content(measureJson)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code", is(401))); + } + + +} http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/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 bd3e2dc..df7fdca 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 @@ -34,7 +34,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import static org.apache.griffin.core.measure.MeasureTestHelper.createJobDetailMap; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.Matchers.hasKey; http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgServiceImplTest.java ---------------------------------------------------------------------- diff --git a/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgServiceImplTest.java b/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgServiceImplTest.java index e69bec3..7eda50e 100644 --- a/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgServiceImplTest.java +++ b/service/src/test/java/org/apache/griffin/core/measure/MeasureOrgServiceImplTest.java @@ -31,8 +31,8 @@ //import java.io.Serializable; //import java.util.*; // -//import static org.apache.griffin.core.measure.MeasureTestHelper.createATestGriffinMeasure; -//import static org.apache.griffin.core.measure.MeasureTestHelper.createJobDetailMap; +//import static org.apache.griffin.core.util.EntityHelper.createATestGriffinMeasure; +//import static org.apache.griffin.core.util.EntityHelper.createJobDetailMap; //import static org.assertj.core.api.Assertions.assertThat; //import static org.mockito.BDDMockito.given; //import static org.mockito.Mockito.when; http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/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 659626a..c49ee82 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 @@ -21,8 +21,6 @@ package org.apache.griffin.core.measure; 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; @@ -31,7 +29,6 @@ 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; @@ -39,11 +36,10 @@ import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import static org.apache.griffin.core.measure.MeasureTestHelper.createATestGriffinMeasure; +import static org.apache.griffin.core.util.EntityHelper.createATestGriffinMeasure; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.doNothing; @RunWith(SpringRunner.class) public class MeasureServiceImplTest { http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/test/java/org/apache/griffin/core/measure/MeasureTestHelper.java ---------------------------------------------------------------------- diff --git a/service/src/test/java/org/apache/griffin/core/measure/MeasureTestHelper.java b/service/src/test/java/org/apache/griffin/core/measure/MeasureTestHelper.java deleted file mode 100644 index dc9a659..0000000 --- a/service/src/test/java/org/apache/griffin/core/measure/MeasureTestHelper.java +++ /dev/null @@ -1,89 +0,0 @@ -/* -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.measure.entity.*; -import org.codehaus.jackson.map.ObjectMapper; -import org.quartz.JobDataMap; -import org.quartz.Trigger; -import org.quartz.impl.JobDetailImpl; - -import java.io.Serializable; -import java.util.*; - -public class MeasureTestHelper { - public static GriffinMeasure createATestGriffinMeasure(String name, String org) throws Exception { - HashMap<String, String> configMap1 = new HashMap<>(); - configMap1.put("database", "default"); - configMap1.put("table.name", "test_data_src"); - HashMap<String, String> configMap2 = new HashMap<>(); - configMap2.put("database", "default"); - configMap2.put("table.name", "test_data_tgt"); - String configJson1 = new ObjectMapper().writeValueAsString(configMap1); - String configJson2 = new ObjectMapper().writeValueAsString(configMap2); - - DataSource dataSource = new DataSource("source", Arrays.asList(new DataConnector("source_name", "HIVE", "1.2", configJson1))); - DataSource targetSource = new DataSource("target", Arrays.asList(new DataConnector("target-name", "HIVE", "1.2", configJson2))); - - List<DataSource> dataSources = new ArrayList<>(); - dataSources.add(dataSource); - dataSources.add(targetSource); - String rules = "source.id=target.id AND source.name=target.name AND source.age=target.age"; - Map<String, Object> map = new HashMap<>(); - map.put("detail", "detail info"); - Rule rule = new Rule("griffin-dsl", "accuracy", rules, map); - EvaluateRule evaluateRule = new EvaluateRule(Arrays.asList(rule)); - return new GriffinMeasure(1L,name, "description", org, "batch", "test", dataSources, evaluateRule); - } - - public static JobDetailImpl createJobDetail() { - JobDetailImpl jobDetail = new JobDetailImpl(); - JobDataMap jobInfoMap = new JobDataMap(); - jobInfoMap.put("triggerState", Trigger.TriggerState.NORMAL); - jobInfoMap.put("measureId", "1"); - jobInfoMap.put("sourcePattern", "YYYYMMdd-HH"); - jobInfoMap.put("targetPattern", "YYYYMMdd-HH"); - jobInfoMap.put("jobStartTime", "1506356105876"); - jobInfoMap.put("interval", "3000"); - jobInfoMap.put("deleted", "false"); - jobInfoMap.put("blockStartTimestamp", "1506634804254"); - jobInfoMap.put("lastBlockStartTimestamp", "1506634804254"); - jobInfoMap.put("groupName", "BA"); - jobInfoMap.put("jobName", "jobName"); - jobDetail.setJobDataMap(jobInfoMap); - return jobDetail; - } - - public static Map<String, Object> createJobDetailMap() { - Map<String, Object> jobDetailMap = new HashMap<>(); - jobDetailMap.put("jobName", "jobName"); - jobDetailMap.put("measureId", "1"); - jobDetailMap.put("groupName", "BA"); - jobDetailMap.put("targetPattern", "YYYYMMdd-HH"); - jobDetailMap.put("triggerState", Trigger.TriggerState.NORMAL); - jobDetailMap.put("nextFireTime", "1509613440000"); - jobDetailMap.put("previousFireTime", "1509613410000"); - jobDetailMap.put("interval", "3000"); - jobDetailMap.put("sourcePattern", "YYYYMMdd-HH"); - jobDetailMap.put("jobStartTime", "1506356105876"); - return jobDetailMap; - } -} http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/test/java/org/apache/griffin/core/measure/repo/MeasureRepoTest.java ---------------------------------------------------------------------- diff --git a/service/src/test/java/org/apache/griffin/core/measure/repo/MeasureRepoTest.java b/service/src/test/java/org/apache/griffin/core/measure/repo/MeasureRepoTest.java index 4052630..c7132e6 100644 --- a/service/src/test/java/org/apache/griffin/core/measure/repo/MeasureRepoTest.java +++ b/service/src/test/java/org/apache/griffin/core/measure/repo/MeasureRepoTest.java @@ -30,7 +30,7 @@ // //import java.util.List; // -//import static org.apache.griffin.core.measure.MeasureTestHelper.createATestGriffinMeasure; +//import static org.apache.griffin.core.util.EntityHelper.createATestGriffinMeasure; //import static org.assertj.core.api.Assertions.assertThat; // //@RunWith(SpringRunner.class) http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/44eea866/service/src/test/java/org/apache/griffin/core/util/EntityHelper.java ---------------------------------------------------------------------- diff --git a/service/src/test/java/org/apache/griffin/core/util/EntityHelper.java b/service/src/test/java/org/apache/griffin/core/util/EntityHelper.java new file mode 100644 index 0000000..627325c --- /dev/null +++ b/service/src/test/java/org/apache/griffin/core/util/EntityHelper.java @@ -0,0 +1,89 @@ +/* +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.util; + + +import org.apache.griffin.core.measure.entity.*; +import org.codehaus.jackson.map.ObjectMapper; +import org.quartz.JobDataMap; +import org.quartz.Trigger; +import org.quartz.impl.JobDetailImpl; + +import java.io.Serializable; +import java.util.*; + +public class EntityHelper { + public static GriffinMeasure createATestGriffinMeasure(String name, String org) throws Exception { + HashMap<String, String> configMap1 = new HashMap<>(); + configMap1.put("database", "default"); + configMap1.put("table.name", "test_data_src"); + HashMap<String, String> configMap2 = new HashMap<>(); + configMap2.put("database", "default"); + configMap2.put("table.name", "test_data_tgt"); + String configJson1 = new ObjectMapper().writeValueAsString(configMap1); + String configJson2 = new ObjectMapper().writeValueAsString(configMap2); + + DataSource dataSource = new DataSource("source", Arrays.asList(new DataConnector("source_name", "HIVE", "1.2", configJson1))); + DataSource targetSource = new DataSource("target", Arrays.asList(new DataConnector("target-name", "HIVE", "1.2", configJson2))); + + List<DataSource> dataSources = new ArrayList<>(); + dataSources.add(dataSource); + dataSources.add(targetSource); + String rules = "source.id=target.id AND source.name=target.name AND source.age=target.age"; + Map<String, Object> map = new HashMap<>(); + map.put("detail", "detail info"); + Rule rule = new Rule("griffin-dsl", "accuracy", rules, map); + EvaluateRule evaluateRule = new EvaluateRule(Arrays.asList(rule)); + return new GriffinMeasure(1L,name, "description", org, "batch", "test", dataSources, evaluateRule); + } + + public static JobDetailImpl createJobDetail() { + JobDetailImpl jobDetail = new JobDetailImpl(); + JobDataMap jobInfoMap = new JobDataMap(); + jobInfoMap.put("triggerState", Trigger.TriggerState.NORMAL); + jobInfoMap.put("measureId", "1"); + jobInfoMap.put("sourcePattern", "YYYYMMdd-HH"); + jobInfoMap.put("targetPattern", "YYYYMMdd-HH"); + jobInfoMap.put("jobStartTime", "1506356105876"); + jobInfoMap.put("interval", "3000"); + jobInfoMap.put("deleted", "false"); + jobInfoMap.put("blockStartTimestamp", "1506634804254"); + jobInfoMap.put("lastBlockStartTimestamp", "1506634804254"); + jobInfoMap.put("groupName", "BA"); + jobInfoMap.put("jobName", "jobName"); + jobDetail.setJobDataMap(jobInfoMap); + return jobDetail; + } + + public static Map<String, Object> createJobDetailMap() { + Map<String, Object> jobDetailMap = new HashMap<>(); + jobDetailMap.put("jobName", "jobName"); + jobDetailMap.put("measureId", "1"); + jobDetailMap.put("groupName", "BA"); + jobDetailMap.put("targetPattern", "YYYYMMdd-HH"); + jobDetailMap.put("triggerState", Trigger.TriggerState.NORMAL); + jobDetailMap.put("nextFireTime", "1509613440000"); + jobDetailMap.put("previousFireTime", "1509613410000"); + jobDetailMap.put("interval", "3000"); + jobDetailMap.put("sourcePattern", "YYYYMMdd-HH"); + jobDetailMap.put("jobStartTime", "1506356105876"); + return jobDetailMap; + } +}
