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  }