提交 72bba79d 编写于 作者: L leon.li

change apis

上级 10a48e0a
......@@ -11,13 +11,6 @@ public class AlertResultEntity {
private Date m_alertTime;
public AlertResultEntity() {
this.m_isTriggered = false;
this.m_content = "";
this.m_alertType = "";
this.m_alertTime = new Date();
}
public AlertResultEntity(boolean result, String content, String alertType) {
this.m_isTriggered = result;
this.m_content = content;
......
......@@ -5,6 +5,6 @@ import java.util.List;
import com.dianping.cat.home.rule.entity.Condition;
public interface DataChecker {
public AlertResultEntity checkData(double[] value, double[] baseline, List<Condition> conditions);
public List<AlertResultEntity> checkData(double[] value, double[] baseline, List<Condition> conditions);
}
package com.dianping.cat.report.task.alert;
import java.util.ArrayList;
import java.util.List;
import org.unidal.tuple.Pair;
......@@ -25,8 +26,8 @@ public class DefaultDataChecker implements DataChecker {
return result;
}
public AlertResultEntity checkData(double[] value, double[] baseline, List<Condition> conditions) {
AlertResultEntity result = new AlertResultEntity();
public List<AlertResultEntity> checkData(double[] value, double[] baseline, List<Condition> conditions) {
List<AlertResultEntity> alertResults = new ArrayList<AlertResultEntity>();
for (Condition condition : conditions) {
int conditionMinute = condition.getMinute();
......@@ -37,15 +38,11 @@ public class DefaultDataChecker implements DataChecker {
if (condResult.getKey() == true) {
String alertType = condition.getAlertType();
if (alertType != null && alertType.equals("error")) {
return new AlertResultEntity(condResult.getKey(), condResult.getValue(), alertType);
} else {
result = new AlertResultEntity(condResult.getKey(), condResult.getValue(), alertType);
}
alertResults.add(new AlertResultEntity(condResult.getKey(), condResult.getValue(), alertType));
}
}
return result;
return alertResults;
}
private Pair<Boolean, String> checkDataByCondition(double[] value, double[] baseline, Condition condition) {
......
......@@ -17,8 +17,7 @@ public abstract class BaseSender implements LogEnabled {
protected abstract void sendLog(String title, String content, List<String> receivers);
public abstract boolean sendAlert(List<String> receivers, String domain, String title, String content,
String alertType);
public abstract boolean sendAlert(List<String> receivers, String domain, String title, String content);
@Override
public void enableLogging(Logger logger) {
......
......@@ -20,7 +20,7 @@ public class MailSender extends BaseSender {
}
@Override
public boolean sendAlert(List<String> receivers, String domain, String title, String content, String alertType) {
public boolean sendAlert(List<String> receivers, String domain, String title, String content) {
try {
m_mailSms.sendEmail(title, content, receivers);
sendLog(title, content, receivers);
......
......@@ -5,7 +5,7 @@ import java.util.List;
import com.dianping.cat.Cat;
public class SmsSender extends BaseSender {
@Override
protected void sendLog(String title, String content, List<String> receivers) {
StringBuilder builder = new StringBuilder();
......@@ -20,11 +20,7 @@ public class SmsSender extends BaseSender {
}
@Override
public boolean sendAlert(List<String> receivers, String domain, String title, String content, String alertType) {
if (alertType == null || !alertType.equals("error")) {
return true;
}
public boolean sendAlert(List<String> receivers, String domain, String title, String content) {
try {
m_mailSms.sendSms(title, content, receivers);
sendLog(title, content, receivers);
......
......@@ -19,11 +19,7 @@ public class WeixinSender extends BaseSender {
}
@Override
public boolean sendAlert(List<String> receivers, String domain, String title, String content, String alertType) {
if (alertType == null || !alertType.equals("error")) {
return true;
}
public boolean sendAlert(List<String> receivers, String domain, String title, String content) {
try {
content = content.replaceAll("<br/>", "\n");
m_mailSms.sendWeiXin(title, content, domain, mergeList(receivers));
......
......@@ -11,6 +11,9 @@ import com.dianping.cat.core.config.Config;
import com.dianping.cat.core.config.ConfigDao;
import com.dianping.cat.core.config.ConfigEntity;
import com.dianping.cat.home.alert.type.entity.AlertType;
import com.dianping.cat.home.alert.type.entity.Category;
import com.dianping.cat.home.alert.type.entity.Domain;
import com.dianping.cat.home.alert.type.entity.Type;
import com.dianping.cat.home.alert.type.transform.DefaultSaxParser;
public class AlertTypeManager implements Initializable {
......@@ -24,10 +27,41 @@ public class AlertTypeManager implements Initializable {
private static final String CONFIG_NAME = "alertType";
private static final String DEFAULT_TYPE = "default";
public AlertType getAlertType() {
return m_config;
}
public Type getType(String categoryName, String domainName, String typeName) {
try {
Category category = m_config.findCategory(categoryName);
Domain domain = category.findDomain(domainName);
if (domain == null) {
domain = category.findDomain(DEFAULT_TYPE);
}
Type type = domain.findType(typeName);
if (type == null) {
type = generateDefaultType();
}
return type;
} catch (Exception ex) {
return generateDefaultType();
}
}
private Type generateDefaultType() {
Type type = new Type();
type.setSendMail(true);
type.setSendWeixin(true);
type.setSendSms(false);
return type;
}
@Override
public void initialize() throws InitializationException {
try {
......
......@@ -75,13 +75,13 @@ public class RuleConfigTest {
double[] baseline7 = { 200, 200 };
double[] value7 = { 100, 100 };
result = m_check.checkData(value7, baseline7, conditionsMap.get("conditionCombination"));
result = extractError(m_check.checkData(value7, baseline7, conditionsMap.get("conditionCombination")));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline8 = { 200, 200 };
double[] value8 = { 100, 100 };
result = m_check.checkData(value8, baseline8, conditionsMap.get("subconditionCombination"));
Assert.assertEquals(result.isTriggered(), false);
result = extractError(m_check.checkData(value8, baseline8, conditionsMap.get("subconditionCombination")));
Assert.assertNull(result);
}
@Test
......@@ -92,7 +92,7 @@ public class RuleConfigTest {
double baseline[] = { 50, 200, 200 };
double value[] = { 50, 100, 100 };
AlertResultEntity result = m_check.checkData(value, baseline, configMap.get("two-minute"));
AlertResultEntity result = extractError(m_check.checkData(value, baseline, configMap.get("two-minute")));
Assert.assertEquals(result.isTriggered(), true);
}
......@@ -104,7 +104,22 @@ public class RuleConfigTest {
double baseline[] = { 200, 350 };
double value[] = { 100, 50 };
AlertResultEntity result = m_check.checkData(value, baseline, configMap.get("demo1"));
AlertResultEntity result = extractError(m_check.checkData(value, baseline, configMap.get("demo1")));
Assert.assertEquals(result.isTriggered(), true);
}
private AlertResultEntity extractError(List<AlertResultEntity> alertResults) {
int length = alertResults.size();
if (length == 0) {
return null;
}
for (AlertResultEntity alertResult : alertResults) {
if (alertResult.getAlertType().equals("error")) {
return alertResult;
}
}
return alertResults.get(length - 1);
}
}
......@@ -94,60 +94,60 @@ public class AlertConfigTest {
double baseline[] = { 100, 100 };
double value[] = { 200, 200 };
AlertResultEntity result = alertConfig.checkData(value, baseline, conditions);
Assert.assertEquals(result.isTriggered(), false);
AlertResultEntity result = extractError(alertConfig.checkData(value, baseline, conditions));
Assert.assertNull(result);
double[] baseline2 = { 100, 100 };
double[] value2 = { 49, 49 };
result = alertConfig.checkData(value2, baseline2, conditions);
Assert.assertEquals(result.isTriggered(), false);
result = extractError(alertConfig.checkData(value2, baseline2, conditions));
Assert.assertNull(result);
double[] baseline3 = { 100, 100 };
double[] value3 = { 51, 49 };
result = alertConfig.checkData(value3, baseline3, conditions);
Assert.assertEquals(result.isTriggered(), false);
result = extractError(alertConfig.checkData(value3, baseline3, conditions));
Assert.assertNull(result);
double[] baseline4 = { 50, 50 };
double[] value4 = { 10, 10 };
result = alertConfig.checkData(value4, baseline4, conditions);
Assert.assertEquals(result.isTriggered(), false);
result = extractError(alertConfig.checkData(value4, baseline4, conditions));
Assert.assertNull(result);
itemConfig.setDecreaseValue(40);
itemConfig.setDecreasePercentage(50);
conditions = buildConditions(convert(itemConfig));
result = alertConfig.checkData(value4, baseline4, conditions);
result = extractError(alertConfig.checkData(value4, baseline4, conditions));
Assert.assertEquals(result.isTriggered(), true);
itemConfig.setDecreaseValue(41);
itemConfig.setDecreasePercentage(50);
conditions = buildConditions(convert(itemConfig));
result = alertConfig.checkData(value4, baseline4, conditions);
Assert.assertEquals(result.isTriggered(), false);
result = extractError(alertConfig.checkData(value4, baseline4, conditions));
Assert.assertNull(result);
itemConfig.setDecreaseValue(40);
itemConfig.setDecreasePercentage(79);
conditions = buildConditions(convert(itemConfig));
result = alertConfig.checkData(value4, baseline4, conditions);
result = extractError(alertConfig.checkData(value4, baseline4, conditions));
Assert.assertEquals(result.isTriggered(), true);
itemConfig.setDecreaseValue(40);
itemConfig.setDecreasePercentage(80);
conditions = buildConditions(convert(itemConfig));
result = alertConfig.checkData(value4, baseline4, conditions);
Assert.assertEquals(result.isTriggered(), false);
result = extractError(alertConfig.checkData(value4, baseline4, conditions));
Assert.assertNull(result);
itemConfig.setDecreaseValue(40);
itemConfig.setDecreasePercentage(80);
conditions = buildConditions(convert(itemConfig));
result = alertConfig.checkData(value4, baseline4, conditions);
Assert.assertEquals(result.isTriggered(), false);
result = extractError(alertConfig.checkData(value4, baseline4, conditions));
Assert.assertNull(result);
double[] baseline5 = { 117, 118 };
double[] value5 = { 43, 48 };
itemConfig.setDecreasePercentage(50);
itemConfig.setDecreasePercentage(50);
conditions = buildConditions(convert(itemConfig));
result = alertConfig.checkData(value5, baseline5, conditions);
result = extractError(alertConfig.checkData(value5, baseline5, conditions));
Assert.assertEquals(result.isTriggered(), true);
}
......@@ -159,7 +159,8 @@ public class AlertConfigTest {
double baseline[] = { 50, 200, 200 };
double value[] = { 50, 100, 100 };
AlertResultEntity result = m_checker.checkData(value, baseline, buildConditions(configMap.get("two-minute")));
AlertResultEntity result = extractError(m_checker.checkData(value, baseline,
buildConditions(configMap.get("two-minute"))));
Assert.assertEquals(result.isTriggered(), true);
}
......@@ -171,42 +172,61 @@ public class AlertConfigTest {
double baseline[] = { 200, 200 };
double value[] = { 100, 100 };
AlertResultEntity result = m_checker.checkData(value, baseline, buildConditions(configMap.get("decreasePercentage")));
AlertResultEntity result = extractError(m_checker.checkData(value, baseline,
buildConditions(configMap.get("decreasePercentage"))));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline2 = { 200, 300 };
double[] value2 = { 100, 100 };
result = m_checker.checkData(value2, baseline2, buildConditions(configMap.get("decreaseValue")));
result = extractError(m_checker.checkData(value2, baseline2, buildConditions(configMap.get("decreaseValue"))));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline3 = { 200, 50 };
double[] value3 = { 400, 100 };
result = m_checker.checkData(value3, baseline3, buildConditions(configMap.get("increasePercentage")));
result = extractError(m_checker
.checkData(value3, baseline3, buildConditions(configMap.get("increasePercentage"))));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline4 = { 200, 50 };
double[] value4 = { 400, 100 };
result = m_checker.checkData(value4, baseline4, buildConditions(configMap.get("increaseValue")));
result = extractError(m_checker.checkData(value4, baseline4, buildConditions(configMap.get("increaseValue"))));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline5 = { 200, 200 };
double[] value5 = { 500, 600 };
result = m_checker.checkData(value5, baseline5, buildConditions(configMap.get("absoluteMaxValue")));
result = extractError(m_checker.checkData(value5, baseline5, buildConditions(configMap.get("absoluteMaxValue"))));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline6 = { 200, 200 };
double[] value6 = { 50, 40 };
result = m_checker.checkData(value6, baseline6, buildConditions(configMap.get("absoluteMinValue")));
result = extractError(m_checker.checkData(value6, baseline6, buildConditions(configMap.get("absoluteMinValue"))));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline7 = { 200, 200 };
double[] value7 = { 100, 100 };
result = m_checker.checkData(value7, baseline7, buildConditions(configMap.get("conditionCombination")));
result = extractError(m_checker.checkData(value7, baseline7,
buildConditions(configMap.get("conditionCombination"))));
Assert.assertEquals(result.isTriggered(), true);
double[] baseline8 = { 200, 200 };
double[] value8 = { 100, 100 };
result = m_checker.checkData(value8, baseline8, buildConditions(configMap.get("subconditionCombination")));
Assert.assertEquals(result.isTriggered(), false);
result = extractError(m_checker.checkData(value8, baseline8,
buildConditions(configMap.get("subconditionCombination"))));
Assert.assertNull(result);
}
private AlertResultEntity extractError(List<AlertResultEntity> alertResults) {
int length = alertResults.size();
if (length == 0) {
return null;
}
for (AlertResultEntity alertResult : alertResults) {
if (alertResult.getAlertType().equals("error")) {
return alertResult;
}
}
return alertResults.get(length - 1);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册