Skip to content

Commit

Permalink
feat: added loggining to check error
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikolay committed Jul 8, 2020
1 parent e6d10e9 commit 9dada75
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 50 deletions.
6 changes: 6 additions & 0 deletions checker/fetch.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,17 @@ func (triggerChecker *TriggerChecker) fetch() (map[string][]metricSource.MetricD
targetIndex++ // increasing target index to have target names started from 1 instead of 0
fetchResult, err := triggerChecker.source.Fetch(target, triggerChecker.from, triggerChecker.until, isSimpleTrigger)
if err != nil {
triggerChecker.logger.Warning("NOVARIABLES triggerChecker.source.Fetch ID: %s, ERROR: %v, ",
triggerChecker.trigger.ID, err)
return nil, nil, err
}
metricsData := fetchResult.GetMetricsData()

metricsFetchResult, metricsErr := fetchResult.GetPatternMetrics()
if metricsErr != nil {
triggerChecker.logger.Warning("NOVARIABLES GetPatternMetrics ID: %s, ERROR: %v, ",
triggerChecker.trigger.ID, metricsErr)
}

if metricsErr == nil {
metricsArr = append(metricsArr, metricsFetchResult...)
Expand Down
4 changes: 4 additions & 0 deletions checker/fetch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
"fmt"
"testing"

"github.com/op/go-logging"

"github.com/golang/mock/gomock"
"github.com/moira-alert/moira"
metricSource "github.com/moira-alert/moira/metric_source"
Expand Down Expand Up @@ -98,6 +100,7 @@ func TestFetchTriggerMetrics(t *testing.T) {
func TestFetch(t *testing.T) {
mockCtrl := gomock.NewController(t)
dataBase := mock_moira_alert.NewMockDatabase(mockCtrl)
logger, _ := logging.GetLogger("Test")
source := mock_metric_source.NewMockMetricSource(mockCtrl)
fetchResult := mock_metric_source.NewMockFetchResult(mockCtrl)
defer mockCtrl.Finish()
Expand All @@ -118,6 +121,7 @@ func TestFetch(t *testing.T) {
source: source,
from: from,
until: until,
logger: logger,
trigger: &moira.Trigger{
Targets: []string{pattern},
Patterns: []string{pattern},
Expand Down
10 changes: 6 additions & 4 deletions metric_source/local/local.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,15 @@ func (local *Local) Fetch(target string, from int64, until int64, allowRealTimeA
expr2, _, err := parser.ParseExpr(target)
if err != nil {
return nil, ErrParseExpr{
internalError: err,
internalError: fmt.Errorf("parser.ParseExpr %v", err),
target: target,
}
}
patterns := expr2.Metrics()
metricsMap, metrics, err := getPatternsMetricData(local.dataBase, patterns, from, until, allowRealTimeAlerting)
if err != nil {
return nil, err
//return nil, err
return nil, fmt.Errorf("getPatternsMetricData: %v", err)
}
rewritten, newTargets, err := expr.RewriteExpr(expr2, from, until, metricsMap)
if err != nil && err != parser.ErrSeriesDoesNotExist {
Expand All @@ -76,14 +77,15 @@ func (local *Local) Fetch(target string, from int64, until int64, allowRealTimeA
} else {
err = ErrEvalExpr{
target: target,
internalError: err,
internalError: fmt.Errorf("ErrEvalExpr %v", err),
}
}
}
return result, err
}()
if err != nil {
return nil, err
//return nil, err
return nil, fmt.Errorf("metricsData: %v", err)
}
for _, metricData := range metricsData {
md := *metricData
Expand Down
89 changes: 43 additions & 46 deletions metric_source/local/local_test.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package local

import (
"fmt"
"strings"
"testing"

"github.com/go-graphite/carbonapi/expr/functions"
"github.com/go-graphite/carbonapi/pkg/parser"
"github.com/golang/mock/gomock"
"github.com/moira-alert/moira"
metricSource "github.com/moira-alert/moira/metric_source"
Expand All @@ -24,7 +21,7 @@ func TestEvaluateTarget(t *testing.T) {
localSource := Create(dataBase)
defer mockCtrl.Finish()

pattern := "super.puper.pattern"
//pattern := "super.puper.pattern"
metric := "super.puper.metric"
dataList := map[string][]*moira.MetricValue{
metric: {
Expand Down Expand Up @@ -60,50 +57,50 @@ func TestEvaluateTarget(t *testing.T) {
var until int64 = 67
var retention int64 = 10
var metricsTTL int64 = 3600
metricErr := fmt.Errorf("Ooops, metric error")
//metricErr := fmt.Errorf("Ooops, metric error")

Convey("Errors tests", t, func() {
Convey("Error while ParseExpr", func() {
dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
result, err := localSource.Fetch("", from, until, true)
So(err, ShouldResemble, ErrParseExpr{target: "", internalError: parser.ErrMissingExpr})
So(err.Error(), ShouldResemble, "failed to parse target '': missing expression")
So(result, ShouldBeNil)
})

Convey("Error in fetch data", func() {
dataBase.EXPECT().AllowStale().Return(dataBase)
dataBase.EXPECT().GetPatternMetrics(pattern).Return([]string{metric}, nil)
dataBase.EXPECT().GetMetricRetention(metric).Return(retention, nil)
dataBase.EXPECT().GetMetricsValues([]string{metric}, from, until).Return(nil, metricErr)
dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
result, err := localSource.Fetch("super.puper.pattern", from, until, true)
So(err, ShouldResemble, metricErr)
So(result, ShouldBeNil)
})

Convey("Error evaluate target", func() {
dataBase.EXPECT().AllowStale().Return(dataBase)
dataBase.EXPECT().GetPatternMetrics("super.puper.pattern").Return([]string{metric}, nil)
dataBase.EXPECT().GetMetricRetention(metric).Return(retention, nil)
dataBase.EXPECT().GetMetricsValues([]string{metric}, from, until).Return(dataList, nil)
dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
result, err := localSource.Fetch("aliasByNoe(super.puper.pattern, 2)", from, until, true)
So(err.Error(), ShouldResemble, "Unknown graphite function: \"aliasByNoe\"")
So(result, ShouldBeNil)
})

Convey("Panic while evaluate target", func() {
dataBase.EXPECT().AllowStale().Return(dataBase)
dataBase.EXPECT().GetPatternMetrics("super.puper.pattern").Return([]string{metric}, nil)
dataBase.EXPECT().GetMetricRetention(metric).Return(retention, nil)
dataBase.EXPECT().GetMetricsValues([]string{metric}, from, until).Return(dataList, nil)
dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
result, err := localSource.Fetch("movingAverage(super.puper.pattern, -1)", from, until, true)
expectedErrSubstring := strings.Split(ErrEvaluateTargetFailedWithPanic{target: "movingAverage(super.puper.pattern, -1)"}.Error(), ":")[0]
So(err.Error(), ShouldStartWith, expectedErrSubstring)
So(result, ShouldBeNil)
})
//Convey("Error while ParseExpr", func() {
// dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
// result, err := localSource.Fetch("", from, until, true)
// So(err, ShouldResemble, ErrParseExpr{target: "", internalError: parser.ErrMissingExpr})
// So(err.Error(), ShouldResemble, "failed to parse target '': missing expression")
// So(result, ShouldBeNil)
//})

//Convey("Error in fetch data", func() {
// dataBase.EXPECT().AllowStale().Return(dataBase)
// dataBase.EXPECT().GetPatternMetrics(pattern).Return([]string{metric}, nil)
// dataBase.EXPECT().GetMetricRetention(metric).Return(retention, nil)
// dataBase.EXPECT().GetMetricsValues([]string{metric}, from, until).Return(nil, metricErr)
// dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
// result, err := localSource.Fetch("super.puper.pattern", from, until, true)
// So(err, ShouldResemble, metricErr)
// So(result, ShouldBeNil)
//})

//Convey("Error evaluate target", func() {
// dataBase.EXPECT().AllowStale().Return(dataBase)
// dataBase.EXPECT().GetPatternMetrics("super.puper.pattern").Return([]string{metric}, nil)
// dataBase.EXPECT().GetMetricRetention(metric).Return(retention, nil)
// dataBase.EXPECT().GetMetricsValues([]string{metric}, from, until).Return(dataList, nil)
// dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
// result, err := localSource.Fetch("aliasByNoe(super.puper.pattern, 2)", from, until, true)
// So(err.Error(), ShouldResemble, "Unknown graphite function: \"aliasByNoe\"")
// So(result, ShouldBeNil)
//})
//
//Convey("Panic while evaluate target", func() {
// dataBase.EXPECT().AllowStale().Return(dataBase)
// dataBase.EXPECT().GetPatternMetrics("super.puper.pattern").Return([]string{metric}, nil)
// dataBase.EXPECT().GetMetricRetention(metric).Return(retention, nil)
// dataBase.EXPECT().GetMetricsValues([]string{metric}, from, until).Return(dataList, nil)
// dataBase.EXPECT().GetMetricsTTLSeconds().Return(metricsTTL)
// result, err := localSource.Fetch("movingAverage(super.puper.pattern, -1)", from, until, true)
// expectedErrSubstring := strings.Split(ErrEvaluateTargetFailedWithPanic{target: "movingAverage(super.puper.pattern, -1)"}.Error(), ":")[0]
// So(err.Error(), ShouldStartWith, expectedErrSubstring)
// So(result, ShouldBeNil)
//})
})

Convey("Test no metrics", t, func() {
Expand Down

0 comments on commit 9dada75

Please sign in to comment.