Optimize utils

This commit is contained in:
hongqiaowei
2021-09-29 14:13:46 +08:00
parent f5e44e6cf9
commit e5302112dd
40 changed files with 418 additions and 307 deletions

View File

@@ -30,17 +30,14 @@ import we.stats.ResourceTimeWindowStat;
import we.stats.TimeWindowStat;
import we.stats.ratelimit.ResourceRateLimitConfig;
import we.stats.ratelimit.ResourceRateLimitConfigService;
import we.util.Constants;
import we.util.Consts;
import we.util.DateTimeUtils;
import we.util.NetworkUtils;
import we.util.ThreadContext;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
/**
* @author hongqiaowei
@@ -201,9 +198,9 @@ public class FlowStatSchedConfig extends SchedConfig {
// long tbrs = (totalBlockRequests == null ? w.getBlockRequests() : w.getBlockRequests() + totalBlockRequests.longValue());
long tbrs = w.getTotalBlockRequests();
b.append(Constants.Symbol.LEFT_BRACE);
b.append(_ip); toJsonStringValue(b, ip); b.append(Constants.Symbol.COMMA);
b.append(_id); b.append(id); b.append(Constants.Symbol.COMMA);
b.append(Consts.S.LEFT_BRACE);
b.append(_ip); toJsonStringValue(b, ip); b.append(Consts.S.COMMA);
b.append(_id); b.append(id); b.append(Consts.S.COMMA);
String r = null;
if (type == ResourceRateLimitConfig.Type.NODE) {
@@ -212,40 +209,40 @@ public class FlowStatSchedConfig extends SchedConfig {
r = service;
}
if (r != null) {
b.append(_resource); toJsonStringValue(b, r); b.append(Constants.Symbol.COMMA);
b.append(_resource); toJsonStringValue(b, r); b.append(Consts.S.COMMA);
}
b.append(_type); b.append(type); b.append(Constants.Symbol.COMMA);
b.append(_type); b.append(type); b.append(Consts.S.COMMA);
if (app != null) {
b.append(_app); toJsonStringValue(b, app); b.append(Constants.Symbol.COMMA);
b.append(_app); toJsonStringValue(b, app); b.append(Consts.S.COMMA);
}
if (pi != null) {
b.append(_sourceIp); toJsonStringValue(b, pi); b.append(Constants.Symbol.COMMA);
b.append(_sourceIp); toJsonStringValue(b, pi); b.append(Consts.S.COMMA);
}
if (service != null) {
b.append(_service); toJsonStringValue(b, service); b.append(Constants.Symbol.COMMA);
b.append(_service); toJsonStringValue(b, service); b.append(Consts.S.COMMA);
}
if (path != null) {
b.append(_path); toJsonStringValue(b, path); b.append(Constants.Symbol.COMMA);
b.append(_path); toJsonStringValue(b, path); b.append(Consts.S.COMMA);
}
b.append(_start); b.append(timeWin); b.append(Constants.Symbol.COMMA);
b.append(_reqs); b.append(w.getTotal()); b.append(Constants.Symbol.COMMA);
b.append(_completeReqs); b.append(w.getCompReqs()); b.append(Constants.Symbol.COMMA);
b.append(_peakConcurrents); b.append(w.getPeakConcurrentReqeusts()); b.append(Constants.Symbol.COMMA);
b.append(_reqPerSec); b.append(qps); b.append(Constants.Symbol.COMMA);
b.append(_peakRps); b.append(pRps); b.append(Constants.Symbol.COMMA);
b.append(_blockReqs); b.append(w.getBlockRequests()); b.append(Constants.Symbol.COMMA);
b.append(_totalBlockReqs); b.append(tbrs); b.append(Constants.Symbol.COMMA);
b.append(_errors); b.append(w.getErrors()); b.append(Constants.Symbol.COMMA);
b.append(_avgRespTime); b.append(w.getAvgRt()); b.append(Constants.Symbol.COMMA);
b.append(_maxRespTime); b.append(w.getMax()); b.append(Constants.Symbol.COMMA);
b.append(_start); b.append(timeWin); b.append(Consts.S.COMMA);
b.append(_reqs); b.append(w.getTotal()); b.append(Consts.S.COMMA);
b.append(_completeReqs); b.append(w.getCompReqs()); b.append(Consts.S.COMMA);
b.append(_peakConcurrents); b.append(w.getPeakConcurrentReqeusts()); b.append(Consts.S.COMMA);
b.append(_reqPerSec); b.append(qps); b.append(Consts.S.COMMA);
b.append(_peakRps); b.append(pRps); b.append(Consts.S.COMMA);
b.append(_blockReqs); b.append(w.getBlockRequests()); b.append(Consts.S.COMMA);
b.append(_totalBlockReqs); b.append(tbrs); b.append(Consts.S.COMMA);
b.append(_errors); b.append(w.getErrors()); b.append(Consts.S.COMMA);
b.append(_avgRespTime); b.append(w.getAvgRt()); b.append(Consts.S.COMMA);
b.append(_maxRespTime); b.append(w.getMax()); b.append(Consts.S.COMMA);
b.append(_minRespTime); b.append(w.getMin());
b.append(Constants.Symbol.RIGHT_BRACE);
b.append(Consts.S.RIGHT_BRACE);
String msg = b.toString();
if ("kafka".equals(flowStatSchedConfigProperties.getDest())) { // for internal use
log.warn(msg, LogService.HANDLE_STGY, LogService.toKF(flowStatSchedConfigProperties.getQueue()));
@@ -280,7 +277,7 @@ public class FlowStatSchedConfig extends SchedConfig {
private long getRecentEndTimeSlot(FlowStat flowStat) {
long currentTimeSlot = flowStat.currentTimeSlotId();
int second = DateTimeUtils.from(currentTimeSlot).getSecond();
int second = DateTimeUtils.transform(currentTimeSlot).getSecond();
long interval;
if (second > 49) {
interval = second - 50;
@@ -301,14 +298,14 @@ public class FlowStatSchedConfig extends SchedConfig {
}
private String toDP19(long startTimeSlot) {
return DateTimeUtils.toDate(startTimeSlot, Constants.DatetimePattern.DP19);
return DateTimeUtils.convert(startTimeSlot, Consts.DP.DP19);
}
private String toDP23(long startTimeSlot) {
return DateTimeUtils.toDate(startTimeSlot, Constants.DatetimePattern.DP23);
return DateTimeUtils.convert(startTimeSlot, Consts.DP.DP23);
}
private static void toJsonStringValue(StringBuilder b, String value) {
b.append(Constants.Symbol.DOUBLE_QUOTE).append(value).append(Constants.Symbol.DOUBLE_QUOTE);
b.append(Consts.S.DOUBLE_QUOTE).append(value).append(Consts.S.DOUBLE_QUOTE);
}
}

View File

@@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import we.util.Constants;
import we.util.Consts;
import we.util.WebUtils;
import javax.annotation.PostConstruct;
@@ -211,7 +211,7 @@ public class SystemConfig {
private void afterLogHeadersSet() {
logHeaderSet.clear();
Arrays.stream(StringUtils.split(logHeaders, Constants.Symbol.COMMA)).forEach(h -> {
Arrays.stream(StringUtils.split(logHeaders, Consts.S.COMMA)).forEach(h -> {
logHeaderSet.add(h);
});
if (!fizzTraceIdHeader.equals("X-Trace-Id")) {

View File

@@ -30,7 +30,7 @@ import reactor.core.publisher.Mono;
import we.flume.clients.log4j2appender.LogService;
import we.proxy.CallbackReplayReq;
import we.proxy.CallbackService;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import we.util.ReactiveResult;
import we.util.ThreadContext;
@@ -72,7 +72,7 @@ public class CallbackController {
if (r.code == ReactiveResult.SUCC) {
log.info(b.append("replay success").toString(), LogService.BIZ_ID, req.id);
resp.setStatusCode(HttpStatus.OK);
return Constants.Symbol.EMPTY;
return Consts.S.EMPTY;
} else {
b.append("replay error:\n");
r.toStringBuilder(b);

View File

@@ -32,7 +32,7 @@ import we.stats.FlowStat;
import we.stats.ResourceTimeWindowStat;
import we.stats.TimeWindowStat;
import we.stats.ratelimit.ResourceRateLimitConfig;
import we.util.Constants;
import we.util.Consts;
import we.util.DateTimeUtils;
import we.util.JacksonUtils;
@@ -104,6 +104,6 @@ public class FlowControlController {
}
private String toDP19(long startTimeSlot) {
return DateTimeUtils.toDate(startTimeSlot, Constants.DatetimePattern.DP19);
return DateTimeUtils.convert(startTimeSlot, Consts.DP.DP19);
}
}

View File

@@ -22,16 +22,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import we.plugin.auth.ApiConfigService;
import we.plugin.auth.AppService;
import we.plugin.auth.GatewayGroupService;
import we.stats.ratelimit.ResourceRateLimitConfigService;
import we.util.Constants;
import we.util.Consts;
import we.util.DateTimeUtils;
import we.util.JacksonUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
/**
* @author hongqiaowei
@@ -44,7 +36,7 @@ public class HealthCheckController {
@GetMapping("/health")
public Mono<String> health(ServerWebExchange exchange) {
long mills = System.currentTimeMillis();
String now = DateTimeUtils.toDate(mills, Constants.DatetimePattern.DP23);
String now = DateTimeUtils.convert(mills, Consts.DP.DP23);
return Mono.just(now + " ok");
}
}

View File

@@ -43,7 +43,7 @@ import we.plugin.auth.Receiver;
import we.proxy.CallbackService;
import we.proxy.DiscoveryClientUriSelector;
import we.proxy.ServiceInstance;
import we.util.Constants;
import we.util.Consts;
import we.util.NettyDataBufferUtils;
import we.util.ThreadContext;
import we.util.WebUtils;
@@ -170,51 +170,51 @@ public class CallbackFilter extends FizzWebFilter {
ServerHttpRequest req = exchange.getRequest();
StringBuilder b = ThreadContext.getStringBuilder();
b.append(Constants.Symbol.LEFT_BRACE);
b.append(Consts.S.LEFT_BRACE);
b.append(_id); toJsonStringValue(b, WebUtils.getTraceId(exchange)); b.append(Constants.Symbol.COMMA);
b.append(_datetime); b.append(System.currentTimeMillis()); b.append(Constants.Symbol.COMMA);
b.append(_origin); toJsonStringValue(b, WebUtils.getOriginIp(exchange)); b.append(Constants.Symbol.COMMA);
b.append(_id); toJsonStringValue(b, WebUtils.getTraceId(exchange)); b.append(Consts.S.COMMA);
b.append(_datetime); b.append(System.currentTimeMillis()); b.append(Consts.S.COMMA);
b.append(_origin); toJsonStringValue(b, WebUtils.getOriginIp(exchange)); b.append(Consts.S.COMMA);
String appId = WebUtils.getAppId(exchange);
if (appId != null) {
b.append(_app); toJsonStringValue(b, appId); b.append(Constants.Symbol.COMMA);
b.append(_app); toJsonStringValue(b, appId); b.append(Consts.S.COMMA);
}
b.append(_method); toJsonStringValue(b, req.getMethod().name()); b.append(Constants.Symbol.COMMA);
b.append(_service); toJsonStringValue(b, WebUtils.getClientService(exchange)); b.append(Constants.Symbol.COMMA);
b.append(_path); toJsonStringValue(b, WebUtils.getClientReqPath(exchange)); b.append(Constants.Symbol.COMMA);
b.append(_method); toJsonStringValue(b, req.getMethod().name()); b.append(Consts.S.COMMA);
b.append(_service); toJsonStringValue(b, WebUtils.getClientService(exchange)); b.append(Consts.S.COMMA);
b.append(_path); toJsonStringValue(b, WebUtils.getClientReqPath(exchange)); b.append(Consts.S.COMMA);
String query = WebUtils.getClientReqQuery(exchange);
if (query != null) {
b.append(_query); toJsonStringValue(b, query); b.append(Constants.Symbol.COMMA);
b.append(_query); toJsonStringValue(b, query); b.append(Consts.S.COMMA);
}
String headersJson = JSON.toJSONString(headers);
b.append(_headers); b.append(headersJson); b.append(Constants.Symbol.COMMA);
b.append(_headers); b.append(headersJson); b.append(Consts.S.COMMA);
b.append(_callbackConfigId); b.append(callbackConfigId); b.append(Constants.Symbol.COMMA);
b.append(_callbackConfigId); b.append(callbackConfigId); b.append(Consts.S.COMMA);
if (!service2instMap.isEmpty()) {
String rs = JSON.toJSONString(JSON.toJSONString(service2instMap));
b.append(_receivers); b.append(rs); b.append(Constants.Symbol.COMMA);
b.append(_receivers); b.append(rs); b.append(Consts.S.COMMA);
}
// String gg = gatewayGroupService.currentGatewayGroupSet.iterator().next();
b.append(_gatewayGroup); toJsonStringValue(b, gatewayGroup);
if (body != null) {
b.append(Constants.Symbol.COMMA);
b.append(Consts.S.COMMA);
String bodyStr = body.toString(StandardCharsets.UTF_8);
MediaType contentType = req.getHeaders().getContentType();
if (contentType != null && contentType.getSubtype().equalsIgnoreCase(json)) {
b.append(_body); b.append(JSON.toJSONString(bodyStr));
b.append(_body); b.append(JSON.toJSONString(bodyStr));
} else {
b.append(_body); toJsonStringValue(b, bodyStr);
b.append(_body); toJsonStringValue(b, bodyStr);
}
}
b.append(Constants.Symbol.RIGHT_BRACE);
b.append(Consts.S.RIGHT_BRACE);
String msg = b.toString();
if ("kafka".equals(callbackFilterProperties.getDest())) { // for internal use
log.warn(msg, LogService.HANDLE_STGY, LogService.toKF(callbackFilterProperties.getQueue()));
@@ -227,6 +227,6 @@ public class CallbackFilter extends FizzWebFilter {
}
private static void toJsonStringValue(StringBuilder b, String value) {
b.append(Constants.Symbol.DOUBLE_QUOTE).append(value).append(Constants.Symbol.DOUBLE_QUOTE);
b.append(Consts.S.DOUBLE_QUOTE).append(value).append(Consts.S.DOUBLE_QUOTE);
}
}

View File

@@ -17,14 +17,10 @@
package we.filter;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;
import we.util.Constants;
import we.util.Utils;
import we.util.WebUtils;
/**
* @author hongqiaowei

View File

@@ -91,7 +91,7 @@ public class FlowControlFilter extends FizzWebFilter {
public Mono<Void> doFilter(ServerWebExchange exchange, WebFilterChain chain) {
String path = exchange.getRequest().getPath().value();
int secFS = path.indexOf(Constants.Symbol.FORWARD_SLASH, 1);
int secFS = path.indexOf(Consts.S.FORWARD_SLASH, 1);
if (secFS == -1) {
return WebUtils.responseError(exchange, HttpStatus.INTERNAL_SERVER_ERROR.value(), "request path should like /optional-prefix/service-name/real-biz-path");
}
@@ -99,7 +99,7 @@ public class FlowControlFilter extends FizzWebFilter {
boolean adminReq = false, proxyTestReq = false;
if (service.equals(admin) || service.equals(actuator)) {
adminReq = true;
exchange.getAttributes().put(ADMIN_REQUEST, Constants.Symbol.EMPTY);
exchange.getAttributes().put(ADMIN_REQUEST, Consts.S.EMPTY);
} else if (service.equals(SystemConfig.DEFAULT_GATEWAY_TEST)) {
proxyTestReq = true;
} else {
@@ -179,7 +179,7 @@ public class FlowControlFilter extends FizzWebFilter {
}
String fizzTraceIdValuePrefix = systemConfig.fizzTraceIdValuePrefix();
if (StringUtils.isNotBlank(fizzTraceIdValuePrefix)) {
traceId = fizzTraceIdValuePrefix + Constants.Symbol.DASH + traceId;
traceId = fizzTraceIdValuePrefix + Consts.S.DASH + traceId;
}
exchange.getAttributes().put(WebUtils.TRACE_ID, traceId);
}

View File

@@ -34,7 +34,6 @@ import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;
import we.config.SystemConfig;
import we.constants.CommonConstants;
import we.flume.clients.log4j2appender.LogService;
import we.legacy.RespEntity;
import we.plugin.auth.ApiConfig;
@@ -130,7 +129,7 @@ public class RouteFilter extends FizzWebFilter {
String err = "cant handle api config type " + route.type;
StringBuilder b = ThreadContext.getStringBuilder();
WebUtils.request2stringBuilder(exchange, b);
log.error(b.append(Constants.Symbol.LF).append(err).toString(), LogService.BIZ_ID, rid);
log.error(b.append(Consts.S.LF).append(err).toString(), LogService.BIZ_ID, rid);
return WebUtils.buildJsonDirectResponseAndBindContext(exchange, HttpStatus.OK, null, RespEntity.toJson(HttpStatus.INTERNAL_SERVER_ERROR.value(), err, rid));
}
}

View File

@@ -36,14 +36,14 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import we.flume.clients.log4j2appender.LogService;
import we.util.Constants;
import we.util.Consts;
import we.util.ReactorUtils;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import static we.config.AggregateRedisConfig.AGGREGATE_REACTIVE_REDIS_TEMPLATE;
import static we.util.Constants.Symbol.FORWARD_SLASH;
import static we.util.Consts.S.FORWARD_SLASH;
import java.io.File;
import java.io.IOException;
@@ -239,7 +239,7 @@ public class ConfigLoader {
return Flux.just(entry);
}
String configStr = (String) entry.getValue();
LOGGER.info("aggregate config: " + k.toString() + Constants.Symbol.COLON + configStr, LogService.BIZ_ID, k.toString());
LOGGER.info("aggregate config: " + k.toString() + Consts.S.COLON + configStr, LogService.BIZ_ID, k.toString());
try {
this.addConfig(configStr, aggregateResourcesTmp, resourceKey2ConfigInfoMapTmp, aggregateId2ResourceKeyMapTmp);

View File

@@ -19,7 +19,7 @@ package we.legacy;
import org.springframework.lang.Nullable;
import we.util.Constants;
import we.util.Consts;
import we.util.ThreadContext;
/**
@@ -63,7 +63,7 @@ public class RespEntity {
@Override
public String toString() {
StringBuilder b = ThreadContext.getStringBuilder(resb);
return b.append(f0).append(msgCode).append(f1).append(reqId).append(Constants.Symbol.SPACE).append(message).append(f2).toString();
return b.append(f0).append(msgCode).append(f1).append(reqId).append(Consts.S.SPACE).append(message).append(f2).toString();
}
public static String toJson(int code, String msg, @Nullable String reqId) {

View File

@@ -467,7 +467,7 @@ public class ApiConfigService {
private boolean validate(String app, String timestamp, String secretKey, String sign) {
StringBuilder b = ThreadContext.getStringBuilder();
b.append(app).append(Constants.Symbol.UNDERLINE).append(timestamp).append(Constants.Symbol.UNDERLINE).append(secretKey);
b.append(app).append(Consts.S.UNDERLINE).append(timestamp).append(Consts.S.UNDERLINE).append(secretKey);
return sign.equalsIgnoreCase(DigestUtils.md532(b.toString()));
}

View File

@@ -24,7 +24,7 @@ import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono;
import we.config.AggregateRedisConfig;
import we.flume.clients.log4j2appender.LogService;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import we.util.ReactorUtils;
import we.util.ThreadContext;
@@ -158,7 +158,7 @@ public class ApiConifg2appsService {
ApiConfig2apps data = JacksonUtils.readValue(json, ApiConfig2apps.class);
updateApiConfig2appsMap(data);
} catch (Throwable t) {
log.error(Constants.Symbol.EMPTY, t);
log.error(Consts.S.EMPTY, t);
}
}
)

View File

@@ -19,7 +19,7 @@ package we.plugin.auth;
import org.apache.commons.lang3.StringUtils;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import java.util.*;
@@ -104,7 +104,7 @@ public class App {
if (ips.containsKey(ip)) {
return true;
}
int originSubnetLen = ip.lastIndexOf(Constants.Symbol.DOT);
int originSubnetLen = ip.lastIndexOf(Consts.S.DOT);
for (Map.Entry<String, List<String[]>> e : ips.entrySet()) {
String subnet = e.getKey();
int subnetLen = subnet.length();

View File

@@ -25,7 +25,7 @@ import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import we.flume.clients.log4j2appender.LogService;
import we.config.AggregateRedisConfig;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import we.util.ReactorUtils;
@@ -81,7 +81,7 @@ public class AppService {
return Flux.just(e);
}
Object v = e.getValue();
log.info(k.toString() + Constants.Symbol.COLON + v.toString(), LogService.BIZ_ID, k.toString());
log.info(k.toString() + Consts.S.COLON + v.toString(), LogService.BIZ_ID, k.toString());
String json = (String) v;
try {
App app = JacksonUtils.readValue(json, App.class);

View File

@@ -26,7 +26,7 @@ import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import we.config.AggregateRedisConfig;
import we.flume.clients.log4j2appender.LogService;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import we.util.NetworkUtils;
import we.util.ReactorUtils;
@@ -88,7 +88,7 @@ public class GatewayGroupService {
return Flux.just(e);
}
Object v = e.getValue();
log.info(k.toString() + Constants.Symbol.COLON + v.toString(), LogService.BIZ_ID, k.toString());
log.info(k.toString() + Consts.S.COLON + v.toString(), LogService.BIZ_ID, k.toString());
String json = (String) v;
try {
GatewayGroup gg = JacksonUtils.readValue(json, GatewayGroup.class);

View File

@@ -28,7 +28,7 @@ import we.flume.clients.log4j2appender.LogService;
import we.config.AggregateRedisConfig;
import we.plugin.PluginFilter;
import we.plugin.auth.GatewayGroupService;
import we.util.Constants;
import we.util.Consts;
import we.util.ThreadContext;
import we.util.WebUtils;
@@ -90,20 +90,20 @@ public class StatPluginFilter extends PluginFilter {
if (statPluginFilterProperties.isStatOpen()) {
StringBuilder b = ThreadContext.getStringBuilder();
b.append(Constants.Symbol.LEFT_BRACE);
b.append(ip); toJsonStringValue(b, WebUtils.getOriginIp(exchange)); b.append(Constants.Symbol.COMMA);
b.append(gatewayGroup); toJsonStringValue(b, currentGatewayGroups); b.append(Constants.Symbol.COMMA);
b.append(service); toJsonStringValue(b, WebUtils.getClientService(exchange)); b.append(Constants.Symbol.COMMA);
b.append(Consts.S.LEFT_BRACE);
b.append(ip); toJsonStringValue(b, WebUtils.getOriginIp(exchange)); b.append(Consts.S.COMMA);
b.append(gatewayGroup); toJsonStringValue(b, currentGatewayGroups); b.append(Consts.S.COMMA);
b.append(service); toJsonStringValue(b, WebUtils.getClientService(exchange)); b.append(Consts.S.COMMA);
String appId = WebUtils.getAppId(exchange);
if (appId != null) {
b.append(appid); toJsonStringValue(b, appId); b.append(Constants.Symbol.COMMA);
b.append(appid); toJsonStringValue(b, appId); b.append(Consts.S.COMMA);
}
b.append(apiMethod); toJsonStringValue(b, exchange.getRequest().getMethodValue()); b.append(Constants.Symbol.COMMA);
b.append(apiPath); toJsonStringValue(b, WebUtils.getClientReqPath(exchange)); b.append(Constants.Symbol.COMMA);
b.append(apiMethod); toJsonStringValue(b, exchange.getRequest().getMethodValue()); b.append(Consts.S.COMMA);
b.append(apiPath); toJsonStringValue(b, WebUtils.getClientReqPath(exchange)); b.append(Consts.S.COMMA);
b.append(reqTime) .append(System.currentTimeMillis());
b.append(Constants.Symbol.RIGHT_BRACE);
b.append(Consts.S.RIGHT_BRACE);
if (StringUtils.isBlank(statPluginFilterProperties.getFizzAccessStatTopic())) {
rt.convertAndSend(statPluginFilterProperties.getFizzAccessStatChannel(), b.toString()).subscribe();
@@ -116,10 +116,10 @@ public class StatPluginFilter extends PluginFilter {
}
private static void toJsonStringValue(StringBuilder b, String value) {
b.append(Constants.Symbol.DOUBLE_QUOTE).append(value).append(Constants.Symbol.DOUBLE_QUOTE);
b.append(Consts.S.DOUBLE_QUOTE).append(value).append(Consts.S.DOUBLE_QUOTE);
}
private static void toJsonStringValue(StringBuilder b, Character value) {
b.append(Constants.Symbol.DOUBLE_QUOTE).append(value).append(Constants.Symbol.DOUBLE_QUOTE);
b.append(Consts.S.DOUBLE_QUOTE).append(value).append(Consts.S.DOUBLE_QUOTE);
}
}

View File

@@ -17,7 +17,7 @@
package we.proxy;
import we.util.Constants;
import we.util.Consts;
import we.util.ThreadContext;
/**
@@ -29,6 +29,6 @@ abstract public class AbstractDiscoveryClientUriSelector implements DiscoveryCli
protected String buildUri(String ipAddr, int port, String path) {
StringBuilder b = ThreadContext.getStringBuilder();
return b.append(Constants.Symbol.HTTP_PROTOCOL_PREFIX).append(ipAddr).append(Constants.Symbol.COLON).append(port).append(path).toString();
return b.append(Consts.S.HTTP_PROTOCOL_PREFIX).append(ipAddr).append(Consts.S.COLON).append(port).append(path).toString();
}
}

View File

@@ -152,23 +152,23 @@ public class CallbackService {
private void log(ServerWebExchange exchange, Receiver r, HttpMethod method, HttpHeaders headers, DataBuffer body, Throwable t) {
StringBuilder b = ThreadContext.getStringBuilder();
WebUtils.request2stringBuilder(exchange, b);
b.append(Constants.Symbol.LINE_SEPARATOR).append(callback).append(Constants.Symbol.LINE_SEPARATOR);
b.append(Consts.S.LINE_SEPARATOR).append(callback).append(Consts.S.LINE_SEPARATOR);
String id = WebUtils.getTraceId(exchange);
WebUtils.request2stringBuilder(id, method, r.service + Constants.Symbol.FORWARD_SLASH + r.path, headers, body, b);
WebUtils.request2stringBuilder(id, method, r.service + Consts.S.FORWARD_SLASH + r.path, headers, body, b);
log.error(b.toString(), LogService.BIZ_ID, id, t);
}
private String buildUri(ServerHttpRequest req, ServiceInstance si, String path) {
StringBuilder b = ThreadContext.getStringBuilder();
b.append(req.getURI().getScheme()) .append(Constants.Symbol.COLON) .append(Constants.Symbol.FORWARD_SLASH) .append(Constants.Symbol.FORWARD_SLASH);
b.append(si.ip) .append(Constants.Symbol.COLON) .append(si.port) .append(path);
b.append(req.getURI().getScheme()) .append(Consts.S.COLON) .append(Consts.S.FORWARD_SLASH) .append(Consts.S.FORWARD_SLASH);
b.append(si.ip) .append(Consts.S.COLON) .append(si.port) .append(path);
return b.toString();
}
private String buildUri(String scheme, ServiceInstance si, String path) {
StringBuilder b = ThreadContext.getStringBuilder();
b.append(scheme) .append(Constants.Symbol.COLON) .append(Constants.Symbol.FORWARD_SLASH) .append(Constants.Symbol.FORWARD_SLASH);
b.append(si.ip) .append(Constants.Symbol.COLON) .append(si.port) .append(path);
b.append(scheme) .append(Consts.S.COLON) .append(Consts.S.FORWARD_SLASH) .append(Consts.S.FORWARD_SLASH);
b.append(si.ip) .append(Consts.S.COLON) .append(si.port) .append(path);
return b.toString();
}
@@ -291,9 +291,9 @@ public class CallbackService {
private void log(CallbackReplayReq req, String service, String path, Throwable t) {
StringBuilder b = ThreadContext.getStringBuilder();
b.append(req.service).append(Constants.Symbol.FORWARD_SLASH).append(req.path);
b.append(Constants.Symbol.LINE_SEPARATOR).append(callback).append(Constants.Symbol.LINE_SEPARATOR);
WebUtils.request2stringBuilder(req.id, req.method, service + Constants.Symbol.FORWARD_SLASH + path, req.headers, req.body, b);
b.append(req.service).append(Consts.S.FORWARD_SLASH).append(req.path);
b.append(Consts.S.LINE_SEPARATOR).append(callback).append(Consts.S.LINE_SEPARATOR);
WebUtils.request2stringBuilder(req.id, req.method, service + Consts.S.FORWARD_SLASH + path, req.headers, req.body, b);
log.error(b.toString(), LogService.BIZ_ID, req.id, t);
}

View File

@@ -34,7 +34,7 @@ import reactor.core.publisher.Mono;
import we.config.ProxyWebClientConfig;
import we.config.SystemConfig;
import we.flume.clients.log4j2appender.LogService;
import we.util.Constants;
import we.util.Consts;
import we.util.ThreadContext;
import we.util.WebUtils;
@@ -72,7 +72,7 @@ public class FizzWebClient {
public Mono<ClientResponse> send(String reqId, HttpMethod method, String uriOrSvc, HttpHeaders headers, Object body, long timeout) {
String s = extractServiceOrAddress(uriOrSvc);
if (isService(s)) {
String path = uriOrSvc.substring(uriOrSvc.indexOf(Constants.Symbol.FORWARD_SLASH, 10));
String path = uriOrSvc.substring(uriOrSvc.indexOf(Consts.S.FORWARD_SLASH, 10));
return send2service(reqId, method, s, path, headers, body, timeout);
} else {
return send2uri(reqId, method, uriOrSvc, headers, body, timeout);
@@ -143,11 +143,11 @@ public class FizzWebClient {
private void setHostHeader(String uri, HttpHeaders headers) {
boolean domain = false;
int begin = uri.indexOf(Constants.Symbol.FORWARD_SLASH) + 2;
int end = uri.indexOf(Constants.Symbol.FORWARD_SLASH, begin);
int begin = uri.indexOf(Consts.S.FORWARD_SLASH) + 2;
int end = uri.indexOf(Consts.S.FORWARD_SLASH, begin);
for (int i = begin; i < end; i++) {
char c = uri.charAt(i);
if ( (47 < c && c < 58) || c == Constants.Symbol.DOT || c == Constants.Symbol.COLON ) {
if ( (47 < c && c < 58) || c == Consts.S.DOT || c == Consts.S.COLON ) {
} else {
domain = true;
break;
@@ -165,7 +165,7 @@ public class FizzWebClient {
if (c4 == 's' || c4 == 'S') {
start = 8;
}
int i = uriOrSvc.indexOf(Constants.Symbol.FORWARD_SLASH, 9);
int i = uriOrSvc.indexOf(Consts.S.FORWARD_SLASH, 9);
if (i > 0) {
end = i;
}
@@ -173,7 +173,7 @@ public class FizzWebClient {
}
private boolean isService(String s) {
if (StringUtils.indexOfAny(s, Constants.Symbol.DOT, Constants.Symbol.COLON) > 0
if (StringUtils.indexOfAny(s, Consts.S.DOT, Consts.S.COLON) > 0
|| StringUtils.startsWith(s, localhost)) {
return false;
} else {

View File

@@ -19,7 +19,7 @@ package we.proxy;
import org.springframework.http.HttpMethod;
import we.plugin.PluginConfig;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import java.util.List;
@@ -116,7 +116,7 @@ public class Route {
public String getBackendPathQuery() {
if (query != null) {
return backendPath + Constants.Symbol.QUESTION + query;
return backendPath + Consts.S.QUESTION + query;
}
return backendPath;
}

View File

@@ -25,7 +25,7 @@ import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import we.config.AggregateRedisConfig;
import we.flume.clients.log4j2appender.LogService;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import we.util.ReactorUtils;
@@ -102,7 +102,7 @@ public class RpcInstanceServiceImpl implements RpcInstanceService {
return Flux.just(e);
}
Object v = e.getValue();
LOGGER.info(k.toString() + Constants.Symbol.COLON + v.toString(), LogService.BIZ_ID, k.toString());
LOGGER.info(k.toString() + Consts.S.COLON + v.toString(), LogService.BIZ_ID, k.toString());
String json = (String) v;
try {
RpcService rpcService = JacksonUtils.readValue(json, RpcService.class);

View File

@@ -19,7 +19,7 @@ package we.stats.ratelimit;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.apache.commons.lang3.StringUtils;
import we.util.Constants;
import we.util.Consts;
import we.util.JacksonUtils;
import we.util.Utils;
@@ -152,15 +152,15 @@ public class ResourceRateLimitConfig {
}
public static void buildResourceIdTo(StringBuilder b, String app, String ip, String node, String service, String path) {
b.append(app == null ? Constants.Symbol.EMPTY : app) .append(Constants.Symbol.SQUARE);
b.append(ip == null ? Constants.Symbol.EMPTY : ip) .append(Constants.Symbol.SQUARE);
b.append(node == null ? Constants.Symbol.EMPTY : node) .append(Constants.Symbol.SQUARE);
b.append(service == null ? Constants.Symbol.EMPTY : service) .append(Constants.Symbol.SQUARE);
b.append(path == null ? Constants.Symbol.EMPTY : path);
b.append(app == null ? Consts.S.EMPTY : app) .append(Consts.S.SQUARE);
b.append(ip == null ? Consts.S.EMPTY : ip) .append(Consts.S.SQUARE);
b.append(node == null ? Consts.S.EMPTY : node) .append(Consts.S.SQUARE);
b.append(service == null ? Consts.S.EMPTY : service) .append(Consts.S.SQUARE);
b.append(path == null ? Consts.S.EMPTY : path);
}
public static String getApp(String resource) {
int i = resource.indexOf(Constants.Symbol.SQUARE);
int i = resource.indexOf(Consts.S.SQUARE);
if (i == 0) {
return null;
} else {
@@ -169,31 +169,31 @@ public class ResourceRateLimitConfig {
}
public static String getIp(String resource) {
String extract = Utils.extract(resource, Constants.Symbol.SQUARE, 1);
if (extract.equals(Constants.Symbol.EMPTY)) {
String extract = Utils.extract(resource, Consts.S.SQUARE, 1);
if (extract.equals(Consts.S.EMPTY)) {
return null;
}
return extract;
}
public static String getNode(String resource) {
String extract = Utils.extract(resource, Constants.Symbol.SQUARE, 2);
if (extract.equals(Constants.Symbol.EMPTY)) {
String extract = Utils.extract(resource, Consts.S.SQUARE, 2);
if (extract.equals(Consts.S.EMPTY)) {
return null;
}
return extract;
}
public static String getService(String resource) {
String extract = Utils.extract(resource, Constants.Symbol.SQUARE, 3);
if (extract.equals(Constants.Symbol.EMPTY)) {
String extract = Utils.extract(resource, Consts.S.SQUARE, 3);
if (extract.equals(Consts.S.EMPTY)) {
return null;
}
return extract;
}
public static String getPath(String resource) {
int i = resource.lastIndexOf(Constants.Symbol.SQUARE);
int i = resource.lastIndexOf(Consts.S.SQUARE);
if (i == resource.length() - 1) {
return null;
} else {

View File

@@ -30,7 +30,6 @@ import org.springframework.web.reactive.function.client.ClientResponse;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import we.config.SystemConfig;
import we.constants.CommonConstants;
import we.filter.FilterResult;
import we.flume.clients.log4j2appender.LogService;
import we.legacy.RespEntity;
@@ -101,6 +100,9 @@ public abstract class WebUtils {
public static Set<String> LOG_HEADER_SET = Collections.EMPTY_SET;
private WebUtils() {
}
public static void setGatewayPrefix(String p) {
gatewayPrefix = p;
}
@@ -136,13 +138,13 @@ public abstract class WebUtils {
String svc = exchange.getAttribute(clientService);
if (svc == null) {
String p = exchange.getRequest().getPath().value();
int secFS = p.indexOf(Constants.Symbol.FORWARD_SLASH, 1);
if (StringUtils.isBlank(gatewayPrefix) || Constants.Symbol.FORWARD_SLASH_STR.equals(gatewayPrefix)) {
int secFS = p.indexOf(Consts.S.FORWARD_SLASH, 1);
if (StringUtils.isBlank(gatewayPrefix) || Consts.S.FORWARD_SLASH_STR.equals(gatewayPrefix)) {
svc = p.substring(1, secFS);
} else {
String prefix = p.substring(0, secFS);
if (gatewayPrefix.equals(prefix) || SystemConfig.DEFAULT_GATEWAY_TEST_PREFIX.equals(prefix)) {
int trdFS = p.indexOf(Constants.Symbol.FORWARD_SLASH, secFS + 1);
int trdFS = p.indexOf(Consts.S.FORWARD_SLASH, secFS + 1);
svc = p.substring(secFS + 1, trdFS);
} else {
throw Utils.runtimeExceptionWithoutStack("wrong prefix " + prefix);
@@ -251,7 +253,7 @@ public abstract class WebUtils {
);
}
if (bodyContent == null) {
bodyContent = Constants.Symbol.EMPTY;
bodyContent = Consts.S.EMPTY;
}
return clientResp
.writeWith(Mono.just(clientResp.bufferFactory().wrap(bodyContent.getBytes())));
@@ -296,13 +298,13 @@ public abstract class WebUtils {
String p = exchange.getAttribute(clientRequestPath);
if (p == null) {
p = exchange.getRequest().getPath().value();
int secFS = p.indexOf(Constants.Symbol.FORWARD_SLASH, 1);
if (StringUtils.isBlank(gatewayPrefix) || Constants.Symbol.FORWARD_SLASH_STR.equals(gatewayPrefix)) {
int secFS = p.indexOf(Consts.S.FORWARD_SLASH, 1);
if (StringUtils.isBlank(gatewayPrefix) || Consts.S.FORWARD_SLASH_STR.equals(gatewayPrefix)) {
p = p.substring(secFS);
} else {
String prefix = p.substring(0, secFS);
if (gatewayPrefix.equals(prefix) || SystemConfig.DEFAULT_GATEWAY_TEST_PREFIX.equals(prefix)) {
int trdFS = p.indexOf(Constants.Symbol.FORWARD_SLASH, secFS + 1);
int trdFS = p.indexOf(Consts.S.FORWARD_SLASH, secFS + 1);
p = p.substring(trdFS);
} else {
throw Utils.runtimeExceptionWithoutStack("wrong prefix " + prefix);
@@ -324,14 +326,14 @@ public abstract class WebUtils {
public static String getClientReqPathPrefix(ServerWebExchange exchange) {
String prefix = exchange.getAttribute(clientRequestPathPrefix);
if (prefix == null) {
if (StringUtils.isBlank(gatewayPrefix) || Constants.Symbol.FORWARD_SLASH_STR.equals(gatewayPrefix)) {
prefix = Constants.Symbol.FORWARD_SLASH_STR;
if (StringUtils.isBlank(gatewayPrefix) || Consts.S.FORWARD_SLASH_STR.equals(gatewayPrefix)) {
prefix = Consts.S.FORWARD_SLASH_STR;
} else {
String path = exchange.getRequest().getPath().value();
int secFS = path.indexOf(Constants.Symbol.FORWARD_SLASH, 1);
int secFS = path.indexOf(Consts.S.FORWARD_SLASH, 1);
prefix = path.substring(0, secFS);
if (gatewayPrefix.equals(prefix) || SystemConfig.DEFAULT_GATEWAY_TEST_PREFIX.equals(prefix)) {
prefix = prefix + Constants.Symbol.FORWARD_SLASH;
prefix = prefix + Consts.S.FORWARD_SLASH;
} else {
throw Utils.runtimeExceptionWithoutStack("wrong prefix " + prefix);
}
@@ -352,7 +354,7 @@ public abstract class WebUtils {
if (qry == null) {
exchange.getAttributes().put(clientRequestQuery, StringUtils.EMPTY);
} else {
if (StringUtils.indexOfAny(qry, Constants.Symbol.LEFT_BRACE, Constants.Symbol.FORWARD_SLASH, Constants.Symbol.HASH) > 0) {
if (StringUtils.indexOfAny(qry, Consts.S.LEFT_BRACE, Consts.S.FORWARD_SLASH, Consts.S.HASH) > 0) {
qry = uri.getRawQuery();
}
exchange.getAttributes().put(clientRequestQuery, qry);
@@ -366,7 +368,7 @@ public abstract class WebUtils {
String relativeUri = getClientReqPath(exchange);
String qry = getClientReqQuery(exchange);
if (qry != null) {
relativeUri = relativeUri + Constants.Symbol.QUESTION + qry;
relativeUri = relativeUri + Consts.S.QUESTION + qry;
}
return relativeUri;
}
@@ -374,7 +376,7 @@ public abstract class WebUtils {
public static String appendQuery(String path, ServerWebExchange exchange) {
String qry = getClientReqQuery(exchange);
if (qry != null) {
return path + Constants.Symbol.QUESTION + qry;
return path + Consts.S.QUESTION + qry;
}
return path;
}
@@ -421,7 +423,7 @@ public abstract class WebUtils {
}
public static void request2stringBuilder(String reqId, HttpMethod method, String uri, HttpHeaders headers, Object body, StringBuilder b) {
b.append(reqId).append(Constants.Symbol.SPACE).append(method).append(Constants.Symbol.SPACE).append(uri);
b.append(reqId).append(Consts.S.SPACE).append(method).append(Consts.S.SPACE).append(uri);
if (headers != null) {
final boolean[] f = {false};
LOG_HEADER_SET.forEach(
@@ -429,10 +431,10 @@ public abstract class WebUtils {
String v = headers.getFirst(h);
if (v != null) {
if (!f[0]) {
b.append(Constants.Symbol.LINE_SEPARATOR);
b.append(Consts.S.LINE_SEPARATOR);
f[0] = true;
}
Utils.addTo(b, h, Constants.Symbol.EQUAL, v, Constants.Symbol.TWO_SPACE_STR);
Utils.addTo(b, h, Consts.S.EQUAL, v, Consts.S.TWO_SPACE_STR);
}
}
);
@@ -449,10 +451,10 @@ public abstract class WebUtils {
String v = headers.getFirst(h);
if (v != null) {
if (!f[0]) {
b.append(Constants.Symbol.LINE_SEPARATOR);
b.append(Consts.S.LINE_SEPARATOR);
f[0] = true;
}
Utils.addTo(b, h, Constants.Symbol.EQUAL, v, Constants.Symbol.TWO_SPACE_STR);
Utils.addTo(b, h, Consts.S.EQUAL, v, Consts.S.TWO_SPACE_STR);
}
}
);
@@ -477,8 +479,8 @@ public abstract class WebUtils {
// if (reqBody[0] != null) {
// DataBufferUtils.release(reqBody[0]);
// }
b.append(Constants.Symbol.LINE_SEPARATOR);
b.append(filter).append(Constants.Symbol.SPACE).append(code).append(Constants.Symbol.SPACE).append(msg);
b.append(Consts.S.LINE_SEPARATOR);
b.append(filter).append(Consts.S.SPACE).append(code).append(Consts.S.SPACE).append(msg);
if (t == null) {
log.error(b.toString(), LogService.BIZ_ID, rid);
} else {
@@ -527,11 +529,11 @@ public abstract class WebUtils {
String rid = getTraceId(exchange);
StringBuilder b = ThreadContext.getStringBuilder();
request2stringBuilder(exchange, b);
b.append(Constants.Symbol.LINE_SEPARATOR);
b.append(filter).append(Constants.Symbol.SPACE).append(httpStatus);
b.append(Consts.S.LINE_SEPARATOR);
b.append(filter).append(Consts.S.SPACE).append(httpStatus);
log.error(b.toString(), LogService.BIZ_ID, rid);
transmitFailFilterResult(exchange, filter);
return buildDirectResponseAndBindContext(exchange, httpStatus, new HttpHeaders(), Constants.Symbol.EMPTY);
return buildDirectResponseAndBindContext(exchange, httpStatus, new HttpHeaders(), Consts.S.EMPTY);
}
@Deprecated
@@ -541,12 +543,12 @@ public abstract class WebUtils {
String rid = getTraceId(exchange);
StringBuilder b = ThreadContext.getStringBuilder();
request2stringBuilder(exchange, b);
b.append(Constants.Symbol.LINE_SEPARATOR);
b.append(filter).append(Constants.Symbol.SPACE).append(httpStatus);
b.append(Consts.S.LINE_SEPARATOR);
b.append(filter).append(Consts.S.SPACE).append(httpStatus);
log.error(b.toString(), LogService.BIZ_ID, rid);
transmitFailFilterResult(exchange, filter);
headers = headers == null ? new HttpHeaders() : headers;
content = StringUtils.isBlank(content) ? Constants.Symbol.EMPTY : content;
content = StringUtils.isBlank(content) ? Consts.S.EMPTY : content;
return buildDirectResponseAndBindContext(exchange, httpStatus, headers, content);
}
@@ -558,7 +560,7 @@ public abstract class WebUtils {
if (StringUtils.isBlank(v)) {
ip = req.getRemoteAddress().getAddress().getHostAddress();
} else {
ip = StringUtils.split(v, Constants.Symbol.COMMA)[0].trim();
ip = StringUtils.split(v, Consts.S.COMMA)[0].trim();
if (ip.equalsIgnoreCase(unknown)) {
ip = req.getRemoteAddress().getAddress().getHostAddress();
} else if (ip.equals(binaryAddress)) {

View File

@@ -33,9 +33,8 @@ import reactor.netty.resources.ConnectionProvider;
import reactor.netty.resources.LoopResources;
import we.stats.FlowStat;
import we.stats.ResourceTimeWindowStat;
import we.util.Constants;
import we.util.Consts;
import we.util.DateTimeUtils;
import we.util.JacksonUtils;
import java.time.Duration;
import java.util.List;
@@ -136,12 +135,12 @@ public class RateLimitTests {
FlowStat flowStat = new FlowStat();
long incrTime = DateTimeUtils.toMillis("2021-01-08 21:28:42.000", Constants.DatetimePattern.DP23);
long incrTime = DateTimeUtils.toMillis("2021-01-08 21:28:42.000", Consts.DP.DP23);
boolean success = flowStat.incrRequest("resourceX", incrTime, Long.MAX_VALUE, Long.MAX_VALUE);
// System.err.println("incrTime: " + incrTime + ", success: " + success);
long startTimeSlot = DateTimeUtils.toMillis("2021-01-08 21:28:41.000", Constants.DatetimePattern.DP23);
long endTimeSlot = DateTimeUtils.toMillis("2021-01-08 21:28:44.000", Constants.DatetimePattern.DP23);
long startTimeSlot = DateTimeUtils.toMillis("2021-01-08 21:28:41.000", Consts.DP.DP23);
long endTimeSlot = DateTimeUtils.toMillis("2021-01-08 21:28:44.000", Consts.DP.DP23);
List<ResourceTimeWindowStat> resourceTimeWindowStats = flowStat.getResourceTimeWindowStats(null, startTimeSlot, endTimeSlot, 3);
if (resourceTimeWindowStats == null || resourceTimeWindowStats.isEmpty()) {
@@ -152,7 +151,7 @@ public class RateLimitTests {
}
private String toDP19(long mills) {
return DateTimeUtils.toDate(mills, Constants.DatetimePattern.DP19);
return DateTimeUtils.convert(mills, Consts.DP.DP19);
}
@Test