Skip to content

Commit

Permalink
Dont update checks count when save trigger last check not in checker (m…
Browse files Browse the repository at this point in the history
…oira-alert#146)

* go get govendor with update flag

* Add DBSource to DbConnector struct and NewDatabase method.

* Update selfStateCheckCountKey if database source only checker

* SelfState update test
  • Loading branch information
borovskyav authored Dec 20, 2018
1 parent 641649b commit 9fada5f
Show file tree
Hide file tree
Showing 27 changed files with 118 additions and 59 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ default: test build

.PHONY: prepare
prepare:
go get github.com/kardianos/govendor
go get -u github.com/kardianos/govendor
govendor sync

.PHONY: lint
Expand Down
2 changes: 1 addition & 1 deletion cmd/api/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func main() {
}

databaseSettings := config.Redis.GetSettings()
database := redis.NewDatabase(logger, databaseSettings)
database := redis.NewDatabase(logger, databaseSettings, redis.API)

graphiteSettings := config.Graphite.GetSettings()
if err = metrics.Init(graphiteSettings, serviceName); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion cmd/checker/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func main() {
}

databaseSettings := config.Redis.GetSettings()
database := redis.NewDatabase(logger, databaseSettings)
database := redis.NewDatabase(logger, databaseSettings, redis.Checker)

remoteSettings := config.Remote.GetSettings()
checkerMetrics := metrics.ConfigureCheckerMetrics(serviceName, remoteSettings.IsEnabled())
Expand Down
2 changes: 1 addition & 1 deletion cmd/cli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func initApp() (moira.Logger, moira.Database) {
}

databaseSettings := config.Redis.GetSettings()
dataBase := redis.NewDatabase(logger, databaseSettings)
dataBase := redis.NewDatabase(logger, databaseSettings, redis.Cli)
return logger, dataBase
}

Expand Down
2 changes: 1 addition & 1 deletion cmd/filter/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func main() {
logger.Error(err)
}

database := redis.NewDatabase(logger, config.Redis.GetSettings())
database := redis.NewDatabase(logger, config.Redis.GetSettings(), redis.Filter)

retentionConfigFile, err := os.Open(config.Filter.RetentionConfig)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion cmd/notifier/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func main() {
}

databaseSettings := config.Redis.GetSettings()
database := redis.NewDatabase(logger, databaseSettings)
database := redis.NewDatabase(logger, databaseSettings, redis.Notifier)

// configure carbon-api functions
functions.New(make(map[string]string))
Expand Down
9 changes: 5 additions & 4 deletions database/redis/bot_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ import (
. "github.com/smartystreets/goconvey/convey"

"fmt"
"time"

"github.com/moira-alert/moira/database"
"github.com/moira-alert/moira/logging/go-logging"
"time"
)

//func TestRenewBot(t *testing.T) {
// logger, _ := logging.ConfigureLog("stdout", "info", "test")
// dataBase := NewDatabase(logger, config)
// dataBase := newTestDatabase(logger, config)
// dataBase.flush()
// //defer dataBase.flush()
//
Expand Down Expand Up @@ -65,7 +66,7 @@ import (

func TestBotDataStoring(t *testing.T) {
logger, _ := logging.ConfigureLog("stdout", "info", "test")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()

Expand Down Expand Up @@ -212,7 +213,7 @@ func TestBotDataStoring(t *testing.T) {

func TestBotDataStoringErrorConnection(t *testing.T) {
logger, _ := logging.ConfigureLog("stdout", "info", "test")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()
Convey("Should throw error when no connection", t, func() {
Expand Down
10 changes: 8 additions & 2 deletions database/redis/contact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,16 @@ var user2 = "user2"

var config = Config{Port: "6379", Host: "localhost"}
var emptyConfig = Config{}
var testSource = DBSource("test")

// use it only for tests
func newTestDatabase(logger moira.Logger, config Config) *DbConnector {
return NewDatabase(logger, config, testSource)
}

func TestContacts(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()

Expand Down Expand Up @@ -268,7 +274,7 @@ func TestContacts(t *testing.T) {

func TestErrorConnection(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()

Expand Down
16 changes: 15 additions & 1 deletion database/redis/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@ const (
receiveErrorSleepDuration = time.Second
)

// DBSource is type for describing who create database instance
type DBSource string

// All types of database instances users
const (
API DBSource = "API"
Checker DBSource = "Checker"
Filter DBSource = "Filter"
Notifier DBSource = "Notifier"
Cli DBSource = "Cli"
)

// DbConnector contains redis pool
type DbConnector struct {
pool *redis.Pool
Expand All @@ -36,10 +48,11 @@ type DbConnector struct {
servicesCache *cache.Cache
messengersCache *cache.Cache
sync *redsync.Redsync
source DBSource
}

// NewDatabase creates Redis pool based on config
func NewDatabase(logger moira.Logger, config Config) *DbConnector {
func NewDatabase(logger moira.Logger, config Config, source DBSource) *DbConnector {
pool := newRedisPool(logger, config)
return &DbConnector{
pool: pool,
Expand All @@ -50,6 +63,7 @@ func NewDatabase(logger moira.Logger, config Config) *DbConnector {
servicesCache: cache.New(cacheValueExpirationDuration, cacheCleanupInterval),
messengersCache: cache.New(cache.NoExpiration, cache.DefaultExpiration),
sync: redsync.New([]redsync.Pool{pool}),
source: source,
}
}

Expand Down
2 changes: 1 addition & 1 deletion database/redis/database_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
func TestInitialization(t *testing.T) {
Convey("Initialization methods", t, func() {
logger, _ := logging.ConfigureLog("stdout", "info", "test")
database := NewDatabase(logger, emptyConfig)
database := newTestDatabase(logger, emptyConfig)
So(database, ShouldNotBeEmpty)
_, err := database.pool.Dial()
So(err, ShouldNotBeNil)
Expand Down
22 changes: 14 additions & 8 deletions database/redis/last_check.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,7 @@ func (connector *DbConnector) GetTriggerLastCheck(triggerID string) (moira.Check

// SetTriggerLastCheck sets trigger last check data
func (connector *DbConnector) SetTriggerLastCheck(triggerID string, checkData *moira.CheckData, isRemote bool) error {
if isRemote {
return connector.setTriggerLastCheckAndUpdateProperCounter(triggerID, checkData, selfStateRemoteChecksCounterKey)
}
return connector.setTriggerLastCheckAndUpdateProperCounter(triggerID, checkData, selfStateChecksCounterKey)
}

func (connector *DbConnector) setTriggerLastCheckAndUpdateProperCounter(triggerID string, checkData *moira.CheckData, selfStateCheckCountKey string) error {
selfStateCheckCountKey := connector.getSelfStateCheckCountKey(isRemote)
bytes, err := json.Marshal(checkData)
if err != nil {
return err
Expand All @@ -40,7 +34,9 @@ func (connector *DbConnector) setTriggerLastCheckAndUpdateProperCounter(triggerI
c.Send("MULTI")
c.Send("SET", metricLastCheckKey(triggerID), bytes)
c.Send("ZADD", triggersChecksKey, checkData.Score, triggerID)
c.Send("INCR", selfStateCheckCountKey)
if selfStateCheckCountKey != "" {
c.Send("INCR", selfStateCheckCountKey)
}
if checkData.Score > 0 {
c.Send("SADD", badStateTriggersKey, triggerID)
} else {
Expand All @@ -56,6 +52,16 @@ func (connector *DbConnector) setTriggerLastCheckAndUpdateProperCounter(triggerI
return nil
}

func (connector *DbConnector) getSelfStateCheckCountKey(isRemote bool) string {
if connector.source != Checker {
return ""
}
if isRemote {
return selfStateRemoteChecksCounterKey
}
return selfStateChecksCounterKey
}

// RemoveTriggerLastCheck removes trigger last check data
func (connector *DbConnector) RemoveTriggerLastCheck(triggerID string) error {
c := connector.pool.Get()
Expand Down
6 changes: 3 additions & 3 deletions database/redis/last_check_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func TestLastCheck(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()
var triggerMaintenanceTS int64
Expand Down Expand Up @@ -286,7 +286,7 @@ func TestLastCheck(t *testing.T) {

func TestRemoteLastCheck(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()

Expand Down Expand Up @@ -392,7 +392,7 @@ func TestRemoteLastCheck(t *testing.T) {

func TestLastCheckErrorConnection(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()
Convey("Should throw error when no connection", t, func() {
Expand Down
4 changes: 2 additions & 2 deletions database/redis/lock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

func TestLock(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()
Convey("Test lock manipulation", t, func() {
Expand Down Expand Up @@ -45,7 +45,7 @@ func TestLock(t *testing.T) {

func TestLockErrorConnection(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()
Convey("Should throw error when no connection", t, func() {
Expand Down
8 changes: 4 additions & 4 deletions database/redis/metric_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func TestMetricsStoring(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
metric1 := "my.test.super.metric"
metric2 := "my.test.super.metric2"
Expand Down Expand Up @@ -185,7 +185,7 @@ func TestMetricsStoring(t *testing.T) {

func TestRemoveMetricValues(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.metricsCache = cache.New(time.Second*2, time.Minute*60)
dataBase.flush()
defer dataBase.flush()
Expand Down Expand Up @@ -337,7 +337,7 @@ func TestRemoveMetricValues(t *testing.T) {

func TestMetricSubscription(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()
metric1 := "my.test.super.metric"
Expand Down Expand Up @@ -402,7 +402,7 @@ func TestMetricSubscription(t *testing.T) {

func TestMetricsStoringErrorConnection(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()
Convey("Should throw error when no connection", t, func() {
Expand Down
2 changes: 1 addition & 1 deletion database/redis/nodata_checker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

func TestRenewNodataCheckerRegistration(t *testing.T) {
logger, _ := logging.ConfigureLog("stdout", "info", "test")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()

Expand Down
7 changes: 4 additions & 3 deletions database/redis/notification_event_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ import (
"github.com/satori/go.uuid"
. "github.com/smartystreets/goconvey/convey"

"time"

"github.com/moira-alert/moira"
"github.com/moira-alert/moira/database"
"time"
)

func TestNotificationEvents(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()

Expand Down Expand Up @@ -173,7 +174,7 @@ func TestNotificationEvents(t *testing.T) {

func TestNotificationEventErrorConnection(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()

Expand Down
4 changes: 2 additions & 2 deletions database/redis/notification_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func TestScheduledNotification(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()

Expand Down Expand Up @@ -172,7 +172,7 @@ func addNotifications(dataBase moira.Database, notifications []moira.ScheduledNo

func TestScheduledNotificationErrorConnection(t *testing.T) {
logger, _ := logging.GetLogger("dataBase")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()

Expand Down
4 changes: 2 additions & 2 deletions database/redis/remote_triggers_to_check_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (

func TestRemoteTriggerToCheck(t *testing.T) {
logger, _ := logging.ConfigureLog("stdout", "info", "test")
dataBase := NewDatabase(logger, config)
dataBase := newTestDatabase(logger, config)
dataBase.flush()
defer dataBase.flush()
Convey("Trigger to check get and add", t, func() {
Expand Down Expand Up @@ -95,7 +95,7 @@ func TestRemoteTriggerToCheck(t *testing.T) {

func TestRemoteTriggerToCheckConnection(t *testing.T) {
logger, _ := logging.ConfigureLog("stdout", "info", "test")
dataBase := NewDatabase(logger, emptyConfig)
dataBase := newTestDatabase(logger, emptyConfig)
dataBase.flush()
defer dataBase.flush()
Convey("Should throw error when no connection", t, func() {
Expand Down
Loading

0 comments on commit 9fada5f

Please sign in to comment.