Repository: incubator-griffin
Updated Branches:
  refs/heads/master f690644a5 -> d8193a0f8


api update

1. add optional filter param 'type' to get all measures method
2. add optional filter param 'tmst' to get metric values method
3. modify related ut

Author: He Wang <[email protected]>

Closes #213 from whhe/master.


Project: http://git-wip-us.apache.org/repos/asf/incubator-griffin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-griffin/commit/d8193a0f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-griffin/tree/d8193a0f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-griffin/diff/d8193a0f

Branch: refs/heads/master
Commit: d8193a0f8ec79744d78028f0cebeff1255270196
Parents: f690644
Author: He Wang <[email protected]>
Authored: Wed Feb 7 11:16:18 2018 +0800
Committer: Lionel Liu <[email protected]>
Committed: Wed Feb 7 11:16:18 2018 +0800

----------------------------------------------------------------------
 .../griffin/core/measure/MeasureController.java     |  4 ++--
 .../apache/griffin/core/measure/MeasureService.java |  2 +-
 .../griffin/core/measure/MeasureServiceImpl.java    | 13 ++++++++++++-
 .../griffin/core/metric/MetricController.java       |  5 +++--
 .../apache/griffin/core/metric/MetricService.java   |  2 +-
 .../griffin/core/metric/MetricServiceImpl.java      |  6 +++---
 .../org/apache/griffin/core/metric/MetricStore.java |  2 +-
 .../apache/griffin/core/metric/MetricStoreImpl.java | 16 +++++++++++-----
 .../griffin/core/measure/MeasureControllerTest.java |  8 +++++---
 .../core/measure/MeasureServiceImplTest.java        |  5 ++---
 .../griffin/core/metric/MetricControllerTest.java   |  4 ++--
 .../griffin/core/metric/MetricServiceImplTest.java  | 12 ++++++------
 12 files changed, 49 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
----------------------------------------------------------------------
diff --git 
a/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java 
b/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
index eda0a1f..d7917e4 100644
--- 
a/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
+++ 
b/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
@@ -33,8 +33,8 @@ public class MeasureController {
     private MeasureService measureService;
 
     @RequestMapping(value = "/measures", method = RequestMethod.GET)
-    public Iterable<Measure> getAllAliveMeasures() {
-        return measureService.getAllAliveMeasures();
+    public List<? extends Measure> getAllAliveMeasures(@RequestParam(value = 
"type", defaultValue = "") String type) {
+        return measureService.getAllAliveMeasures(type);
     }
 
     @RequestMapping(value = "/measures/{id}", method = RequestMethod.GET)

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
----------------------------------------------------------------------
diff --git 
a/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java 
b/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
index a3d9640..37942bf 100644
--- a/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
+++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureService.java
@@ -26,7 +26,7 @@ import java.util.List;
 
 public interface MeasureService {
 
-    List<Measure> getAllAliveMeasures();
+    List<? extends Measure> getAllAliveMeasures(String type);
 
     Measure getMeasureById(long id);
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/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 66d7252..bd24be3 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
@@ -23,6 +23,8 @@ package org.apache.griffin.core.measure;
 import org.apache.griffin.core.exception.GriffinException;
 import org.apache.griffin.core.measure.entity.GriffinMeasure;
 import org.apache.griffin.core.measure.entity.Measure;
+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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,6 +44,10 @@ public class MeasureServiceImpl implements MeasureService {
     @Autowired
     private MeasureRepo<Measure> measureRepo;
     @Autowired
+    private GriffinMeasureRepo griffinMeasureRepo;
+    @Autowired
+    private ExternalMeasureRepo externalMeasureRepo;
+    @Autowired
     @Qualifier("griffinOperation")
     private MeasureOperation griffinOp;
     @Autowired
@@ -49,7 +55,12 @@ public class MeasureServiceImpl implements MeasureService {
     private MeasureOperation externalOp;
 
     @Override
-    public List<Measure> getAllAliveMeasures() {
+    public List<? extends Measure> getAllAliveMeasures(String type) {
+        if (type.equals("griffin")) {
+            return griffinMeasureRepo.findByDeleted(false);
+        } else if (type.equals("external")) {
+            return externalMeasureRepo.findByDeleted(false);
+        }
         return measureRepo.findByDeleted(false);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/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 6a2c51c..c2f56ad 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
@@ -44,8 +44,9 @@ public class MetricController {
     @RequestMapping(value = "/metrics/values", method = RequestMethod.GET)
     public List<MetricValue> getMetricValues(@RequestParam("metricName") 
String metricName,
                                              @RequestParam("size") int size,
-                                             @RequestParam(value = "offset", 
defaultValue = "0") int offset) {
-        return metricService.getMetricValues(metricName, offset, size);
+                                             @RequestParam(value = "offset", 
defaultValue = "0") int offset,
+                                             @RequestParam(value = "tmst", 
defaultValue = "0") long tmst) {
+        return metricService.getMetricValues(metricName, offset, size, tmst);
     }
 
     @RequestMapping(value = "/metrics/values", method = RequestMethod.POST)

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/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..6442f61 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
@@ -31,7 +31,7 @@ public interface MetricService {
 
     Map<String, List<Metric>> getAllMetrics();
 
-    List<MetricValue> getMetricValues(String metricName, int offset, int size);
+    List<MetricValue> getMetricValues(String metricName, int offset, int size, 
long tmst);
 
     ResponseEntity addMetricValues(List<MetricValue> values);
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/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 77cc168..c126e29 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
@@ -70,7 +70,7 @@ public class MetricServiceImpl implements MetricService {
             List<AbstractJob> jobList = entry.getValue();
             List<Metric> metrics = new ArrayList<>();
             for (AbstractJob job : jobList) {
-                List<MetricValue> metricValues = 
getMetricValues(job.getMetricName(), 0, 300);
+                List<MetricValue> metricValues = 
getMetricValues(job.getMetricName(), 0, 300, job.getCreatedDate().getTime());
                 metrics.add(new Metric(job.getMetricName(), 
measure.getDqType(), measure.getOwner(), metricValues));
             }
             metricMap.put(measure.getName(), metrics);
@@ -80,7 +80,7 @@ public class MetricServiceImpl implements MetricService {
     }
 
     @Override
-    public List<MetricValue> getMetricValues(String metricName, int offset, 
int size) {
+    public List<MetricValue> getMetricValues(String metricName, int offset, 
int size, long tmst) {
         if (offset < 0) {
             throw new 
GriffinException.BadRequestException(INVALID_METRIC_RECORDS_OFFSET);
         }
@@ -88,7 +88,7 @@ public class MetricServiceImpl implements MetricService {
             throw new 
GriffinException.BadRequestException(INVALID_METRIC_RECORDS_SIZE);
         }
         try {
-            return metricStore.getMetricValues(metricName, offset, size);
+            return metricStore.getMetricValues(metricName, offset, size, tmst);
         } catch (IOException e) {
             LOGGER.error("Failed to get metric values named {}. {}", 
metricName, e.getMessage());
             throw new GriffinException.ServiceException("Failed to get metric 
values", e);

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
----------------------------------------------------------------------
diff --git 
a/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java 
b/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
index dacac1d..5424ae7 100644
--- a/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
+++ b/service/src/main/java/org/apache/griffin/core/metric/MetricStore.java
@@ -27,7 +27,7 @@ import java.util.List;
 
 public interface MetricStore {
 
-    List<MetricValue> getMetricValues(String metricName, int from, int size) 
throws IOException;
+    List<MetricValue> getMetricValues(String metricName, int from, int size, 
long tmst) throws IOException;
 
     ResponseEntity addMetricValues(List<MetricValue> metricValues) throws 
IOException;
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/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 a080f30..e33da9e 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
@@ -86,8 +86,8 @@ public class MetricStoreImpl implements MetricStore {
     }
 
     @Override
-    public List<MetricValue> getMetricValues(String metricName, int from, int 
size) throws IOException {
-        HttpEntity entity = getHttpEntityForSearch(metricName, from, size);
+    public List<MetricValue> getMetricValues(String metricName, int from, int 
size, long tmst) throws IOException {
+        HttpEntity entity = getHttpEntityForSearch(metricName, from, size, 
tmst);
         try {
             Response response = client.performRequest("GET", urlGet, 
Collections.emptyMap(), entity);
             return getMetricValuesFromResponse(response);
@@ -99,11 +99,17 @@ public class MetricStoreImpl implements MetricStore {
         }
     }
 
-    private HttpEntity getHttpEntityForSearch(String metricName, int from, int 
size) throws JsonProcessingException {
+    private HttpEntity getHttpEntityForSearch(String metricName, int from, int 
size, long tmst) throws JsonProcessingException {
         Map<String, Object> map = new HashMap<>();
-        Map<String, Object> queryParam = Collections.singletonMap("term", 
Collections.singletonMap("name.keyword", metricName));
+        Map<String, Object> queryParam = new HashMap<>();
+        if (tmst != 0) {
+            Map<String, Object> rangeQuery = Collections.singletonMap("tmst", 
Collections.singletonMap("gte", tmst));
+            queryParam.put("must", Collections.singletonMap("range", 
rangeQuery));
+        }
+        Map<String, Object> termQuery = 
Collections.singletonMap("name.keyword", metricName);
+        queryParam.put("filter", Collections.singletonMap("term", termQuery));
         Map<String, Object> sortParam = Collections.singletonMap("tmst", 
Collections.singletonMap("order", "desc"));
-        map.put("query", queryParam);
+        map.put("query", Collections.singletonMap("bool", queryParam));
         map.put("sort", sortParam);
         map.put("from", from);
         map.put("size", size);

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/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 863c252..5bf6161 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
@@ -31,12 +31,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 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.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -45,6 +47,7 @@ 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.mockito.Mockito.when;
 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;
@@ -72,7 +75,7 @@ public class MeasureControllerTest {
     @Test
     public void testGetAllMeasures() throws Exception {
         Measure measure = createGriffinMeasure("view_item_hourly");
-        
given(service.getAllAliveMeasures()).willReturn(Arrays.asList(measure));
+        Mockito.<List<? extends 
Measure>>when(service.getAllAliveMeasures("")).thenReturn(Collections.singletonList(measure));
 
         mvc.perform(get(URLHelper.API_VERSION_PATH + "/measures"))
                 .andExpect(status().isOk())
@@ -87,8 +90,7 @@ public class MeasureControllerTest {
 
         mvc.perform(get(URLHelper.API_VERSION_PATH + "/measures/1"))
                 .andExpect(status().isOk())
-                .andExpect(jsonPath("$.name", is("view_item_hourly")))
-        ;
+                .andExpect(jsonPath("$.name", is("view_item_hourly")));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/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 7dc979f..ff5cf1e 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
@@ -32,7 +32,6 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.io.FileNotFoundException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -68,7 +67,7 @@ public class MeasureServiceImplTest {
         Measure measure = createGriffinMeasure("view_item_hourly");
         
given(measureRepo.findByDeleted(false)).willReturn(Collections.singletonList(measure));
 
-        List<Measure> measures = service.getAllAliveMeasures();
+        List<? extends Measure> measures = service.getAllAliveMeasures("");
         assertEquals(measures.size(), 1);
         assertEquals(measures.get(0).getName(), "view_item_hourly");
     }
@@ -83,7 +82,7 @@ public class MeasureServiceImplTest {
     }
 
     @Test(expected = GriffinException.NotFoundException.class)
-    public void testGetMeasuresByIdWithFileNotFoundException(){
+    public void testGetMeasuresByIdWithFileNotFoundException() {
         given(measureRepo.findByIdAndDeleted(1L, false)).willReturn(null);
         service.getMeasureById(1);
     }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/service/src/test/java/org/apache/griffin/core/metric/MetricControllerTest.java
----------------------------------------------------------------------
diff --git 
a/service/src/test/java/org/apache/griffin/core/metric/MetricControllerTest.java
 
b/service/src/test/java/org/apache/griffin/core/metric/MetricControllerTest.java
index 84c8fb3..088144c 100644
--- 
a/service/src/test/java/org/apache/griffin/core/metric/MetricControllerTest.java
+++ 
b/service/src/test/java/org/apache/griffin/core/metric/MetricControllerTest.java
@@ -95,7 +95,7 @@ public class MetricControllerTest {
     @Test
     public void testGetMetricValuesSuccess() throws Exception {
         MetricValue value = new MetricValue("jobName", 1L, new HashMap<>());
-        given(service.getMetricValues(Matchers.anyString(), Matchers.anyInt(), 
Matchers.anyInt()))
+        given(service.getMetricValues(Matchers.anyString(), Matchers.anyInt(), 
Matchers.anyInt(), Matchers.anyLong()))
                 .willReturn(Collections.singletonList(value));
 
         mvc.perform(get(URLHelper.API_VERSION_PATH + "/metrics/values")
@@ -106,7 +106,7 @@ public class MetricControllerTest {
 
     @Test
     public void testGetMetricValuesFailureWithException() throws Exception {
-        given(service.getMetricValues(Matchers.anyString(), Matchers.anyInt(), 
Matchers.anyInt()))
+        given(service.getMetricValues(Matchers.anyString(), Matchers.anyInt(), 
Matchers.anyInt(), Matchers.anyLong()))
                 .willThrow(new GriffinException.ServiceException("Failed to 
get metric values", new IOException()));
 
         mvc.perform(get(URLHelper.API_VERSION_PATH + "/metrics/values")

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/d8193a0f/service/src/test/java/org/apache/griffin/core/metric/MetricServiceImplTest.java
----------------------------------------------------------------------
diff --git 
a/service/src/test/java/org/apache/griffin/core/metric/MetricServiceImplTest.java
 
b/service/src/test/java/org/apache/griffin/core/metric/MetricServiceImplTest.java
index a7084da..8cf3762 100644
--- 
a/service/src/test/java/org/apache/griffin/core/metric/MetricServiceImplTest.java
+++ 
b/service/src/test/java/org/apache/griffin/core/metric/MetricServiceImplTest.java
@@ -74,7 +74,7 @@ public class MetricServiceImplTest {
         MetricValue value = new MetricValue("jobName", 1L, new HashMap<>());
         
given(jobRepo.findByDeleted(false)).willReturn(Collections.singletonList(job));
         
given(measureRepo.findByDeleted(false)).willReturn(Collections.singletonList(measure));
-        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt()))
+        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt(), Matchers.anyLong()))
                 .willReturn(Collections.singletonList(value));
 
         Map<String, List<Metric>> metricMap = service.getAllMetrics();
@@ -88,7 +88,7 @@ public class MetricServiceImplTest {
         AbstractJob job = createGriffinJob();
         
given(jobRepo.findByDeleted(false)).willReturn(Collections.singletonList(job));
         
given(measureRepo.findByDeleted(false)).willReturn(Collections.singletonList(measure));
-        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt()))
+        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt(), Matchers.anyLong()))
                 .willThrow(new IOException());
 
         service.getAllMetrics();
@@ -97,20 +97,20 @@ public class MetricServiceImplTest {
     @Test
     public void testGetMetricValuesSuccess() throws IOException {
         MetricValue value = new MetricValue("jobName", 1L, new HashMap<>());
-        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt()))
+        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt(), Matchers.anyLong()))
                 .willReturn(Collections.singletonList(value));
 
-        List<MetricValue> values = service.getMetricValues("jobName", 0, 300);
+        List<MetricValue> values = service.getMetricValues("jobName", 0, 300, 
0);
         assertEquals(values.size(), 1);
         assertEquals(values.get(0).getName(), "jobName");
     }
 
     @Test(expected = GriffinException.ServiceException.class)
     public void testGetMetricValuesFailureWithException() throws IOException {
-        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt()))
+        given(metricStore.getMetricValues(Matchers.anyString(), 
Matchers.anyInt(), Matchers.anyInt(), Matchers.anyLong()))
                 .willThrow(new IOException());
 
-        service.getMetricValues("jobName", 0, 300);
+        service.getMetricValues("jobName", 0, 300, 0);
     }
 
     @Test

Reply via email to