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() { 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() exists, err := me.app.Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery)
if err != nil {
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(), err))
mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to check if row exists for %v with err=%v", me.ClusterDiscovery.ToJson(), cresult.Err))
} else { } else {
if cresult.Data.(bool) { if exists {
if u := <-me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil { 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(), u.Err)) 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 { 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(), result.Err)) mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to save for %v with err=%v", me.ClusterDiscovery.ToJson(), err))
return return
} }
@@ -55,8 +58,8 @@ func (me *ClusterDiscoveryService) Start() {
ticker := time.NewTicker(DISCOVERY_SERVICE_WRITE_PING) ticker := time.NewTicker(DISCOVERY_SERVICE_WRITE_PING)
defer func() { defer func() {
ticker.Stop() ticker.Stop()
if u := <-me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil { 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(), u.Err)) 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())) mlog.Debug(fmt.Sprintf("ClusterDiscoveryService ping writer stopped for %v", me.ClusterDiscovery.ToJson()))
}() }()
@@ -64,8 +67,8 @@ func (me *ClusterDiscoveryService) Start() {
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
if u := <-me.app.Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); u.Err != nil { 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(), u.Err)) mlog.Error(fmt.Sprintf("ClusterDiscoveryService failed to write ping for %v with err=%v", me.ClusterDiscovery.ToJson(), err))
} }
case <-me.stop: case <-me.stop:
return return

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

@@ -28,145 +28,133 @@ func NewSqlClusterDiscoveryStore(sqlStore SqlStore) store.ClusterDiscoveryStore
return s return s
} }
func (s sqlClusterDiscoveryStore) Save(ClusterDiscovery *model.ClusterDiscovery) store.StoreChannel { func (s sqlClusterDiscoveryStore) Save(ClusterDiscovery *model.ClusterDiscovery) *model.AppError {
return store.Do(func(result *store.StoreResult) { ClusterDiscovery.PreSave()
ClusterDiscovery.PreSave() if err := ClusterDiscovery.IsValid(); err != nil {
if result.Err = ClusterDiscovery.IsValid(); result.Err != nil { return err
return }
}
if err := s.GetMaster().Insert(ClusterDiscovery); err != nil { 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) 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 { func (s sqlClusterDiscoveryStore) Delete(ClusterDiscovery *model.ClusterDiscovery) (bool, *model.AppError) {
return store.Do(func(result *store.StoreResult) { count, err := s.GetMaster().SelectInt(
result.Data = false `
DELETE
if count, err := s.GetMaster().SelectInt( FROM
` ClusterDiscovery
DELETE WHERE
FROM Type = :Type
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
AND ClusterName = :ClusterName AND ClusterName = :ClusterName
AND Hostname = :Hostname AND Hostname = :Hostname
`, `,
map[string]interface{}{ map[string]interface{}{
"LastPingAt": model.GetMillis(), "Type": ClusterDiscovery.Type,
"Type": ClusterDiscovery.Type, "ClusterName": ClusterDiscovery.ClusterName,
"ClusterName": ClusterDiscovery.ClusterName, "Hostname": ClusterDiscovery.Hostname,
"Hostname": ClusterDiscovery.Hostname, },
}, )
); err != nil { if err != nil {
result.Err = model.NewAppError("SqlClusterDiscoveryStore.GetAllForType", "store.sql_cluster_discovery.set_last_ping.app_error", nil, err.Error(), http.StatusInternalServerError) 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 { func (s sqlClusterDiscoveryStore) Exists(ClusterDiscovery *model.ClusterDiscovery) (bool, *model.AppError) {
return store.Do(func(result *store.StoreResult) { count, err := s.GetMaster().SelectInt(
if _, err := s.GetMaster().Exec( `
` SELECT
DELETE FROM ClusterDiscovery COUNT(*)
WHERE FROM
LastPingAt < :LastPingAt ClusterDiscovery
`, WHERE
map[string]interface{}{ Type = :Type
"LastPingAt": model.GetMillis() - model.CDS_OFFLINE_AFTER_MILLIS, AND ClusterName = :ClusterName
}, AND Hostname = :Hostname
); err != nil { `,
result.Err = model.NewAppError("SqlClusterDiscoveryStore.Save", "store.sql_cluster_discovery.cleanup.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.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 { type ClusterDiscoveryStore interface {
Save(discovery *model.ClusterDiscovery) StoreChannel Save(discovery *model.ClusterDiscovery) *model.AppError
Delete(discovery *model.ClusterDiscovery) StoreChannel Delete(discovery *model.ClusterDiscovery) (bool, *model.AppError)
Exists(discovery *model.ClusterDiscovery) StoreChannel Exists(discovery *model.ClusterDiscovery) (bool, *model.AppError)
GetAll(discoveryType, clusterName string) StoreChannel GetAll(discoveryType, clusterName string) ([]*model.ClusterDiscovery, *model.AppError)
SetLastPingAt(discovery *model.ClusterDiscovery) StoreChannel SetLastPingAt(discovery *model.ClusterDiscovery) *model.AppError
Cleanup() StoreChannel Cleanup() *model.AppError
} }
type ComplianceStore interface { type ComplianceStore interface {

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

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

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

@@ -6,7 +6,6 @@ package mocks
import mock "github.com/stretchr/testify/mock" import mock "github.com/stretchr/testify/mock"
import model "github.com/mattermost/mattermost-server/model" 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 // ClusterDiscoveryStore is an autogenerated mock type for the ClusterDiscoveryStore type
type ClusterDiscoveryStore struct { type ClusterDiscoveryStore struct {
@@ -14,15 +13,15 @@ type ClusterDiscoveryStore struct {
} }
// Cleanup provides a mock function with given fields: // Cleanup provides a mock function with given fields:
func (_m *ClusterDiscoveryStore) Cleanup() store.StoreChannel { func (_m *ClusterDiscoveryStore) Cleanup() *model.AppError {
ret := _m.Called() ret := _m.Called()
var r0 store.StoreChannel var r0 *model.AppError
if rf, ok := ret.Get(0).(func() store.StoreChannel); ok { if rf, ok := ret.Get(0).(func() *model.AppError); ok {
r0 = rf() r0 = rf()
} else { } else {
if ret.Get(0) != nil { 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 // 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) ret := _m.Called(discovery)
var r0 store.StoreChannel var r0 bool
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) bool); ok {
r0 = rf(discovery) r0 = rf(discovery)
} else { } else {
if ret.Get(0) != nil { r0 = ret.Get(0).(bool)
r0 = ret.Get(0).(store.StoreChannel) }
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 // 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) ret := _m.Called(discovery)
var r0 store.StoreChannel var r0 bool
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) bool); ok {
r0 = rf(discovery) r0 = rf(discovery)
} else { } else {
if ret.Get(0) != nil { r0 = ret.Get(0).(bool)
r0 = ret.Get(0).(store.StoreChannel) }
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 // 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) ret := _m.Called(discoveryType, clusterName)
var r0 store.StoreChannel var r0 []*model.ClusterDiscovery
if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(string, string) []*model.ClusterDiscovery); ok {
r0 = rf(discoveryType, clusterName) r0 = rf(discoveryType, clusterName)
} else { } else {
if ret.Get(0) != nil { 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 // 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) ret := _m.Called(discovery)
var r0 store.StoreChannel var r0 *model.AppError
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) *model.AppError); ok {
r0 = rf(discovery) r0 = rf(discovery)
} else { } else {
if ret.Get(0) != nil { 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 // 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) ret := _m.Called(discovery)
var r0 store.StoreChannel var r0 *model.AppError
if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(*model.ClusterDiscovery) *model.AppError); ok {
r0 = rf(discovery) r0 = rf(discovery)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel) r0 = ret.Get(0).(*model.AppError)
} }
} }