Skip to content

Commit

Permalink
Merge ba34b72 into ba1b9f9
Browse files Browse the repository at this point in the history
  • Loading branch information
borovskyav committed Feb 7, 2019
2 parents ba1b9f9 + ba34b72 commit 0bdd108
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 90 deletions.
10 changes: 5 additions & 5 deletions checker/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func (triggerChecker *TriggerChecker) checkTriggerMetrics(triggerMetricsData *me

for _, metricData := range metricsDataToCheck {
triggerChecker.logger.Debugf("[TriggerID:%s] Checking metricData %s: %v", triggerChecker.triggerID, metricData.Name, metricData.Values)
triggerChecker.logger.Debugf("[TriggerID:%s][TimeSeries:%s] Checking interval: %v - %v (%vs), step: %v", triggerChecker.triggerID, metricData.Name, metricData.StartTime, metricData.StopTime, metricData.StepTime, metricData.StopTime-metricData.StartTime)
triggerChecker.logger.Debugf("[TriggerID:%s][MetricName:%s] Checking interval: %v - %v (%vs), step: %v", triggerChecker.triggerID, metricData.Name, metricData.StartTime, metricData.StopTime, metricData.StepTime, metricData.StopTime-metricData.StartTime)

metricState, needToDeleteMetric, err := triggerChecker.checkMetricData(metricData, triggerMetricsData)
if needToDeleteMetric {
Expand Down Expand Up @@ -87,7 +87,7 @@ func (triggerChecker *TriggerChecker) getMetricsToCheck(fetchedMetrics []*metric

for _, metricData := range fetchedMetrics {
if _, ok := metricNamesHash[metricData.Name]; ok {
triggerChecker.logger.Debugf("[TriggerID:%s][TimeSeries:%s] Trigger has same timeseries names", triggerChecker.triggerID, metricData.Name)
triggerChecker.logger.Debugf("[TriggerID:%s][MetricName:%s] Trigger has same metric names", triggerChecker.triggerID, metricData.Name)
duplicateNames = append(duplicateNames, metricData.Name)
continue
}
Expand Down Expand Up @@ -185,7 +185,7 @@ func (triggerChecker *TriggerChecker) checkForNoData(metricData *metricSource.Me
if metricLastState.Timestamp+triggerChecker.ttl >= lastCheckTimeStamp {
return false, nil
}
triggerChecker.logger.Debugf("[TriggerID:%s][TimeSeries:%s] Metric TTL expired for state %v", triggerChecker.triggerID, metricData.Name, metricLastState)
triggerChecker.logger.Debugf("[TriggerID:%s][MetricName:%s] Metric TTL expired for state %v", triggerChecker.triggerID, metricData.Name, metricLastState)
if triggerChecker.ttlState == DEL && metricLastState.EventTimestamp != 0 {
return true, nil
}
Expand All @@ -203,7 +203,7 @@ func (triggerChecker *TriggerChecker) getMetricStepsStates(triggerMetricsData *m
stepTime := metricData.StepTime

checkPoint := metricLastState.GetCheckPoint(checkPointGap)
triggerChecker.logger.Debugf("[TriggerID:%s][TimeSeries:%s] Checkpoint: %v", triggerChecker.triggerID, metricData.Name, checkPoint)
triggerChecker.logger.Debugf("[TriggerID:%s][MetricName:%s] Checkpoint: %v", triggerChecker.triggerID, metricData.Name, checkPoint)

metricStates := make([]moira.MetricState, 0)

Expand All @@ -229,7 +229,7 @@ func (triggerChecker *TriggerChecker) getMetricDataState(triggerMetricsData *met
if !noEmptyValues {
return nil, nil
}
triggerChecker.logger.Debugf("[TriggerID:%s][TimeSeries:%s] Values for ts %v: MainTargetValue: %v, additionalTargetValues: %v", triggerChecker.triggerID, metricData.Name, valueTimestamp, triggerExpression.MainTargetValue, triggerExpression.AdditionalTargetsValues)
triggerChecker.logger.Debugf("[TriggerID:%s][MetricName:%s] Values for ts %v: MainTargetValue: %v, additionalTargetValues: %v", triggerChecker.triggerID, metricData.Name, valueTimestamp, triggerExpression.MainTargetValue, triggerExpression.AdditionalTargetsValues)

triggerExpression.WarnValue = triggerChecker.trigger.WarnValue
triggerExpression.ErrorValue = triggerChecker.trigger.ErrorValue
Expand Down
150 changes: 75 additions & 75 deletions checker/check_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
"github.com/moira-alert/moira/mock/moira-alert"
)

func TestGetTimeSeriesState(t *testing.T) {
func TestGetMetricDataState(t *testing.T) {
logger, _ := logging.GetLogger("Test")
var warnValue float64 = 10
var errValue float64 = 20
Expand Down Expand Up @@ -78,19 +78,19 @@ func TestGetTimeSeriesState(t *testing.T) {
})
})

Convey("No value in main timeSeries by eventTimestamp step", func() {
Convey("No value in main metric data by eventTimestamp step", func() {
metricState, err := triggerChecker.getMetricDataState(tts, tts.Main[0], metricLastState, 66, 11)
So(err, ShouldBeNil)
So(metricState, ShouldBeNil)
})

Convey("IsAbsent in main timeSeries by eventTimestamp step", func() {
Convey("IsAbsent in main metric data by eventTimestamp step", func() {
metricState, err := triggerChecker.getMetricDataState(tts, tts.Main[0], metricLastState, 29, 11)
So(err, ShouldBeNil)
So(metricState, ShouldBeNil)
})

Convey("No value in additional timeSeries by eventTimestamp step", func() {
Convey("No value in additional metric data by eventTimestamp step", func() {
metricState, err := triggerChecker.getMetricDataState(tts, tts.Main[0], metricLastState, 26, 11)
So(err, ShouldBeNil)
So(metricState, ShouldBeNil)
Expand Down Expand Up @@ -192,7 +192,7 @@ func TestGetMetricsDataToCheck(t *testing.T) {
})
}

func TestGetTimeSeriesStepsStates(t *testing.T) {
func TestGetMetricStepsStates(t *testing.T) {
logger, _ := logging.GetLogger("Test")
logging.SetLevel(logging.INFO, "Test")
var warnValue float64 = 10
Expand Down Expand Up @@ -284,15 +284,15 @@ func TestGetTimeSeriesStepsStates(t *testing.T) {
EventTimestamp: 0,
}

Convey("ValueTimestamp covers all TimeSeries range", t, func() {
Convey("ValueTimestamp covers all metric range", t, func() {
metricLastState.EventTimestamp = 11
Convey("TimeSeries has all valid values", func() {
Convey("Metric has all valid values", func() {
metricStates, err := triggerChecker.getMetricStepsStates(tts, tts.Main[1], metricLastState)
So(err, ShouldBeNil)
So(metricStates, ShouldResemble, []moira.MetricState{metricsState1, metricsState2, metricsState3, metricsState4, metricsState5})
})

Convey("TimeSeries has invalid values", func() {
Convey("Metric has invalid values", func() {
metricStates, err := triggerChecker.getMetricStepsStates(tts, tts.Main[0], metricLastState)
So(err, ShouldBeNil)
So(metricStates, ShouldResemble, []moira.MetricState{metricsState1, metricsState3, metricsState4})
Expand All @@ -308,7 +308,7 @@ func TestGetTimeSeriesStepsStates(t *testing.T) {

triggerChecker.until = 67

Convey("ValueTimestamp don't covers begin of TimeSeries", t, func() {
Convey("ValueTimestamp don't covers begin of metric data", t, func() {
Convey("Exclude 1 first element", func() {
metricLastState.EventTimestamp = 22
metricStates, err := triggerChecker.getMetricStepsStates(tts, tts.Main[1], metricLastState)
Expand Down Expand Up @@ -491,7 +491,7 @@ func TestCheckErrors(t *testing.T) {
},
}

Convey("GetTimeSeries error", t, func() {
Convey("Fetch error", t, func() {
lastCheck := moira.CheckData{
Metrics: triggerChecker.lastCheck.Metrics,
State: OK,
Expand Down Expand Up @@ -520,12 +520,12 @@ func TestCheckErrors(t *testing.T) {
}

lastCheck := moira.CheckData{
Metrics: triggerChecker.lastCheck.Metrics,
State: EXCEPTION,
Timestamp: triggerChecker.until,
EventTimestamp: triggerChecker.until,
Score: 100000,
Message: messageException,
Metrics: triggerChecker.lastCheck.Metrics,
State: EXCEPTION,
Timestamp: triggerChecker.until,
EventTimestamp: triggerChecker.until,
Score: 100000,
Message: messageException,
LastSuccessfulCheckTimestamp: 0,
}

Expand Down Expand Up @@ -564,11 +564,11 @@ func TestCheckErrors(t *testing.T) {
}

lastCheck := moira.CheckData{
Metrics: eventMetrics,
State: OK,
Timestamp: triggerChecker.until,
EventTimestamp: triggerChecker.until,
Score: 0,
Metrics: eventMetrics,
State: OK,
Timestamp: triggerChecker.until,
EventTimestamp: triggerChecker.until,
Score: 0,
LastSuccessfulCheckTimestamp: triggerChecker.until,
}

Expand Down Expand Up @@ -807,31 +807,31 @@ func TestHandleTrigger(t *testing.T) {
checkData, err := triggerChecker.checkTrigger()
So(err, ShouldResemble, ErrTriggerHasOnlyWildcards{})
So(checkData, ShouldResemble, moira.CheckData{
Metrics: lastCheck.Metrics,
Timestamp: triggerChecker.until,
State: OK,
Score: 0,
Metrics: lastCheck.Metrics,
Timestamp: triggerChecker.until,
State: OK,
Score: 0,
LastSuccessfulCheckTimestamp: 0,
})
})

Convey("No metrics in main target, should return trigger has no timeseries", t, func() {
Convey("No metrics in main target, should return trigger has no metric data", t, func() {
source.EXPECT().Fetch(pattern, triggerChecker.from, triggerChecker.until, true).Return(fetchResult, nil)
fetchResult.EXPECT().GetMetricsData().Return([]*metricSource.MetricData{})
fetchResult.EXPECT().GetPatternMetrics().Return([]string{}, nil)

checkData, err := triggerChecker.checkTrigger()
So(err, ShouldResemble, ErrTriggerHasNoMetrics{})
So(checkData, ShouldResemble, moira.CheckData{
Metrics: lastCheck.Metrics,
Timestamp: triggerChecker.until,
State: OK,
Score: 0,
Metrics: lastCheck.Metrics,
Timestamp: triggerChecker.until,
State: OK,
Score: 0,
LastSuccessfulCheckTimestamp: 0,
})
})

Convey("Has duplicated names timeseries, should return trigger has same timeseries names error", t, func() {
Convey("Has duplicated metric names, should return trigger has same metric names error", t, func() {
metric1 := "super.puper.metric"
metric2 := "super.drupper.metric"
pattern1 := "super.*.metric"
Expand Down Expand Up @@ -908,10 +908,10 @@ func TestHandleTrigger(t *testing.T) {
checkData, err := triggerChecker.checkTrigger()
So(err, ShouldBeNil)
So(checkData, ShouldResemble, moira.CheckData{
Metrics: make(map[string]moira.MetricState),
Timestamp: triggerChecker.until,
State: OK,
Score: 0,
Metrics: make(map[string]moira.MetricState),
Timestamp: triggerChecker.until,
State: OK,
Score: 0,
LastSuccessfulCheckTimestamp: 0,
})
})
Expand Down Expand Up @@ -965,9 +965,9 @@ func TestHandleTriggerCheck(t *testing.T) {
},
}
checkData := moira.CheckData{
State: NODATA,
Timestamp: time.Now().Unix(),
Message: "Trigger has no metrics, check your target",
State: NODATA,
Timestamp: time.Now().Unix(),
Message: "Trigger has no metrics, check your target",
LastSuccessfulCheckTimestamp: time.Now().Unix(),
}
actual, err := triggerChecker.handleCheckResult(checkData, ErrTriggerHasNoMetrics{})
Expand All @@ -984,8 +984,8 @@ func TestHandleTriggerCheck(t *testing.T) {
trigger: &moira.Trigger{TriggerType: moira.RisingTrigger},
ttlState: NODATA,
lastCheck: &moira.CheckData{
Timestamp: 0,
State: NODATA,
Timestamp: 0,
State: NODATA,
LastSuccessfulCheckTimestamp: 0,
},
}
Expand All @@ -1006,10 +1006,10 @@ func TestHandleTriggerCheck(t *testing.T) {
dataBase.EXPECT().PushNotificationEvent(event, true).Return(nil)
actual, err := triggerChecker.handleCheckResult(checkData, ErrTriggerHasNoMetrics{})
expected := moira.CheckData{
State: NODATA,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger has no metrics, check your target",
State: NODATA,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger has no metrics, check your target",
LastSuccessfulCheckTimestamp: 0,
}
So(err, ShouldBeNil)
Expand All @@ -1026,8 +1026,8 @@ func TestHandleTriggerCheck(t *testing.T) {
trigger: &moira.Trigger{TriggerType: moira.RisingTrigger},
ttlState: ERROR,
lastCheck: &moira.CheckData{
Timestamp: time.Now().Unix(),
State: OK,
Timestamp: time.Now().Unix(),
State: OK,
LastSuccessfulCheckTimestamp: time.Now().Unix(),
},
}
Expand All @@ -1039,10 +1039,10 @@ func TestHandleTriggerCheck(t *testing.T) {
dataBase.EXPECT().PushNotificationEvent(gomock.Any(), true).Return(nil)
actual, err := triggerChecker.handleCheckResult(checkData, ErrTriggerHasOnlyWildcards{})
expected := moira.CheckData{
State: ERROR,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger never received metrics",
State: ERROR,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger never received metrics",
LastSuccessfulCheckTimestamp: 0,
}
So(err, ShouldBeNil)
Expand All @@ -1058,8 +1058,8 @@ func TestHandleTriggerCheck(t *testing.T) {
trigger: &moira.Trigger{TriggerType: moira.RisingTrigger},
ttlState: NODATA,
lastCheck: &moira.CheckData{
Timestamp: time.Now().Unix(),
State: OK,
Timestamp: time.Now().Unix(),
State: OK,
LastSuccessfulCheckTimestamp: time.Now().Unix(),
},
}
Expand Down Expand Up @@ -1093,8 +1093,8 @@ func TestHandleTriggerCheck(t *testing.T) {
trigger: &moira.Trigger{TriggerType: moira.RisingTrigger},
ttlState: OK,
lastCheck: &moira.CheckData{
Timestamp: time.Now().Unix(),
State: OK,
Timestamp: time.Now().Unix(),
State: OK,
LastSuccessfulCheckTimestamp: 0,
},
}
Expand All @@ -1107,11 +1107,11 @@ func TestHandleTriggerCheck(t *testing.T) {

actual, err := triggerChecker.handleCheckResult(checkData, ErrTriggerHasOnlyWildcards{})
expected := moira.CheckData{
Metrics: checkData.Metrics,
State: OK,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger never received metrics",
Metrics: checkData.Metrics,
State: OK,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger never received metrics",
LastSuccessfulCheckTimestamp: 0,
}
So(err, ShouldBeNil)
Expand Down Expand Up @@ -1160,8 +1160,8 @@ func TestHandleTriggerCheck(t *testing.T) {
trigger: &moira.Trigger{TriggerType: moira.RisingTrigger},
ttlState: NODATA,
lastCheck: &moira.CheckData{
Timestamp: time.Now().Unix(),
State: OK,
Timestamp: time.Now().Unix(),
State: OK,
LastSuccessfulCheckTimestamp: 0,
},
}
Expand All @@ -1174,17 +1174,17 @@ func TestHandleTriggerCheck(t *testing.T) {

actual, err := triggerChecker.handleCheckResult(checkData, local.ErrUnknownFunction{FuncName: "123"})
expected := moira.CheckData{
State: EXCEPTION,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Unknown graphite function: \"123\"",
State: EXCEPTION,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Unknown graphite function: \"123\"",
LastSuccessfulCheckTimestamp: 0,
}
So(err, ShouldBeNil)
So(actual, ShouldResemble, expected)
})

Convey("Handle trigger has same timeseries names", t, func() {
Convey("Handle trigger has same metric names", t, func() {
triggerChecker := TriggerChecker{
triggerID: "SuperId",
database: dataBase,
Expand All @@ -1206,10 +1206,10 @@ func TestHandleTriggerCheck(t *testing.T) {

actual, err := triggerChecker.handleCheckResult(checkData, ErrTriggerHasSameMetricNames{names: []string{"first", "second"}})
expected := moira.CheckData{
State: ERROR,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger has same timeseries names: first, second",
State: ERROR,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Trigger has same metric names: first, second",
LastSuccessfulCheckTimestamp: 0,
}
So(err, ShouldBeNil)
Expand Down Expand Up @@ -1268,7 +1268,7 @@ func TestHandleTriggerCheck(t *testing.T) {
})
})

Convey("Handle additional trigger target has more than one timeseries", t, func() {
Convey("Handle additional trigger target has more than one metric data", t, func() {
triggerChecker := TriggerChecker{
triggerID: "SuperId",
database: dataBase,
Expand All @@ -1293,10 +1293,10 @@ func TestHandleTriggerCheck(t *testing.T) {

actual, err := triggerChecker.handleCheckResult(checkData, ErrWrongTriggerTargets([]int{2}))
expected := moira.CheckData{
State: ERROR,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Target t2 has more than one timeseries",
State: ERROR,
Timestamp: checkData.Timestamp,
EventTimestamp: checkData.Timestamp,
Message: "Target t2 has more than one metric",
LastSuccessfulCheckTimestamp: 0,
}
So(err, ShouldBeNil)
Expand Down

0 comments on commit 0bdd108

Please sign in to comment.