mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-21 18:56:11 +10:00
[강운덕] [LUCYSUS-1744] FilterBuilder를 테스트하기 좋도록 분리함.
git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-web/trunk@2698 84d0f5b1-2673-498c-a247-62c4ff18d310
This commit is contained in:
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.nhn.pinpoint.web.filter.FilterBuilder;
|
||||
import com.nhn.pinpoint.web.vo.LimitedScanResult;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
@@ -16,7 +17,6 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import com.nhn.pinpoint.common.ServiceType;
|
||||
import com.nhn.pinpoint.web.applicationmap.ApplicationMap;
|
||||
import com.nhn.pinpoint.web.filter.Filter;
|
||||
import com.nhn.pinpoint.web.filter.FilterBuilder;
|
||||
import com.nhn.pinpoint.web.service.ApplicationMapService;
|
||||
import com.nhn.pinpoint.web.service.FlowChartService;
|
||||
import com.nhn.pinpoint.web.util.TimeUtils;
|
||||
@@ -36,6 +36,9 @@ public class ApplicationMapController {
|
||||
@Autowired
|
||||
private FlowChartService flow;
|
||||
|
||||
@Autowired
|
||||
private FilterBuilder filterBuilder;
|
||||
|
||||
/**
|
||||
* FROM ~ TO기간의 서버 맵 데이터 조회
|
||||
*
|
||||
@@ -101,7 +104,7 @@ public class ApplicationMapController {
|
||||
model.addAttribute("fromDate", new Date(from));
|
||||
model.addAttribute("toDate", new Date(to));
|
||||
model.addAttribute("filterText", filterText);
|
||||
model.addAttribute("filter", FilterBuilder.build(filterText));
|
||||
model.addAttribute("filter", filterBuilder.build(filterText));
|
||||
|
||||
return "applicationmap.filtered.view";
|
||||
}
|
||||
@@ -130,7 +133,7 @@ public class ApplicationMapController {
|
||||
@RequestParam(value = "limit", required = false, defaultValue = "1000000") int limit) {
|
||||
|
||||
LimitedScanResult<List<TransactionId>> limitedScanResult = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit);
|
||||
Filter filter = FilterBuilder.build(filterText);
|
||||
Filter filter = filterBuilder.build(filterText);
|
||||
|
||||
ApplicationMap map = flow.selectApplicationMap(limitedScanResult.getScanData(), from, to, filter);
|
||||
|
||||
@@ -248,7 +251,7 @@ public class ApplicationMapController {
|
||||
@RequestParam(value = "limit", required = false, defaultValue = "1000000") int limit) {
|
||||
|
||||
LimitedScanResult<List<TransactionId>> traceIdSet = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit);
|
||||
Filter filter = FilterBuilder.build(filterText);
|
||||
Filter filter = filterBuilder.build(filterText);
|
||||
LinkStatistics linkStatistics = flow.linkStatisticsDetail(from, to, traceIdSet.getScanData(), srcApplicationName, srcServiceType, destApplicationName, destServiceType, filter);
|
||||
|
||||
model.addAttribute("lastFetchedTimestamp", traceIdSet.getLimitedTime());
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.nhn.pinpoint.web.filter.FilterBuilder;
|
||||
import com.nhn.pinpoint.web.service.SpanResult;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -20,7 +21,6 @@ import org.springframework.web.servlet.ModelAndView;
|
||||
import com.nhn.pinpoint.web.calltree.server.ServerCallTree;
|
||||
import com.nhn.pinpoint.web.calltree.span.SpanAlign;
|
||||
import com.nhn.pinpoint.web.filter.Filter;
|
||||
import com.nhn.pinpoint.web.filter.FilterBuilder;
|
||||
import com.nhn.pinpoint.web.service.FlowChartService;
|
||||
import com.nhn.pinpoint.web.service.RecordSetService;
|
||||
import com.nhn.pinpoint.web.service.SpanService;
|
||||
@@ -47,6 +47,9 @@ public class BusinessTransactionController {
|
||||
@Autowired
|
||||
private FlowChartService flow;
|
||||
|
||||
@Autowired
|
||||
private FilterBuilder filterBuilder;
|
||||
|
||||
/**
|
||||
* applicationname에서 from ~ to 시간대에 수행된 URL을 조회한다.
|
||||
*
|
||||
@@ -68,7 +71,7 @@ public class BusinessTransactionController {
|
||||
// TOOD 구조개선을 위해 server map조회 로직 분리함, 임시로 분리한 상태이고 개선이 필요하다.
|
||||
LimitedScanResult<List<TransactionId>> traceIdList = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to, limit);
|
||||
|
||||
Filter filter = FilterBuilder.build(filterText);
|
||||
Filter filter = filterBuilder.build(filterText);
|
||||
BusinessTransactions selectBusinessTransactions = flow.selectBusinessTransactions(traceIdList.getScanData(), applicationName, from, to, filter);
|
||||
|
||||
model.addAttribute("lastFetchedTimestamp", traceIdList.getLimitedTime());
|
||||
|
||||
@@ -7,6 +7,7 @@ import java.util.TreeSet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.nhn.pinpoint.web.filter.FilterBuilder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -18,7 +19,6 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import com.nhn.pinpoint.common.bo.SpanBo;
|
||||
import com.nhn.pinpoint.web.filter.FilterBuilder;
|
||||
import com.nhn.pinpoint.web.service.FlowChartService;
|
||||
import com.nhn.pinpoint.web.service.ScatterChartService;
|
||||
import com.nhn.pinpoint.web.util.TimeUtils;
|
||||
@@ -42,6 +42,9 @@ public class ScatterChartController {
|
||||
@Autowired
|
||||
private FlowChartService flow;
|
||||
|
||||
@Autowired
|
||||
private FilterBuilder filterBuilder;
|
||||
|
||||
@RequestMapping(value = "/selectedScatter", method = RequestMethod.GET)
|
||||
public String selectedScatter(Model model, HttpServletResponse response) {
|
||||
return "selectedScatter";
|
||||
@@ -111,7 +114,7 @@ public class ScatterChartController {
|
||||
SortedSet<TransactionId> traceIdSet = new TreeSet<TransactionId>(traceIdList);
|
||||
logger.debug("selectScatterData with {}", traceIdSet);
|
||||
|
||||
scatterData = scatter.selectScatterData(traceIdSet, applicationName, FilterBuilder.build(filterText));
|
||||
scatterData = scatter.selectScatterData(traceIdSet, applicationName, filterBuilder.build(filterText));
|
||||
|
||||
if (traceIdList.isEmpty()) {
|
||||
model.addAttribute("resultFrom", -1);
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.nhn.pinpoint.web.filter;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author netspider
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
public class DefaultFilterBuilder implements FilterBuilder {
|
||||
|
||||
private Logger logger = LoggerFactory.getLogger(DefaultFilterBuilder.class);
|
||||
|
||||
@Override
|
||||
public Filter build(String filterText) {
|
||||
if (StringUtils.isEmpty(filterText)) {
|
||||
return Filter.NONE;
|
||||
}
|
||||
|
||||
logger.debug("build filter from string. {}", filterText);
|
||||
|
||||
String[] f = filterText.split(Filter.FILTER_DELIMETER);
|
||||
|
||||
Filter filter;
|
||||
if (f.length == 1) {
|
||||
filter = makeSingleFilter(f[0]);
|
||||
} else {
|
||||
filter = makeChainedFilter(f);
|
||||
}
|
||||
|
||||
// TODO: need cache filter?
|
||||
return filter;
|
||||
}
|
||||
|
||||
private Filter makeSingleFilter(String filterText) {
|
||||
logger.debug(" make filter from string. {}", filterText);
|
||||
String[] element = filterText.split(Filter.FILTER_ENTRY_DELIMETER);
|
||||
if (element.length == 4) {
|
||||
return new FromToFilter(element[0], element[1], element[2], element[3]);
|
||||
} else {
|
||||
return Filter.NONE;
|
||||
}
|
||||
}
|
||||
|
||||
private Filter makeChainedFilter(String[] filterTexts) {
|
||||
logger.debug(" make chained filter.");
|
||||
FilterChain chain = new FilterChain();
|
||||
for (String s : filterTexts) {
|
||||
chain.addFilter(makeSingleFilter(s));
|
||||
}
|
||||
return chain;
|
||||
}
|
||||
}
|
||||
@@ -1,54 +1,8 @@
|
||||
package com.nhn.pinpoint.web.filter;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author netspider
|
||||
*
|
||||
*/
|
||||
public class FilterBuilder {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(FilterBuilder.class);
|
||||
|
||||
public static Filter build(String filterText) {
|
||||
if (StringUtils.isEmpty(filterText)) {
|
||||
return Filter.NONE;
|
||||
}
|
||||
|
||||
logger.debug("build filter from string. {}", filterText);
|
||||
|
||||
String[] f = filterText.split(Filter.FILTER_DELIMETER);
|
||||
|
||||
Filter filter;
|
||||
if (f.length == 1) {
|
||||
filter = makeSingleFilter(f[0]);
|
||||
} else {
|
||||
filter = makeChainedFilter(f);
|
||||
}
|
||||
|
||||
// TODO: need cache filter?
|
||||
return filter;
|
||||
}
|
||||
|
||||
private static Filter makeSingleFilter(String filterText) {
|
||||
logger.debug(" make filter from string. {}", filterText);
|
||||
String[] element = filterText.split(Filter.FILTER_ENTRY_DELIMETER);
|
||||
if (element.length == 4) {
|
||||
return new FromToFilter(element[0], element[1], element[2], element[3]);
|
||||
} else {
|
||||
return Filter.NONE;
|
||||
}
|
||||
}
|
||||
|
||||
private static Filter makeChainedFilter(String[] filterTexts) {
|
||||
logger.debug(" make chained filter.");
|
||||
FilterChain chain = new FilterChain();
|
||||
for (String s : filterTexts) {
|
||||
chain.addFilter(makeSingleFilter(s));
|
||||
}
|
||||
return chain;
|
||||
}
|
||||
}
|
||||
package com.nhn.pinpoint.web.filter;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public interface FilterBuilder {
|
||||
Filter build(String filterText);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user