MM-34487: Add dead queue (#17307)
* MM-34487: Add dead queue Just a circular buffer to store dead messages for now. Not controlling this via config flag because this does not have any effect except taking some more memory per connection ```release-note NONE ``` https://mattermost.atlassian.net/browse/MM-34487 * Wrap with config * fix test
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
e13d85d8c7
Коммит
5215be51be
@@ -6,6 +6,7 @@ package app
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
@@ -98,3 +99,36 @@ func TestWebConnShouldSendEvent(t *testing.T) {
|
||||
event3 := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_UPDATE_TEAM, "wrongId", "", "", nil)
|
||||
assert.False(t, basicUserWc.shouldSendEvent(event3))
|
||||
}
|
||||
|
||||
func TestWebConnDeadQueue(t *testing.T) {
|
||||
th := Setup(t)
|
||||
defer th.TearDown()
|
||||
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableReliableWebSockets = true })
|
||||
|
||||
session := model.Session{
|
||||
Id: model.NewId(),
|
||||
}
|
||||
|
||||
wc := th.App.NewWebConn(&websocket.Conn{}, session, nil, "")
|
||||
|
||||
for i := 0; i < 2; i++ {
|
||||
msg := &model.WebSocketEvent{}
|
||||
msg = msg.SetSequence(int64(i))
|
||||
wc.addToDeadQueue(msg)
|
||||
}
|
||||
|
||||
for i := 0; i < 2; i++ {
|
||||
assert.Equal(t, int64(i), wc.deadQueue[i].(*model.WebSocketEvent).GetSequence())
|
||||
}
|
||||
|
||||
// Should push out the first two elements
|
||||
for i := 0; i < deadQueueSize; i++ {
|
||||
msg := &model.WebSocketEvent{}
|
||||
msg = msg.SetSequence(int64(i + 2))
|
||||
wc.addToDeadQueue(msg)
|
||||
}
|
||||
for i := 0; i < deadQueueSize; i++ {
|
||||
assert.Equal(t, int64(i+2), wc.deadQueue[(i+2)%deadQueueSize].(*model.WebSocketEvent).GetSequence())
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user