github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/testlib/cluster.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package testlib 5 6 import ( 7 "sync" 8 9 "github.com/masterhung0112/hk_server/v5/einterfaces" 10 "github.com/masterhung0112/hk_server/v5/model" 11 ) 12 13 type FakeClusterInterface struct { 14 clusterMessageHandler einterfaces.ClusterMessageHandler 15 mut sync.RWMutex 16 messages []*model.ClusterMessage 17 } 18 19 func (c *FakeClusterInterface) StartInterNodeCommunication() {} 20 21 func (c *FakeClusterInterface) StopInterNodeCommunication() {} 22 23 func (c *FakeClusterInterface) RegisterClusterMessageHandler(event string, crm einterfaces.ClusterMessageHandler) { 24 c.clusterMessageHandler = crm 25 } 26 27 func (c *FakeClusterInterface) HealthScore() int { 28 return 0 29 } 30 31 func (c *FakeClusterInterface) GetClusterId() string { return "" } 32 33 func (c *FakeClusterInterface) IsLeader() bool { return false } 34 35 func (c *FakeClusterInterface) GetMyClusterInfo() *model.ClusterInfo { return nil } 36 37 func (c *FakeClusterInterface) GetClusterInfos() []*model.ClusterInfo { return nil } 38 39 func (c *FakeClusterInterface) SendClusterMessage(message *model.ClusterMessage) { 40 c.mut.Lock() 41 defer c.mut.Unlock() 42 c.messages = append(c.messages, message) 43 } 44 45 func (c *FakeClusterInterface) SendClusterMessageToNode(nodeID string, message *model.ClusterMessage) error { 46 c.mut.Lock() 47 defer c.mut.Unlock() 48 c.messages = append(c.messages, message) 49 return nil 50 } 51 52 func (c *FakeClusterInterface) NotifyMsg(buf []byte) {} 53 54 func (c *FakeClusterInterface) GetClusterStats() ([]*model.ClusterStats, *model.AppError) { 55 return nil, nil 56 } 57 58 func (c *FakeClusterInterface) GetLogs(page, perPage int) ([]string, *model.AppError) { 59 return []string{}, nil 60 } 61 62 func (c *FakeClusterInterface) ConfigChanged(previousConfig *model.Config, newConfig *model.Config, sendToOtherServer bool) *model.AppError { 63 return nil 64 } 65 66 func (c *FakeClusterInterface) SendClearRoleCacheMessage() { 67 if c.clusterMessageHandler != nil { 68 c.clusterMessageHandler(&model.ClusterMessage{ 69 Event: model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_ROLES, 70 }) 71 } 72 } 73 74 func (c *FakeClusterInterface) GetPluginStatuses() (model.PluginStatuses, *model.AppError) { 75 return nil, nil 76 } 77 78 func (c *FakeClusterInterface) GetMessages() []*model.ClusterMessage { 79 c.mut.RLock() 80 defer c.mut.RUnlock() 81 return c.messages 82 } 83 84 func (c *FakeClusterInterface) SelectMessages(filterCond func(message *model.ClusterMessage) bool) []*model.ClusterMessage { 85 c.mut.RLock() 86 defer c.mut.RUnlock() 87 88 filteredMessages := []*model.ClusterMessage{} 89 for _, msg := range c.messages { 90 if filterCond(msg) { 91 filteredMessages = append(filteredMessages, msg) 92 } 93 } 94 return filteredMessages 95 } 96 97 func (c *FakeClusterInterface) ClearMessages() { 98 c.mut.Lock() 99 defer c.mut.Unlock() 100 c.messages = nil 101 }