提交 153b640b 编写于 作者: L leon.li

add 2 new RuleType for fluctuate case

上级 af0544e0
......@@ -191,7 +191,7 @@ public enum RuleType {
}
},
absoluteMaxValue {
AbsoluteMaxValue {
@Override
protected String buildRuleMessage(double[] values, double[] baselines, double ruleValue) {
StringBuilder sb = new StringBuilder();
......@@ -223,7 +223,7 @@ public enum RuleType {
}
},
absoluteMinValue {
AbsoluteMinValue {
@Override
protected String buildRuleMessage(double[] values, double[] baselines, double ruleValue) {
StringBuilder sb = new StringBuilder();
......@@ -253,6 +253,108 @@ public enum RuleType {
public String getId() {
return "MinVal";
}
},
FluctuateIncreasePercentage {
private double[] buildFlucAscPers(double[] values) {
int length = values.length;
double[] ascPers = new double[length - 1];
double baseVal = values[length - 1];
for (int i = 0; i <= length - 2; i++) {
ascPers[i] = (baseVal / values[i] - 1) * 100;
}
return ascPers;
}
@Override
protected String buildRuleMessage(double[] values, double[] baselines, double ruleValue) {
StringBuilder sb = new StringBuilder();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sb.append("[实际值:").append(convertDoublesToString(values)).append("] ");
sb.append("[波动上升百分比:").append(convertPercentsToString(buildFlucAscPers(values))).append("] ");
sb.append("[波动上升百分比阈值: " + m_df.format(ruleValue) + "% ]");
sb.append("[告警时间:").append(sdf.format(new Date()) + "]");
return sb.toString();
}
@Override
public Pair<Boolean, String> executeRule(double[] values, double[] baselines, double ruleValue) {
int length = values.length;
if (length <= 1) {
return new Pair<Boolean, String>(false, "");
}
double baseVal = values[length - 1];
for (int i = 0; i <= length - 2; i++) {
if (baseVal / values[i] - 1 < ruleValue / 100) {
return new Pair<Boolean, String>(false, "");
}
}
return new Pair<Boolean, String>(true, buildRuleMessage(values, baselines, ruleValue));
}
@Override
public String getId() {
return "FluAscPer";
}
},
FluctuateDecreasePercentage {
private double[] buildFlucDescPers(double[] values) {
int length = values.length;
double[] descPers = new double[length - 1];
double baseVal = values[length - 1];
for (int i = 0; i <= length - 2; i++) {
descPers[i] = (1 - baseVal / values[i]) * 100;
}
return descPers;
}
@Override
protected String buildRuleMessage(double[] values, double[] baselines, double ruleValue) {
StringBuilder sb = new StringBuilder();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sb.append("[实际值:").append(convertDoublesToString(values)).append("] ");
sb.append("[波动下降百分比:").append(convertPercentsToString(buildFlucDescPers(values))).append("] ");
sb.append("[波动下降百分比阈值: " + m_df.format(ruleValue) + "% ]");
sb.append("[告警时间:").append(sdf.format(new Date()) + "]");
return sb.toString();
}
@Override
public Pair<Boolean, String> executeRule(double[] values, double[] baselines, double ruleValue) {
int length = values.length;
if (length <= 1) {
return new Pair<Boolean, String>(false, "");
}
double baseVal = values[length - 1];
for (int i = 0; i <= length - 2; i++) {
if (1 - baseVal / values[i] < ruleValue / 100) {
return new Pair<Boolean, String>(false, "");
}
}
return new Pair<Boolean, String>(true, buildRuleMessage(values, baselines, ruleValue));
}
@Override
public String getId() {
return "FluDescPer";
}
};
static Map<String, RuleType> s_map = new LinkedHashMap<String, RuleType>();
......
......@@ -51,8 +51,8 @@ public class RuleConfigTest {
Assert.assertNotNull(configMap);
double baseline[] = { 200, 200 };
double value[] = { 100, 100 };
double baseline[] = { 200, 350 };
double value[] = { 100, 50 };
Pair<Boolean, String> result = m_check.checkData(value, baseline, configMap.get("demo1"));
Assert.assertEquals(result.getKey().booleanValue(), true);
}
......
......@@ -9,11 +9,7 @@
<config starttime="00:00" endtime="24:00">
<condition>
<sub-condition type="DescPer">40</sub-condition>
<sub-condition type="DescPer">40</sub-condition>
</condition>
<condition>
<sub-condition type="DescVal">200</sub-condition>
<sub-condition type="FluDescPer">50</sub-condition>
</condition>
</config>
</rule>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册