@Test public void testIsValidRule() { DegradeRule rule1 = new DegradeRule("abc"); DegradeRule rule2 = new DegradeRule("cde") .setCount(100) .setGrade(RuleConstant.DEGRADE_GRADE_RT) .setTimeWindow(-1); DegradeRule rule3 = new DegradeRule("xx") .setCount(1.1) .setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO) .setTimeWindow(2); DegradeRule rule4 = new DegradeRule("yy") .setCount(-3) .setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT) .setTimeWindow(2); assertFalse(DegradeRuleManager.isValidRule(rule1)); assertFalse(DegradeRuleManager.isValidRule(rule2)); assertFalse(DegradeRuleManager.isValidRule(rule3)); assertTrue(DegradeRuleManager.isValidRule(rule3.setCount(1.0d))); assertTrue(DegradeRuleManager.isValidRule(rule3.setCount(0.0d))); assertFalse(DegradeRuleManager.isValidRule(rule4)); }
public static boolean isValidRule(DegradeRule rule) { boolean baseValid = rule != null && !StringUtil.isBlank(rule.getResource()) && rule.getCount() >= 0 && rule.getTimeWindow() > 0; if (!baseValid) { return false; } int maxAllowedRt = Constants.TIME_DROP_VALVE; if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_RT && rule.getCount() > maxAllowedRt) { RecordLog.warn(String.format("[DegradeRuleManager] WARN: setting large RT threshold (%.1f ms) in RT mode" + " will not take effect since it exceeds the max allowed value (%d ms)", rule.getCount(), maxAllowedRt)); } if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO && rule.getCount() > 1) { return false; } return true; }
DegradeRuleManager { public static boolean isValidRule(DegradeRule rule) { boolean baseValid = rule != null && !StringUtil.isBlank(rule.getResource()) && rule.getCount() >= 0 && rule.getTimeWindow() > 0; if (!baseValid) { return false; } int maxAllowedRt = Constants.TIME_DROP_VALVE; if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_RT && rule.getCount() > maxAllowedRt) { RecordLog.warn(String.format("[DegradeRuleManager] WARN: setting large RT threshold (%.1f ms) in RT mode" + " will not take effect since it exceeds the max allowed value (%d ms)", rule.getCount(), maxAllowedRt)); } if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO && rule.getCount() > 1) { return false; } return true; } }
DegradeRuleManager { public static boolean isValidRule(DegradeRule rule) { boolean baseValid = rule != null && !StringUtil.isBlank(rule.getResource()) && rule.getCount() >= 0 && rule.getTimeWindow() > 0; if (!baseValid) { return false; } int maxAllowedRt = Constants.TIME_DROP_VALVE; if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_RT && rule.getCount() > maxAllowedRt) { RecordLog.warn(String.format("[DegradeRuleManager] WARN: setting large RT threshold (%.1f ms) in RT mode" + " will not take effect since it exceeds the max allowed value (%d ms)", rule.getCount(), maxAllowedRt)); } if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO && rule.getCount() > 1) { return false; } return true; }  }
DegradeRuleManager { public static boolean isValidRule(DegradeRule rule) { boolean baseValid = rule != null && !StringUtil.isBlank(rule.getResource()) && rule.getCount() >= 0 && rule.getTimeWindow() > 0; if (!baseValid) { return false; } int maxAllowedRt = Constants.TIME_DROP_VALVE; if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_RT && rule.getCount() > maxAllowedRt) { RecordLog.warn(String.format("[DegradeRuleManager] WARN: setting large RT threshold (%.1f ms) in RT mode" + " will not take effect since it exceeds the max allowed value (%d ms)", rule.getCount(), maxAllowedRt)); } if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO && rule.getCount() > 1) { return false; } return true; }  static void register2Property(SentinelProperty<List<DegradeRule>> property); static void checkDegrade(ResourceWrapper resource, Context context, DefaultNode node, int count); static boolean hasConfig(String resource); static List<DegradeRule> getRules(); static void loadRules(List<DegradeRule> rules); static boolean setRulesForResource(String resourceName, Set<DegradeRule> rules); static boolean isValidRule(DegradeRule rule); }
DegradeRuleManager { public static boolean isValidRule(DegradeRule rule) { boolean baseValid = rule != null && !StringUtil.isBlank(rule.getResource()) && rule.getCount() >= 0 && rule.getTimeWindow() > 0; if (!baseValid) { return false; } int maxAllowedRt = Constants.TIME_DROP_VALVE; if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_RT && rule.getCount() > maxAllowedRt) { RecordLog.warn(String.format("[DegradeRuleManager] WARN: setting large RT threshold (%.1f ms) in RT mode" + " will not take effect since it exceeds the max allowed value (%d ms)", rule.getCount(), maxAllowedRt)); } if (rule.getGrade() == RuleConstant.DEGRADE_GRADE_EXCEPTION_RATIO && rule.getCount() > 1) { return false; } return true; }  static void register2Property(SentinelProperty<List<DegradeRule>> property); static void checkDegrade(ResourceWrapper resource, Context context, DefaultNode node, int count); static boolean hasConfig(String resource); static List<DegradeRule> getRules(); static void loadRules(List<DegradeRule> rules); static boolean setRulesForResource(String resourceName, Set<DegradeRule> rules); static boolean isValidRule(DegradeRule rule);  }