MM-29478: Fix race in TestNotifyClusterEvent (#16240)

The messages slice was accessed in a race manner. We protect it
with a mutex

```release-note
NONE
```

https://mattermost.atlassian.net/browse/MM-29478
Этот коммит содержится в:
Agniva De Sarker
2020-11-09 19:25:51 +05:30
коммит произвёл GitHub
родитель ce28d41aef
Коммит 6c71fbaebd

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

@@ -4,12 +4,15 @@
package testlib
import (
"sync"
"github.com/mattermost/mattermost-server/v5/einterfaces"
"github.com/mattermost/mattermost-server/v5/model"
)
type FakeClusterInterface struct {
clusterMessageHandler einterfaces.ClusterMessageHandler
mut sync.RWMutex
messages []*model.ClusterMessage
}
@@ -34,6 +37,8 @@ func (c *FakeClusterInterface) GetMyClusterInfo() *model.ClusterInfo { return ni
func (c *FakeClusterInterface) GetClusterInfos() []*model.ClusterInfo { return nil }
func (c *FakeClusterInterface) SendClusterMessage(message *model.ClusterMessage) {
c.mut.Lock()
defer c.mut.Unlock()
c.messages = append(c.messages, message)
}
@@ -64,9 +69,13 @@ func (c *FakeClusterInterface) GetPluginStatuses() (model.PluginStatuses, *model
}
func (c *FakeClusterInterface) GetMessages() []*model.ClusterMessage {
c.mut.RLock()
defer c.mut.RUnlock()
return c.messages
}
func (c *FakeClusterInterface) ClearMessages() {
c.mut.Lock()
defer c.mut.Unlock()
c.messages = nil
}