func IsValidRule()

in core/hotspot/rule_manager.go [390:413]


func IsValidRule(rule *Rule) error {
	if rule == nil {
		return errors.New("nil hotspot Rule")
	}
	if len(rule.Resource) == 0 {
		return errors.New("empty resource name")
	}
	if rule.Threshold < 0 {
		return errors.New("negative threshold")
	}
	if rule.MetricType < 0 {
		return errors.New("invalid metric type")
	}
	if rule.ControlBehavior < 0 {
		return errors.New("invalid control strategy")
	}
	if rule.MetricType == QPS && rule.DurationInSec <= 0 {
		return errors.New("invalid duration")
	}
	if rule.ParamIndex > 0 && rule.ParamKey != "" {
		return errors.New("invalid param index and param key are mutually exclusive")
	}
	return checkControlBehaviorField(rule)
}