Migrating cluster discovery store to sync by default (#10665)

* Migrating cluster discovery store to sync by default

* Addressing PR review comments
Этот коммит содержится в:
Jesús Espino
2019-04-24 12:36:56 +02:00
коммит произвёл GitHub
родитель 357065e202
Коммит 4ae38d00a8
5 изменённых файлов: 240 добавлений и 260 удалений

Просмотреть файл

@@ -32,21 +32,24 @@ func (a *App) NewClusterDiscoveryService() *ClusterDiscoveryService {
}
func (me *ClusterDiscoveryService) Start() {
err := me.app.Srv.Store.ClusterDiscovery().Cleanup()
if err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to cleanup the outdated cluster discovery information err=%v", err))
}
<-me.app.Srv.Store.ClusterDiscovery().Cleanup()
if cresult := <-me.app.Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery); cresult.Err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to check if row exists for %v with err=%v", me.ClusterDiscovery.ToJson(), cresult.Err))
exists, err := me.app.Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery)
if err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to check if row exists for %v with err=%v", me.ClusterDiscovery.ToJson(), err))
} else {
if cresult.Data.(bool) {
if u := <-me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to start clean for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
if exists {
if _, err := me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to start clean for %v with err=%v", me.ClusterDiscovery.ToJson(), err))
}
}
}
if result := <-me.app.Srv.Store.ClusterDiscovery().Save(&me.ClusterDiscovery); result.Err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to save for %v with err=%v", me.ClusterDiscovery.ToJson(), result.Err))
if err := me.app.Srv.Store.ClusterDiscovery().Save(&me.ClusterDiscovery); err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to save for %v with err=%v", me.ClusterDiscovery.ToJson(), err))
return
}
@@ -55,8 +58,8 @@ func (me *ClusterDiscoveryService) Start() {
ticker := time.NewTicker(DISCOVERY_SERVICE_WRITE_PING)
defer func() {
ticker.Stop()
if u := <-me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to cleanup for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
if _, err := me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to cleanup for %v with err=%v", me.ClusterDiscovery.ToJson(), err))
}
mlog.Debug(fmt.Sprintf("ClusterDiscoveryService ping writer stopped for %v", me.ClusterDiscovery.ToJson()))
}()
@@ -64,8 +67,8 @@ func (me *ClusterDiscoveryService) Start() {
for {
select {
case <-ticker.C:
if u := <-me.app.Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); u.Err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to write ping for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
if err := me.app.Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); err != nil {
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to write ping for %v with err=%v", me.ClusterDiscovery.ToJson(), err))
}
case <-me.stop:
return

Просмотреть файл

@@ -28,145 +28,133 @@ func NewSqlClusterDiscoveryStore(sqlStore SqlStore) store.ClusterDiscoveryStore
return s
}
func (s sqlClusterDiscoveryStore) Save(ClusterDiscovery *model.ClusterDiscovery) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
ClusterDiscovery.PreSave()
if result.Err = ClusterDiscovery.IsValid(); result.Err != nil {
return
}
func (s sqlClusterDiscoveryStore) Save(ClusterDiscovery *model.ClusterDiscovery) *model.AppError {
ClusterDiscovery.PreSave()
if err := ClusterDiscovery.IsValid(); err != nil {
return err
}
if err := s.GetMaster().Insert(ClusterDiscovery); err != nil {
result.Err = model.NewAppError("SqlClusterDiscoveryStore.Save", "store.sql_cluster_discovery.save.app_error", nil, err.Error(), http.StatusInternalServerError)
}
})
if err := s.GetMaster().Insert(ClusterDiscovery); err != nil {
return model.NewAppError("SqlClusterDiscoveryStore.Save", "store.sql_cluster_discovery.save.app_error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}
func (s sqlClusterDiscoveryStore) Delete(ClusterDiscovery *model.ClusterDiscovery) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
result.Data = false
if count, err := s.GetMaster().SelectInt(
`
DELETE
FROM
ClusterDiscovery
WHERE
Type = :Type
AND ClusterName = :ClusterName
AND Hostname = :Hostname
`,
map[string]interface{}{
"Type": ClusterDiscovery.Type,
"ClusterName": ClusterDiscovery.ClusterName,
"Hostname": ClusterDiscovery.Hostname,
},
); err != nil {
result.Err = model.NewAppError("SqlClusterDiscoveryStore.Delete", "store.sql_cluster_discovery.delete.app_error", nil, err.Error(), http.StatusInternalServerError)
} else {
if count > 0 {
result.Data = true
}
}
})
}
func (s sqlClusterDiscoveryStore) Exists(ClusterDiscovery *model.ClusterDiscovery) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
result.Data = false
if count, err := s.GetMaster().SelectInt(
`
SELECT
COUNT(*)
FROM
ClusterDiscovery
WHERE
Type = :Type
AND ClusterName = :ClusterName
AND Hostname = :Hostname
`,
map[string]interface{}{
"Type": ClusterDiscovery.Type,
"ClusterName": ClusterDiscovery.ClusterName,
"Hostname": ClusterDiscovery.Hostname,
},
); err != nil {
result.Err = model.NewAppError("SqlClusterDiscoveryStore.Exists", "store.sql_cluster_discovery.exists.app_error", nil, err.Error(), http.StatusInternalServerError)
} else {
if count > 0 {
result.Data = true
}
}
})
}
func (s sqlClusterDiscoveryStore) GetAll(ClusterDiscoveryType, clusterName string) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
lastPingAt := model.GetMillis() - model.CDS_OFFLINE_AFTER_MILLIS
var list []*model.ClusterDiscovery
if _, err := s.GetMaster().Select(
&list,
`
SELECT
*
FROM
ClusterDiscovery
WHERE
Type = :ClusterDiscoveryType
AND ClusterName = :ClusterName
AND LastPingAt > :LastPingAt
`,
map[string]interface{}{
"ClusterDiscoveryType": ClusterDiscoveryType,
"ClusterName": clusterName,
"LastPingAt": lastPingAt,
},
); err != nil {
result.Err = model.NewAppError("SqlClusterDiscoveryStore.GetAllForType", "store.sql_cluster_discovery.get_all.app_error", nil, err.Error(), http.StatusInternalServerError)
} else {
result.Data = list
}
})
}
func (s sqlClusterDiscoveryStore) SetLastPingAt(ClusterDiscovery *model.ClusterDiscovery) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
if _, err := s.GetMaster().Exec(
`
UPDATE ClusterDiscovery
SET
LastPingAt = :LastPingAt
WHERE
Type = :Type
func (s sqlClusterDiscoveryStore) Delete(ClusterDiscovery *model.ClusterDiscovery) (bool, *model.AppError) {
count, err := s.GetMaster().SelectInt(
`
DELETE
FROM
ClusterDiscovery
WHERE
Type = :Type
AND ClusterName = :ClusterName
AND Hostname = :Hostname
`,
map[string]interface{}{
"LastPingAt": model.GetMillis(),
"Type": ClusterDiscovery.Type,
"ClusterName": ClusterDiscovery.ClusterName,
"Hostname": ClusterDiscovery.Hostname,
},
); err != nil {
result.Err = model.NewAppError("SqlClusterDiscoveryStore.GetAllForType", "store.sql_cluster_discovery.set_last_ping.app_error", nil, err.Error(), http.StatusInternalServerError)
}
})
`,
map[string]interface{}{
"Type": ClusterDiscovery.Type,
"ClusterName": ClusterDiscovery.ClusterName,
"Hostname": ClusterDiscovery.Hostname,
},
)
if err != nil {
return false, model.NewAppError("SqlClusterDiscoveryStore.Delete", "store.sql_cluster_discovery.delete.app_error", nil, err.Error(), http.StatusInternalServerError)
}
if count == 0 {
return false, nil
}
return true, nil
}
func (s sqlClusterDiscoveryStore) Cleanup() store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
if _, err := s.GetMaster().Exec(
`
DELETE FROM ClusterDiscovery
WHERE
LastPingAt < :LastPingAt
`,
map[string]interface{}{
"LastPingAt": model.GetMillis() - model.CDS_OFFLINE_AFTER_MILLIS,
},
); err != nil {
result.Err = model.NewAppError("SqlClusterDiscoveryStore.Save", "store.sql_cluster_discovery.cleanup.app_error", nil, err.Error(), http.StatusInternalServerError)
}
})
func (s sqlClusterDiscoveryStore) Exists(ClusterDiscovery *model.ClusterDiscovery) (bool, *model.AppError) {
count, err := s.GetMaster().SelectInt(
`
SELECT
COUNT(*)
FROM
ClusterDiscovery
WHERE
Type = :Type
AND ClusterName = :ClusterName
AND Hostname = :Hostname
`,
map[string]interface{}{
"Type": ClusterDiscovery.Type,
"ClusterName": ClusterDiscovery.ClusterName,
"Hostname": ClusterDiscovery.Hostname,
},
)
if err != nil {
return false, model.NewAppError("SqlClusterDiscoveryStore.Exists", "store.sql_cluster_discovery.exists.app_error", nil, err.Error(), http.StatusInternalServerError)
}
if count == 0 {
return false, nil
}
return true, nil
}
func (s sqlClusterDiscoveryStore) GetAll(ClusterDiscoveryType, clusterName string) ([]*model.ClusterDiscovery, *model.AppError) {
lastPingAt := model.GetMillis() - model.CDS_OFFLINE_AFTER_MILLIS
var list []*model.ClusterDiscovery
if _, err := s.GetMaster().Select(
&list,
`
SELECT
*
FROM
ClusterDiscovery
WHERE
Type = :ClusterDiscoveryType
AND ClusterName = :ClusterName
AND LastPingAt > :LastPingAt
`,
map[string]interface{}{
"ClusterDiscoveryType": ClusterDiscoveryType,
"ClusterName": clusterName,
"LastPingAt": lastPingAt,
},
); err != nil {
return nil, model.NewAppError("SqlClusterDiscoveryStore.GetAllForType", "store.sql_cluster_discovery.get_all.app_error", nil, err.Error(), http.StatusInternalServerError)
}
return list, nil
}
func (s sqlClusterDiscoveryStore) SetLastPingAt(ClusterDiscovery *model.ClusterDiscovery) *model.AppError {
if _, err := s.GetMaster().Exec(
`
UPDATE ClusterDiscovery
SET
LastPingAt = :LastPingAt
WHERE
Type = :Type
AND ClusterName = :ClusterName
AND Hostname = :Hostname
`,
map[string]interface{}{
"LastPingAt": model.GetMillis(),
"Type": ClusterDiscovery.Type,
"ClusterName": ClusterDiscovery.ClusterName,
"Hostname": ClusterDiscovery.Hostname,
},
); err != nil {
return model.NewAppError("SqlClusterDiscoveryStore.GetAllForType", "store.sql_cluster_discovery.set_last_ping.app_error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}
func (s sqlClusterDiscoveryStore) Cleanup() *model.AppError {
if _, err := s.GetMaster().Exec(
`
DELETE FROM ClusterDiscovery
WHERE
LastPingAt < :LastPingAt
`,
map[string]interface{}{
"LastPingAt": model.GetMillis() - model.CDS_OFFLINE_AFTER_MILLIS,
},
); err != nil {
return model.NewAppError("SqlClusterDiscoveryStore.Save", "store.sql_cluster_discovery.cleanup.app_error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}

Просмотреть файл

@@ -329,12 +329,12 @@ type AuditStore interface {
}
type ClusterDiscoveryStore interface {
Save(discovery *model.ClusterDiscovery) StoreChannel
Delete(discovery *model.ClusterDiscovery) StoreChannel
Exists(discovery *model.ClusterDiscovery) StoreChannel
GetAll(discoveryType, clusterName string) StoreChannel
SetLastPingAt(discovery *model.ClusterDiscovery) StoreChannel
Cleanup() StoreChannel
Save(discovery *model.ClusterDiscovery) *model.AppError
Delete(discovery *model.ClusterDiscovery) (bool, *model.AppError)
Exists(discovery *model.ClusterDiscovery) (bool, *model.AppError)
GetAll(discoveryType, clusterName string) ([]*model.ClusterDiscovery, *model.AppError)
SetLastPingAt(discovery *model.ClusterDiscovery) *model.AppError
Cleanup() *model.AppError
}
type ComplianceStore interface {

Просмотреть файл

@@ -10,6 +10,8 @@ import (
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestClusterDiscoveryStore(t *testing.T, ss store.Store) {
@@ -27,12 +29,12 @@ func testClusterDiscoveryStore(t *testing.T, ss store.Store) {
Type: "test_test",
}
if result := <-ss.ClusterDiscovery().Save(discovery); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().Save(discovery); err != nil {
t.Fatal(err)
}
if result := <-ss.ClusterDiscovery().Cleanup(); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().Cleanup(); err != nil {
t.Fatal(err)
}
}
@@ -43,12 +45,12 @@ func testClusterDiscoveryStoreDelete(t *testing.T, ss store.Store) {
Type: "test_test",
}
if result := <-ss.ClusterDiscovery().Save(discovery); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().Save(discovery); err != nil {
t.Fatal(err)
}
if result := <-ss.ClusterDiscovery().Delete(discovery); result.Err != nil {
t.Fatal(result.Err)
if _, err := ss.ClusterDiscovery().Delete(discovery); err != nil {
t.Fatal(err)
}
}
@@ -59,35 +61,28 @@ func testClusterDiscoveryStoreLastPing(t *testing.T, ss store.Store) {
Type: "test_test_lastPing" + model.NewId(),
}
if result := <-ss.ClusterDiscovery().Save(discovery); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().Save(discovery); err != nil {
t.Fatal(err)
}
if result := <-ss.ClusterDiscovery().SetLastPingAt(discovery); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().SetLastPingAt(discovery); err != nil {
t.Fatal(err)
}
ttime := model.GetMillis()
time.Sleep(1 * time.Second)
if result := <-ss.ClusterDiscovery().SetLastPingAt(discovery); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().SetLastPingAt(discovery); err != nil {
t.Fatal(err)
}
if result := <-ss.ClusterDiscovery().GetAll(discovery.Type, "cluster_name_lastPing"); result.Err != nil {
t.Fatal(result.Err)
} else {
list := result.Data.([]*model.ClusterDiscovery)
list, err := ss.ClusterDiscovery().GetAll(discovery.Type, "cluster_name_lastPing")
require.Nil(t, err)
assert.Len(t, list, 1)
if len(list) != 1 {
t.Fatal("should only be 1 items")
return
}
if list[0].LastPingAt-ttime < 500 {
t.Fatal("failed to set time")
}
if list[0].LastPingAt-ttime < 500 {
t.Fatal("failed to set time")
}
discovery2 := &model.ClusterDiscovery{
@@ -96,8 +91,8 @@ func testClusterDiscoveryStoreLastPing(t *testing.T, ss store.Store) {
Type: "test_test_missing",
}
if result := <-ss.ClusterDiscovery().SetLastPingAt(discovery2); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().SetLastPingAt(discovery2); err != nil {
t.Fatal(err)
}
}
@@ -108,29 +103,19 @@ func testClusterDiscoveryStoreExists(t *testing.T, ss store.Store) {
Type: "test_test_Exists" + model.NewId(),
}
if result := <-ss.ClusterDiscovery().Save(discovery); result.Err != nil {
t.Fatal(result.Err)
if err := ss.ClusterDiscovery().Save(discovery); err != nil {
t.Fatal(err)
}
if result := <-ss.ClusterDiscovery().Exists(discovery); result.Err != nil {
t.Fatal(result.Err)
} else {
val := result.Data.(bool)
if !val {
t.Fatal("should be true")
}
}
val, err := ss.ClusterDiscovery().Exists(discovery)
require.Nil(t, err)
assert.True(t, val)
discovery.ClusterName = "cluster_name_Exists2"
if result := <-ss.ClusterDiscovery().Exists(discovery); result.Err != nil {
t.Fatal(result.Err)
} else {
val := result.Data.(bool)
if val {
t.Fatal("should be true")
}
}
val, err = ss.ClusterDiscovery().Exists(discovery)
require.Nil(t, err)
assert.False(t, val)
}
func testClusterDiscoveryGetStore(t *testing.T, ss store.Store) {
@@ -141,14 +126,14 @@ func testClusterDiscoveryGetStore(t *testing.T, ss store.Store) {
Hostname: "hostname1",
Type: testType1,
}
store.Must(ss.ClusterDiscovery().Save(discovery1))
require.Nil(t, ss.ClusterDiscovery().Save(discovery1))
discovery2 := &model.ClusterDiscovery{
ClusterName: "cluster_name",
Hostname: "hostname2",
Type: testType1,
}
store.Must(ss.ClusterDiscovery().Save(discovery2))
require.Nil(t, ss.ClusterDiscovery().Save(discovery2))
discovery3 := &model.ClusterDiscovery{
ClusterName: "cluster_name",
@@ -157,7 +142,7 @@ func testClusterDiscoveryGetStore(t *testing.T, ss store.Store) {
CreateAt: 1,
LastPingAt: 1,
}
store.Must(ss.ClusterDiscovery().Save(discovery3))
require.Nil(t, ss.ClusterDiscovery().Save(discovery3))
testType2 := model.NewId()
@@ -166,35 +151,17 @@ func testClusterDiscoveryGetStore(t *testing.T, ss store.Store) {
Hostname: "hostname1",
Type: testType2,
}
store.Must(ss.ClusterDiscovery().Save(discovery4))
require.Nil(t, ss.ClusterDiscovery().Save(discovery4))
if result := <-ss.ClusterDiscovery().GetAll(testType1, "cluster_name"); result.Err != nil {
t.Fatal(result.Err)
} else {
list := result.Data.([]*model.ClusterDiscovery)
list, err := ss.ClusterDiscovery().GetAll(testType1, "cluster_name")
require.Nil(t, err)
assert.Len(t, list, 2)
if len(list) != 2 {
t.Fatal("Should only have returned 2")
}
}
list, err = ss.ClusterDiscovery().GetAll(testType2, "cluster_name")
require.Nil(t, err)
assert.Len(t, list, 1)
if result := <-ss.ClusterDiscovery().GetAll(testType2, "cluster_name"); result.Err != nil {
t.Fatal(result.Err)
} else {
list := result.Data.([]*model.ClusterDiscovery)
if len(list) != 1 {
t.Fatal("Should only have returned 1")
}
}
if result := <-ss.ClusterDiscovery().GetAll(model.NewId(), "cluster_name"); result.Err != nil {
t.Fatal(result.Err)
} else {
list := result.Data.([]*model.ClusterDiscovery)
if len(list) != 0 {
t.Fatal("shouldn't be any")
}
}
list, err = ss.ClusterDiscovery().GetAll(model.NewId(), "cluster_name")
require.Nil(t, err)
assert.Len(t, list, 0)
}

Просмотреть файл

@@ -6,7 +6,6 @@ package mocks
import mock "github.com/stretchr/testify/mock"
import model "github.com/mattermost/mattermost-server/model"
import store "github.com/mattermost/mattermost-server/store"
// ClusterDiscoveryStore is an autogenerated mock type for the ClusterDiscoveryStore type
type ClusterDiscoveryStore struct {
@@ -14,15 +13,15 @@ type ClusterDiscoveryStore struct {
}
// Cleanup provides a mock function with given fields:
func (_m *ClusterDiscoveryStore) Cleanup() store.StoreChannel {
func (_m *ClusterDiscoveryStore) Cleanup() *model.AppError {
ret := _m.Called()
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func() store.StoreChannel); ok {
var r0 *model.AppError
if rf, ok := ret.Get(0).(func() *model.AppError); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).(*model.AppError)
}
}
@@ -30,63 +29,86 @@ func (_m *ClusterDiscoveryStore) Cleanup() store.StoreChannel {
}
// Delete provides a mock function with given fields: discovery
func (_m *ClusterDiscoveryStore) Delete(discovery *model.ClusterDiscovery) store.StoreChannel {
func (_m *ClusterDiscoveryStore) Delete(discovery *model.ClusterDiscovery) (bool, *model.AppError) {
ret := _m.Called(discovery)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok {
var r0 bool
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) bool); ok {
r0 = rf(discovery)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).(bool)
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(*model.ClusterDiscovery) *model.AppError); ok {
r1 = rf(discovery)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0
return r0, r1
}
// Exists provides a mock function with given fields: discovery
func (_m *ClusterDiscoveryStore) Exists(discovery *model.ClusterDiscovery) store.StoreChannel {
func (_m *ClusterDiscoveryStore) Exists(discovery *model.ClusterDiscovery) (bool, *model.AppError) {
ret := _m.Called(discovery)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok {
var r0 bool
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) bool); ok {
r0 = rf(discovery)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).(bool)
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(*model.ClusterDiscovery) *model.AppError); ok {
r1 = rf(discovery)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0
return r0, r1
}
// GetAll provides a mock function with given fields: discoveryType, clusterName
func (_m *ClusterDiscoveryStore) GetAll(discoveryType string, clusterName string) store.StoreChannel {
func (_m *ClusterDiscoveryStore) GetAll(discoveryType string, clusterName string) ([]*model.ClusterDiscovery, *model.AppError) {
ret := _m.Called(discoveryType, clusterName)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok {
var r0 []*model.ClusterDiscovery
if rf, ok := ret.Get(0).(func(string, string) []*model.ClusterDiscovery); ok {
r0 = rf(discoveryType, clusterName)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).([]*model.ClusterDiscovery)
}
}
return r0
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string, string) *model.AppError); ok {
r1 = rf(discoveryType, clusterName)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
}
// Save provides a mock function with given fields: discovery
func (_m *ClusterDiscoveryStore) Save(discovery *model.ClusterDiscovery) store.StoreChannel {
func (_m *ClusterDiscoveryStore) Save(discovery *model.ClusterDiscovery) *model.AppError {
ret := _m.Called(discovery)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok {
var r0 *model.AppError
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) *model.AppError); ok {
r0 = rf(discovery)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).(*model.AppError)
}
}
@@ -94,15 +116,15 @@ func (_m *ClusterDiscoveryStore) Save(discovery *model.ClusterDiscovery) store.S
}
// SetLastPingAt provides a mock function with given fields: discovery
func (_m *ClusterDiscoveryStore) SetLastPingAt(discovery *model.ClusterDiscovery) store.StoreChannel {
func (_m *ClusterDiscoveryStore) SetLastPingAt(discovery *model.ClusterDiscovery) *model.AppError {
ret := _m.Called(discovery)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok {
var r0 *model.AppError
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) *model.AppError); ok {
r0 = rf(discovery)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).(*model.AppError)
}
}