(cycle int, trigger *types.Trigger)
| 413 | } |
| 414 | |
| 415 | func avgMethod(cycle int, trigger *types.Trigger) (*types.TriggerResultSet, error) { |
| 416 | trigger_result_set := &types.TriggerResultSet{TriggerResults: make([]*types.TriggerResult, 0), Triggered: false} |
| 417 | |
| 418 | results, err := tsdbClient.Query(fmt.Sprintf("%d", cycle), "", trigger.Tags, "sum", trigger.Metric, true) |
| 419 | if err != nil { |
| 420 | return nil, err |
| 421 | } |
| 422 | |
| 423 | for _, result := range results { |
| 424 | if len(result.Dps) == 0 { |
| 425 | continue |
| 426 | } |
| 427 | |
| 428 | parameters := make(map[string]interface{}, 8) |
| 429 | current_threshold := avg(result.Dps) |
| 430 | parameters["current_threshold"] = current_threshold |
| 431 | parameters["threshold"] = trigger.Threshold |
| 432 | expression := fmt.Sprintf("current_threshold %s threshold", trigger.Symbol) |
| 433 | trigger_result, err := compute(parameters, expression) |
| 434 | if err != nil { |
| 435 | return trigger_result_set, err |
| 436 | } |
| 437 | |
| 438 | if !trigger_result_set.Triggered && trigger_result { |
| 439 | trigger_result_set.Triggered = trigger_result |
| 440 | } |
| 441 | |
| 442 | trigger_result_set.TriggerResults = append(trigger_result_set.TriggerResults, types.NewTriggerResult(trigger.Index, result.Tags, result.AggregateTags, current_threshold, trigger_result)) |
| 443 | } |
| 444 | |
| 445 | return trigger_result_set, nil |
| 446 | } |
| 447 | |
| 448 | func compute(params map[string]interface{}, express string) (bool, error) { |
| 449 | expression, err := govaluate.NewEvaluableExpression(express) |
no test coverage detected