func ParseConstraint()

in tester/constraint.go [105:139]


func ParseConstraint(s string, parsers ...MetricParser) (*Constraint, error) {
	if !constraintRegexp.MatchString(s) {
		return nil, ErrInvalidFormat
	}

	match := constraintRegexp.FindStringSubmatchMap(s)

	aggregator, err := ParseAggregator(match["aggregator"])
	if err != nil {
		return nil, err
	}

	metric, err := parseMetric(match["metric"], parsers...)
	if err != nil {
		return nil, err
	}

	comparator, err := ParseComparator(match["comparator"])
	if err != nil {
		return nil, err
	}

	threshold, err := strconv.ParseFloat(match["threshold"], 64)
	if err != nil {
		//nolint:wrapcheck
		return nil, err
	}

	return &Constraint{
		Metric:     metric,
		Aggregator: aggregator,
		Comparator: comparator,
		Threshold:  threshold,
	}, nil
}