diff --git a/api/controller/contact_events_test.go b/api/controller/contact_events_test.go index cf57ec8ad..9c594dae1 100644 --- a/api/controller/contact_events_test.go +++ b/api/controller/contact_events_test.go @@ -8,9 +8,9 @@ import ( "github.com/moira-alert/moira/api/dto" - "github.com/golang/mock/gomock" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetContactEventsByIdWithLimit(t *testing.T) { diff --git a/api/controller/contact_test.go b/api/controller/contact_test.go index 184cd7a4b..961deba9f 100644 --- a/api/controller/contact_test.go +++ b/api/controller/contact_test.go @@ -8,13 +8,13 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/database" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetAllContacts(t *testing.T) { diff --git a/api/controller/events_test.go b/api/controller/events_test.go index 22debd5c9..5cf3e3f34 100644 --- a/api/controller/events_test.go +++ b/api/controller/events_test.go @@ -5,12 +5,12 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetEvents(t *testing.T) { diff --git a/api/controller/health_test.go b/api/controller/health_test.go index 1caa5f044..82274b9d8 100644 --- a/api/controller/health_test.go +++ b/api/controller/health_test.go @@ -3,11 +3,11 @@ package controller import ( "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api/dto" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetNotifierState(t *testing.T) { diff --git a/api/controller/notification_test.go b/api/controller/notification_test.go index 5e74181cd..9f20b0561 100644 --- a/api/controller/notification_test.go +++ b/api/controller/notification_test.go @@ -4,12 +4,12 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetNotifications(t *testing.T) { diff --git a/api/controller/pattern_test.go b/api/controller/pattern_test.go index f923504aa..bea1c81bd 100644 --- a/api/controller/pattern_test.go +++ b/api/controller/pattern_test.go @@ -5,13 +5,13 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestDeletePattern(t *testing.T) { diff --git a/api/controller/subscription_test.go b/api/controller/subscription_test.go index 9bfe4072c..faeb44406 100644 --- a/api/controller/subscription_test.go +++ b/api/controller/subscription_test.go @@ -6,13 +6,13 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/database" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetUserSubscriptions(t *testing.T) { diff --git a/api/controller/tag_test.go b/api/controller/tag_test.go index b25c03b1b..47b1db519 100644 --- a/api/controller/tag_test.go +++ b/api/controller/tag_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" diff --git a/api/controller/team_test.go b/api/controller/team_test.go index 7d32078a1..0eb937e4f 100644 --- a/api/controller/team_test.go +++ b/api/controller/team_test.go @@ -6,13 +6,13 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/database" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestCreateTeam(t *testing.T) { diff --git a/api/controller/trigger_metrics_test.go b/api/controller/trigger_metrics_test.go index a3d7736cc..5cd76b3b3 100644 --- a/api/controller/trigger_metrics_test.go +++ b/api/controller/trigger_metrics_test.go @@ -5,11 +5,11 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" metricSource "github.com/moira-alert/moira/metric_source" "github.com/moira-alert/moira/metric_source/remote" mock_metric_source "github.com/moira-alert/moira/mock/metric_source" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" diff --git a/api/controller/trigger_test.go b/api/controller/trigger_test.go index 29b6939e3..001e370aa 100644 --- a/api/controller/trigger_test.go +++ b/api/controller/trigger_test.go @@ -6,13 +6,13 @@ import ( "time" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/database" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestUpdateTrigger(t *testing.T) { diff --git a/api/controller/triggers_test.go b/api/controller/triggers_test.go index 2ca15a7f3..30b174d54 100644 --- a/api/controller/triggers_test.go +++ b/api/controller/triggers_test.go @@ -6,13 +6,13 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/database" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestCreateTrigger(t *testing.T) { diff --git a/api/controller/user_test.go b/api/controller/user_test.go index 3ac1b4b8b..23f913927 100644 --- a/api/controller/user_test.go +++ b/api/controller/user_test.go @@ -5,12 +5,12 @@ import ( "testing" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetUserSettings(t *testing.T) { diff --git a/api/dto/subscription_test.go b/api/dto/subscription_test.go index 79f1ce30e..d0c2d1ed3 100644 --- a/api/dto/subscription_test.go +++ b/api/dto/subscription_test.go @@ -8,12 +8,12 @@ import ( "strings" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/middleware" mock "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestSubscription_checkContacts(t *testing.T) { diff --git a/api/dto/triggers_test.go b/api/dto/triggers_test.go index 2345ae52a..90b8a87d0 100644 --- a/api/dto/triggers_test.go +++ b/api/dto/triggers_test.go @@ -13,8 +13,8 @@ import ( metricSource "github.com/moira-alert/moira/metric_source" mock_metric_source "github.com/moira-alert/moira/mock/metric_source" - "github.com/golang/mock/gomock" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestTriggerValidation(t *testing.T) { diff --git a/api/handler/contact_test.go b/api/handler/contact_test.go index 6deb8b71d..6f469b23b 100644 --- a/api/handler/contact_test.go +++ b/api/handler/contact_test.go @@ -9,7 +9,6 @@ import ( "net/http/httptest" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" @@ -17,6 +16,7 @@ import ( db "github.com/moira-alert/moira/database" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) const ( diff --git a/api/handler/handler_test.go b/api/handler/handler_test.go index b9e74951a..615ebc416 100644 --- a/api/handler/handler_test.go +++ b/api/handler/handler_test.go @@ -9,13 +9,13 @@ import ( "strings" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestReadonlyMode(t *testing.T) { diff --git a/api/handler/health_test.go b/api/handler/health_test.go index 26c9deab7..74a794131 100644 --- a/api/handler/health_test.go +++ b/api/handler/health_test.go @@ -7,12 +7,12 @@ import ( "net/http/httptest" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira/api" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestSetHealthWithAuth(t *testing.T) { diff --git a/api/handler/notification_test.go b/api/handler/notification_test.go index f10200da0..cbf6030ac 100644 --- a/api/handler/notification_test.go +++ b/api/handler/notification_test.go @@ -6,10 +6,10 @@ import ( "net/http/httptest" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetNotifications(t *testing.T) { diff --git a/api/handler/tag_test.go b/api/handler/tag_test.go index 6c38cb80a..253b6d99b 100644 --- a/api/handler/tag_test.go +++ b/api/handler/tag_test.go @@ -10,13 +10,13 @@ import ( "testing" chi_middleware "github.com/go-chi/chi/middleware" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/api/middleware" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) const ( diff --git a/api/handler/trigger_metric_test.go b/api/handler/trigger_metric_test.go index 8a727ab31..2518fe678 100644 --- a/api/handler/trigger_metric_test.go +++ b/api/handler/trigger_metric_test.go @@ -6,11 +6,11 @@ import ( "net/http/httptest" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api/middleware" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestDeleteTriggerMetric(t *testing.T) { diff --git a/api/handler/trigger_render_test.go b/api/handler/trigger_render_test.go index a23927e7e..d31de3d53 100644 --- a/api/handler/trigger_render_test.go +++ b/api/handler/trigger_render_test.go @@ -6,13 +6,13 @@ import ( "net/http/httptest" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api/middleware" metricSource "github.com/moira-alert/moira/metric_source" mock_metric_source "github.com/moira-alert/moira/mock/metric_source" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestRenderTrigger(t *testing.T) { diff --git a/api/handler/trigger_test.go b/api/handler/trigger_test.go index 96dff0b50..1e32507d8 100644 --- a/api/handler/trigger_test.go +++ b/api/handler/trigger_test.go @@ -10,7 +10,6 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/api/middleware" @@ -19,6 +18,7 @@ import ( mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" "github.com/xiam/to" + "go.uber.org/mock/gomock" ) const ( diff --git a/api/handler/triggers_test.go b/api/handler/triggers_test.go index fd39a922d..83d0a1bea 100644 --- a/api/handler/triggers_test.go +++ b/api/handler/triggers_test.go @@ -12,7 +12,6 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/api" dataBase "github.com/moira-alert/moira/database" @@ -20,6 +19,7 @@ import ( "github.com/moira-alert/moira/metric_source/local" mock_metric_source "github.com/moira-alert/moira/mock/metric_source" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira/api/dto" "github.com/moira-alert/moira/api/middleware" diff --git a/checker/check_test.go b/checker/check_test.go index c1f870a13..772f1eb0b 100644 --- a/checker/check_test.go +++ b/checker/check_test.go @@ -6,13 +6,13 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/checker/metrics/conversion" "github.com/moira-alert/moira/expression" logging "github.com/moira-alert/moira/logging/zerolog_adapter" metricSource "github.com/moira-alert/moira/metric_source" "github.com/moira-alert/moira/metric_source/local" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira/metrics" mock_metric_source "github.com/moira-alert/moira/mock/metric_source" diff --git a/checker/event_test.go b/checker/event_test.go index c4cd1e4c8..389614d50 100644 --- a/checker/event_test.go +++ b/checker/event_test.go @@ -4,11 +4,11 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func newMocks(t *testing.T) (dataBase *mock_moira_alert.MockDatabase, mockCtrl *gomock.Controller) { diff --git a/checker/fetch_test.go b/checker/fetch_test.go index dcada384d..cee779ba6 100644 --- a/checker/fetch_test.go +++ b/checker/fetch_test.go @@ -4,12 +4,12 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" metricSource "github.com/moira-alert/moira/metric_source" mockmetricsource "github.com/moira-alert/moira/mock/metric_source" mockmoiraalert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestFetchTriggerMetrics(t *testing.T) { diff --git a/checker/trigger_checker_test.go b/checker/trigger_checker_test.go index 647d5a6c2..234ea9da0 100644 --- a/checker/trigger_checker_test.go +++ b/checker/trigger_checker_test.go @@ -4,7 +4,6 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/database" logging "github.com/moira-alert/moira/logging/zerolog_adapter" @@ -13,6 +12,7 @@ import ( "github.com/moira-alert/moira/metrics" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestInitTriggerChecker(t *testing.T) { diff --git a/cmd/cli/from_2.11_to_2.12.go b/cmd/cli/from_2.11_to_2.12.go new file mode 100644 index 000000000..7f32cabb9 --- /dev/null +++ b/cmd/cli/from_2.11_to_2.12.go @@ -0,0 +1,29 @@ +package main + +import ( + "github.com/moira-alert/moira" +) + +func updateFrom211(logger moira.Logger, database moira.Database) error { + logger.Info().Msg("Update 2.11 -> 2.12 was started") + + if err := updateTelegramUsersRecords(logger, database); err != nil { + return err + } + + logger.Info().Msg("Update 2.11 -> 2.12 was finished") + + return nil +} + +func downgradeTo211(logger moira.Logger, database moira.Database) error { + logger.Info().Msg("Downgrade 2.12 -> 2.11 started") + + if err := downgradeTelegramUsersRecords(logger, database); err != nil { + return err + } + + logger.Info().Msg("Downgrade 2.12 -> 2.11 was finished") + + return nil +} diff --git a/cmd/cli/main.go b/cmd/cli/main.go index a00510ade..54a054c96 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -25,7 +25,7 @@ var ( GoVersion = "unknown" ) -var moiraValidVersions = []string{"2.3", "2.6", "2.7", "2.9"} +var moiraValidVersions = []string{"2.3", "2.6", "2.7", "2.9", "2.11"} var ( configFileName = flag.String("config", "/etc/moira/cli.yml", "Path to configuration file") @@ -110,6 +110,13 @@ func main() { //nolint Error(err). Msg("Fail to update from version 2.9") } + case "2.11": + err := updateFrom211(logger, database) + if err != nil { + logger.Fatal(). + Error(err). + Msg("Fail to update from version 2.11") + } } } @@ -144,6 +151,13 @@ func main() { //nolint Error(err). Msg("Fail to update to version 2.9") } + case "2.11": + err := downgradeTo211(logger, database) + if err != nil { + logger.Fatal(). + Error(err). + Msg("Fail to update to version 2.11") + } } } diff --git a/cmd/cli/metrics_test.go b/cmd/cli/metrics_test.go index 1e268f46d..24f106593 100644 --- a/cmd/cli/metrics_test.go +++ b/cmd/cli/metrics_test.go @@ -7,8 +7,8 @@ import ( "github.com/moira-alert/moira/database/redis" mocks "github.com/moira-alert/moira/mock/moira-alert" - "github.com/golang/mock/gomock" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestCleanUpOutdatedMetrics(t *testing.T) { diff --git a/cmd/cli/telegram_utils.go b/cmd/cli/telegram_utils.go new file mode 100644 index 000000000..cd1fa5fad --- /dev/null +++ b/cmd/cli/telegram_utils.go @@ -0,0 +1,172 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "strconv" + "strings" + + goredis "github.com/go-redis/redis/v8" + "github.com/moira-alert/moira" + "github.com/moira-alert/moira/database/redis" + "github.com/moira-alert/moira/senders/telegram" +) + +const ( + telegramUsersKey = "moira-telegram-users:" + telegramLockPrefix = "moira-telegram-users:moira-bot-host:" +) + +// callFunc calls the fn dependent of Redis client type (cluster or standalone). +func callFunc(connector *redis.DbConnector, fn func(connector *redis.DbConnector, client goredis.UniversalClient) error) error { + client := connector.Client() + ctx := connector.Context() + + switch c := client.(type) { + case *goredis.ClusterClient: + return c.ForEachMaster(ctx, func(ctx context.Context, shard *goredis.Client) error { + return fn(connector, shard) + }) + default: + return fn(connector, client) + } +} + +func updateTelegramUsersRecords(logger moira.Logger, database moira.Database) error { + logger.Info().Msg("Start updateTelegramUsersRecords") + + switch d := database.(type) { + case *redis.DbConnector: + if err := callFunc(d, func(connector *redis.DbConnector, client goredis.UniversalClient) error { + return updateTelegramUsersRecordsOnRedisNode(connector, client, logger) + }); err != nil { + return err + } + + default: + return makeUnknownDBError(database) + } + + logger.Info().Msg("Successfully finished updateTelegramUsersRecords") + + return nil +} + +func updateTelegramUsersRecordsOnRedisNode(connector *redis.DbConnector, client goredis.UniversalClient, logger moira.Logger) error { + ctx := connector.Context() + iter := client.Scan(ctx, 0, telegramUsersKey+"*", 0).Iterator() + + for iter.Next(ctx) { + key := iter.Val() + if strings.HasPrefix(key, telegramLockPrefix) { + continue + } + + oldValue, err := client.Get(ctx, key).Result() + if err != nil { + return fmt.Errorf("failed to get value by key: %s, err: %w", key, err) + } + + chatID, err := strconv.ParseInt(oldValue, 10, 64) + if err != nil { + logger.Warning(). + String("old_value", oldValue). + Error(err). + Msg("failed to parse chatID as int") + + continue + } + + chat := &telegram.Chat{ + ID: chatID, + } + + chatRaw, err := json.Marshal(chat) + if err != nil { + return fmt.Errorf("failed to marshal chat: %w", err) + } + + if err := client.Set(ctx, key, string(chatRaw), goredis.KeepTTL).Err(); err != nil { + return fmt.Errorf("failed to set %s with value: %s, err: %w", key, string(chatRaw), err) + } + } + + if err := iter.Err(); err != nil { + return fmt.Errorf("iterator error: %w", err) + } + + return nil +} + +func downgradeTelegramUsersRecords(logger moira.Logger, database moira.Database) error { + logger.Info().Msg("Start downgradeTelegramUsersRecords") + + switch d := database.(type) { + case *redis.DbConnector: + if err := callFunc(d, func(connector *redis.DbConnector, client goredis.UniversalClient) error { + return downgradeTelegramUsersRecordsOnRedisNode(connector, client, logger) + }); err != nil { + return err + } + + default: + return makeUnknownDBError(database) + } + + logger.Info().Msg("Successfully finished downgradeTelegramUsersRecords") + + return nil +} + +func downgradeTelegramUsersRecordsOnRedisNode(connector *redis.DbConnector, client goredis.UniversalClient, logger moira.Logger) error { + ctx := connector.Context() + iter := client.Scan(ctx, 0, telegramUsersKey+"*", 0).Iterator() + + for iter.Next(ctx) { + key := iter.Val() + if strings.HasPrefix(key, telegramLockPrefix) { + continue + } + + oldValue, err := client.Get(ctx, key).Result() + if err != nil { + return fmt.Errorf("failed to get value by key: %s, err: %w", key, err) + } + + chat := &telegram.Chat{} + if err = json.Unmarshal([]byte(oldValue), chat); err != nil { + logger.Warning(). + String("old_value", oldValue). + Error(err). + Msg("failed to unmarshal old value chat json") + + continue + } + + // Do not downgrade records with filled ThreadID, because without this field they will stop working. + if chat.ThreadID != 0 { + continue + } + + if chat.ID == 0 { + logger.Warning(). + String("old_value", oldValue). + Msg("chat ID is null") + + continue + } + + newValue := strconv.FormatInt(chat.ID, 10) + + if err := client.Set(ctx, key, newValue, goredis.KeepTTL).Err(); err != nil { + return fmt.Errorf("failed to set %s with value: %s, err: %w", key, newValue, err) + } + } + + if err := iter.Err(); err != nil { + return fmt.Errorf("iterator error: %w", err) + } + + return nil +} diff --git a/cmd/cli/telegram_utils_test.go b/cmd/cli/telegram_utils_test.go new file mode 100644 index 000000000..4f037cbae --- /dev/null +++ b/cmd/cli/telegram_utils_test.go @@ -0,0 +1,140 @@ +package main + +import ( + "testing" + + "github.com/moira-alert/moira" + "github.com/moira-alert/moira/database/redis" + logging "github.com/moira-alert/moira/logging/zerolog_adapter" + + goredis "github.com/go-redis/redis/v8" + . "github.com/smartystreets/goconvey/convey" +) + +func TestUpdateTelegramUsersRecords(t *testing.T) { + if testing.Short() { + t.Skip("skipping test in short mode.") + } + + conf := getDefault() + logger, err := logging.ConfigureLog(conf.LogFile, "error", "cli", conf.LogPrettyFormat) + if err != nil { + t.Fatal(err) + } + + database := redis.NewTestDatabase(logger) + database.Flush() + defer database.Flush() + + client := database.Client() + ctx := database.Context() + + Convey("Test data migration forwards", t, func() { + Convey("Given old database", func() { + createOldTelegramUserRecords(database) + + Convey("When migration was applied", func() { + err := updateTelegramUsersRecords(logger, database) + So(err, ShouldBeNil) + + Convey("Database should be new", func() { + result, err := client.Get(ctx, "moira-telegram-users:some telegram group").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, `{"chat_id":-1001494975744}`) + + result, err = client.Get(ctx, "moira-telegram-users:some telegram group failed migration").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, `{"chat_id":-1001494975755}`) + + result, err = client.Get(ctx, "moira-telegram-users:@durov").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, `{"chat_id":1}`) + + result, err = client.Get(ctx, "moira-telegram-users:moira-bot-host:123").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, "D4VdnzZDTS/xXF87THARWw==") + }) + }) + }) + }) +} + +func TestDowngradeTelegramUsersRecords(t *testing.T) { + if testing.Short() { + t.Skip("skipping test in short mode.") + } + + conf := getDefault() + logger, err := logging.ConfigureLog(conf.LogFile, "error", "cli", conf.LogPrettyFormat) + if err != nil { + t.Fatal(err) + } + + database := redis.NewTestDatabase(logger) + database.Flush() + defer database.Flush() + client := database.Client() + ctx := database.Context() + + Convey("Test data migration backwards", t, func() { + Convey("Given new database", func() { + createNewTelegramUserRecords(database) + + Convey("When migration was applied", func() { + err := downgradeTelegramUsersRecords(logger, database) + So(err, ShouldBeNil) + + Convey("Database should be old", func() { + result, err := client.Get(ctx, "moira-telegram-users:some telegram group").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, "-1001494975744") + + result, err = client.Get(ctx, "moira-telegram-users:some telegram group with topic").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, `{"chat_id":-1001494975766,"thread_id":1}`) + + result, err = client.Get(ctx, "moira-telegram-users:@durov").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, "1") + + result, err = client.Get(ctx, "moira-telegram-users:@failed_migration").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, "2") + + result, err = client.Get(ctx, "moira-telegram-users:moira-bot-host:123").Result() + So(err, ShouldBeNil) + So(result, ShouldEqual, "D4VdnzZDTS/xXF87THARWw==") + }) + }) + }) + }) +} + +func createOldTelegramUserRecords(database moira.Database) { + switch d := database.(type) { + case *redis.DbConnector: + d.Flush() + client := d.Client() + ctx := d.Context() + + client.Set(ctx, "moira-telegram-users:some telegram group", "-1001494975744", goredis.KeepTTL) + client.Set(ctx, "moira-telegram-users:some telegram group failed migration", `{"chat_id":-1001494975755}`, goredis.KeepTTL) + client.Set(ctx, "moira-telegram-users:@durov", "1", goredis.KeepTTL) + client.Set(ctx, "moira-telegram-users:moira-bot-host:123", "D4VdnzZDTS/xXF87THARWw==", goredis.KeepTTL) + } +} + +func createNewTelegramUserRecords(database moira.Database) { + switch d := database.(type) { + case *redis.DbConnector: + d.Flush() + client := d.Client() + ctx := d.Context() + + client.Set(ctx, "moira-telegram-users:some telegram group", `{"chat_id":-1001494975744}`, goredis.KeepTTL) + client.Set(ctx, "moira-telegram-users:some telegram group with topic", `{"chat_id":-1001494975766,"thread_id":1}`, goredis.KeepTTL) + client.Set(ctx, "moira-telegram-users:@durov", `{"chat_id":1}`, goredis.KeepTTL) + client.Set(ctx, "moira-telegram-users:@failed_migration", "2", goredis.KeepTTL) + client.Set(ctx, "moira-telegram-users:moira-bot-host:123", "D4VdnzZDTS/xXF87THARWw==", goredis.KeepTTL) + } +} diff --git a/cmd/cli/triggers_test.go b/cmd/cli/triggers_test.go index 2829621ff..892efb596 100644 --- a/cmd/cli/triggers_test.go +++ b/cmd/cli/triggers_test.go @@ -5,10 +5,10 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mocks "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" . "github.com/smartystreets/goconvey/convey" ) diff --git a/database/redis/bot.go b/database/redis/bot.go index 3f66c41c5..431a2e4e9 100644 --- a/database/redis/bot.go +++ b/database/redis/bot.go @@ -9,24 +9,26 @@ import ( "github.com/moira-alert/moira/database" ) -// GetIDByUsername read ID of user by messenger username. -func (connector *DbConnector) GetIDByUsername(messenger, username string) (string, error) { +// GetChatByUsername read chat of user by messenger username. +func (connector *DbConnector) GetChatByUsername(messenger, username string) (string, error) { if strings.HasPrefix(username, "#") { result := "@" + username[1:] return result, nil } + c := *connector.client result, err := c.Get(connector.context, usernameKey(messenger, username)).Result() if errors.Is(err, redis.Nil) { return result, database.ErrNil } + return result, err } -// SetUsernameID store id of username. -func (connector *DbConnector) SetUsernameID(messenger, username, id string) error { +// SetUsernameChat store id of username. +func (connector *DbConnector) SetUsernameChat(messenger, username, chatRaw string) error { c := *connector.client - err := c.Set(connector.context, usernameKey(messenger, username), id, redis.KeepTTL).Err() + err := c.Set(connector.context, usernameKey(messenger, username), chatRaw, redis.KeepTTL).Err() return err } diff --git a/database/redis/bot_test.go b/database/redis/bot_test.go index 12afe3253..85978b37f 100644 --- a/database/redis/bot_test.go +++ b/database/redis/bot_test.go @@ -18,28 +18,28 @@ func TestBotDataStoring(t *testing.T) { Convey("Messengers manipulation", t, func() { Convey("Get-set usernames", func() { Convey("Just set username to one of messengers", func() { - err := dataBase.SetUsernameID(messenger1, user1, "id1") + err := dataBase.SetUsernameChat(messenger1, user1, "id1") So(err, ShouldBeNil) }) Convey("Check it for existing", func() { - actual, err := dataBase.GetIDByUsername(messenger1, user1) + actual, err := dataBase.GetChatByUsername(messenger1, user1) So(err, ShouldBeNil) So(actual, ShouldResemble, "id1") }) Convey("Check for not existing in two another messengers", func() { - actual, err := dataBase.GetIDByUsername(messenger2, user1) + actual, err := dataBase.GetChatByUsername(messenger2, user1) So(err, ShouldResemble, database.ErrNil) So(actual, ShouldBeEmpty) - actual, err = dataBase.GetIDByUsername(messenger3, user1) + actual, err = dataBase.GetChatByUsername(messenger3, user1) So(err, ShouldResemble, database.ErrNil) So(actual, ShouldBeEmpty) }) Convey("Get username with # prefix should return @username", func() { - actual, err := dataBase.GetIDByUsername(messenger1, "#"+user1) + actual, err := dataBase.GetChatByUsername(messenger1, "#"+user1) So(err, ShouldBeNil) So(actual, ShouldResemble, "@"+user1) }) @@ -50,7 +50,7 @@ func TestBotDataStoring(t *testing.T) { }) Convey("Check it for unexisting", func() { - actual, err := dataBase.GetIDByUsername(messenger1, user1) + actual, err := dataBase.GetChatByUsername(messenger1, user1) So(err, ShouldResemble, database.ErrNil) So(actual, ShouldBeEmpty) }) @@ -64,11 +64,11 @@ func TestBotDataStoringErrorConnection(t *testing.T) { dataBase.Flush() defer dataBase.Flush() Convey("Should throw error when no connection", t, func() { - actual1, err := dataBase.GetIDByUsername(messenger1, user1) + actual1, err := dataBase.GetChatByUsername(messenger1, user1) So(actual1, ShouldBeEmpty) So(err, ShouldNotBeNil) - err = dataBase.SetUsernameID(messenger2, user1, "id1") + err = dataBase.SetUsernameChat(messenger2, user1, "id1") So(err, ShouldNotBeNil) err = dataBase.RemoveUser(messenger2, user1) diff --git a/database/redis/locks_test.go b/database/redis/locks_test.go index 16a014f2a..6850264cd 100644 --- a/database/redis/locks_test.go +++ b/database/redis/locks_test.go @@ -12,9 +12,9 @@ import ( "github.com/moira-alert/moira/database" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func Test(t *testing.T) { diff --git a/database/redis/metric_test.go b/database/redis/metric_test.go index a6e96e1cb..47f392284 100644 --- a/database/redis/metric_test.go +++ b/database/redis/metric_test.go @@ -7,13 +7,13 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_clock "github.com/moira-alert/moira/mock/clock" "github.com/patrickmn/go-cache" . "github.com/smartystreets/goconvey/convey" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "gopkg.in/tomb.v2" ) diff --git a/database/redis/trigger_test.go b/database/redis/trigger_test.go index 01129cc2a..957b2c2ca 100644 --- a/database/redis/trigger_test.go +++ b/database/redis/trigger_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" mock_clock "github.com/moira-alert/moira/mock/clock" diff --git a/database/redis/triggers_lock_test.go b/database/redis/triggers_lock_test.go index 031924046..af3024d1b 100644 --- a/database/redis/triggers_lock_test.go +++ b/database/redis/triggers_lock_test.go @@ -3,8 +3,8 @@ package redis import ( "testing" - "github.com/golang/mock/gomock" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" diff --git a/database/stats/contact_test.go b/database/stats/contact_test.go index ca5051514..611b514a8 100644 --- a/database/stats/contact_test.go +++ b/database/stats/contact_test.go @@ -4,7 +4,7 @@ import ( "errors" "testing" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" diff --git a/database/stats/stats_test.go b/database/stats/stats_test.go index 1e73d5572..8c216b334 100644 --- a/database/stats/stats_test.go +++ b/database/stats/stats_test.go @@ -3,9 +3,9 @@ package stats import ( "testing" - "github.com/golang/mock/gomock" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestNewStatsManager(t *testing.T) { diff --git a/database/stats/trigger_test.go b/database/stats/trigger_test.go index 9866d42a5..f36acae2f 100644 --- a/database/stats/trigger_test.go +++ b/database/stats/trigger_test.go @@ -3,12 +3,12 @@ package stats import ( "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" mock_metrics "github.com/moira-alert/moira/mock/moira-alert/metrics" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestTriggerStatsCheckTriggerCount(t *testing.T) { diff --git a/filter/patterns_storage_test.go b/filter/patterns_storage_test.go index c50aeb729..7caef651f 100644 --- a/filter/patterns_storage_test.go +++ b/filter/patterns_storage_test.go @@ -7,11 +7,11 @@ import ( mock_clock "github.com/moira-alert/moira/mock/clock" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" "github.com/moira-alert/moira/metrics" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestProcessIncomingMetric(t *testing.T) { diff --git a/generate_mocks.sh b/generate_mocks.sh index 63f468629..266519cdc 100755 --- a/generate_mocks.sh +++ b/generate_mocks.sh @@ -4,7 +4,7 @@ rm -r ./mock/* -go install github.com/golang/mock/mockgen@v1.6.0 +go install go.uber.org/mock/mockgen@v0.4.0 mockgen -destination=mock/moira-alert/locks.go -package=mock_moira_alert github.com/moira-alert/moira Lock mockgen -destination=mock/moira-alert/mutex.go -package=mock_moira_alert github.com/moira-alert/moira Mutex @@ -27,5 +27,6 @@ mockgen -destination=mock/moira-alert/metrics/meter.go -package=mock_moira_alert mockgen -destination=mock/moira-alert/prometheus_api.go -package=mock_moira_alert github.com/moira-alert/moira/metric_source/prometheus PrometheusApi mockgen -destination=mock/moira-alert/database_stats.go -package=mock_moira_alert github.com/moira-alert/moira/database/stats StatsReporter +mockgen -destination=mock/notifier/telegram/bot.go -package=mock_telegram github.com/moira-alert/moira/senders/telegram Bot git add mock/* diff --git a/go.mod b/go.mod index a2ae93128..af4fb7c7e 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,6 @@ require ( github.com/go-redsync/redsync/v4 v4.4.4 github.com/gofrs/uuid v4.2.0+incompatible github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 - github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.6.0 github.com/gotokatsuya/ipare v0.0.0-20161202043954-fd52c5b6c44b github.com/gregdel/pushover v1.1.0 @@ -41,7 +40,6 @@ require ( gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df gopkg.in/h2non/gock.v1 v1.1.2 gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 - gopkg.in/tucnak/telebot.v2 v2.5.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -53,6 +51,8 @@ require ( github.com/mitchellh/mapstructure v1.5.0 github.com/moira-alert/blackfriday-slack v0.1.2 github.com/swaggo/http-swagger v1.3.4 + go.uber.org/mock v0.4.0 + gopkg.in/telebot.v3 v3.2.1 ) require ( diff --git a/go.sum b/go.sum index f88adbc30..acccd9382 100644 --- a/go.sum +++ b/go.sum @@ -186,6 +186,7 @@ cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omH cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= @@ -401,6 +402,7 @@ dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/JaderDias/movingmedian v0.0.0-20220813210630-d8c6b6de8835 h1:mbxQnovjDz5SvlatpxkbiMvybHH1hsSEu6OhPDLlfU8= github.com/JaderDias/movingmedian v0.0.0-20220813210630-d8c6b6de8835/go.mod h1:zsfWLaDctbM7aV1TsQAwkVswuKQ0k7PK4rjC1VZqpbI= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= @@ -442,7 +444,11 @@ github.com/ansel1/merry/v2 v2.1.1 h1:Ax0gQh7Z/GfimoVg2EDBAU6CJIieWwVvhtBKJdkCE1M github.com/ansel1/merry/v2 v2.1.1/go.mod h1:4p/FFyQbCgqlDbseWOVQaL5USpgkE9sr5xh4V6Ry0JU= github.com/ansel1/vespucci/v4 v4.1.1/go.mod h1:zzdrO4IgBfgcGMbGTk/qNGL8JPslmW3nPpcBHKReFYY= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df h1:GSoSVRLoBaFpOOds6QyY1L8AX7uoY+Ln3BHc22W40X0= @@ -514,6 +520,8 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -527,7 +535,9 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberdelia/go-metrics-graphite v0.0.0-20161219230853-39f87cc3b432 h1:M5QgkYacWj0Xs8MhpIK/5uwU02icXpEoSo9sM2aRCps= @@ -568,6 +578,8 @@ github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0+ github.com/evmar/gocairo v0.0.0-20160222165215-ddd30f837497 h1:DIQ8EvZ8OjuPNfcV4NgsyBeZho7WsTD0JEkDM5napMI= github.com/evmar/gocairo v0.0.0-20160222165215-ddd30f837497/go.mod h1:YXKUYPSqs+jDG8mvexHN2uTik4PKwg2B0WK9itQ0VrE= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= @@ -576,10 +588,12 @@ github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHqu github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -623,6 +637,10 @@ github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v7 v7.4.0 h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4= @@ -636,6 +654,7 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -651,6 +670,7 @@ github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0L github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -660,7 +680,6 @@ github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -769,20 +788,29 @@ github.com/gotokatsuya/ipare v0.0.0-20161202043954-fd52c5b6c44b/go.mod h1:OKc3N/ github.com/gregdel/pushover v1.1.0 h1:dwHyvrcpZCOS9V1fAnKPaGRRI5OC55cVaKhMybqNsKQ= github.com/gregdel/pushover v1.1.0/go.mod h1:EcaO66Nn1StkpEm1iKtBTV3d2A16SoMsVER1PthX7to= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -790,15 +818,27 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -827,6 +867,7 @@ github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFF github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -847,7 +888,9 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -855,6 +898,7 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lomik/og-rek v0.0.0-20170411191824-628eefeb8d80 h1:KVyDGUXjVOdHQt24wIgY4ZdGFXHtQHLWw0L/MAK3Kb0= @@ -864,6 +908,7 @@ github.com/lomik/zapwriter v0.0.0-20210624082824-c1161d1eb463/go.mod h1:rWIJAUD2 github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -883,12 +928,18 @@ github.com/mattermost/logr/v2 v2.0.21/go.mod h1:kZkB/zqKL9e+RY5gB3vGpsyenC+TpuiO github.com/mattermost/mattermost/server/public v0.1.1 h1:T5UtZ0SB3rZvhiKFUxkPn4fNrEQTXAcmCHVkRct1dpk= github.com/mattermost/mattermost/server/public v0.1.1/go.mod h1:WeqCPudYLqk4HjjGvCMJwhtHMVvcNUTHIbrLmLjAD+4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -898,12 +949,19 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= @@ -955,6 +1013,8 @@ github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5h github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/opsgenie/opsgenie-go-sdk-v2 v1.2.13 h1:nV98dkBpqaYbDnhefmOQ+Rn4hE+jD6AtjYHXaU5WyJI= github.com/opsgenie/opsgenie-go-sdk-v2 v1.2.13/go.mod h1:4OjcxgwdXzezqytxN534MooNmrxRD50geWZxTD7845s= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= @@ -962,6 +1022,7 @@ github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= @@ -976,13 +1037,16 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= @@ -994,6 +1058,7 @@ github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvq github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= @@ -1002,6 +1067,7 @@ github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJ github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= @@ -1011,6 +1077,7 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= @@ -1022,6 +1089,9 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -1064,16 +1134,19 @@ github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1090,6 +1163,7 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= @@ -1098,6 +1172,7 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= @@ -1109,6 +1184,7 @@ github.com/swaggo/swag v1.8.12/go.mod h1:lNfm6Gg+oAq3zRJQNEMBE66LIJKM44mxFqhEEgy github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tinylib/msgp v1.1.9 h1:SHf3yoO2sGA0veCJeCBYLHuttAVFHGm2RHgNodW7wQU= github.com/tinylib/msgp v1.1.9/go.mod h1:BCXGB54lDD8qUEPmiG0cQQUANC4IUQyB2ItS2UDlO/k= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= @@ -1137,6 +1213,10 @@ github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 h1:k/gmLsJDWwWqbLC github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -1155,6 +1235,8 @@ go.uber.org/automaxprocs v1.5.1 h1:e1YG66Lrk73dn4qhg8WFSvhF0JuFQF0ERIp4rpuV8Qk= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= @@ -1170,12 +1252,14 @@ golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= @@ -1270,6 +1354,7 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210427231257-85d9c07bbe3a/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1313,6 +1398,7 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= @@ -1339,6 +1425,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1352,6 +1439,7 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1362,9 +1450,13 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1372,6 +1464,7 @@ golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1395,10 +1488,12 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1413,6 +1508,7 @@ golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1484,6 +1580,7 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1573,6 +1670,7 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= @@ -1583,6 +1681,7 @@ google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69 google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= @@ -1671,6 +1770,8 @@ google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -1692,6 +1793,7 @@ google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= @@ -1812,12 +1914,12 @@ gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/telebot.v3 v3.2.1 h1:3I4LohaAyJBiivGmkfB+CiVu7QFOWkuZ4+KHgO/G3rs= +gopkg.in/telebot.v3 v3.2.1/go.mod h1:GJKwwWqp9nSkIVN51eRKU78aB5f5OnQuWdwiIZfPbko= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 h1:yiW+nvdHb9LVqSHQBXfZCieqV4fzYhNBql77zY0ykqs= gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= -gopkg.in/tucnak/telebot.v2 v2.5.0 h1:i+NynLo443Vp+Zn3Gv9JBjh3Z/PaiKAQwcnhNI7y6Po= -gopkg.in/tucnak/telebot.v2 v2.5.0/go.mod h1:BgaIIx50PSRS9pG59JH+geT82cfvoJU/IaI5TJdN3v8= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1844,5 +1946,6 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/index/actualizer_test.go b/index/actualizer_test.go index 1a8861dbf..8ecf9beba 100644 --- a/index/actualizer_test.go +++ b/index/actualizer_test.go @@ -6,9 +6,9 @@ import ( "github.com/moira-alert/moira/metrics" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/index/fixtures" diff --git a/index/index_test.go b/index/index_test.go index bf1fea55c..d552a8415 100644 --- a/index/index_test.go +++ b/index/index_test.go @@ -7,8 +7,8 @@ import ( "github.com/moira-alert/moira/metrics" bleveOriginal "github.com/blevesearch/bleve/v2" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" + "go.uber.org/mock/gomock" . "github.com/smartystreets/goconvey/convey" diff --git a/index/search_test.go b/index/search_test.go index 131c18348..df17a0170 100644 --- a/index/search_test.go +++ b/index/search_test.go @@ -5,9 +5,9 @@ import ( "github.com/moira-alert/moira/metrics" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/index/fixtures" diff --git a/integration_tests/notifier/notifier_test.go b/integration_tests/notifier/notifier_test.go index 6d9812e75..e8f9a814b 100644 --- a/integration_tests/notifier/notifier_test.go +++ b/integration_tests/notifier/notifier_test.go @@ -7,9 +7,9 @@ import ( "github.com/moira-alert/moira/clock" - "github.com/golang/mock/gomock" metricSource "github.com/moira-alert/moira/metric_source" "github.com/moira-alert/moira/metric_source/local" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/database/redis" diff --git a/interfaces.go b/interfaces.go index 15f294e64..bd3ba84a9 100644 --- a/interfaces.go +++ b/interfaces.go @@ -123,8 +123,8 @@ type Database interface { ReleaseTriggerCheckLock(triggerID string) // Bot data storing - GetIDByUsername(messenger, username string) (string, error) - SetUsernameID(messenger, username, id string) error + GetChatByUsername(messenger, username string) (string, error) + SetUsernameChat(messenger, username, chatRaw string) error RemoveUser(messenger, username string) error // Triggers without subscription manipulation diff --git a/metric_source/local/fetchdata_test.go b/metric_source/local/fetchdata_test.go index 407d0f7d4..c55142ab3 100644 --- a/metric_source/local/fetchdata_test.go +++ b/metric_source/local/fetchdata_test.go @@ -7,10 +7,10 @@ import ( "github.com/go-graphite/carbonapi/expr/types" pb "github.com/go-graphite/protocol/carbonapi_v3_pb" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func BenchmarkUnpackMetricsValues(b *testing.B) { diff --git a/metric_source/local/local_test.go b/metric_source/local/local_test.go index 611a6c0c6..6f0feb8a9 100644 --- a/metric_source/local/local_test.go +++ b/metric_source/local/local_test.go @@ -10,12 +10,12 @@ import ( "github.com/go-graphite/carbonapi/expr/functions" "github.com/go-graphite/carbonapi/expr/types" "github.com/go-graphite/carbonapi/pkg/parser" - "github.com/golang/mock/gomock" "github.com/google/go-cmp/cmp" "github.com/moira-alert/moira" metricSource "github.com/moira-alert/moira/metric_source" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func init() { diff --git a/metric_source/prometheus/fetch_test.go b/metric_source/prometheus/fetch_test.go index 960c66bdd..344bfbdc3 100644 --- a/metric_source/prometheus/fetch_test.go +++ b/metric_source/prometheus/fetch_test.go @@ -5,10 +5,10 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira/logging/zerolog_adapter" metricsource "github.com/moira-alert/moira/metric_source" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" "github.com/prometheus/common/model" . "github.com/smartystreets/goconvey/convey" diff --git a/mock/clock/clock.go b/mock/clock/clock.go index fbfb56afb..4aab4f192 100644 --- a/mock/clock/clock.go +++ b/mock/clock/clock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: Clock) +// +// Generated by this command: +// +// mockgen -destination=mock/clock/clock.go -package=mock_clock github.com/moira-alert/moira Clock +// // Package mock_clock is a generated GoMock package. package mock_clock @@ -8,7 +13,7 @@ import ( reflect "reflect" time "time" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockClock is a mock of Clock interface. diff --git a/mock/heartbeat/heartbeat.go b/mock/heartbeat/heartbeat.go index d8933723d..f0a6f6acf 100644 --- a/mock/heartbeat/heartbeat.go +++ b/mock/heartbeat/heartbeat.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/notifier/selfstate/heartbeat (interfaces: Heartbeater) +// +// Generated by this command: +// +// mockgen -destination=mock/heartbeat/heartbeat.go -package=mock_heartbeat github.com/moira-alert/moira/notifier/selfstate/heartbeat Heartbeater +// // Package mock_heartbeat is a generated GoMock package. package mock_heartbeat @@ -7,7 +12,7 @@ package mock_heartbeat import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockHeartbeater is a mock of Heartbeater interface. @@ -44,7 +49,7 @@ func (m *MockHeartbeater) Check(arg0 int64) (int64, bool, error) { } // Check indicates an expected call of Check. -func (mr *MockHeartbeaterMockRecorder) Check(arg0 interface{}) *gomock.Call { +func (mr *MockHeartbeaterMockRecorder) Check(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Check", reflect.TypeOf((*MockHeartbeater)(nil).Check), arg0) } diff --git a/mock/metric_source/fetch_result.go b/mock/metric_source/fetch_result.go index 6981d0234..55c7d51c9 100644 --- a/mock/metric_source/fetch_result.go +++ b/mock/metric_source/fetch_result.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/metric_source (interfaces: FetchResult) +// +// Generated by this command: +// +// mockgen -destination=mock/metric_source/fetch_result.go -package=mock_metric_source github.com/moira-alert/moira/metric_source FetchResult +// // Package mock_metric_source is a generated GoMock package. package mock_metric_source @@ -7,8 +12,8 @@ package mock_metric_source import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" metricsource "github.com/moira-alert/moira/metric_source" + gomock "go.uber.org/mock/gomock" ) // MockFetchResult is a mock of FetchResult interface. diff --git a/mock/metric_source/source.go b/mock/metric_source/source.go index 3aa4c3ac9..29896005b 100644 --- a/mock/metric_source/source.go +++ b/mock/metric_source/source.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/metric_source (interfaces: MetricSource) +// +// Generated by this command: +// +// mockgen -destination=mock/metric_source/source.go -package=mock_metric_source github.com/moira-alert/moira/metric_source MetricSource +// // Package mock_metric_source is a generated GoMock package. package mock_metric_source @@ -7,8 +12,8 @@ package mock_metric_source import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" metricsource "github.com/moira-alert/moira/metric_source" + gomock "go.uber.org/mock/gomock" ) // MockMetricSource is a mock of MetricSource interface. @@ -44,7 +49,7 @@ func (m *MockMetricSource) Fetch(arg0 string, arg1, arg2 int64, arg3 bool) (metr } // Fetch indicates an expected call of Fetch. -func (mr *MockMetricSourceMockRecorder) Fetch(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockMetricSourceMockRecorder) Fetch(arg0, arg1, arg2, arg3 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Fetch", reflect.TypeOf((*MockMetricSource)(nil).Fetch), arg0, arg1, arg2, arg3) } diff --git a/mock/moira-alert/database.go b/mock/moira-alert/database.go index 0267dd269..b0687cb78 100644 --- a/mock/moira-alert/database.go +++ b/mock/moira-alert/database.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: Database) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/database.go -package=mock_moira_alert github.com/moira-alert/moira Database +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -8,8 +13,8 @@ import ( reflect "reflect" time "time" - gomock "github.com/golang/mock/gomock" moira "github.com/moira-alert/moira" + gomock "go.uber.org/mock/gomock" tomb "gopkg.in/tomb.v2" ) @@ -45,7 +50,7 @@ func (m *MockDatabase) AcquireTriggerCheckLock(arg0 string, arg1 int) error { } // AcquireTriggerCheckLock indicates an expected call of AcquireTriggerCheckLock. -func (mr *MockDatabaseMockRecorder) AcquireTriggerCheckLock(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) AcquireTriggerCheckLock(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AcquireTriggerCheckLock", reflect.TypeOf((*MockDatabase)(nil).AcquireTriggerCheckLock), arg0, arg1) } @@ -59,7 +64,7 @@ func (m *MockDatabase) AddNotification(arg0 *moira.ScheduledNotification) error } // AddNotification indicates an expected call of AddNotification. -func (mr *MockDatabaseMockRecorder) AddNotification(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) AddNotification(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNotification", reflect.TypeOf((*MockDatabase)(nil).AddNotification), arg0) } @@ -73,7 +78,7 @@ func (m *MockDatabase) AddNotifications(arg0 []*moira.ScheduledNotification, arg } // AddNotifications indicates an expected call of AddNotifications. -func (mr *MockDatabaseMockRecorder) AddNotifications(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) AddNotifications(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNotifications", reflect.TypeOf((*MockDatabase)(nil).AddNotifications), arg0, arg1) } @@ -87,7 +92,7 @@ func (m *MockDatabase) AddPatternMetric(arg0, arg1 string) error { } // AddPatternMetric indicates an expected call of AddPatternMetric. -func (mr *MockDatabaseMockRecorder) AddPatternMetric(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) AddPatternMetric(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddPatternMetric", reflect.TypeOf((*MockDatabase)(nil).AddPatternMetric), arg0, arg1) } @@ -101,7 +106,7 @@ func (m *MockDatabase) AddTriggersToCheck(arg0 moira.ClusterKey, arg1 []string) } // AddTriggersToCheck indicates an expected call of AddTriggersToCheck. -func (mr *MockDatabaseMockRecorder) AddTriggersToCheck(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) AddTriggersToCheck(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddTriggersToCheck", reflect.TypeOf((*MockDatabase)(nil).AddTriggersToCheck), arg0, arg1) } @@ -158,7 +163,7 @@ func (m *MockDatabase) CleanUpFutureMetrics(arg0 time.Duration) error { } // CleanUpFutureMetrics indicates an expected call of CleanUpFutureMetrics. -func (mr *MockDatabaseMockRecorder) CleanUpFutureMetrics(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) CleanUpFutureMetrics(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CleanUpFutureMetrics", reflect.TypeOf((*MockDatabase)(nil).CleanUpFutureMetrics), arg0) } @@ -172,7 +177,7 @@ func (m *MockDatabase) CleanUpOutdatedMetrics(arg0 time.Duration) error { } // CleanUpOutdatedMetrics indicates an expected call of CleanUpOutdatedMetrics. -func (mr *MockDatabaseMockRecorder) CleanUpOutdatedMetrics(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) CleanUpOutdatedMetrics(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CleanUpOutdatedMetrics", reflect.TypeOf((*MockDatabase)(nil).CleanUpOutdatedMetrics), arg0) } @@ -201,7 +206,7 @@ func (m *MockDatabase) CreateTags(arg0 []string) error { } // CreateTags indicates an expected call of CreateTags. -func (mr *MockDatabaseMockRecorder) CreateTags(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) CreateTags(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTags", reflect.TypeOf((*MockDatabase)(nil).CreateTags), arg0) } @@ -215,7 +220,7 @@ func (m *MockDatabase) DeleteTeam(arg0, arg1 string) error { } // DeleteTeam indicates an expected call of DeleteTeam. -func (mr *MockDatabaseMockRecorder) DeleteTeam(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) DeleteTeam(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteTeam", reflect.TypeOf((*MockDatabase)(nil).DeleteTeam), arg0, arg1) } @@ -229,7 +234,7 @@ func (m *MockDatabase) DeleteTriggerCheckLock(arg0 string) error { } // DeleteTriggerCheckLock indicates an expected call of DeleteTriggerCheckLock. -func (mr *MockDatabaseMockRecorder) DeleteTriggerCheckLock(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) DeleteTriggerCheckLock(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteTriggerCheckLock", reflect.TypeOf((*MockDatabase)(nil).DeleteTriggerCheckLock), arg0) } @@ -243,7 +248,7 @@ func (m *MockDatabase) DeleteTriggerThrottling(arg0 string) error { } // DeleteTriggerThrottling indicates an expected call of DeleteTriggerThrottling. -func (mr *MockDatabaseMockRecorder) DeleteTriggerThrottling(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) DeleteTriggerThrottling(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteTriggerThrottling", reflect.TypeOf((*MockDatabase)(nil).DeleteTriggerThrottling), arg0) } @@ -257,7 +262,7 @@ func (m *MockDatabase) DeleteTriggersSearchResults(arg0 string) error { } // DeleteTriggersSearchResults indicates an expected call of DeleteTriggersSearchResults. -func (mr *MockDatabaseMockRecorder) DeleteTriggersSearchResults(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) DeleteTriggersSearchResults(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteTriggersSearchResults", reflect.TypeOf((*MockDatabase)(nil).DeleteTriggersSearchResults), arg0) } @@ -287,7 +292,7 @@ func (m *MockDatabase) FetchNotifications(arg0, arg1 int64) ([]*moira.ScheduledN } // FetchNotifications indicates an expected call of FetchNotifications. -func (mr *MockDatabaseMockRecorder) FetchNotifications(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) FetchNotifications(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchNotifications", reflect.TypeOf((*MockDatabase)(nil).FetchNotifications), arg0, arg1) } @@ -302,7 +307,7 @@ func (m *MockDatabase) FetchTriggersToReindex(arg0 int64) ([]string, error) { } // FetchTriggersToReindex indicates an expected call of FetchTriggersToReindex. -func (mr *MockDatabaseMockRecorder) FetchTriggersToReindex(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) FetchTriggersToReindex(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchTriggersToReindex", reflect.TypeOf((*MockDatabase)(nil).FetchTriggersToReindex), arg0) } @@ -337,6 +342,21 @@ func (mr *MockDatabaseMockRecorder) GetAllTriggerIDs() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllTriggerIDs", reflect.TypeOf((*MockDatabase)(nil).GetAllTriggerIDs)) } +// GetChatByUsername mocks base method. +func (m *MockDatabase) GetChatByUsername(arg0, arg1 string) (string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetChatByUsername", arg0, arg1) + ret0, _ := ret[0].(string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetChatByUsername indicates an expected call of GetChatByUsername. +func (mr *MockDatabaseMockRecorder) GetChatByUsername(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChatByUsername", reflect.TypeOf((*MockDatabase)(nil).GetChatByUsername), arg0, arg1) +} + // GetChecksUpdatesCount mocks base method. func (m *MockDatabase) GetChecksUpdatesCount() (int64, error) { m.ctrl.T.Helper() @@ -362,7 +382,7 @@ func (m *MockDatabase) GetContact(arg0 string) (moira.ContactData, error) { } // GetContact indicates an expected call of GetContact. -func (mr *MockDatabaseMockRecorder) GetContact(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetContact(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetContact", reflect.TypeOf((*MockDatabase)(nil).GetContact), arg0) } @@ -377,26 +397,11 @@ func (m *MockDatabase) GetContacts(arg0 []string) ([]*moira.ContactData, error) } // GetContacts indicates an expected call of GetContacts. -func (mr *MockDatabaseMockRecorder) GetContacts(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetContacts(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetContacts", reflect.TypeOf((*MockDatabase)(nil).GetContacts), arg0) } -// GetIDByUsername mocks base method. -func (m *MockDatabase) GetIDByUsername(arg0, arg1 string) (string, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetIDByUsername", arg0, arg1) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetIDByUsername indicates an expected call of GetIDByUsername. -func (mr *MockDatabaseMockRecorder) GetIDByUsername(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIDByUsername", reflect.TypeOf((*MockDatabase)(nil).GetIDByUsername), arg0, arg1) -} - // GetMetricRetention mocks base method. func (m *MockDatabase) GetMetricRetention(arg0 string) (int64, error) { m.ctrl.T.Helper() @@ -407,7 +412,7 @@ func (m *MockDatabase) GetMetricRetention(arg0 string) (int64, error) { } // GetMetricRetention indicates an expected call of GetMetricRetention. -func (mr *MockDatabaseMockRecorder) GetMetricRetention(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetMetricRetention(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMetricRetention", reflect.TypeOf((*MockDatabase)(nil).GetMetricRetention), arg0) } @@ -451,7 +456,7 @@ func (m *MockDatabase) GetMetricsValues(arg0 []string, arg1, arg2 int64) (map[st } // GetMetricsValues indicates an expected call of GetMetricsValues. -func (mr *MockDatabaseMockRecorder) GetMetricsValues(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetMetricsValues(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMetricsValues", reflect.TypeOf((*MockDatabase)(nil).GetMetricsValues), arg0, arg1, arg2) } @@ -465,7 +470,7 @@ func (m *MockDatabase) GetNotificationEventCount(arg0 string, arg1 int64) int64 } // GetNotificationEventCount indicates an expected call of GetNotificationEventCount. -func (mr *MockDatabaseMockRecorder) GetNotificationEventCount(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetNotificationEventCount(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNotificationEventCount", reflect.TypeOf((*MockDatabase)(nil).GetNotificationEventCount), arg0, arg1) } @@ -480,7 +485,7 @@ func (m *MockDatabase) GetNotificationEvents(arg0 string, arg1, arg2 int64) ([]* } // GetNotificationEvents indicates an expected call of GetNotificationEvents. -func (mr *MockDatabaseMockRecorder) GetNotificationEvents(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetNotificationEvents(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNotificationEvents", reflect.TypeOf((*MockDatabase)(nil).GetNotificationEvents), arg0, arg1, arg2) } @@ -496,7 +501,7 @@ func (m *MockDatabase) GetNotifications(arg0, arg1 int64) ([]*moira.ScheduledNot } // GetNotifications indicates an expected call of GetNotifications. -func (mr *MockDatabaseMockRecorder) GetNotifications(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetNotifications(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNotifications", reflect.TypeOf((*MockDatabase)(nil).GetNotifications), arg0, arg1) } @@ -511,7 +516,7 @@ func (m *MockDatabase) GetNotificationsByContactIdWithLimit(arg0 string, arg1, a } // GetNotificationsByContactIdWithLimit indicates an expected call of GetNotificationsByContactIdWithLimit. -func (mr *MockDatabaseMockRecorder) GetNotificationsByContactIdWithLimit(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetNotificationsByContactIdWithLimit(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNotificationsByContactIdWithLimit", reflect.TypeOf((*MockDatabase)(nil).GetNotificationsByContactIdWithLimit), arg0, arg1, arg2) } @@ -541,7 +546,7 @@ func (m *MockDatabase) GetPatternMetrics(arg0 string) ([]string, error) { } // GetPatternMetrics indicates an expected call of GetPatternMetrics. -func (mr *MockDatabaseMockRecorder) GetPatternMetrics(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetPatternMetrics(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPatternMetrics", reflect.TypeOf((*MockDatabase)(nil).GetPatternMetrics), arg0) } @@ -556,7 +561,7 @@ func (m *MockDatabase) GetPatternTriggerIDs(arg0 string) ([]string, error) { } // GetPatternTriggerIDs indicates an expected call of GetPatternTriggerIDs. -func (mr *MockDatabaseMockRecorder) GetPatternTriggerIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetPatternTriggerIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPatternTriggerIDs", reflect.TypeOf((*MockDatabase)(nil).GetPatternTriggerIDs), arg0) } @@ -616,7 +621,7 @@ func (m *MockDatabase) GetSubscription(arg0 string) (moira.SubscriptionData, err } // GetSubscription indicates an expected call of GetSubscription. -func (mr *MockDatabaseMockRecorder) GetSubscription(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetSubscription(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscription", reflect.TypeOf((*MockDatabase)(nil).GetSubscription), arg0) } @@ -631,7 +636,7 @@ func (m *MockDatabase) GetSubscriptions(arg0 []string) ([]*moira.SubscriptionDat } // GetSubscriptions indicates an expected call of GetSubscriptions. -func (mr *MockDatabaseMockRecorder) GetSubscriptions(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetSubscriptions(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscriptions", reflect.TypeOf((*MockDatabase)(nil).GetSubscriptions), arg0) } @@ -661,7 +666,7 @@ func (m *MockDatabase) GetTagTriggerIDs(arg0 string) ([]string, error) { } // GetTagTriggerIDs indicates an expected call of GetTagTriggerIDs. -func (mr *MockDatabaseMockRecorder) GetTagTriggerIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTagTriggerIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTagTriggerIDs", reflect.TypeOf((*MockDatabase)(nil).GetTagTriggerIDs), arg0) } @@ -676,7 +681,7 @@ func (m *MockDatabase) GetTagsSubscriptions(arg0 []string) ([]*moira.Subscriptio } // GetTagsSubscriptions indicates an expected call of GetTagsSubscriptions. -func (mr *MockDatabaseMockRecorder) GetTagsSubscriptions(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTagsSubscriptions(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTagsSubscriptions", reflect.TypeOf((*MockDatabase)(nil).GetTagsSubscriptions), arg0) } @@ -691,7 +696,7 @@ func (m *MockDatabase) GetTeam(arg0 string) (moira.Team, error) { } // GetTeam indicates an expected call of GetTeam. -func (mr *MockDatabaseMockRecorder) GetTeam(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTeam(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeam", reflect.TypeOf((*MockDatabase)(nil).GetTeam), arg0) } @@ -706,7 +711,7 @@ func (m *MockDatabase) GetTeamContactIDs(arg0 string) ([]string, error) { } // GetTeamContactIDs indicates an expected call of GetTeamContactIDs. -func (mr *MockDatabaseMockRecorder) GetTeamContactIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTeamContactIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeamContactIDs", reflect.TypeOf((*MockDatabase)(nil).GetTeamContactIDs), arg0) } @@ -721,7 +726,7 @@ func (m *MockDatabase) GetTeamSubscriptionIDs(arg0 string) ([]string, error) { } // GetTeamSubscriptionIDs indicates an expected call of GetTeamSubscriptionIDs. -func (mr *MockDatabaseMockRecorder) GetTeamSubscriptionIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTeamSubscriptionIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeamSubscriptionIDs", reflect.TypeOf((*MockDatabase)(nil).GetTeamSubscriptionIDs), arg0) } @@ -736,7 +741,7 @@ func (m *MockDatabase) GetTeamUsers(arg0 string) ([]string, error) { } // GetTeamUsers indicates an expected call of GetTeamUsers. -func (mr *MockDatabaseMockRecorder) GetTeamUsers(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTeamUsers(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeamUsers", reflect.TypeOf((*MockDatabase)(nil).GetTeamUsers), arg0) } @@ -751,7 +756,7 @@ func (m *MockDatabase) GetTrigger(arg0 string) (moira.Trigger, error) { } // GetTrigger indicates an expected call of GetTrigger. -func (mr *MockDatabaseMockRecorder) GetTrigger(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTrigger(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTrigger", reflect.TypeOf((*MockDatabase)(nil).GetTrigger), arg0) } @@ -766,7 +771,7 @@ func (m *MockDatabase) GetTriggerChecks(arg0 []string) ([]*moira.TriggerCheck, e } // GetTriggerChecks indicates an expected call of GetTriggerChecks. -func (mr *MockDatabaseMockRecorder) GetTriggerChecks(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggerChecks(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggerChecks", reflect.TypeOf((*MockDatabase)(nil).GetTriggerChecks), arg0) } @@ -781,7 +786,7 @@ func (m *MockDatabase) GetTriggerCount(arg0 []moira.ClusterKey) (map[moira.Clust } // GetTriggerCount indicates an expected call of GetTriggerCount. -func (mr *MockDatabaseMockRecorder) GetTriggerCount(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggerCount(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggerCount", reflect.TypeOf((*MockDatabase)(nil).GetTriggerCount), arg0) } @@ -796,7 +801,7 @@ func (m *MockDatabase) GetTriggerIDs(arg0 moira.ClusterKey) ([]string, error) { } // GetTriggerIDs indicates an expected call of GetTriggerIDs. -func (mr *MockDatabaseMockRecorder) GetTriggerIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggerIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggerIDs", reflect.TypeOf((*MockDatabase)(nil).GetTriggerIDs), arg0) } @@ -811,7 +816,7 @@ func (m *MockDatabase) GetTriggerIDsStartWith(arg0 string) ([]string, error) { } // GetTriggerIDsStartWith indicates an expected call of GetTriggerIDsStartWith. -func (mr *MockDatabaseMockRecorder) GetTriggerIDsStartWith(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggerIDsStartWith(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggerIDsStartWith", reflect.TypeOf((*MockDatabase)(nil).GetTriggerIDsStartWith), arg0) } @@ -826,7 +831,7 @@ func (m *MockDatabase) GetTriggerLastCheck(arg0 string) (moira.CheckData, error) } // GetTriggerLastCheck indicates an expected call of GetTriggerLastCheck. -func (mr *MockDatabaseMockRecorder) GetTriggerLastCheck(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggerLastCheck(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggerLastCheck", reflect.TypeOf((*MockDatabase)(nil).GetTriggerLastCheck), arg0) } @@ -841,7 +846,7 @@ func (m *MockDatabase) GetTriggerThrottling(arg0 string) (time.Time, time.Time) } // GetTriggerThrottling indicates an expected call of GetTriggerThrottling. -func (mr *MockDatabaseMockRecorder) GetTriggerThrottling(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggerThrottling(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggerThrottling", reflect.TypeOf((*MockDatabase)(nil).GetTriggerThrottling), arg0) } @@ -856,7 +861,7 @@ func (m *MockDatabase) GetTriggers(arg0 []string) ([]*moira.Trigger, error) { } // GetTriggers indicates an expected call of GetTriggers. -func (mr *MockDatabaseMockRecorder) GetTriggers(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggers(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggers", reflect.TypeOf((*MockDatabase)(nil).GetTriggers), arg0) } @@ -872,7 +877,7 @@ func (m *MockDatabase) GetTriggersSearchResults(arg0 string, arg1, arg2 int64) ( } // GetTriggersSearchResults indicates an expected call of GetTriggersSearchResults. -func (mr *MockDatabaseMockRecorder) GetTriggersSearchResults(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggersSearchResults(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggersSearchResults", reflect.TypeOf((*MockDatabase)(nil).GetTriggersSearchResults), arg0, arg1, arg2) } @@ -887,7 +892,7 @@ func (m *MockDatabase) GetTriggersToCheck(arg0 moira.ClusterKey, arg1 int) ([]st } // GetTriggersToCheck indicates an expected call of GetTriggersToCheck. -func (mr *MockDatabaseMockRecorder) GetTriggersToCheck(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggersToCheck(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggersToCheck", reflect.TypeOf((*MockDatabase)(nil).GetTriggersToCheck), arg0, arg1) } @@ -902,7 +907,7 @@ func (m *MockDatabase) GetTriggersToCheckCount(arg0 moira.ClusterKey) (int64, er } // GetTriggersToCheckCount indicates an expected call of GetTriggersToCheckCount. -func (mr *MockDatabaseMockRecorder) GetTriggersToCheckCount(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetTriggersToCheckCount(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTriggersToCheckCount", reflect.TypeOf((*MockDatabase)(nil).GetTriggersToCheckCount), arg0) } @@ -932,7 +937,7 @@ func (m *MockDatabase) GetUserContactIDs(arg0 string) ([]string, error) { } // GetUserContactIDs indicates an expected call of GetUserContactIDs. -func (mr *MockDatabaseMockRecorder) GetUserContactIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetUserContactIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserContactIDs", reflect.TypeOf((*MockDatabase)(nil).GetUserContactIDs), arg0) } @@ -947,7 +952,7 @@ func (m *MockDatabase) GetUserSubscriptionIDs(arg0 string) ([]string, error) { } // GetUserSubscriptionIDs indicates an expected call of GetUserSubscriptionIDs. -func (mr *MockDatabaseMockRecorder) GetUserSubscriptionIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetUserSubscriptionIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserSubscriptionIDs", reflect.TypeOf((*MockDatabase)(nil).GetUserSubscriptionIDs), arg0) } @@ -962,7 +967,7 @@ func (m *MockDatabase) GetUserTeams(arg0 string) ([]string, error) { } // GetUserTeams indicates an expected call of GetUserTeams. -func (mr *MockDatabaseMockRecorder) GetUserTeams(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) GetUserTeams(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserTeams", reflect.TypeOf((*MockDatabase)(nil).GetUserTeams), arg0) } @@ -977,7 +982,7 @@ func (m *MockDatabase) IsTeamContainUser(arg0, arg1 string) (bool, error) { } // IsTeamContainUser indicates an expected call of IsTeamContainUser. -func (mr *MockDatabaseMockRecorder) IsTeamContainUser(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) IsTeamContainUser(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsTeamContainUser", reflect.TypeOf((*MockDatabase)(nil).IsTeamContainUser), arg0, arg1) } @@ -992,7 +997,7 @@ func (m *MockDatabase) IsTriggersSearchResultsExist(arg0 string) (bool, error) { } // IsTriggersSearchResultsExist indicates an expected call of IsTriggersSearchResultsExist. -func (mr *MockDatabaseMockRecorder) IsTriggersSearchResultsExist(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) IsTriggersSearchResultsExist(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsTriggersSearchResultsExist", reflect.TypeOf((*MockDatabase)(nil).IsTriggersSearchResultsExist), arg0) } @@ -1000,7 +1005,7 @@ func (mr *MockDatabaseMockRecorder) IsTriggersSearchResultsExist(arg0 interface{ // MarkTriggersAsUnused mocks base method. func (m *MockDatabase) MarkTriggersAsUnused(arg0 ...string) error { m.ctrl.T.Helper() - varargs := []interface{}{} + varargs := []any{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -1010,7 +1015,7 @@ func (m *MockDatabase) MarkTriggersAsUnused(arg0 ...string) error { } // MarkTriggersAsUnused indicates an expected call of MarkTriggersAsUnused. -func (mr *MockDatabaseMockRecorder) MarkTriggersAsUnused(arg0 ...interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) MarkTriggersAsUnused(arg0 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MarkTriggersAsUnused", reflect.TypeOf((*MockDatabase)(nil).MarkTriggersAsUnused), arg0...) } @@ -1018,7 +1023,7 @@ func (mr *MockDatabaseMockRecorder) MarkTriggersAsUnused(arg0 ...interface{}) *g // MarkTriggersAsUsed mocks base method. func (m *MockDatabase) MarkTriggersAsUsed(arg0 ...string) error { m.ctrl.T.Helper() - varargs := []interface{}{} + varargs := []any{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -1028,7 +1033,7 @@ func (m *MockDatabase) MarkTriggersAsUsed(arg0 ...string) error { } // MarkTriggersAsUsed indicates an expected call of MarkTriggersAsUsed. -func (mr *MockDatabaseMockRecorder) MarkTriggersAsUsed(arg0 ...interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) MarkTriggersAsUsed(arg0 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MarkTriggersAsUsed", reflect.TypeOf((*MockDatabase)(nil).MarkTriggersAsUsed), arg0...) } @@ -1042,7 +1047,7 @@ func (m *MockDatabase) NewLock(arg0 string, arg1 time.Duration) moira.Lock { } // NewLock indicates an expected call of NewLock. -func (mr *MockDatabaseMockRecorder) NewLock(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) NewLock(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewLock", reflect.TypeOf((*MockDatabase)(nil).NewLock), arg0, arg1) } @@ -1056,7 +1061,7 @@ func (m *MockDatabase) PushContactNotificationToHistory(arg0 *moira.ScheduledNot } // PushContactNotificationToHistory indicates an expected call of PushContactNotificationToHistory. -func (mr *MockDatabaseMockRecorder) PushContactNotificationToHistory(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) PushContactNotificationToHistory(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PushContactNotificationToHistory", reflect.TypeOf((*MockDatabase)(nil).PushContactNotificationToHistory), arg0) } @@ -1070,7 +1075,7 @@ func (m *MockDatabase) PushNotificationEvent(arg0 *moira.NotificationEvent, arg1 } // PushNotificationEvent indicates an expected call of PushNotificationEvent. -func (mr *MockDatabaseMockRecorder) PushNotificationEvent(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) PushNotificationEvent(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PushNotificationEvent", reflect.TypeOf((*MockDatabase)(nil).PushNotificationEvent), arg0, arg1) } @@ -1082,7 +1087,7 @@ func (m *MockDatabase) ReleaseTriggerCheckLock(arg0 string) { } // ReleaseTriggerCheckLock indicates an expected call of ReleaseTriggerCheckLock. -func (mr *MockDatabaseMockRecorder) ReleaseTriggerCheckLock(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) ReleaseTriggerCheckLock(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReleaseTriggerCheckLock", reflect.TypeOf((*MockDatabase)(nil).ReleaseTriggerCheckLock), arg0) } @@ -1138,7 +1143,7 @@ func (m *MockDatabase) RemoveContact(arg0 string) error { } // RemoveContact indicates an expected call of RemoveContact. -func (mr *MockDatabaseMockRecorder) RemoveContact(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveContact(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveContact", reflect.TypeOf((*MockDatabase)(nil).RemoveContact), arg0) } @@ -1152,7 +1157,7 @@ func (m *MockDatabase) RemoveMetricRetention(arg0 string) error { } // RemoveMetricRetention indicates an expected call of RemoveMetricRetention. -func (mr *MockDatabaseMockRecorder) RemoveMetricRetention(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveMetricRetention(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveMetricRetention", reflect.TypeOf((*MockDatabase)(nil).RemoveMetricRetention), arg0) } @@ -1167,7 +1172,7 @@ func (m *MockDatabase) RemoveMetricValues(arg0, arg1, arg2 string) (int64, error } // RemoveMetricValues indicates an expected call of RemoveMetricValues. -func (mr *MockDatabaseMockRecorder) RemoveMetricValues(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveMetricValues(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveMetricValues", reflect.TypeOf((*MockDatabase)(nil).RemoveMetricValues), arg0, arg1, arg2) } @@ -1181,7 +1186,7 @@ func (m *MockDatabase) RemoveMetricsByPrefix(arg0 string) error { } // RemoveMetricsByPrefix indicates an expected call of RemoveMetricsByPrefix. -func (mr *MockDatabaseMockRecorder) RemoveMetricsByPrefix(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveMetricsByPrefix(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveMetricsByPrefix", reflect.TypeOf((*MockDatabase)(nil).RemoveMetricsByPrefix), arg0) } @@ -1195,7 +1200,7 @@ func (m *MockDatabase) RemoveMetricsValues(arg0 []string, arg1 int64) error { } // RemoveMetricsValues indicates an expected call of RemoveMetricsValues. -func (mr *MockDatabaseMockRecorder) RemoveMetricsValues(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveMetricsValues(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveMetricsValues", reflect.TypeOf((*MockDatabase)(nil).RemoveMetricsValues), arg0, arg1) } @@ -1210,7 +1215,7 @@ func (m *MockDatabase) RemoveNotification(arg0 string) (int64, error) { } // RemoveNotification indicates an expected call of RemoveNotification. -func (mr *MockDatabaseMockRecorder) RemoveNotification(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveNotification(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveNotification", reflect.TypeOf((*MockDatabase)(nil).RemoveNotification), arg0) } @@ -1224,7 +1229,7 @@ func (m *MockDatabase) RemovePattern(arg0 string) error { } // RemovePattern indicates an expected call of RemovePattern. -func (mr *MockDatabaseMockRecorder) RemovePattern(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemovePattern(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePattern", reflect.TypeOf((*MockDatabase)(nil).RemovePattern), arg0) } @@ -1238,7 +1243,7 @@ func (m *MockDatabase) RemovePatternTriggerIDs(arg0 string) error { } // RemovePatternTriggerIDs indicates an expected call of RemovePatternTriggerIDs. -func (mr *MockDatabaseMockRecorder) RemovePatternTriggerIDs(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemovePatternTriggerIDs(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePatternTriggerIDs", reflect.TypeOf((*MockDatabase)(nil).RemovePatternTriggerIDs), arg0) } @@ -1252,7 +1257,7 @@ func (m *MockDatabase) RemovePatternWithMetrics(arg0 string) error { } // RemovePatternWithMetrics indicates an expected call of RemovePatternWithMetrics. -func (mr *MockDatabaseMockRecorder) RemovePatternWithMetrics(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemovePatternWithMetrics(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePatternWithMetrics", reflect.TypeOf((*MockDatabase)(nil).RemovePatternWithMetrics), arg0) } @@ -1266,7 +1271,7 @@ func (m *MockDatabase) RemovePatternsMetrics(arg0 []string) error { } // RemovePatternsMetrics indicates an expected call of RemovePatternsMetrics. -func (mr *MockDatabaseMockRecorder) RemovePatternsMetrics(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemovePatternsMetrics(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePatternsMetrics", reflect.TypeOf((*MockDatabase)(nil).RemovePatternsMetrics), arg0) } @@ -1280,7 +1285,7 @@ func (m *MockDatabase) RemoveSubscription(arg0 string) error { } // RemoveSubscription indicates an expected call of RemoveSubscription. -func (mr *MockDatabaseMockRecorder) RemoveSubscription(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveSubscription(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveSubscription", reflect.TypeOf((*MockDatabase)(nil).RemoveSubscription), arg0) } @@ -1294,7 +1299,7 @@ func (m *MockDatabase) RemoveTag(arg0 string) error { } // RemoveTag indicates an expected call of RemoveTag. -func (mr *MockDatabaseMockRecorder) RemoveTag(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveTag(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTag", reflect.TypeOf((*MockDatabase)(nil).RemoveTag), arg0) } @@ -1308,7 +1313,7 @@ func (m *MockDatabase) RemoveTrigger(arg0 string) error { } // RemoveTrigger indicates an expected call of RemoveTrigger. -func (mr *MockDatabaseMockRecorder) RemoveTrigger(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveTrigger(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTrigger", reflect.TypeOf((*MockDatabase)(nil).RemoveTrigger), arg0) } @@ -1322,7 +1327,7 @@ func (m *MockDatabase) RemoveTriggerLastCheck(arg0 string) error { } // RemoveTriggerLastCheck indicates an expected call of RemoveTriggerLastCheck. -func (mr *MockDatabaseMockRecorder) RemoveTriggerLastCheck(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveTriggerLastCheck(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTriggerLastCheck", reflect.TypeOf((*MockDatabase)(nil).RemoveTriggerLastCheck), arg0) } @@ -1336,7 +1341,7 @@ func (m *MockDatabase) RemoveTriggersToReindex(arg0 int64) error { } // RemoveTriggersToReindex indicates an expected call of RemoveTriggersToReindex. -func (mr *MockDatabaseMockRecorder) RemoveTriggersToReindex(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveTriggersToReindex(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTriggersToReindex", reflect.TypeOf((*MockDatabase)(nil).RemoveTriggersToReindex), arg0) } @@ -1350,7 +1355,7 @@ func (m *MockDatabase) RemoveUser(arg0, arg1 string) error { } // RemoveUser indicates an expected call of RemoveUser. -func (mr *MockDatabaseMockRecorder) RemoveUser(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) RemoveUser(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveUser", reflect.TypeOf((*MockDatabase)(nil).RemoveUser), arg0, arg1) } @@ -1364,7 +1369,7 @@ func (m *MockDatabase) SaveContact(arg0 *moira.ContactData) error { } // SaveContact indicates an expected call of SaveContact. -func (mr *MockDatabaseMockRecorder) SaveContact(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveContact(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveContact", reflect.TypeOf((*MockDatabase)(nil).SaveContact), arg0) } @@ -1378,7 +1383,7 @@ func (m *MockDatabase) SaveMetrics(arg0 map[string]*moira.MatchedMetric) error { } // SaveMetrics indicates an expected call of SaveMetrics. -func (mr *MockDatabaseMockRecorder) SaveMetrics(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveMetrics(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveMetrics", reflect.TypeOf((*MockDatabase)(nil).SaveMetrics), arg0) } @@ -1392,7 +1397,7 @@ func (m *MockDatabase) SaveSubscription(arg0 *moira.SubscriptionData) error { } // SaveSubscription indicates an expected call of SaveSubscription. -func (mr *MockDatabaseMockRecorder) SaveSubscription(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveSubscription(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveSubscription", reflect.TypeOf((*MockDatabase)(nil).SaveSubscription), arg0) } @@ -1406,7 +1411,7 @@ func (m *MockDatabase) SaveSubscriptions(arg0 []*moira.SubscriptionData) error { } // SaveSubscriptions indicates an expected call of SaveSubscriptions. -func (mr *MockDatabaseMockRecorder) SaveSubscriptions(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveSubscriptions(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveSubscriptions", reflect.TypeOf((*MockDatabase)(nil).SaveSubscriptions), arg0) } @@ -1420,7 +1425,7 @@ func (m *MockDatabase) SaveTeam(arg0 string, arg1 moira.Team) error { } // SaveTeam indicates an expected call of SaveTeam. -func (mr *MockDatabaseMockRecorder) SaveTeam(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveTeam(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveTeam", reflect.TypeOf((*MockDatabase)(nil).SaveTeam), arg0, arg1) } @@ -1434,7 +1439,7 @@ func (m *MockDatabase) SaveTeamsAndUsers(arg0 string, arg1 []string, arg2 map[st } // SaveTeamsAndUsers indicates an expected call of SaveTeamsAndUsers. -func (mr *MockDatabaseMockRecorder) SaveTeamsAndUsers(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveTeamsAndUsers(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveTeamsAndUsers", reflect.TypeOf((*MockDatabase)(nil).SaveTeamsAndUsers), arg0, arg1, arg2) } @@ -1448,7 +1453,7 @@ func (m *MockDatabase) SaveTrigger(arg0 string, arg1 *moira.Trigger) error { } // SaveTrigger indicates an expected call of SaveTrigger. -func (mr *MockDatabaseMockRecorder) SaveTrigger(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveTrigger(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveTrigger", reflect.TypeOf((*MockDatabase)(nil).SaveTrigger), arg0, arg1) } @@ -1462,7 +1467,7 @@ func (m *MockDatabase) SaveTriggersSearchResults(arg0 string, arg1 []*moira.Sear } // SaveTriggersSearchResults indicates an expected call of SaveTriggersSearchResults. -func (mr *MockDatabaseMockRecorder) SaveTriggersSearchResults(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SaveTriggersSearchResults(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveTriggersSearchResults", reflect.TypeOf((*MockDatabase)(nil).SaveTriggersSearchResults), arg0, arg1) } @@ -1476,7 +1481,7 @@ func (m *MockDatabase) SetNotifierState(arg0 string) error { } // SetNotifierState indicates an expected call of SetNotifierState. -func (mr *MockDatabaseMockRecorder) SetNotifierState(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SetNotifierState(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetNotifierState", reflect.TypeOf((*MockDatabase)(nil).SetNotifierState), arg0) } @@ -1491,7 +1496,7 @@ func (m *MockDatabase) SetTriggerCheckLock(arg0 string) (bool, error) { } // SetTriggerCheckLock indicates an expected call of SetTriggerCheckLock. -func (mr *MockDatabaseMockRecorder) SetTriggerCheckLock(arg0 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SetTriggerCheckLock(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTriggerCheckLock", reflect.TypeOf((*MockDatabase)(nil).SetTriggerCheckLock), arg0) } @@ -1505,7 +1510,7 @@ func (m *MockDatabase) SetTriggerCheckMaintenance(arg0 string, arg1 map[string]i } // SetTriggerCheckMaintenance indicates an expected call of SetTriggerCheckMaintenance. -func (mr *MockDatabaseMockRecorder) SetTriggerCheckMaintenance(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SetTriggerCheckMaintenance(arg0, arg1, arg2, arg3, arg4 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTriggerCheckMaintenance", reflect.TypeOf((*MockDatabase)(nil).SetTriggerCheckMaintenance), arg0, arg1, arg2, arg3, arg4) } @@ -1519,7 +1524,7 @@ func (m *MockDatabase) SetTriggerLastCheck(arg0 string, arg1 *moira.CheckData, a } // SetTriggerLastCheck indicates an expected call of SetTriggerLastCheck. -func (mr *MockDatabaseMockRecorder) SetTriggerLastCheck(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SetTriggerLastCheck(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTriggerLastCheck", reflect.TypeOf((*MockDatabase)(nil).SetTriggerLastCheck), arg0, arg1, arg2) } @@ -1533,23 +1538,23 @@ func (m *MockDatabase) SetTriggerThrottling(arg0 string, arg1 time.Time) error { } // SetTriggerThrottling indicates an expected call of SetTriggerThrottling. -func (mr *MockDatabaseMockRecorder) SetTriggerThrottling(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SetTriggerThrottling(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTriggerThrottling", reflect.TypeOf((*MockDatabase)(nil).SetTriggerThrottling), arg0, arg1) } -// SetUsernameID mocks base method. -func (m *MockDatabase) SetUsernameID(arg0, arg1, arg2 string) error { +// SetUsernameChat mocks base method. +func (m *MockDatabase) SetUsernameChat(arg0, arg1, arg2 string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetUsernameID", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "SetUsernameChat", arg0, arg1, arg2) ret0, _ := ret[0].(error) return ret0 } -// SetUsernameID indicates an expected call of SetUsernameID. -func (mr *MockDatabaseMockRecorder) SetUsernameID(arg0, arg1, arg2 interface{}) *gomock.Call { +// SetUsernameChat indicates an expected call of SetUsernameChat. +func (mr *MockDatabaseMockRecorder) SetUsernameChat(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetUsernameID", reflect.TypeOf((*MockDatabase)(nil).SetUsernameID), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetUsernameChat", reflect.TypeOf((*MockDatabase)(nil).SetUsernameChat), arg0, arg1, arg2) } // SubscribeMetricEvents mocks base method. @@ -1562,7 +1567,7 @@ func (m *MockDatabase) SubscribeMetricEvents(arg0 *tomb.Tomb, arg1 *moira.Subscr } // SubscribeMetricEvents indicates an expected call of SubscribeMetricEvents. -func (mr *MockDatabaseMockRecorder) SubscribeMetricEvents(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockDatabaseMockRecorder) SubscribeMetricEvents(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubscribeMetricEvents", reflect.TypeOf((*MockDatabase)(nil).SubscribeMetricEvents), arg0, arg1) } diff --git a/mock/moira-alert/database_stats.go b/mock/moira-alert/database_stats.go index ebcf93022..389f36f46 100644 --- a/mock/moira-alert/database_stats.go +++ b/mock/moira-alert/database_stats.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/database/stats (interfaces: StatsReporter) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/database_stats.go -package=mock_moira_alert github.com/moira-alert/moira/database/stats StatsReporter +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,7 +12,7 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockStatsReporter is a mock of StatsReporter interface. @@ -40,7 +45,7 @@ func (m *MockStatsReporter) StartReport(arg0 <-chan struct{}) { } // StartReport indicates an expected call of StartReport. -func (mr *MockStatsReporterMockRecorder) StartReport(arg0 interface{}) *gomock.Call { +func (mr *MockStatsReporterMockRecorder) StartReport(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartReport", reflect.TypeOf((*MockStatsReporter)(nil).StartReport), arg0) } diff --git a/mock/moira-alert/event_builder.go b/mock/moira-alert/event_builder.go index 68787fa46..e12a6db13 100644 --- a/mock/moira-alert/event_builder.go +++ b/mock/moira-alert/event_builder.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/logging (interfaces: EventBuilder) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/event_builder.go -package=mock_moira_alert github.com/moira-alert/moira/logging EventBuilder +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,8 +12,8 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging" + gomock "go.uber.org/mock/gomock" ) // MockEventBuilder is a mock of EventBuilder interface. @@ -43,13 +48,13 @@ func (m *MockEventBuilder) Error(arg0 error) logging.EventBuilder { } // Error indicates an expected call of Error. -func (mr *MockEventBuilderMockRecorder) Error(arg0 interface{}) *gomock.Call { +func (mr *MockEventBuilderMockRecorder) Error(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Error", reflect.TypeOf((*MockEventBuilder)(nil).Error), arg0) } // Fields mocks base method. -func (m *MockEventBuilder) Fields(arg0 map[string]interface{}) logging.EventBuilder { +func (m *MockEventBuilder) Fields(arg0 map[string]any) logging.EventBuilder { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Fields", arg0) ret0, _ := ret[0].(logging.EventBuilder) @@ -57,7 +62,7 @@ func (m *MockEventBuilder) Fields(arg0 map[string]interface{}) logging.EventBuil } // Fields indicates an expected call of Fields. -func (mr *MockEventBuilderMockRecorder) Fields(arg0 interface{}) *gomock.Call { +func (mr *MockEventBuilderMockRecorder) Fields(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Fields", reflect.TypeOf((*MockEventBuilder)(nil).Fields), arg0) } @@ -71,7 +76,7 @@ func (m *MockEventBuilder) Int(arg0 string, arg1 int) logging.EventBuilder { } // Int indicates an expected call of Int. -func (mr *MockEventBuilderMockRecorder) Int(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockEventBuilderMockRecorder) Int(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Int", reflect.TypeOf((*MockEventBuilder)(nil).Int), arg0, arg1) } @@ -85,13 +90,13 @@ func (m *MockEventBuilder) Int64(arg0 string, arg1 int64) logging.EventBuilder { } // Int64 indicates an expected call of Int64. -func (mr *MockEventBuilderMockRecorder) Int64(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockEventBuilderMockRecorder) Int64(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Int64", reflect.TypeOf((*MockEventBuilder)(nil).Int64), arg0, arg1) } // Interface mocks base method. -func (m *MockEventBuilder) Interface(arg0 string, arg1 interface{}) logging.EventBuilder { +func (m *MockEventBuilder) Interface(arg0 string, arg1 any) logging.EventBuilder { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Interface", arg0, arg1) ret0, _ := ret[0].(logging.EventBuilder) @@ -99,7 +104,7 @@ func (m *MockEventBuilder) Interface(arg0 string, arg1 interface{}) logging.Even } // Interface indicates an expected call of Interface. -func (mr *MockEventBuilderMockRecorder) Interface(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockEventBuilderMockRecorder) Interface(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Interface", reflect.TypeOf((*MockEventBuilder)(nil).Interface), arg0, arg1) } @@ -111,7 +116,7 @@ func (m *MockEventBuilder) Msg(arg0 string) { } // Msg indicates an expected call of Msg. -func (mr *MockEventBuilderMockRecorder) Msg(arg0 interface{}) *gomock.Call { +func (mr *MockEventBuilderMockRecorder) Msg(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Msg", reflect.TypeOf((*MockEventBuilder)(nil).Msg), arg0) } @@ -125,7 +130,7 @@ func (m *MockEventBuilder) String(arg0, arg1 string) logging.EventBuilder { } // String indicates an expected call of String. -func (mr *MockEventBuilderMockRecorder) String(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockEventBuilderMockRecorder) String(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "String", reflect.TypeOf((*MockEventBuilder)(nil).String), arg0, arg1) } diff --git a/mock/moira-alert/image_store.go b/mock/moira-alert/image_store.go index 85268da39..974a4498d 100644 --- a/mock/moira-alert/image_store.go +++ b/mock/moira-alert/image_store.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: ImageStore) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/image_store.go -package=mock_moira_alert github.com/moira-alert/moira ImageStore +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,7 +12,7 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockImageStore is a mock of ImageStore interface. @@ -57,7 +62,7 @@ func (m *MockImageStore) StoreImage(arg0 []byte) (string, error) { } // StoreImage indicates an expected call of StoreImage. -func (mr *MockImageStoreMockRecorder) StoreImage(arg0 interface{}) *gomock.Call { +func (mr *MockImageStoreMockRecorder) StoreImage(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StoreImage", reflect.TypeOf((*MockImageStore)(nil).StoreImage), arg0) } diff --git a/mock/moira-alert/locks.go b/mock/moira-alert/locks.go index fe8507738..7c23ae55e 100644 --- a/mock/moira-alert/locks.go +++ b/mock/moira-alert/locks.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: Lock) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/locks.go -package=mock_moira_alert github.com/moira-alert/moira Lock +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,7 +12,7 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockLock is a mock of Lock interface. @@ -43,7 +48,7 @@ func (m *MockLock) Acquire(arg0 <-chan struct{}) (<-chan struct{}, error) { } // Acquire indicates an expected call of Acquire. -func (mr *MockLockMockRecorder) Acquire(arg0 interface{}) *gomock.Call { +func (mr *MockLockMockRecorder) Acquire(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Acquire", reflect.TypeOf((*MockLock)(nil).Acquire), arg0) } diff --git a/mock/moira-alert/logger.go b/mock/moira-alert/logger.go index 63690d7ae..cfe2eff33 100644 --- a/mock/moira-alert/logger.go +++ b/mock/moira-alert/logger.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: Logger) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/logger.go -package=mock_moira_alert github.com/moira-alert/moira Logger +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,9 +12,9 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" moira "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging" + gomock "go.uber.org/mock/gomock" ) // MockLogger is a mock of Logger interface. @@ -92,7 +97,7 @@ func (mr *MockLoggerMockRecorder) Fatal() *gomock.Call { } // Fields mocks base method. -func (m *MockLogger) Fields(arg0 map[string]interface{}) moira.Logger { +func (m *MockLogger) Fields(arg0 map[string]any) moira.Logger { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Fields", arg0) ret0, _ := ret[0].(moira.Logger) @@ -100,7 +105,7 @@ func (m *MockLogger) Fields(arg0 map[string]interface{}) moira.Logger { } // Fields indicates an expected call of Fields. -func (mr *MockLoggerMockRecorder) Fields(arg0 interface{}) *gomock.Call { +func (mr *MockLoggerMockRecorder) Fields(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Fields", reflect.TypeOf((*MockLogger)(nil).Fields), arg0) } @@ -128,7 +133,7 @@ func (m *MockLogger) Int(arg0 string, arg1 int) moira.Logger { } // Int indicates an expected call of Int. -func (mr *MockLoggerMockRecorder) Int(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockLoggerMockRecorder) Int(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Int", reflect.TypeOf((*MockLogger)(nil).Int), arg0, arg1) } @@ -142,7 +147,7 @@ func (m *MockLogger) Int64(arg0 string, arg1 int64) moira.Logger { } // Int64 indicates an expected call of Int64. -func (mr *MockLoggerMockRecorder) Int64(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockLoggerMockRecorder) Int64(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Int64", reflect.TypeOf((*MockLogger)(nil).Int64), arg0, arg1) } @@ -157,7 +162,7 @@ func (m *MockLogger) Level(arg0 string) (moira.Logger, error) { } // Level indicates an expected call of Level. -func (mr *MockLoggerMockRecorder) Level(arg0 interface{}) *gomock.Call { +func (mr *MockLoggerMockRecorder) Level(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Level", reflect.TypeOf((*MockLogger)(nil).Level), arg0) } @@ -171,7 +176,7 @@ func (m *MockLogger) String(arg0, arg1 string) moira.Logger { } // String indicates an expected call of String. -func (mr *MockLoggerMockRecorder) String(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockLoggerMockRecorder) String(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "String", reflect.TypeOf((*MockLogger)(nil).String), arg0, arg1) } diff --git a/mock/moira-alert/metrics/meter.go b/mock/moira-alert/metrics/meter.go index dcb902c30..e67c2b4fa 100644 --- a/mock/moira-alert/metrics/meter.go +++ b/mock/moira-alert/metrics/meter.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/metrics (interfaces: Meter) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/metrics/meter.go -package=mock_moira_alert github.com/moira-alert/moira/metrics Meter +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,7 +12,7 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockMeter is a mock of Meter interface. @@ -54,7 +59,7 @@ func (m *MockMeter) Mark(arg0 int64) { } // Mark indicates an expected call of Mark. -func (mr *MockMeterMockRecorder) Mark(arg0 interface{}) *gomock.Call { +func (mr *MockMeterMockRecorder) Mark(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Mark", reflect.TypeOf((*MockMeter)(nil).Mark), arg0) } diff --git a/mock/moira-alert/metrics/registry.go b/mock/moira-alert/metrics/registry.go index 68ccec8be..d3cab24f5 100644 --- a/mock/moira-alert/metrics/registry.go +++ b/mock/moira-alert/metrics/registry.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/metrics (interfaces: Registry) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/metrics/registry.go -package=mock_moira_alert github.com/moira-alert/moira/metrics Registry +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,8 +12,8 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" metrics "github.com/moira-alert/moira/metrics" + gomock "go.uber.org/mock/gomock" ) // MockRegistry is a mock of Registry interface. @@ -37,7 +42,7 @@ func (m *MockRegistry) EXPECT() *MockRegistryMockRecorder { // NewCounter mocks base method. func (m *MockRegistry) NewCounter(arg0 ...string) metrics.Counter { m.ctrl.T.Helper() - varargs := []interface{}{} + varargs := []any{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -47,7 +52,7 @@ func (m *MockRegistry) NewCounter(arg0 ...string) metrics.Counter { } // NewCounter indicates an expected call of NewCounter. -func (mr *MockRegistryMockRecorder) NewCounter(arg0 ...interface{}) *gomock.Call { +func (mr *MockRegistryMockRecorder) NewCounter(arg0 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewCounter", reflect.TypeOf((*MockRegistry)(nil).NewCounter), arg0...) } @@ -55,7 +60,7 @@ func (mr *MockRegistryMockRecorder) NewCounter(arg0 ...interface{}) *gomock.Call // NewHistogram mocks base method. func (m *MockRegistry) NewHistogram(arg0 ...string) metrics.Histogram { m.ctrl.T.Helper() - varargs := []interface{}{} + varargs := []any{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -65,7 +70,7 @@ func (m *MockRegistry) NewHistogram(arg0 ...string) metrics.Histogram { } // NewHistogram indicates an expected call of NewHistogram. -func (mr *MockRegistryMockRecorder) NewHistogram(arg0 ...interface{}) *gomock.Call { +func (mr *MockRegistryMockRecorder) NewHistogram(arg0 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewHistogram", reflect.TypeOf((*MockRegistry)(nil).NewHistogram), arg0...) } @@ -73,7 +78,7 @@ func (mr *MockRegistryMockRecorder) NewHistogram(arg0 ...interface{}) *gomock.Ca // NewMeter mocks base method. func (m *MockRegistry) NewMeter(arg0 ...string) metrics.Meter { m.ctrl.T.Helper() - varargs := []interface{}{} + varargs := []any{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -83,7 +88,7 @@ func (m *MockRegistry) NewMeter(arg0 ...string) metrics.Meter { } // NewMeter indicates an expected call of NewMeter. -func (mr *MockRegistryMockRecorder) NewMeter(arg0 ...interface{}) *gomock.Call { +func (mr *MockRegistryMockRecorder) NewMeter(arg0 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewMeter", reflect.TypeOf((*MockRegistry)(nil).NewMeter), arg0...) } @@ -91,7 +96,7 @@ func (mr *MockRegistryMockRecorder) NewMeter(arg0 ...interface{}) *gomock.Call { // NewTimer mocks base method. func (m *MockRegistry) NewTimer(arg0 ...string) metrics.Timer { m.ctrl.T.Helper() - varargs := []interface{}{} + varargs := []any{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -101,7 +106,7 @@ func (m *MockRegistry) NewTimer(arg0 ...string) metrics.Timer { } // NewTimer indicates an expected call of NewTimer. -func (mr *MockRegistryMockRecorder) NewTimer(arg0 ...interface{}) *gomock.Call { +func (mr *MockRegistryMockRecorder) NewTimer(arg0 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewTimer", reflect.TypeOf((*MockRegistry)(nil).NewTimer), arg0...) } diff --git a/mock/moira-alert/mutex.go b/mock/moira-alert/mutex.go index 74788eceb..a367b5148 100644 --- a/mock/moira-alert/mutex.go +++ b/mock/moira-alert/mutex.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: Mutex) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/mutex.go -package=mock_moira_alert github.com/moira-alert/moira Mutex +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,7 +12,7 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockMutex is a mock of Mutex interface. diff --git a/mock/moira-alert/prometheus_api.go b/mock/moira-alert/prometheus_api.go index 5adf72ef0..b2132c148 100644 --- a/mock/moira-alert/prometheus_api.go +++ b/mock/moira-alert/prometheus_api.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/metric_source/prometheus (interfaces: PrometheusApi) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/prometheus_api.go -package=mock_moira_alert github.com/moira-alert/moira/metric_source/prometheus PrometheusApi +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -8,9 +13,9 @@ import ( context "context" reflect "reflect" - gomock "github.com/golang/mock/gomock" v1 "github.com/prometheus/client_golang/api/prometheus/v1" model "github.com/prometheus/common/model" + gomock "go.uber.org/mock/gomock" ) // MockPrometheusApi is a mock of PrometheusApi interface. @@ -39,7 +44,7 @@ func (m *MockPrometheusApi) EXPECT() *MockPrometheusApiMockRecorder { // QueryRange mocks base method. func (m *MockPrometheusApi) QueryRange(arg0 context.Context, arg1 string, arg2 v1.Range, arg3 ...v1.Option) (model.Value, v1.Warnings, error) { m.ctrl.T.Helper() - varargs := []interface{}{arg0, arg1, arg2} + varargs := []any{arg0, arg1, arg2} for _, a := range arg3 { varargs = append(varargs, a) } @@ -51,8 +56,8 @@ func (m *MockPrometheusApi) QueryRange(arg0 context.Context, arg1 string, arg2 v } // QueryRange indicates an expected call of QueryRange. -func (mr *MockPrometheusApiMockRecorder) QueryRange(arg0, arg1, arg2 interface{}, arg3 ...interface{}) *gomock.Call { +func (mr *MockPrometheusApiMockRecorder) QueryRange(arg0, arg1, arg2 any, arg3 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{arg0, arg1, arg2}, arg3...) + varargs := append([]any{arg0, arg1, arg2}, arg3...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryRange", reflect.TypeOf((*MockPrometheusApi)(nil).QueryRange), varargs...) } diff --git a/mock/moira-alert/searcher.go b/mock/moira-alert/searcher.go index f6fc5adf8..ade2746fd 100644 --- a/mock/moira-alert/searcher.go +++ b/mock/moira-alert/searcher.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: Searcher) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/searcher.go -package=mock_moira_alert github.com/moira-alert/moira Searcher +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -7,8 +12,8 @@ package mock_moira_alert import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" moira "github.com/moira-alert/moira" + gomock "go.uber.org/mock/gomock" ) // MockSearcher is a mock of Searcher interface. @@ -59,7 +64,7 @@ func (m *MockSearcher) SearchTriggers(arg0 moira.SearchOptions) ([]*moira.Search } // SearchTriggers indicates an expected call of SearchTriggers. -func (mr *MockSearcherMockRecorder) SearchTriggers(arg0 interface{}) *gomock.Call { +func (mr *MockSearcherMockRecorder) SearchTriggers(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SearchTriggers", reflect.TypeOf((*MockSearcher)(nil).SearchTriggers), arg0) } diff --git a/mock/moira-alert/sender.go b/mock/moira-alert/sender.go index 25a282724..19185cb72 100644 --- a/mock/moira-alert/sender.go +++ b/mock/moira-alert/sender.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira (interfaces: Sender) +// +// Generated by this command: +// +// mockgen -destination=mock/moira-alert/sender.go -package=mock_moira_alert github.com/moira-alert/moira Sender +// // Package mock_moira_alert is a generated GoMock package. package mock_moira_alert @@ -8,8 +13,8 @@ import ( reflect "reflect" time "time" - gomock "github.com/golang/mock/gomock" moira "github.com/moira-alert/moira" + gomock "go.uber.org/mock/gomock" ) // MockSender is a mock of Sender interface. @@ -36,7 +41,7 @@ func (m *MockSender) EXPECT() *MockSenderMockRecorder { } // Init mocks base method. -func (m *MockSender) Init(arg0 interface{}, arg1 moira.Logger, arg2 *time.Location, arg3 string) error { +func (m *MockSender) Init(arg0 any, arg1 moira.Logger, arg2 *time.Location, arg3 string) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Init", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(error) @@ -44,7 +49,7 @@ func (m *MockSender) Init(arg0 interface{}, arg1 moira.Logger, arg2 *time.Locati } // Init indicates an expected call of Init. -func (mr *MockSenderMockRecorder) Init(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockSenderMockRecorder) Init(arg0, arg1, arg2, arg3 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Init", reflect.TypeOf((*MockSender)(nil).Init), arg0, arg1, arg2, arg3) } @@ -58,7 +63,7 @@ func (m *MockSender) SendEvents(arg0 moira.NotificationEvents, arg1 moira.Contac } // SendEvents indicates an expected call of SendEvents. -func (mr *MockSenderMockRecorder) SendEvents(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { +func (mr *MockSenderMockRecorder) SendEvents(arg0, arg1, arg2, arg3, arg4 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendEvents", reflect.TypeOf((*MockSender)(nil).SendEvents), arg0, arg1, arg2, arg3, arg4) } diff --git a/mock/notifier/mattermost/client.go b/mock/notifier/mattermost/client.go index f3ddb4903..fff80b447 100644 --- a/mock/notifier/mattermost/client.go +++ b/mock/notifier/mattermost/client.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/senders/mattermost (interfaces: Client) +// +// Generated by this command: +// +// mockgen -destination=mock/notifier/mattermost/client.go -package=mock_mattermost github.com/moira-alert/moira/senders/mattermost Client +// // Package mock_mattermost is a generated GoMock package. package mock_mattermost @@ -8,8 +13,8 @@ import ( context "context" reflect "reflect" - gomock "github.com/golang/mock/gomock" model "github.com/mattermost/mattermost/server/public/model" + gomock "go.uber.org/mock/gomock" ) // MockClient is a mock of Client interface. @@ -46,7 +51,7 @@ func (m *MockClient) CreatePost(arg0 context.Context, arg1 *model.Post) (*model. } // CreatePost indicates an expected call of CreatePost. -func (mr *MockClientMockRecorder) CreatePost(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreatePost(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePost", reflect.TypeOf((*MockClient)(nil).CreatePost), arg0, arg1) } @@ -58,7 +63,7 @@ func (m *MockClient) SetToken(arg0 string) { } // SetToken indicates an expected call of SetToken. -func (mr *MockClientMockRecorder) SetToken(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) SetToken(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetToken", reflect.TypeOf((*MockClient)(nil).SetToken), arg0) } @@ -74,7 +79,7 @@ func (m *MockClient) UploadFile(arg0 context.Context, arg1 []byte, arg2, arg3 st } // UploadFile indicates an expected call of UploadFile. -func (mr *MockClientMockRecorder) UploadFile(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UploadFile(arg0, arg1, arg2, arg3 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadFile", reflect.TypeOf((*MockClient)(nil).UploadFile), arg0, arg1, arg2, arg3) } diff --git a/mock/notifier/notifier.go b/mock/notifier/notifier.go index c886a40a4..3d25fb74d 100644 --- a/mock/notifier/notifier.go +++ b/mock/notifier/notifier.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/notifier (interfaces: Notifier) +// +// Generated by this command: +// +// mockgen -destination=mock/notifier/notifier.go -package=mock_notifier github.com/moira-alert/moira/notifier Notifier +// // Package mock_notifier is a generated GoMock package. package mock_notifier @@ -8,9 +13,9 @@ import ( reflect "reflect" sync "sync" - gomock "github.com/golang/mock/gomock" moira "github.com/moira-alert/moira" notifier "github.com/moira-alert/moira/notifier" + gomock "go.uber.org/mock/gomock" ) // MockNotifier is a mock of Notifier interface. @@ -65,7 +70,7 @@ func (mr *MockNotifierMockRecorder) GetSenders() *gomock.Call { } // RegisterSender mocks base method. -func (m *MockNotifier) RegisterSender(arg0 map[string]interface{}, arg1 moira.Sender) error { +func (m *MockNotifier) RegisterSender(arg0 map[string]any, arg1 moira.Sender) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RegisterSender", arg0, arg1) ret0, _ := ret[0].(error) @@ -73,7 +78,7 @@ func (m *MockNotifier) RegisterSender(arg0 map[string]interface{}, arg1 moira.Se } // RegisterSender indicates an expected call of RegisterSender. -func (mr *MockNotifierMockRecorder) RegisterSender(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockNotifierMockRecorder) RegisterSender(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterSender", reflect.TypeOf((*MockNotifier)(nil).RegisterSender), arg0, arg1) } @@ -85,7 +90,7 @@ func (m *MockNotifier) Send(arg0 *notifier.NotificationPackage, arg1 *sync.WaitG } // Send indicates an expected call of Send. -func (mr *MockNotifierMockRecorder) Send(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockNotifierMockRecorder) Send(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockNotifier)(nil).Send), arg0, arg1) } diff --git a/mock/notifier/telegram/bot.go b/mock/notifier/telegram/bot.go new file mode 100644 index 000000000..ef2cdd4b9 --- /dev/null +++ b/mock/notifier/telegram/bot.go @@ -0,0 +1,156 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/moira-alert/moira/senders/telegram (interfaces: Bot) +// +// Generated by this command: +// +// mockgen -destination=mock/notifier/telegram/bot.go -package=mock_telegram github.com/moira-alert/moira/senders/telegram Bot +// + +// Package mock_telegram is a generated GoMock package. +package mock_telegram + +import ( + reflect "reflect" + + gomock "go.uber.org/mock/gomock" + telebot "gopkg.in/telebot.v3" +) + +// MockBot is a mock of Bot interface. +type MockBot struct { + ctrl *gomock.Controller + recorder *MockBotMockRecorder +} + +// MockBotMockRecorder is the mock recorder for MockBot. +type MockBotMockRecorder struct { + mock *MockBot +} + +// NewMockBot creates a new mock instance. +func NewMockBot(ctrl *gomock.Controller) *MockBot { + mock := &MockBot{ctrl: ctrl} + mock.recorder = &MockBotMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockBot) EXPECT() *MockBotMockRecorder { + return m.recorder +} + +// ChatByUsername mocks base method. +func (m *MockBot) ChatByUsername(arg0 string) (*telebot.Chat, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ChatByUsername", arg0) + ret0, _ := ret[0].(*telebot.Chat) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ChatByUsername indicates an expected call of ChatByUsername. +func (mr *MockBotMockRecorder) ChatByUsername(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ChatByUsername", reflect.TypeOf((*MockBot)(nil).ChatByUsername), arg0) +} + +// Handle mocks base method. +func (m *MockBot) Handle(arg0 any, arg1 telebot.HandlerFunc, arg2 ...telebot.MiddlewareFunc) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Handle", varargs...) +} + +// Handle indicates an expected call of Handle. +func (mr *MockBotMockRecorder) Handle(arg0, arg1 any, arg2 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Handle", reflect.TypeOf((*MockBot)(nil).Handle), varargs...) +} + +// Reply mocks base method. +func (m *MockBot) Reply(arg0 *telebot.Message, arg1 any, arg2 ...any) (*telebot.Message, error) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Reply", varargs...) + ret0, _ := ret[0].(*telebot.Message) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Reply indicates an expected call of Reply. +func (mr *MockBotMockRecorder) Reply(arg0, arg1 any, arg2 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Reply", reflect.TypeOf((*MockBot)(nil).Reply), varargs...) +} + +// Send mocks base method. +func (m *MockBot) Send(arg0 telebot.Recipient, arg1 any, arg2 ...any) (*telebot.Message, error) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Send", varargs...) + ret0, _ := ret[0].(*telebot.Message) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Send indicates an expected call of Send. +func (mr *MockBotMockRecorder) Send(arg0, arg1 any, arg2 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockBot)(nil).Send), varargs...) +} + +// SendAlbum mocks base method. +func (m *MockBot) SendAlbum(arg0 telebot.Recipient, arg1 telebot.Album, arg2 ...any) ([]telebot.Message, error) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SendAlbum", varargs...) + ret0, _ := ret[0].([]telebot.Message) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SendAlbum indicates an expected call of SendAlbum. +func (mr *MockBotMockRecorder) SendAlbum(arg0, arg1 any, arg2 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendAlbum", reflect.TypeOf((*MockBot)(nil).SendAlbum), varargs...) +} + +// Start mocks base method. +func (m *MockBot) Start() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Start") +} + +// Start indicates an expected call of Start. +func (mr *MockBotMockRecorder) Start() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockBot)(nil).Start)) +} + +// Stop mocks base method. +func (m *MockBot) Stop() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Stop") +} + +// Stop indicates an expected call of Stop. +func (mr *MockBotMockRecorder) Stop() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", reflect.TypeOf((*MockBot)(nil).Stop)) +} diff --git a/mock/scheduler/scheduler.go b/mock/scheduler/scheduler.go index d8a0a5b71..8a146a314 100644 --- a/mock/scheduler/scheduler.go +++ b/mock/scheduler/scheduler.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/moira-alert/moira/notifier (interfaces: Scheduler) +// +// Generated by this command: +// +// mockgen -destination=mock/scheduler/scheduler.go -package=mock_scheduler github.com/moira-alert/moira/notifier Scheduler +// // Package mock_scheduler is a generated GoMock package. package mock_scheduler @@ -7,8 +12,8 @@ package mock_scheduler import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" moira "github.com/moira-alert/moira" + gomock "go.uber.org/mock/gomock" ) // MockScheduler is a mock of Scheduler interface. diff --git a/notifier/events/event_test.go b/notifier/events/event_test.go index d4727ea5f..219f03f60 100644 --- a/notifier/events/event_test.go +++ b/notifier/events/event_test.go @@ -5,9 +5,9 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/database" diff --git a/notifier/notifications/notifications_test.go b/notifier/notifications/notifications_test.go index 66f488001..2b40438d6 100644 --- a/notifier/notifications/notifications_test.go +++ b/notifier/notifications/notifications_test.go @@ -4,10 +4,10 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" "github.com/moira-alert/moira/metrics" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" diff --git a/notifier/notifier_test.go b/notifier/notifier_test.go index 79d7b43e7..4234abc9c 100644 --- a/notifier/notifier_test.go +++ b/notifier/notifier_test.go @@ -6,11 +6,11 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" metricSource "github.com/moira-alert/moira/metric_source" "github.com/moira-alert/moira/metric_source/local" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/metrics" diff --git a/notifier/plotting_test.go b/notifier/plotting_test.go index 7d53c8472..b91f341b0 100644 --- a/notifier/plotting_test.go +++ b/notifier/plotting_test.go @@ -8,7 +8,6 @@ import ( "time" "github.com/gofrs/uuid" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" metricSource "github.com/moira-alert/moira/metric_source" @@ -16,6 +15,7 @@ import ( mockMetricSource "github.com/moira-alert/moira/mock/metric_source" "github.com/moira-alert/moira/plotting" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) // generateTestMetricsData generates metricsData map for tests. diff --git a/notifier/scheduler_test.go b/notifier/scheduler_test.go index 88446769a..930955f59 100644 --- a/notifier/scheduler_test.go +++ b/notifier/scheduler_test.go @@ -5,13 +5,13 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" "github.com/moira-alert/moira/metrics" mock_clock "github.com/moira-alert/moira/mock/clock" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) var plottingData = moira.PlottingData{ diff --git a/notifier/selfstate/heartbeat/database_test.go b/notifier/selfstate/heartbeat/database_test.go index 267a6718e..a5b8b8a5a 100644 --- a/notifier/selfstate/heartbeat/database_test.go +++ b/notifier/selfstate/heartbeat/database_test.go @@ -7,9 +7,9 @@ import ( mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestDatabaseHeartbeat(t *testing.T) { diff --git a/notifier/selfstate/heartbeat/filter_test.go b/notifier/selfstate/heartbeat/filter_test.go index 36b691a37..678c443d9 100644 --- a/notifier/selfstate/heartbeat/filter_test.go +++ b/notifier/selfstate/heartbeat/filter_test.go @@ -8,9 +8,9 @@ import ( "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestFilter(t *testing.T) { diff --git a/notifier/selfstate/heartbeat/local_checker_test.go b/notifier/selfstate/heartbeat/local_checker_test.go index 2d0595e5f..7c638907a 100644 --- a/notifier/selfstate/heartbeat/local_checker_test.go +++ b/notifier/selfstate/heartbeat/local_checker_test.go @@ -8,9 +8,9 @@ import ( "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestCheckDelay_Check(t *testing.T) { diff --git a/notifier/selfstate/heartbeat/notifier_test.go b/notifier/selfstate/heartbeat/notifier_test.go index 8801957f6..3d4976035 100644 --- a/notifier/selfstate/heartbeat/notifier_test.go +++ b/notifier/selfstate/heartbeat/notifier_test.go @@ -9,9 +9,9 @@ import ( "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestNotifierState(t *testing.T) { diff --git a/notifier/selfstate/heartbeat/remote_checker_test.go b/notifier/selfstate/heartbeat/remote_checker_test.go index 5a3180753..a48ee30a8 100644 --- a/notifier/selfstate/heartbeat/remote_checker_test.go +++ b/notifier/selfstate/heartbeat/remote_checker_test.go @@ -8,9 +8,9 @@ import ( "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGraphiteRemoteChecker(t *testing.T) { diff --git a/notifier/selfstate/selfstate_test.go b/notifier/selfstate/selfstate_test.go index c194041cf..71859dca9 100644 --- a/notifier/selfstate/selfstate_test.go +++ b/notifier/selfstate/selfstate_test.go @@ -12,11 +12,11 @@ import ( "github.com/moira-alert/moira" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" mock_notifier "github.com/moira-alert/moira/mock/notifier" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) type selfCheckWorkerMock struct { diff --git a/perfomance_tests/filter/pattern_storage_test.go b/perfomance_tests/filter/pattern_storage_test.go index 631df378a..1270cd917 100644 --- a/perfomance_tests/filter/pattern_storage_test.go +++ b/perfomance_tests/filter/pattern_storage_test.go @@ -6,11 +6,11 @@ import ( "math/rand" "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira/filter" logging "github.com/moira-alert/moira/logging/zerolog_adapter" "github.com/moira-alert/moira/metrics" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" ) func shufflePatterns(patterns []string) []string { diff --git a/perfomance_tests/filter/performance_test_utils.go b/perfomance_tests/filter/performance_test_utils.go index d293793f0..67188c92b 100644 --- a/perfomance_tests/filter/performance_test_utils.go +++ b/perfomance_tests/filter/performance_test_utils.go @@ -12,11 +12,11 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira/filter" logging "github.com/moira-alert/moira/logging/zerolog_adapter" "github.com/moira-alert/moira/metrics" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" ) const letterBytes = "abcdefghijklmnopqrstuvwxyz" diff --git a/senders/discord/response.go b/senders/discord/response.go index e9ee82348..fc585e22c 100644 --- a/senders/discord/response.go +++ b/senders/discord/response.go @@ -16,14 +16,14 @@ func (sender *Sender) getResponse(m *discordgo.MessageCreate, channel *discordgo if m.Content == "!start" { //nolint switch channel.Type { case discordgo.ChannelTypeDM: - err := sender.DataBase.SetUsernameID(messenger, "@"+m.Author.Username, channel.ID) + err := sender.DataBase.SetUsernameChat(messenger, "@"+m.Author.Username, channel.ID) if err != nil { return "", fmt.Errorf("error while setting the channel ID for user: %w", err) } msg := fmt.Sprintf("Okay, %s, your id is %s", m.Author.Username, channel.ID) return msg, nil case discordgo.ChannelTypeGuildText: - err := sender.DataBase.SetUsernameID(messenger, channel.Name, channel.ID) + err := sender.DataBase.SetUsernameChat(messenger, channel.Name, channel.ID) if err != nil { return "", fmt.Errorf("error while setting the channel ID for text channel: %w", err) } diff --git a/senders/discord/response_test.go b/senders/discord/response_test.go index 7ff93b235..a25a80853 100644 --- a/senders/discord/response_test.go +++ b/senders/discord/response_test.go @@ -6,9 +6,9 @@ import ( "github.com/bwmarrin/discordgo" - "github.com/golang/mock/gomock" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetResponseMessage(t *testing.T) { @@ -42,7 +42,7 @@ func TestGetResponseMessage(t *testing.T) { }) Convey("DM channel", func() { - dataBase.EXPECT().SetUsernameID(messenger, "@User", "456").Return(nil) + dataBase.EXPECT().SetUsernameChat(messenger, "@User", "456").Return(nil) channel.Type = discordgo.ChannelTypeDM channel.ID = "456" message.Content = "!start" @@ -54,7 +54,7 @@ func TestGetResponseMessage(t *testing.T) { }) Convey("Guild Text channel", func() { - dataBase.EXPECT().SetUsernameID(messenger, "testchan", "456").Return(nil) + dataBase.EXPECT().SetUsernameChat(messenger, "testchan", "456").Return(nil) channel.Type = discordgo.ChannelTypeGuildText channel.ID = "456" channel.Name = "testchan" diff --git a/senders/discord/send.go b/senders/discord/send.go index 58bd8443a..8e3b81f4b 100644 --- a/senders/discord/send.go +++ b/senders/discord/send.go @@ -46,10 +46,11 @@ func (sender *Sender) SendEvents(events moira.NotificationEvents, contact moira. } func (sender *Sender) getChannelID(username string) (string, error) { - chid, err := sender.DataBase.GetIDByUsername(messenger, username) + chid, err := sender.DataBase.GetChatByUsername(messenger, username) if err != nil { return "", fmt.Errorf("failed to get channel ID: %s", err.Error()) } + return chid, nil } diff --git a/senders/mattermost/sender_internal_test.go b/senders/mattermost/sender_internal_test.go index da4e1b938..538035c9f 100644 --- a/senders/mattermost/sender_internal_test.go +++ b/senders/mattermost/sender_internal_test.go @@ -11,10 +11,10 @@ import ( "github.com/moira-alert/moira" - "github.com/golang/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock "github.com/moira-alert/moira/mock/notifier/mattermost" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestSendEvents(t *testing.T) { diff --git a/senders/opsgenie/init_test.go b/senders/opsgenie/init_test.go index 7bcbccad3..e39702834 100644 --- a/senders/opsgenie/init_test.go +++ b/senders/opsgenie/init_test.go @@ -5,8 +5,8 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" + "go.uber.org/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" diff --git a/senders/opsgenie/send_test.go b/senders/opsgenie/send_test.go index 11798c765..db81c15a2 100644 --- a/senders/opsgenie/send_test.go +++ b/senders/opsgenie/send_test.go @@ -4,12 +4,12 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" "github.com/opsgenie/opsgenie-go-sdk-v2/alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestGetPushoverPriority(t *testing.T) { diff --git a/senders/pagerduty/init_test.go b/senders/pagerduty/init_test.go index 6d79d1053..df0ecbbe7 100644 --- a/senders/pagerduty/init_test.go +++ b/senders/pagerduty/init_test.go @@ -4,9 +4,9 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" . "github.com/smartystreets/goconvey/convey" diff --git a/senders/pagerduty/send_test.go b/senders/pagerduty/send_test.go index 337369893..e9cd39ba4 100644 --- a/senders/pagerduty/send_test.go +++ b/senders/pagerduty/send_test.go @@ -5,8 +5,8 @@ import ( "time" "github.com/PagerDuty/go-pagerduty" - "github.com/golang/mock/gomock" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" . "github.com/smartystreets/goconvey/convey" diff --git a/senders/read_image_store_config_test.go b/senders/read_image_store_config_test.go index 44b30334b..5e2f7ce33 100644 --- a/senders/read_image_store_config_test.go +++ b/senders/read_image_store_config_test.go @@ -3,10 +3,10 @@ package senders import ( "testing" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) func TestReadImageStoreConfig(t *testing.T) { diff --git a/senders/selfstate/selfstate_test.go b/senders/selfstate/selfstate_test.go index d64e13462..dece53d94 100644 --- a/senders/selfstate/selfstate_test.go +++ b/senders/selfstate/selfstate_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" logging "github.com/moira-alert/moira/logging/zerolog_adapter" diff --git a/senders/telegram/handle_message.go b/senders/telegram/handle_message.go index 20660230d..86de1644b 100644 --- a/senders/telegram/handle_message.go +++ b/senders/telegram/handle_message.go @@ -5,7 +5,7 @@ import ( "strconv" "strings" - "gopkg.in/tucnak/telebot.v2" + "gopkg.in/telebot.v3" ) // handleMessage handles incoming messages to start sending events to subscribers chats. @@ -14,11 +14,13 @@ func (sender *Sender) handleMessage(message *telebot.Message) error { if err != nil { return err } + if responseMessage != "" { - if _, err = sender.bot.Send(message.Chat, responseMessage); err != nil { - return removeTokenFromError(err, sender.bot) + if _, err = sender.bot.Reply(message, responseMessage); err != nil { + return sender.removeTokenFromError(err) } } + return nil } @@ -29,20 +31,28 @@ func (sender *Sender) getResponseMessage(message *telebot.Message) (string, erro if message.Chat.Username == "" { return "Username is empty. Please add username in Telegram.", nil } - err := sender.DataBase.SetUsernameID(messenger, "@"+message.Chat.Username, chatID) - if err != nil { + + if err := sender.setChat(message); err != nil { return "", err } + return fmt.Sprintf("Okay, %s, your id is %s", strings.Trim(fmt.Sprintf("%s %s", message.Sender.FirstName, message.Sender.LastName), " "), chatID), nil - case message.Chat.Type == telebot.ChatSuperGroup || message.Chat.Type == telebot.ChatGroup: - err := sender.DataBase.SetUsernameID(messenger, message.Chat.Title, chatID) + case (message.Chat.Type == telebot.ChatSuperGroup || message.Chat.Type == telebot.ChatGroup): + contactValue, err := sender.getContactValueByMessage(message) if err != nil { + return "", fmt.Errorf("failed to get contact value from message: %w", err) + } + + if err = sender.setChat(message); err != nil { return "", err } + if strings.HasPrefix(message.Text, "/start") { - return fmt.Sprintf("Hi, all!\nI will send alerts in this group (%s).", message.Chat.Title), nil + return fmt.Sprintf("Hi, all!\nI will send alerts in this group (%s).", contactValue), nil } + return "", nil } + return "I don't understand you :(", nil } diff --git a/senders/telegram/handle_message_test.go b/senders/telegram/handle_message_test.go index d5f74ea1d..2a853a872 100644 --- a/senders/telegram/handle_message_test.go +++ b/senders/telegram/handle_message_test.go @@ -4,20 +4,21 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + mock_telegram "github.com/moira-alert/moira/mock/notifier/telegram" . "github.com/smartystreets/goconvey/convey" - "gopkg.in/tucnak/telebot.v2" + "go.uber.org/mock/gomock" + "gopkg.in/telebot.v3" ) func TestGetResponseMessage(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() dataBase := mock_moira_alert.NewMockDatabase(mockCtrl) - bot := telebot.Bot{Me: &telebot.User{Username: "MoiraBot"}} + bot := mock_telegram.NewMockBot(mockCtrl) Convey("Test get response message", t, func() { - sender := Sender{DataBase: dataBase, bot: &bot} + sender := Sender{DataBase: dataBase, bot: bot} Convey("Private chat and bad message", func() { message := &telebot.Message{ Chat: &telebot.Chat{ @@ -63,14 +64,14 @@ func TestGetResponseMessage(t *testing.T) { Convey("has username", func() { message.Chat.Username = "User" Convey("error while save username", func() { - dataBase.EXPECT().SetUsernameID(messenger, "@User", "123").Return(fmt.Errorf("error =(")) + dataBase.EXPECT().SetUsernameChat(messenger, "@User", `{"chat_id":123}`).Return(fmt.Errorf("error =(")) response, err := sender.getResponseMessage(message) - So(err, ShouldResemble, fmt.Errorf("error =(")) + So(err.Error(), ShouldResemble, "failed to set username chat: error =(") So(response, ShouldBeEmpty) }) Convey("success send", func() { - dataBase.EXPECT().SetUsernameID(messenger, "@User", "123").Return(nil) + dataBase.EXPECT().SetUsernameChat(messenger, "@User", `{"chat_id":123}`).Return(nil) response, err := sender.getResponseMessage(message) So(err, ShouldBeNil) So(response, ShouldResemble, "Okay, FirstName LastName, your id is 123") @@ -97,18 +98,18 @@ func TestGetResponseMessage(t *testing.T) { } messages := []*telebot.Message{groupMessage, superGroupMessage} - Convey("SetUsernameID returns error", func() { + Convey("SetUsernameChat returns error", func() { for _, message := range messages { - dataBase.EXPECT().SetUsernameID(messenger, message.Chat.Title, fmt.Sprint(message.Chat.ID)).Return(fmt.Errorf("error")) + dataBase.EXPECT().SetUsernameChat(messenger, message.Chat.Title, fmt.Sprintf(`{"chat_id":%d}`, message.Chat.ID)).Return(fmt.Errorf("error")) response, err := sender.getResponseMessage(message) - So(err, ShouldResemble, fmt.Errorf("error")) + So(err.Error(), ShouldResemble, "failed to set username chat: error") So(response, ShouldBeEmpty) } }) - Convey("SetUsernameID returns empty error", func() { + Convey("SetUsernameChat returns empty error", func() { for _, message := range messages { - dataBase.EXPECT().SetUsernameID(messenger, message.Chat.Title, fmt.Sprint(message.Chat.ID)).Return(nil) + dataBase.EXPECT().SetUsernameChat(messenger, message.Chat.Title, fmt.Sprintf(`{"chat_id":%d}`, message.Chat.ID)).Return(nil) response, err := sender.getResponseMessage(message) So(err, ShouldBeNil) So(response, ShouldResemble, fmt.Sprintf("Hi, all!\nI will send alerts in this group (%s).", message.Chat.Title)) @@ -134,7 +135,7 @@ func TestGetResponseMessage(t *testing.T) { } wrongMessages := []*telebot.Message{wrongGroupMessage, wrongSuperGroupMessage} for _, message := range wrongMessages { - dataBase.EXPECT().SetUsernameID(messenger, message.Chat.Title, fmt.Sprint(message.Chat.ID)).Return(nil) + dataBase.EXPECT().SetUsernameChat(messenger, message.Chat.Title, fmt.Sprintf(`{"chat_id":%d}`, message.Chat.ID)).Return(nil) response, err := sender.getResponseMessage(message) So(err, ShouldBeNil) So(response, ShouldResemble, "") diff --git a/senders/telegram/init.go b/senders/telegram/init.go index 9e045c0a2..5982a0016 100644 --- a/senders/telegram/init.go +++ b/senders/telegram/init.go @@ -9,7 +9,7 @@ import ( "github.com/mitchellh/mapstructure" "github.com/moira-alert/moira" "github.com/moira-alert/moira/worker" - "gopkg.in/tucnak/telebot.v2" + "gopkg.in/telebot.v3" ) const ( @@ -38,23 +38,30 @@ type config struct { FrontURI string `mapstructure:"front_uri"` } +// Bot is abstraction over gopkg.in/telebot.v3#Bot. +type Bot interface { + Handle(endpoint interface{}, h telebot.HandlerFunc, m ...telebot.MiddlewareFunc) + Start() + Stop() + Send(to telebot.Recipient, what interface{}, opts ...interface{}) (*telebot.Message, error) + SendAlbum(to telebot.Recipient, a telebot.Album, opts ...interface{}) ([]telebot.Message, error) + Reply(to *telebot.Message, what interface{}, opts ...interface{}) (*telebot.Message, error) + ChatByUsername(name string) (*telebot.Chat, error) +} + // Sender implements moira sender interface via telegram. type Sender struct { DataBase moira.Database logger moira.Logger apiToken string frontURI string - bot *telebot.Bot + bot Bot location *time.Location } -func removeTokenFromError(err error, bot *telebot.Bot) error { - url := telebot.DefaultApiURL - if bot != nil { - url = bot.URL - } - if err != nil && strings.Contains(err.Error(), url) { - return errors.New(moira.ReplaceSubstring(err.Error(), "/bot", "/", hidden)) +func (sender *Sender) removeTokenFromError(err error) error { + if err != nil && strings.Contains(err.Error(), sender.apiToken) { + return errors.New(strings.Replace(err.Error(), sender.apiToken, hidden, -1)) } return err } @@ -80,15 +87,17 @@ func (sender *Sender) Init(senderSettings interface{}, logger moira.Logger, loca Poller: &telebot.LongPoller{Timeout: pollerTimeout}, }) if err != nil { - return removeTokenFromError(err, sender.bot) + return sender.removeTokenFromError(err) } - sender.bot.Handle(telebot.OnText, func(message *telebot.Message) { - if err = sender.handleMessage(message); err != nil { + sender.bot.Handle(telebot.OnText, func(ctx telebot.Context) error { + if err = sender.handleMessage(ctx.Message()); err != nil { sender.logger.Error(). Error(err). - Msg("Error handling incoming message: %s") + Msg("Error handling incoming message") + return err } + return nil }) go sender.runTelebot(cfg.ContactType) diff --git a/senders/telegram/send.go b/senders/telegram/send.go index 29fac6de5..87f29d616 100644 --- a/senders/telegram/send.go +++ b/senders/telegram/send.go @@ -2,11 +2,13 @@ package telegram import ( "bytes" + "encoding/json" "errors" "fmt" + "strconv" "strings" - "gopkg.in/tucnak/telebot.v2" + "gopkg.in/telebot.v3" "github.com/moira-alert/moira" ) @@ -31,6 +33,33 @@ var characterLimits = map[messageType]int{ Album: albumCaptionMaxCharacters, } +var unmarshalTypeError *json.UnmarshalTypeError + +// Structure that represents chat metadata required to send message to recipient. +// It implements gopkg.in/telebot.v3#Recipient interface and thus might be passed to telebot methods directly. +type Chat struct { + ID int64 `json:"chat_id" example:"-1001234567890"` + ThreadID int `json:"thread_id,omitempty" example:"10"` +} + +var brokenContactAPIErrors = map[*telebot.Error]struct{}{ + telebot.ErrUnauthorized: {}, + telebot.ErrUserIsDeactivated: {}, + telebot.ErrNoRightsToSendPhoto: {}, + telebot.ErrChatNotFound: {}, + telebot.ErrNoRightsToSend: {}, + telebot.ErrKickedFromGroup: {}, + telebot.ErrBlockedByUser: {}, + telebot.ErrKickedFromSuperGroup: {}, + telebot.ErrKickedFromChannel: {}, + telebot.ErrNotStartedByUser: {}, +} + +// Chat implements gopkg.in/telebot.v3#Recipient interface. +func (c *Chat) Recipient() string { + return strconv.FormatInt(c.ID, 10) +} + // SendEvents implements Sender interface Send. func (sender *Sender) SendEvents(events moira.NotificationEvents, contact moira.ContactData, trigger moira.TriggerData, plots [][]byte, throttled bool) error { msgType := getMessageType(plots) @@ -44,9 +73,11 @@ func (sender *Sender) SendEvents(events moira.NotificationEvents, contact moira. if err != nil { return checkBrokenContactError(sender.logger, err) } + if err := sender.talk(chat, message, plots, msgType); err != nil { return checkBrokenContactError(sender.logger, err) } + return nil } @@ -68,11 +99,13 @@ func (sender *Sender) buildMessage(events moira.NotificationEvents, trigger moir if msg := event.CreateMessage(sender.location); len(msg) > 0 { line += fmt.Sprintf(". %s", msg) } + lineCharsCount := len([]rune(line)) if messageCharsCount+lineCharsCount > maxChars-additionalInfoCharactersCount { messageLimitReached = true break } + buffer.WriteString(line) messageCharsCount += lineCharsCount printEventsCount++ @@ -81,6 +114,7 @@ func (sender *Sender) buildMessage(events moira.NotificationEvents, trigger moir if messageLimitReached { buffer.WriteString(fmt.Sprintf("\n\n...and %d more events.", len(events)-printEventsCount)) } + url := trigger.GetTriggerURI(sender.frontURI) if url != "" { buffer.WriteString(fmt.Sprintf("\n\n%s\n", url)) @@ -89,56 +123,140 @@ func (sender *Sender) buildMessage(events moira.NotificationEvents, trigger moir if throttled { buffer.WriteString("\nPlease, fix your system or tune this trigger to generate less events.") } + return buffer.String() } -func (sender *Sender) getChatUID(username string) (string, error) { - var uid string - if strings.HasPrefix(username, "%") { - uid = "-100" + username[1:] - } else { - var err error - uid, err = sender.DataBase.GetIDByUsername(messenger, username) - if err != nil { - return "", fmt.Errorf("failed to get username uuid: %s", err.Error()) +func (sender *Sender) getChat(contactValue string) (*Chat, error) { + var chat *Chat + var err error + + switch { + // For private channel contactValue is transformed to be able to fetch it from telegram + case strings.HasPrefix(contactValue, "%"): + contactValue = "-100" + contactValue[1:] + chat, err = sender.getChatFromTelegram(contactValue) + // For public channel contactValue is transformed to be able to fetch it from telegram + case strings.HasPrefix(contactValue, "#"): + contactValue = "@" + contactValue[1:] + chat, err = sender.getChatFromTelegram(contactValue) + // For the rest of the cases (private chats, groups, supergroups), Chat data is stored in DB + default: + chat, err = sender.getChatFromDb(contactValue) + } + + return chat, err +} + +func (sender *Sender) getChatFromDb(contactValue string) (*Chat, error) { + chatRaw, err := sender.DataBase.GetChatByUsername(messenger, contactValue) + if err != nil { + return nil, fmt.Errorf("failed to get username chat: %w", err) + } + + chat := &Chat{} + if err := json.Unmarshal([]byte(chatRaw), chat); err != nil { + // For Moira < 2.12.0 compatibility + // Before 2.12.0 `moira-telegram-users:user` only stored telegram channel IDs + // After 2.12.0 `moira-telegram-users:user` stores Chat structure + if errors.As(err, &unmarshalTypeError) { + chatID, parseErr := strconv.ParseInt(chatRaw, 10, 64) + if parseErr != nil { + return nil, fmt.Errorf("failed to parse chatRaw: %s as int64: %w", chatRaw, parseErr) + } + + return &Chat{ + ID: chatID, + }, nil } + + return nil, fmt.Errorf("failed to unmarshal chat data %s: %w", chatRaw, err) } - return uid, nil + + return chat, nil } -func (sender *Sender) getChat(username string) (*telebot.Chat, error) { - uid, err := sender.getChatUID(username) +func (sender *Sender) getChatFromTelegram(username string) (*Chat, error) { + telegramChat, err := sender.bot.ChatByUsername(username) if err != nil { - return nil, err + err = sender.removeTokenFromError(err) + return nil, fmt.Errorf("can't find recipient %s: %w", username, err) } - chat, err := sender.bot.ChatByID(uid) + + chat := Chat{ + ID: telegramChat.ID, + } + + return &chat, nil +} + +func (sender *Sender) setChat(message *telebot.Message) error { + contactValue, err := sender.getContactValueByMessage(message) if err != nil { - err = removeTokenFromError(err, sender.bot) - return nil, fmt.Errorf("can't find recipient %s: %s", uid, err.Error()) + return fmt.Errorf("failed to get contact value from message: %w", err) } - return chat, nil + + chat := &Chat{ + ID: message.Chat.ID, + ThreadID: message.ThreadID, + } + + chatRaw, err := json.Marshal(chat) + if err != nil { + return fmt.Errorf("failed to marshal chat: %w", err) + } + + if err = sender.DataBase.SetUsernameChat(messenger, contactValue, string(chatRaw)); err != nil { + return fmt.Errorf("failed to set username chat: %w", err) + } + + return nil +} + +func (sender *Sender) getContactValueByMessage(message *telebot.Message) (string, error) { + var contactValue string + var err error + + switch { + case message.Chat.Type == telebot.ChatPrivate: + contactValue = "@" + message.Chat.Username + case message.Chat.Type == telebot.ChatSuperGroup && message.ThreadID != 0: + contactValue = fmt.Sprintf("%d/%d", message.Chat.ID, message.ThreadID) + case message.Chat.Type == telebot.ChatSuperGroup || message.Chat.Type == telebot.ChatGroup: + contactValue = message.Chat.Title + case message.Chat.Type == telebot.ChatChannel: + contactValue = "#" + message.Chat.Username + case message.Chat.Type == telebot.ChatChannelPrivate: + contactValue = strings.Replace(message.Chat.Recipient(), "-100", "%", -1) + default: + err = fmt.Errorf("unknown chat type") + } + + return contactValue, err } // talk processes one talk. -func (sender *Sender) talk(chat *telebot.Chat, message string, plots [][]byte, messageType messageType) error { +func (sender *Sender) talk(chat *Chat, message string, plots [][]byte, messageType messageType) error { if messageType == Album { sender.logger.Debug().Msg("talk as album") return sender.sendAsAlbum(chat, plots, message) } + sender.logger.Debug().Msg("talk as send message") return sender.sendAsMessage(chat, message) } -func (sender *Sender) sendAsMessage(chat *telebot.Chat, message string) error { - _, err := sender.bot.Send(chat, message) +func (sender *Sender) sendAsMessage(chat *Chat, message string) error { + _, err := sender.bot.Send(chat, message, &telebot.SendOptions{ThreadID: chat.ThreadID}) if err != nil { - err = removeTokenFromError(err, sender.bot) + err = sender.removeTokenFromError(err) sender.logger.Debug(). String("message", message). Int64("chat_id", chat.ID). Error(err). Msg("Can't send event message to telegram") } + return err } @@ -148,7 +266,7 @@ func checkBrokenContactError(logger moira.Logger, err error) error { return nil } - var e *telebot.APIError + var e *telebot.Error if ok := errors.As(err, &e); ok { logger.Debug(). Int("code", e.Code). @@ -160,31 +278,20 @@ func checkBrokenContactError(logger moira.Logger, err error) error { return moira.NewSenderBrokenContactError(err) } } + if strings.HasPrefix(err.Error(), "failed to get username uuid") { logger.Debug(). Error(err). Msg("It's error from getChat()") return moira.NewSenderBrokenContactError(err) } + return err } -func isBrokenContactAPIError(err *telebot.APIError) bool { - if err.Code == telebot.ErrUnauthorized.Code { - return true - } - if err.Code == telebot.ErrNoRightsToSendPhoto.Code && - (err.Description == telebot.ErrNoRightsToSendPhoto.Description || - err.Description == telebot.ErrChatNotFound.Description || - err.Description == telebot.ErrNoRightsToSend.Description) { - return true - } - if err.Code == telebot.ErrBotKickedFromGroup.Code && - (err.Description == telebot.ErrBotKickedFromGroup.Description || - err.Description == telebot.ErrBotKickedFromSuperGroup.Description) { - return true - } - return false +func isBrokenContactAPIError(err *telebot.Error) bool { + _, exists := brokenContactAPIErrors[err] + return exists } func prepareAlbum(plots [][]byte, caption string) telebot.Album { @@ -194,20 +301,22 @@ func prepareAlbum(plots [][]byte, caption string) telebot.Album { album = append(album, photo) caption = "" // Caption should be defined only for first photo } + return album } -func (sender *Sender) sendAsAlbum(chat *telebot.Chat, plots [][]byte, caption string) error { +func (sender *Sender) sendAsAlbum(chat *Chat, plots [][]byte, caption string) error { album := prepareAlbum(plots, caption) - _, err := sender.bot.SendAlbum(chat, album) + _, err := sender.bot.SendAlbum(chat, album, &telebot.SendOptions{ThreadID: chat.ThreadID}) if err != nil { - err = removeTokenFromError(err, sender.bot) + err = sender.removeTokenFromError(err) sender.logger.Debug(). Int64("chat_id", chat.ID). Error(err). Msg("Can't send event plots to telegram chat") } + return err } @@ -215,5 +324,6 @@ func getMessageType(plots [][]byte) messageType { if len(plots) > 0 { return Album } + return Message } diff --git a/senders/telegram/send_test.go b/senders/telegram/send_test.go index ef42ab37d..69e4393b5 100644 --- a/senders/telegram/send_test.go +++ b/senders/telegram/send_test.go @@ -2,19 +2,21 @@ package telegram import ( "fmt" + "strconv" "testing" "time" "github.com/pkg/errors" + "go.uber.org/mock/gomock" + "github.com/moira-alert/moira/database" logging "github.com/moira-alert/moira/logging/zerolog_adapter" + mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" + mock_telegram "github.com/moira-alert/moira/mock/notifier/telegram" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" - "github.com/moira-alert/moira/database" - mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" - "gopkg.in/tucnak/telebot.v2" + "gopkg.in/telebot.v3" ) func TestBuildMessage(t *testing.T) { @@ -117,34 +119,149 @@ http://moira.url/trigger/TriggerID }) } -func TestGetChatUID(t *testing.T) { +func TestGetChat(t *testing.T) { location, _ := time.LoadLocation("UTC") mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() dataBase := mock_moira_alert.NewMockDatabase(mockCtrl) - sender := Sender{location: location, frontURI: "http://moira.url", DataBase: dataBase} + bot := mock_telegram.NewMockBot(mockCtrl) + sender := Sender{location: location, frontURI: "http://moira.url", DataBase: dataBase, bot: bot} - Convey("Get Telegram chat's UID", t, func() { - Convey("For private channel with % prefix should return with -100 prefix", func() { - actual, err := sender.getChatUID("%1494975744") - expected := "-1001494975744" - So(actual, ShouldResemble, expected) - So(err, ShouldBeNil) - }) + Convey("Get Telegram Chat From DB", t, func() { + Convey("Compatibility with Moira < 2.12.0", func() { + Convey("For private chat should fetch from DB", func() { + idStr := "7824728482" + dataBase.EXPECT().GetChatByUsername(messenger, "@durov").Return("7824728482", nil) - Convey("For public channel with # prefix should return with @ prefix", func() { - dataBase.EXPECT().GetIDByUsername(messenger, "#MyPublicChannel").Return("@MyPublicChannel", nil) - actual, err := sender.getChatUID("#MyPublicChannel") - expected := "@MyPublicChannel" - So(actual, ShouldResemble, expected) - So(err, ShouldBeNil) + id, err := strconv.ParseInt(idStr, 10, 64) + So(err, ShouldBeNil) + + expected := &Chat{ + ID: id, + } + + actual, err := sender.getChat("@durov") + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("For supergroup's main thread should fetch from DB", func() { + idStr := "-1001494975744" + dataBase.EXPECT().GetChatByUsername(messenger, "somesupergroup / moira").Return(idStr, nil) + + id, err := strconv.ParseInt(idStr, 10, 64) + So(err, ShouldBeNil) + + expected := &Chat{ + ID: id, + } + + actual, err := sender.getChat("somesupergroup / moira") + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("If no UID exists in database for this username", func() { + dataBase.EXPECT().GetChatByUsername(messenger, "@durov").Return("", database.ErrNil) + + actual, err := sender.getChat("@durov") + So(err, ShouldResemble, fmt.Errorf("failed to get username chat: %w", database.ErrNil)) + So(actual, ShouldBeNil) + }) }) - Convey("If no UID exists in database for this username", func() { - dataBase.EXPECT().GetIDByUsername(messenger, "@durov").Return("", database.ErrNil) - actual, err := sender.getChatUID("@durov") - So(err, ShouldResemble, fmt.Errorf("failed to get username uuid: nil returned")) - So(actual, ShouldBeEmpty) + Convey("Moira >= 2.12.0", func() { + Convey(`For private channel with % prefix should fetch info from Telegram`, func() { + expectedChat := &telebot.Chat{ + ID: -1001494975744, + Type: telebot.ChatPrivate, + } + + bot.EXPECT().ChatByUsername("-1001494975744").Return(expectedChat, nil) + + actual, err := sender.getChat("%1494975744") + expected := &Chat{ + ID: -1001494975744, + } + + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("For public channel with # prefix should fetch info from Telegram", func() { + expectedChat := &telebot.Chat{ + ID: -1001494975744, + Type: telebot.ChatChannel, + Username: "MyPublicChannel", + } + + bot.EXPECT().ChatByUsername("@MyPublicChannel").Return(expectedChat, nil) + + actual, err := sender.getChat("#MyPublicChannel") + expected := &Chat{ + ID: -1001494975744, + } + + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("For private chat should fetch from DB", func() { + dataBase.EXPECT().GetChatByUsername(messenger, "@durov").Return(`{"chat_id":1}`, nil) + + actual, err := sender.getChat("@durov") + expected := &Chat{ + ID: 1, + } + + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("For group should fetch from DB", func() { + dataBase.EXPECT().GetChatByUsername(messenger, "somegroup / moira").Return(`{"chat_id":-1001494975744}`, nil) + + actual, err := sender.getChat("somegroup / moira") + expected := &Chat{ + ID: -1001494975744, + } + + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("For supergroup's main thread should fetch from DB", func() { + dataBase.EXPECT().GetChatByUsername(messenger, "somesupergroup / moira").Return(`{"chat_id":-1001494975744}`, nil) + + actual, err := sender.getChat("somesupergroup / moira") + expected := &Chat{ + ID: -1001494975744, + } + + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("For supergroup's thread should fetch from DB", func() { + dataBase.EXPECT().GetChatByUsername(messenger, "-1001494975744/10").Return(`{"chat_id":-1001494975744,"thread_id":10}`, nil) + + actual, err := sender.getChat("-1001494975744/10") + expected := &Chat{ + ID: -1001494975744, + ThreadID: 10, + } + + So(actual, ShouldResemble, expected) + So(err, ShouldBeNil) + }) + + Convey("If no record exists in database for this contactValue", func() { + dataBase.EXPECT().GetChatByUsername(messenger, "-1001494975744/20").Return("", database.ErrNil) + + actual, err := sender.getChat("-1001494975744/20") + So(err, ShouldResemble, fmt.Errorf("failed to get username chat: %w", database.ErrNil)) + So(actual, ShouldBeNil) + }) }) }) } @@ -179,17 +296,7 @@ func TestCheckBrokenContactError(t *testing.T) { So(err, ShouldBeNil) }) Convey("Broken contact error is properly recognized", func() { - brokenContactErrorsList := []*telebot.APIError{ - telebot.ErrNoRightsToSendPhoto, - telebot.ErrChatNotFound, - telebot.ErrNoRightsToSend, - telebot.ErrUnauthorized, - telebot.ErrBlockedByUser, - telebot.ErrUserIsDeactivated, - telebot.ErrBotKickedFromGroup, - telebot.ErrBotKickedFromSuperGroup, - } - for _, brokenContactError := range brokenContactErrorsList { + for brokenContactError := range brokenContactAPIErrors { err := checkBrokenContactError(logger, brokenContactError) So(err, ShouldHaveSameTypeAs, moira.SenderBrokenContactError{}) var convertedErr moira.SenderBrokenContactError @@ -198,13 +305,13 @@ func TestCheckBrokenContactError(t *testing.T) { } }) Convey("Other errors are returned as is", func() { - otherTelebotErrors := []*telebot.APIError{ + otherTelebotErrors := []*telebot.Error{ telebot.ErrInternal, telebot.ErrTooLarge, telebot.ErrEmptyMessage, telebot.ErrWrongFileID, telebot.ErrNoRightsToDelete, - telebot.ErrKickingChatOwner, + telebot.ErrCantRemoveOwner, } for _, otherError := range otherTelebotErrors { err := checkBrokenContactError(logger, otherError) diff --git a/senders/victorops/init_test.go b/senders/victorops/init_test.go index d9ee59869..05c2111a0 100644 --- a/senders/victorops/init_test.go +++ b/senders/victorops/init_test.go @@ -5,9 +5,9 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/senders/victorops/api" + "go.uber.org/mock/gomock" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" diff --git a/senders/victorops/send_test.go b/senders/victorops/send_test.go index b7e444385..efa8aeef3 100644 --- a/senders/victorops/send_test.go +++ b/senders/victorops/send_test.go @@ -4,8 +4,8 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira/senders/victorops/api" + "go.uber.org/mock/gomock" "github.com/moira-alert/moira" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" diff --git a/worker/worker_test.go b/worker/worker_test.go index 773ab4e86..ffe07f142 100644 --- a/worker/worker_test.go +++ b/worker/worker_test.go @@ -5,12 +5,12 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" "github.com/moira-alert/moira" "github.com/moira-alert/moira/database" logging "github.com/moira-alert/moira/logging/zerolog_adapter" mock_moira_alert "github.com/moira-alert/moira/mock/moira-alert" . "github.com/smartystreets/goconvey/convey" + "go.uber.org/mock/gomock" ) const testLockRetryDelay = time.Millisecond * 100